FAQ
2.2.94
OTRS AG
http://otrs.org/
GNU AFFERO GENERAL PUBLIC LICENSE Version 3, November 2007
Build for FAQ 2.3.0 rc1.
Build for FAQ 2.3.0 beta3.
Build for FAQ 2.3.0 beta2.
First version for OTRS 3.3.x.
The FAQ/knowledge base.
Die FAQ-/Wissensdatenbank.
3.3.x
<br/>
<strong>WELCOME</strong>
<br/>
<br/>
You are about to install the OTRS package FAQ.<br/>
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>WILLKOMMEN</strong>
<br/>
<br/>
Sie sind im Begriff das OTRS-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 OTRS.<br/>
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>NOTICE</strong>
<br/>
<br/>
In order to grant users access to the faq menu, you need to add them as member to the group 'faq'.
<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/>
Um Benutzern Zugriff auf das FAQ-Menü zu gewähren, müssen diese Mitglied der neuen Gruppe 'faq' sein.
<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/>
Para poder permitir el acceso a los usuarios al menú de faq, usted necesita agregarlos como miembros del grupo 'faq'.<br/>
<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>ATTENTION</strong>
<br/>
<br/>
If you uninstall this package, all database tables that were created during installation will be deleted.
All data from these tables will be irrevocably lost!
<br/>
<br/>
The 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/>
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/>
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>WELCOME</strong>
<br/>
<br/>
You are about to upgrade the OTRS package FAQ.<br/>
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>WILLKOMMEN</strong>
<br/>
<br/>
Sie sind im Begriff das OTRS-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 OTRS.<br/>
<br/>
<br/>
((enjoy))<br/>
<br/>
# define function name
my $FunctionName = 'CodeInstall';
# create the package name
my $CodeModule = 'var::packagesetup::' . $Param{Structure}->{Name}->{Content};
# load the module
if ( $Self->{MainObject}->Require($CodeModule) ) {
# create new instance
my $CodeObject = $CodeModule->new( %{$Self} );
if ($CodeObject) {
# start method
if ( !$CodeObject->$FunctionName(%{$Self}) ) {
$Self->{LogObject}->Log(
Priority => 'error',
Message => "Could not call method $FunctionName() on $CodeModule.pm."
);
}
}
# error handling
else {
$Self->{LogObject}->Log(
Priority => 'error',
Message => "Could not call method new() on $CodeModule.pm."
);
}
}
# define function name
my $FunctionName = 'CodeUpgrade';
# create the package name
my $CodeModule = 'var::packagesetup::' . $Param{Structure}->{Name}->{Content};
# load the module
if ( $Self->{MainObject}->Require($CodeModule) ) {
# create new instance
my $CodeObject = $CodeModule->new( %{$Self} );
if ($CodeObject) {
# start method
if ( !$CodeObject->$FunctionName(%{$Self}) ) {
$Self->{LogObject}->Log(
Priority => 'error',
Message => "Could not call method $FunctionName() on $CodeModule.pm."
);
}
}
# error handling
else {
$Self->{LogObject}->Log(
Priority => 'error',
Message => "Could not call method new() on $CodeModule.pm."
);
}
}
# define function name
my $FunctionName = 'CodeUpgradeSpecial';
# create the package name
my $CodeModule = 'var::packagesetup::' . $Param{Structure}->{Name}->{Content};
# load the module
if ( $Self->{MainObject}->Require($CodeModule) ) {
# create new instance
my $CodeObject = $CodeModule->new( %{$Self} );
if ($CodeObject) {
# start method
if ( !$CodeObject->$FunctionName(%{$Self}) ) {
$Self->{LogObject}->Log(
Priority => 'error',
Message => "Could not call method $FunctionName() on $CodeModule.pm."
);
}
}
# error handling
else {
$Self->{LogObject}->Log(
Priority => 'error',
Message => "Could not call method new() on $CodeModule.pm."
);
}
}
# define function name
my $FunctionName = 'CodeUninstall';
# create the package name
my $CodeModule = 'var::packagesetup::' . $Param{Structure}->{Name}->{Content};
# load the module
if ( $Self->{MainObject}->Require($CodeModule) ) {
# create new instance
my $CodeObject = $CodeModule->new( %{$Self} );
if ($CodeObject) {
# start method
if ( !$CodeObject->$FunctionName(%{$Self}) ) {
$Self->{LogObject}->Log(
Priority => 'error',
Message => "Could not call method $FunctionName() on $CodeModule.pm."
);
}
}
# error handling
else {
$Self->{LogObject}->Log(
Priority => 'error',
Message => "Could not call method new() on $CodeModule.pm."
);
}
}
# define function name
my $FunctionName = 'CodeReinstall';
# create the package name
my $CodeModule = 'var::packagesetup::' . $Param{Structure}->{Name}->{Content};
# load the module
if ( $Self->{MainObject}->Require($CodeModule) ) {
# create new instance
my $CodeObject = $CodeModule->new( %{$Self} );
if ($CodeObject) {
# start method
if ( !$CodeObject->$FunctionName(%{$Self}) ) {
$Self->{LogObject}->Log(
Priority => 'error',
Message => "Could not call method $FunctionName() on $CodeModule.pm."
);
}
}
# error handling
else {
$Self->{LogObject}->Log(
Priority => 'error',
Message => "Could not call method new() on $CodeModule.pm."
);
}
}
2013-11-01 23:38:12
opms.otrs.com
IyEvdXNyL2Jpbi9wZXJsCiMgLS0KIyBvdHJzLkZBUUltcG9ydC5wbCAtIEZBUSBpbXBvcnQgc2NyaXB0CiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBRkZFUk8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgojIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIwojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxIFVTQQojIG9yIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBGaWxlOjpCYXNlbmFtZTsKdXNlIEZpbmRCaW4gcXcoJFJlYWxCaW4pOwp1c2UgbGliIGRpcm5hbWUoJFJlYWxCaW4pOwp1c2UgbGliIGRpcm5hbWUoJFJlYWxCaW4pIC4gJy9LZXJuZWwvY3Bhbi1saWInOwoKdXNlIEdldG9wdDo6U3RkOwp1c2UgS2VybmVsOjpDb25maWc7CnVzZSBLZXJuZWw6OlN5c3RlbTo6REI7CnVzZSBLZXJuZWw6OlN5c3RlbTo6RW5jb2RlOwp1c2UgS2VybmVsOjpTeXN0ZW06OkNTVjsKdXNlIEtlcm5lbDo6U3lzdGVtOjpMb2c7CnVzZSBLZXJuZWw6OlN5c3RlbTo6TWFpbjsKdXNlIEtlcm5lbDo6U3lzdGVtOjpUaW1lOwp1c2UgS2VybmVsOjpTeXN0ZW06Okdyb3VwOwp1c2UgS2VybmVsOjpTeXN0ZW06OkZBUTsKCnVzZSB2YXJzIHF3KCRSZWFsQmluKTsKCiMgY3JlYXRlIGNvbW1vbiBvYmplY3RzCm15ICVDb21tb25PYmplY3Q7CiRDb21tb25PYmplY3R7VXNlcklEfSAgICAgICA9IDE7CiRDb21tb25PYmplY3R7Q29uZmlnT2JqZWN0fSA9IEtlcm5lbDo6Q29uZmlnLT5uZXcoKTsKJENvbW1vbk9iamVjdHtMb2dPYmplY3R9ICAgID0gS2VybmVsOjpTeXN0ZW06OkxvZy0+bmV3KAogICAgTG9nUHJlZml4ID0+ICdPVFJTLUZBUUltcG9ydCcsCiAgICAlQ29tbW9uT2JqZWN0LAopOwokQ29tbW9uT2JqZWN0e0NTVk9iamVjdH0gICAgPSBLZXJuZWw6OlN5c3RlbTo6Q1NWLT5uZXcoJUNvbW1vbk9iamVjdCk7CiRDb21tb25PYmplY3R7RW5jb2RlT2JqZWN0fSA9IEtlcm5lbDo6U3lzdGVtOjpFbmNvZGUtPm5ldyglQ29tbW9uT2JqZWN0KTsKJENvbW1vbk9iamVjdHtNYWluT2JqZWN0fSAgID0gS2VybmVsOjpTeXN0ZW06Ok1haW4tPm5ldyglQ29tbW9uT2JqZWN0KTsKJENvbW1vbk9iamVjdHtEQk9iamVjdH0gICAgID0gS2VybmVsOjpTeXN0ZW06OkRCLT5uZXcoJUNvbW1vbk9iamVjdCk7CiRDb21tb25PYmplY3R7VGltZU9iamVjdH0gICA9IEtlcm5lbDo6U3lzdGVtOjpUaW1lLT5uZXcoJUNvbW1vbk9iamVjdCk7CiRDb21tb25PYmplY3R7R3JvdXBPYmplY3R9ICA9IEtlcm5lbDo6U3lzdGVtOjpHcm91cC0+bmV3KCVDb21tb25PYmplY3QpOwokQ29tbW9uT2JqZWN0e0ZBUU9iamVjdH0gICAgPSBLZXJuZWw6OlN5c3RlbTo6RkFRLT5uZXcoJUNvbW1vbk9iamVjdCk7CgojIGdldCBvcHRpb25zCm15ICVPcHRzOwpnZXRvcHQoICdoaXNxJywgXCVPcHRzICk7CgppZiAoIGV4aXN0cyAkT3B0c3tofSApIHsKICAgIHByaW50IFNURE9VVCAiXG4iOwogICAgcHJpbnQgU1RET1VUICJvdHJzLkZBUUltcG9ydC5wbCAtIGEgRkFRIGltcG9ydCB0b29sXG4iOwogICAgcHJpbnQgU1RET1VUICJDb3B5cmlnaHQgKEMpIDIwMDEtMjAxMyBPVFJTIEFHLCBodHRwOi8vb3Rycy5jb20vXG4iOwogICAgcHJpbnQgU1RET1VUICIgICB1c2FnZTogXG4iOwogICAgcHJpbnQgU1RET1VUICIgICAgICBvdHJzLkZBUUltcG9ydC5wbCAtaSA8SW1wb3J0RmlsZT4gWy1zIDxzZXBhcmF0b3I+XSBbLXEgPHF1b3RlPl1cbiI7CiAgICBwcmludCBTVERPVVQgIlxuIjsKICAgIHByaW50IFNURE9VVCAiICAgZXhhbXBsZXM6XG4iOwogICAgcHJpbnQgU1RET1VUICIgICAgICAgb3Rycy5GQVFJbXBvcnQucGwgLWkgZmFxLmNzdlxuIjsKICAgIHByaW50IFNURE9VVCAiICAgICAgIG90cnMuRkFRSW1wb3J0LnBsIC1pIGZhcS5jc3YgLXMgJ3wnIC1xICdcIicgXG4iOwogICAgcHJpbnQgU1RET1VUICJcbiI7CiAgICBwcmludCBTVERPVVQgIiAgIEZvcm1hdCBvZiB0aGUgQ1NWIGZpbGU6XG4iOwogICAgcHJpbnQgU1RET1VUICcgICAgICAgInRpdGxlIjsiY2F0ZWdvcnkiOyJsYW5ndWFnZSI7InN0YXRldHlwZSI7JzsKICAgIHByaW50IFNURE9VVCAnImZpZWxkMSI7ImZpZWxkMiI7ImZpZWxkMyI7ImZpZWxkNCI7ImZpZWxkNSI7ImZpZWxkNiI7ImtleXdvcmRzIicgLiAiXG4iOwogICAgcHJpbnQgU1RET1VUICJcbiI7CiAgICBleGl0IDE7Cn0KCiMgY2hlY2sgYWN0aW9uIG1vZGUKaWYgKCAhJE9wdHN7aX0gKSB7CiAgICBwcmludCBTVERFUlIgIkVSUk9SOiBOZWVkIC1pIDxJbXBvcnRGaWxlPlxuIjsKICAgIGV4aXQgMTsKfQoKcHJpbnQgU1RET1VUICJSZWFkIEZpbGUgJE9wdHN7aX0uXG4iOwoKIyByZWFkIHNvdXJjZSBmaWxlCm15ICRDU1ZTdHJpbmdSZWYgPSAkQ29tbW9uT2JqZWN0e01haW5PYmplY3R9LT5GaWxlUmVhZCgKICAgIExvY2F0aW9uID0+ICRPcHRze2l9LAogICAgUmVzdWx0ICAgPT4gJ1NDQUxBUicsCiAgICBNb2RlICAgICA9PiAnYmlubW9kZScsCik7CmRpZSAiQ2FuJ3QgcmVhZCBmaWxlICRPcHRze2l9LlxuSW1wb3J0IGFib3J0ZWQuXG4iIGlmICEkQ1NWU3RyaW5nUmVmOwoKcHJpbnQgU1RET1VUICJJbXBvcnQgaW4gcHJvY2Vzcy4uLlxuIjsKCiMgcmVhZCBjc3YgZGF0YQpteSAkRGF0YVJlZiA9ICRDb21tb25PYmplY3R7Q1NWT2JqZWN0fS0+Q1NWMkFycmF5KAogICAgU3RyaW5nICAgID0+ICQkQ1NWU3RyaW5nUmVmLAogICAgU2VwYXJhdG9yID0+ICRPcHRze3N9IHx8ICc7JywKICAgIFF1b3RlICAgICA9PiAkT3B0c3txfSB8fCAnIicsCik7CmRpZSAiXG5FcnJvciBvY2N1cnJlZC4gSW1wb3J0IGltcG9zc2libGUhIFNlZSBTeXNsb2cgZm9yIGRldGFpbHMuXG4iIGlmICFkZWZpbmVkICREYXRhUmVmOwoKIyBnZXQgYWxsIEZBUSBsYW5ndWFnZSBpZHMKbXkgJUxhbmd1YWdlSUQgPSByZXZlcnNlICRDb21tb25PYmplY3R7RkFRT2JqZWN0fS0+TGFuZ3VhZ2VMaXN0KAogICAgVXNlcklEID0+IDEsCik7CgojIGdldCBhbGwgc3RhdGUgdHlwZSBpZHMKbXkgJVN0YXRlVHlwZUlEID0gcmV2ZXJzZSAleyAkQ29tbW9uT2JqZWN0e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUxpc3QoIFVzZXJJRCA9PiAxICkgfTsKCiMgZ2V0IGdyb3VwIGlkIGZvciBmYXEgZ3JvdXAKbXkgJEZBUUdyb3VwSUQgPSAkQ29tbW9uT2JqZWN0e0dyb3VwT2JqZWN0fS0+R3JvdXBMb29rdXAoCiAgICBHcm91cCA9PiAnZmFxJywKKTsKCm15ICRMaW5lQ291bnRlcjsKUk9XOgpmb3IgbXkgJFJvd1JlZiAoIEB7JERhdGFSZWZ9ICkgewoKICAgICRMaW5lQ291bnRlcisrOwoKICAgIG15ICgKICAgICAgICAkVGl0bGUsICRDYXRlZ29yeVN0cmluZywgJExhbmd1YWdlLCAkU3RhdGVUeXBlLAogICAgICAgICRGaWVsZDEsICRGaWVsZDIsICRGaWVsZDMsICRGaWVsZDQsICRGaWVsZDUsICRGaWVsZDYsICRLZXl3b3JkcwogICAgKSA9IEB7JFJvd1JlZn07CgogICAgIyBjaGVjayBsYW5ndWFnZQogICAgaWYgKCAhJExhbmd1YWdlSUR7JExhbmd1YWdlfSApIHsKICAgICAgICBwcmludCBTVERPVVQKICAgICAgICAgICAgIkVycm9yOiBDb3VsZCBub3QgaW1wb3J0IGxpbmUgJExpbmVDb3VudGVyLiBMYW5ndWFnZSAnJExhbmd1YWdlJyBkb2VzIG5vdCBleGlzdC5cbiI7CiAgICAgICAgbmV4dCBST1c7CiAgICB9CgogICAgIyBjaGVjayBzdGF0ZSB0eXBlCiAgICBpZiAoICEkU3RhdGVUeXBlSUR7JFN0YXRlVHlwZX0gKSB7CiAgICAgICAgcHJpbnQgU1RET1VUCiAgICAgICAgICAgICJFcnJvcjogQ291bGQgbm90IGltcG9ydCBsaW5lICRMaW5lQ291bnRlci4gU3RhdGUgJyRTdGF0ZVR5cGUnIGRvZXMgbm90IGV4aXN0LlxuIjsKICAgICAgICBuZXh0IFJPVzsKICAgIH0KCiAgICAjIGdldCBzdWJjYXRlZ29yaWVzCiAgICBteSBAQ2F0ZWdvcnlBcnJheSA9IHNwbGl0IC86Oi8sICRDYXRlZ29yeVN0cmluZzsKCiAgICAjIGNoZWNrIGVhY2ggc3ViY2F0ZWdvcnkgaWYgaXQgZXhpc3RzCiAgICBteSAkQ2F0ZWdvcnlJRDsKICAgIG15ICRQYXJlbnRJRCA9IDA7CiAgICBmb3IgbXkgJENhdGVnb3J5IChAQ2F0ZWdvcnlBcnJheSkgewoKICAgICAgICAjIGdldCB0aGUgY2F0ZWdvcnkgaWQKICAgICAgICAkQ29tbW9uT2JqZWN0e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICAgICAgU1FMID0+ICdTRUxFQ1QgaWQgRlJPTSBmYXFfY2F0ZWdvcnkgJwogICAgICAgICAgICAgICAgLiAnV0hFUkUgdmFsaWRfaWQgPSAxIEFORCBuYW1lID0gPyBBTkQgcGFyZW50X2lkID0gPycsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJENhdGVnb3J5LCBcJFBhcmVudElEIF0sCiAgICAgICAgICAgIExpbWl0ID0+IDEsCiAgICAgICAgKTsKICAgICAgICBteSBAUmVzdWx0OwogICAgICAgIHdoaWxlICggbXkgQFJvdyA9ICRDb21tb25PYmplY3R7REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgIHB1c2goIEBSZXN1bHQsICRSb3dbMF0gKTsKICAgICAgICB9CiAgICAgICAgJENhdGVnb3J5SUQgPSAkUmVzdWx0WzBdOwoKICAgICAgICAjIGNyZWF0ZSBjYXRlZ29yeSBpZiBpdCBkb2VzIG5vdCBleGlzdAogICAgICAgIGlmICggISRDYXRlZ29yeUlEICkgewogICAgICAgICAgICAkQ2F0ZWdvcnlJRCA9ICRDb21tb25PYmplY3R7RkFRT2JqZWN0fS0+Q2F0ZWdvcnlBZGQoCiAgICAgICAgICAgICAgICBOYW1lICAgICA9PiAkQ2F0ZWdvcnksCiAgICAgICAgICAgICAgICBQYXJlbnRJRCA9PiAkUGFyZW50SUQsCiAgICAgICAgICAgICAgICBWYWxpZElEICA9PiAxLAogICAgICAgICAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgYWRkIG5ldyBjYXRlZ29yeSB0byBmYXEgZ3JvdXAKICAgICAgICAgICAgJENvbW1vbk9iamVjdHtGQVFPYmplY3R9LT5TZXRDYXRlZ29yeUdyb3VwKAogICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgICAgIEdyb3VwSURzICAgPT4gWyRGQVFHcm91cElEXSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgc2V0IG5ldyBwYXJlbnQgaWQKICAgICAgICAkUGFyZW50SUQgPSAkQ2F0ZWdvcnlJRDsKICAgIH0KCiAgICAjIGNoZWNrIGNhdGVnb3J5CiAgICBpZiAoICEkQ2F0ZWdvcnlJRCApIHsKICAgICAgICBwcmludCBTVERPVVQKICAgICAgICAgICAgIkVycm9yOiBDb3VsZCBub3QgaW1wb3J0IGxpbmUgJExpbmVDb3VudGVyLiBDYXRlZ29yeSAnJENhdGVnb3J5U3RyaW5nJyBjb3VsZCBub3QgYmUgY3JlYXRlZC5cbiI7CiAgICAgICAgbmV4dCBST1c7CiAgICB9CgogICAgIyBhZGQgRkFRIGFydGljbGUKICAgIG15ICRGQVFJRCA9ICRDb21tb25PYmplY3R7RkFRT2JqZWN0fS0+RkFRQWRkKAogICAgICAgIFRpdGxlICAgICAgPT4gJFRpdGxlLAogICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgU3RhdGVJRCAgICA9PiAkU3RhdGVUeXBlSUR7JFN0YXRlVHlwZX0sCiAgICAgICAgTGFuZ3VhZ2VJRCA9PiAkTGFuZ3VhZ2VJRHskTGFuZ3VhZ2V9LAogICAgICAgIEZpZWxkMSAgICAgPT4gJEZpZWxkMSwKICAgICAgICBGaWVsZDIgICAgID0+ICRGaWVsZDIsCiAgICAgICAgRmllbGQzICAgICA9PiAkRmllbGQzLAogICAgICAgIEZpZWxkNCAgICAgPT4gJEZpZWxkNCwKICAgICAgICBGaWVsZDUgICAgID0+ICRGaWVsZDUsCiAgICAgICAgRmllbGQ2ICAgICA9PiAkRmllbGQ2LAogICAgICAgIEtleXdvcmRzICAgPT4gJEtleXdvcmRzIHx8ICcnLAogICAgICAgIEFwcHJvdmVkICAgPT4gMSwKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKICAgICMgY2hlY2sgc3VjY2VzcwogICAgaWYgKCAhJEZBUUlEICkgewogICAgICAgIHByaW50IFNURE9VVCAiRXJyb3I6IENvdWxkIG5vdCBpbXBvcnQgbGluZSAkTGluZUNvdW50ZXIuXG4iOwogICAgICAgIG5leHQgUk9XOwogICAgfQp9CgpwcmludCBTVERPVVQgIkltcG9ydCBjb21wbGV0ZS5cbiI7CgpleGl0IDA7Cgo9YmFjawoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwOi8vb3Rycy5vcmcvPikuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dD4uCgo9Y3V0Cg==
IyEvdXNyL2Jpbi9wZXJsCiMgLS0KIyBmYXEucGwgLSB0aGUgZ2xvYmFsIENHSSBoYW5kbGUgZmlsZSBmb3IgT1RSUwojIENvcHlyaWdodCAoQykgMjAwMS0yMDEzIE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQUZGRVJPIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKIyBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMKIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSBVU0EKIyBvciBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgojIHVzZSAuLi8uLi8gYXMgbGliIGxvY2F0aW9uCnVzZSBGaW5kQmluIHF3KCRCaW4pOwp1c2UgbGliICIkQmluLy4uLy4uIjsKdXNlIGxpYiAiJEJpbi8uLi8uLi9LZXJuZWwvY3Bhbi1saWIiOwp1c2UgbGliICIkQmluLy4uLy4uL0N1c3RvbSI7CgojIDA9b2ZmOzE9b247Cm15ICREZWJ1ZyA9IDA7CgpwcmludCAibG9jYXRpb246IHB1YmxpYy5wbD9BY3Rpb249UHVibGljRkFRRXhwbG9yZXJcbiI7CnByaW50ICJcbiI7CnByaW50ICI8YSBocmVmPSdwdWJsaWMucGw/QWN0aW9uPVB1YmxpY0ZBUUV4cGxvcmVyJz5tb3ZlZDwvYT5cbiI7Cg==
IyEvdXNyL2Jpbi9wZXJsCiMgLS0KIyBmYXEucGwgLSB0aGUgZ2xvYmFsIENHSSBoYW5kbGUgZmlsZSBmb3IgT1RSUwojIENvcHlyaWdodCAoQykgMjAwMS0yMDEyIE9UUlMgQUcsIGh0dHA6Ly9vdHJzLm9yZy8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQUZGRVJPIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKIyBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMKIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSBVU0EKIyBvciBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgojIHVzZSAuLi8uLi8gYXMgbGliIGxvY2F0aW9uCnVzZSBGaW5kQmluIHF3KCRCaW4pOwp1c2UgbGliICIkQmluLy4uLy4uIjsKdXNlIGxpYiAiJEJpbi8uLi8uLi9LZXJuZWwvY3Bhbi1saWIiOwp1c2UgbGliICIkQmluLy4uLy4uL0N1c3RvbSI7Cgp1c2UgdmFycyBxdyhASU5DKTsKCiMgMD1vZmY7MT1vbjsKbXkgJERlYnVnID0gMDsKCiMgY2hlY2sgQElOQyBmb3IgbW9kX3BlcmwgKGFkZCBsaWIgcGF0aCBmb3IgInJlcXVpcmUgbW9kdWxlIiEpCnB1c2ggKEBJTkMsICIkQmluLy4uLy4uIiwgIiRCaW4vLi4vLi4vS2VybmVsL2NwYW4tbGliIik7CgpwcmludCAibG9jYXRpb246IHB1YmxpYy5mcGw/QWN0aW9uPVB1YmxpY0ZBUUV4cGxvcmVyXG4iOwpwcmludCAiXG4iOwpwcmludCAiPGEgaHJlZj0ncHVibGljLmZwbD9BY3Rpb249UHVibGljRkFRRXhwbG9yZXInPm1vdmVkPC9hPlxuIjsK
iVBORw0KGgoAAAANSUhEUgAABbsAAAObCAIAAAD14cvUAAAAA3NCSVQICAjb4U/gAAAACXBIWXMAAAfQAAAH0AG5i+efAAAgAElEQVR4nOzdeVxTx/o/8AkkkITdBQVFBEWKVnDBDUVxBbFVQVzrUuveuuCVUFurUr60FFosYLXXulRksVIQvGARvSgKgmsBV3ABFJAtKohAgJD8/ji/e25ugBAwkICf9x99ncyZM/OclJHwZM4MQywWEwAAAAAAAAAAkKCm7AAAAAAAAAAAAFQOMiYAAAAAAAAAANKQMQEAAAAAAAAAkIaMCQAAAAAAAACANKbkC4FAcPv27ezs7PLy8rq6Ok1Nzd69e1taWtra2rLZbLqal5eXPE1T1aQqa2hoGBgYWFhY2NnZcbncpleJRKLbt2/fu3evrKysrq6OyWTq6ur26dNn4MCBI0eOZDKZTS+hPX/+PCMjo7S0tKKiQiAQMJlMfX19CwuLCRMmaGtryxNzRUVFcnLykydPampquFzu4MGDHRwc9PX15b/ftp4CSdQbtXPnTsmfNwAAAAAAAIDO998ERG5ubnR0dHV1tYaGhomJCZfLrampKSwsLCgoSE9PX7Bggbm5OVVzxIgRkk00NjbevXu3abmk4cOHq6urE0IEAsGzZ89SU1Pv3r27du1aHR0dyWp1dXVhYWEFBQVMJtPExERHR6e+vr68vPz+/fv379+3tLTU1dWVcTNPnjzJyMgwMDDo378/m82uq6srLCy8evVqRkbGypUr+/btK/u9KCkpCQkJqa2tNTQ0HDhwYHl5eWZmZk5OzurVqw0NDWVf2/ROAQAAAAAAAKDr+v8Zk/z8/PDwcJFINHnyZHt7exaLRZULhcLU1NTLly+Hh4evXLnS1NSUEDJ//nzJJgQCAZUxkSqXNGfOHHrWQF1d3cmTJ/Pz8y9evDhv3jzJasnJyQUFBaamposWLdLS0qLLX79+nZmZKXuCCSHE2tp67NixktNJhEJhfHx8Zmbm2bNn16xZI+NasVgcExNTW1s7derUKVOmUIVXrly5ePFiTEzM+vXrGQyG7N6b3ikAAAAAAAAAdFFqhJCGhoaYmJjGxsZZs2ZNmzaNTpcQQphMpoODg5OTU2Nj4+nTp4VC4bt3qampOWvWLEJITk6O1Kn79+8TQpydnSXTJYQQAwODqVOnNvsUj6RevXpJ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uXPnHj58uNueHgAAAAAAdJc+uyvnypUrQUFBCQkJixcvvnr16g8//CCE2L59+8GDB9PS0iZMmPD111+vXr1aoVC8/vrr0i2xsbHvvPOOk5OTs7OzHKe+vv706dNywcXImjVrvv/++7/97W///Oc/X3rpJaOrjz76aFpaWvc8HwAAAAAA6EZ9tmJy/fr15ubm3/72t8OHDx8+fLgQ4vbt2zt27Pj0008nTZokhHBxcUlMTHz55Zflism2bdsee+wxoziXLl1qbGx84IEHWk6h1WqPHDmSm5v78MMPCyFefvnlsLAwwwHDhw//9ttvu+PpAAAAAABAt+qzFZNx48Y9/vjjjz/++Pz583/729/6+vpWVFRotdr//M//lMfodLpbt241NjZKH6VKipGff/5ZCNHqmUDffvttU1OTfFfL2/v379/Q0NDQ0NCvX78ueSjT6urqWh6/BAAAAAAAOqF3V0wMX/EthJAOJZFYW1ufPHmysLAwPz8/KCjoyJEj0vuxP/nkE0dHR8O7bGz+70tQKpUtpxgwYIAQ4saNG4MGDTInB0NarValUt2Fcsn3338fGxur1+vffffd7p4LAAAAwL1Gq9X+/e9/f++99yydCPq4L774wsPDw9JZ/EvvrphI5Yxr165Ja0DOnTtneNXGxmbu3Llz586dNWvWM8888+677zo4OHz33XePPvqo+VM88MADSqXy0qVLLi4uRpdGjRplY2Pz2WefzZo1Swhx5swZowHff//9yJEjO/Fc5vv++++jo6MzMzP1ev358+e7dS4AAAAA96b+/ft/8MEHRi+7ALrcjz/+aGdnZ+ks/qV3V0wefPDBX/7ylzExMVu3br1w4YLh+ax///vfT506NXv2bKVSmZOT4+rqam9vHxUVFRISUl9fP3369Nu3b58+ffrrr7/esmWLiSlUKtXkyZNPnz49ZcoUo0v9+/dftGhRRERERkZGbW3t3r17jQb8z//8z9SpU7vqYY1ItZL3339fej+0t7e3SqX67rvvzLn3yy+/NHNkq27cuHH79u1O325BGo1GCHEnzw4AAADcm8LCwni7MLqb9HZhS2fxL727YmJtbf3HP/5x9erVY8eOffzxx6Ojo1944QXpUv/+/Y8ePRoVFdXQ0DBp0qQ///nPQoiNGzcOGTIkKSlpxYoVSqVywoQJq1atancWX1/f48ePv/LK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AI8y3mMCAAAAAACg9P8Ao4AV2Y1KBXcAAAAASUVORK5CYII=
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxvdHJzX2NvbmZpZyB2ZXJzaW9uPSIxLjAiIGluaXQ9IkFwcGxpY2F0aW9uIj4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6QWdlbnQ6OlN0YXRlVHlwZXMiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkludGVyZmFjZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPmludGVybmFsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+ZXh0ZXJuYWw8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5wdWJsaWM8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpDdXN0b21lcjo6U3RhdGVUeXBlcyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5MaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+SW50ZXJmYWNlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+ZXh0ZXJuYWw8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5wdWJsaWM8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpQdWJsaWM6OlN0YXRlVHlwZXMiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5JbnRlcmZhY2U8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5wdWJsaWM8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpEZWZhdWx0OjpSb290Q2F0ZWdvcnlOYW1lIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmF1bHQgY2F0ZWdvcnkgbmFtZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZz5GQVE8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkRlZmF1bHQ6OlJvb3RDYXRlZ29yeUNvbW1lbnQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmYXVsdCBjYXRlZ29yeSBuYW1lLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nPmRlZmF1bHQgY29tbWVudDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6SXRlbTo6Vm90aW5nOjpSYXRlcyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5SYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6Okl0ZW06OlZvdGluZzwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxMDAiPjU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ijc1Ij40PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSI1MCI+MzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMjUiPjI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjAiPjE8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6Okl0ZW06OlZvdGluZzo6U2hvdyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93IHZvdGluZyBpbiBkZWZpbmVkIGludGVyZmFjZXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6SXRlbTo6Vm90aW5nPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9ImludGVybmFsIj5pbnRlcm5hbCAoYWdlbnQpPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJleHRlcm5hbCI+ZXh0ZXJuYWwgKGN1c3RvbWVyKTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RXhwbG9yZXI6OlBhdGg6OlNob3ciIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvdyBGQVEgcGF0aCB5ZXMvbm8uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6RXhwbG9yZXI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjEiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkV4cGxvcmVyOjpJdGVtTGlzdDo6Vm90aW5nUmVzdWx0RGVjaW1hbFBsYWNlcyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpFeHBsb3JlcjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmc+MjwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RXhwbG9yZXI6Okl0ZW1MaXN0OjpWb3RpbmdSZXN1bHRDb2xvcnMiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+Q1NTIGNvbG9yIGZvciB0aGUgdm90aW5nIHJlc3VsdC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpFeHBsb3JlcjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIzMCI+cmVkPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSI3MCI+b3JhbmdlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxMDAiPmdyZWVuPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpFeHBsb3Jlcjo6UGF0aDo6U2VwYXJhdG9yIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZBUSBwYXRoIHNlcGFyYXRvci48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpFeHBsb3JlcjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmc+wrs8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkV4cGxvcmVyOjpRdWlja1NlYXJjaDo6U2hvdyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5JbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWlja3NlYXJjaCBzaG91bGQgYmUgc2hvd24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6RXhwbG9yZXI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0icHVibGljIj5wdWJsaWMgKHB1YmxpYyk8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkV4cGxvcmVyOjpMYXN0Q2hhbmdlOjpTaG93IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OkV4cGxvcmVyPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9ImludGVybmFsIj5pbnRlcm5hbCAoYWdlbnQpPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJleHRlcm5hbCI+ZXh0ZXJuYWwgKGN1c3RvbWVyKTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0icHVibGljIj5wdWJsaWMgKHB1YmxpYyk8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkV4cGxvcmVyOjpMYXN0Q2hhbmdlOjpTaG93U3ViQ2F0ZWdvcnlJdGVtcyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6RXhwbG9yZXI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjEiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkV4cGxvcmVyOjpMYXN0Q2hhbmdlOjpMaW1pdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5OdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OkV4cGxvcmVyPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZz4zPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpFeHBsb3Jlcjo6TGFzdENyZWF0ZTo6U2hvdyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6RXhwbG9yZXI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iaW50ZXJuYWwiPmludGVybmFsIChhZ2VudCk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9ImV4dGVybmFsIj5leHRlcm5hbCAoY3VzdG9tZXIpPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJwdWJsaWMiPnB1YmxpYyAocHVibGljKTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RXhwbG9yZXI6Okxhc3RDcmVhdGU6OlNob3dTdWJDYXRlZ29yeUl0ZW1zIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3cgaXRlbXMgb2Ygc3ViY2F0ZWdvcmllcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpFeHBsb3JlcjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iMSI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjAiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIj5ZZXM8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RXhwbG9yZXI6Okxhc3RDcmVhdGU6OkxpbWl0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk51bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6RXhwbG9yZXI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nPjM8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkV4cGxvcmVyOjpUb3AxMDo6U2hvdyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93IHRvcCAxMCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6RXhwbG9yZXI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iaW50ZXJuYWwiPmludGVybmFsIChhZ2VudCk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9ImV4dGVybmFsIj5leHRlcm5hbCAoY3VzdG9tZXIpPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJwdWJsaWMiPnB1YmxpYyAocHVibGljKTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RXhwbG9yZXI6OlRvcDEwOjpMaW1pdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5OdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gdGhlIHRvcCAxMCBmZWF0dXJlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OkV4cGxvcmVyPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZz4xMDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RXhwbG9yZXI6OlRvcDEwOjpTaG93U3ViQ2F0ZWdvcnlJdGVtcyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6RXhwbG9yZXI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjEiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZBUUhvb2siIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nPkZBUSM8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkRlZmF1bHQ6OlN0YXRlIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZz5pbnRlcm5hbCAoYWdlbnQpPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpBcHByb3ZhbFJlcXVpcmVkIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk5ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OkFwcHJvdmFsPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSIwIj4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMCI+Tm88L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEiPlllczwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpBcHByb3ZhbEdyb3VwIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkdyb3VwIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OkFwcHJvdmFsPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZz5mYXFfYXBwcm92YWw8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkFwcHJvdmFsUXVldWUiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UXVldWUgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6QXBwcm92YWw8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nPkZBUV9BcHByb3ZhbDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KCiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkFwcHJvdmFsVGlja2V0U3ViamVjdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5UaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6QXBwcm92YWw8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nPkZBUSBhcHByb3ZhbCByZXF1aXJlZCBmb3IgRkFRIyAmbHQ7T1RSU19GQVFfTlVNQkVSJmd0OzwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6QXBwcm92YWxUaWNrZXRCb2R5IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlRpY2tldCBib2R5IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpBcHByb3ZhbDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxUZXh0QXJlYT5IaSwKCmEgbmV3IEZBUSBhcnRpY2xlIG5lZWRzIHlvdXIgYXBwcm92YWwgYmVmb3JlIGl0IGNhbiBiZSBwdWJsaXNoZWQuCgogIEZBUSMgICA6ICZsdDtPVFJTX0ZBUV9OVU1CRVImZ3Q7CiAgVGl0bGUgIDogJmx0O09UUlNfRkFRX1RJVExFJmd0OwogIEF1dGhvciA6ICZsdDtPVFJTX0ZBUV9BVVRIT1ImZ3Q7CiAgU3RhdGUgIDogJmx0O09UUlNfRkFRX1NUQVRFJmd0OwoKSWYgeW91IHdhbnQgdG8gZG8gdGhpcywgY2xpY2sgb24gdGhpcyBsaW5rOgoKJmx0O09UUlNfQ09ORklHX0h0dHBUeXBlJmd0OzovLyZsdDtPVFJTX0NPTkZJR19GUUROJmd0Oy8mbHQ7T1RSU19DT05GSUdfU2NyaXB0QWxpYXMmZ3Q7aW5kZXgucGw/QWN0aW9uPUFnZW50RkFRRWRpdDtJdGVtSUQ9Jmx0O09UUlNfRkFRX0lURU1JRCZndDsKCllvdXIgT1RSUyBOb3RpZmljYXRpb24gTWFzdGVyCiAgICAgICAgICAgIDwvVGV4dEFyZWE+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpBcHByb3ZhbFRpY2tldFByaW9yaXR5IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmF1bHQgcHJpb3JpdHkgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpBcHByb3ZhbDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmc+MyBub3JtYWw8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkFwcHJvdmFsVGlja2V0RGVmYXVsdFN0YXRlIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpBcHByb3ZhbDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmc+bmV3PC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpBcHByb3ZhbFRpY2tldFR5cGUiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmYXVsdCB0eXBlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6QXBwcm92YWw8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nPlVuY2xhc3NpZmllZDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6SXRlbTo6RmllbGQxIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6Okl0ZW08L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2hvdyI+cHVibGljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDYXB0aW9uIj5TeW1wdG9tPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj4xMDA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6Okl0ZW06OkZpZWxkMiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpJdGVtPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNob3ciPnB1YmxpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2FwdGlvbiI+UHJvYmxlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpbyI+MjAwPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpJdGVtOjpGaWVsZDMiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6SXRlbTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTaG93Ij5wdWJsaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNhcHRpb24iPlNvbHV0aW9uPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj4zMDA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6Okl0ZW06OkZpZWxkNCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpJdGVtPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNob3ciPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2FwdGlvbiI+RmllbGQ0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj40MDA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6Okl0ZW06OkZpZWxkNSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpJdGVtPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNob3ciPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2FwdGlvbiI+RmllbGQ1PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj41MDA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6Okl0ZW06OkZpZWxkNiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpJdGVtPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNob3ciPmludGVybmFsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDYXB0aW9uIj5Db21tZW50PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj42MDA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJMaW5rT2JqZWN0OjpQb3NzaWJsZUxpbmsjIyM4MzAxIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlRoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSAnRkFRJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyICdGQVEnIG9iamVjdHMgdXNpbmcgdGhlICdOb3JtYWwnIGxpbmsgdHlwZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GcmFtZXdvcms8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpMaW5rT2JqZWN0PC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik9iamVjdDEiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iT2JqZWN0MiI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj5Ob3JtYWw8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJMaW5rT2JqZWN0OjpQb3NzaWJsZUxpbmsjIyM4MzAyIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlRoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSAnRkFRJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyICdGQVEnIG9iamVjdHMgdXNpbmcgdGhlICdQYXJlbnRDaGlsZCcgbGluayB0eXBlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZyYW1ld29yazwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OkxpbmtPYmplY3Q8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iT2JqZWN0MSI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPYmplY3QyIj5GQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlR5cGUiPlBhcmVudENoaWxkPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iTGlua09iamVjdDo6UG9zc2libGVMaW5rIyMjODMwMyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5UaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgJ0ZBUScgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciAnVGlja2V0JyBvYmplY3RzIHVzaW5nIHRoZSAnTm9ybWFsJyBsaW5rIHR5cGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RnJhbWV3b3JrPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6TGlua09iamVjdDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPYmplY3QxIj5GQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik9iamVjdDIiPlRpY2tldDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVHlwZSI+Tm9ybWFsPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iTGlua09iamVjdDo6UG9zc2libGVMaW5rIyMjODMwNCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5UaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgJ0ZBUScgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciAnVGlja2V0JyBvYmplY3RzIHVzaW5nIHRoZSAnUGFyZW50Q2hpbGQnIGxpbmsgdHlwZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GcmFtZXdvcms8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpMaW5rT2JqZWN0PC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik9iamVjdDEiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iT2JqZWN0MiI+VGlja2V0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj5QYXJlbnRDaGlsZDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudEZBUUV4cGxvcmVyIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8RnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgICAgICAgICA8R3JvdXA+ZmFxPC9Hcm91cD4KICAgICAgICAgICAgICAgIDxHcm91cFJvPmZhcTwvR3JvdXBSbz4KICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbj5GQVEtQXJlYTwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICA8TmF2QmFyTmFtZT5GQVE8L05hdkJhck5hbWU+CiAgICAgICAgICAgICAgICA8VGl0bGU+RkFRPC9UaXRsZT4KICAgICAgICAgICAgICAgIDxOYXZCYXI+CiAgICAgICAgICAgICAgICAgICAgPEdyb3VwUm8+ZmFxPC9Hcm91cFJvPgogICAgICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbj5GQVEtQXJlYTwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICAgICAgPFR5cGU+TWVudTwvVHlwZT4KICAgICAgICAgICAgICAgICAgICA8QmxvY2s+SXRlbUFyZWE8L0Jsb2NrPgogICAgICAgICAgICAgICAgICAgIDxOYW1lPkZBUTwvTmFtZT4KICAgICAgICAgICAgICAgICAgICA8TGluaz5BY3Rpb249QWdlbnRGQVFFeHBsb3JlcjwvTGluaz4KICAgICAgICAgICAgICAgICAgICA8TmF2QmFyPkZBUTwvTmF2QmFyPgogICAgICAgICAgICAgICAgICAgIDxBY2Nlc3NLZXk+cTwvQWNjZXNzS2V5PgogICAgICAgICAgICAgICAgICAgIDxQcmlvPjM1MDwvUHJpbz4KICAgICAgICAgICAgICAgIDwvTmF2QmFyPgogICAgICAgICAgICAgICAgPE5hdkJhcj4KICAgICAgICAgICAgICAgICAgICA8R3JvdXBSbz5mYXE8L0dyb3VwUm8+CiAgICAgICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RkFRIEV4cGxvcmVyPC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgICAgICA8TmFtZT5FeHBsb3JlcjwvTmFtZT4KICAgICAgICAgICAgICAgICAgICA8TGluaz5BY3Rpb249QWdlbnRGQVFFeHBsb3JlcjwvTGluaz4KICAgICAgICAgICAgICAgICAgICA8VHlwZT48L1R5cGU+CiAgICAgICAgICAgICAgICAgICAgPEJsb2NrPjwvQmxvY2s+CiAgICAgICAgICAgICAgICAgICAgPE5hdkJhcj5GQVE8L05hdkJhcj4KICAgICAgICAgICAgICAgICAgICA8QWNjZXNzS2V5PmU8L0FjY2Vzc0tleT4KICAgICAgICAgICAgICAgICAgICA8UHJpbz45MTA8L1ByaW8+CiAgICAgICAgICAgICAgICA8L05hdkJhcj4KICAgICAgICAgICAgICAgIDxMb2FkZXI+CiAgICAgICAgICAgICAgICAgICAgPENTUz5GQVEuQWdlbnQuRGV0YWlsLmNzczwvQ1NTPgogICAgICAgICAgICAgICAgPC9Mb2FkZXI+CiAgICAgICAgICAgIDwvRnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iQ3VzdG9tZXJGcm9udGVuZDo6TW9kdWxlIyMjQ3VzdG9tZXJGQVFFeHBsb3JlciIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpDdXN0b21lcjo6TW9kdWxlUmVnaXN0cmF0aW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEZyb250ZW5kTW9kdWxlUmVnPgogICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uPkN1c3RvbWVyIEZBUTwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICA8TmF2QmFyTmFtZT5GQVE8L05hdkJhck5hbWU+CiAgICAgICAgICAgICAgICA8VGl0bGU+PC9UaXRsZT4KICAgICAgICAgICAgICAgIDxOYXZCYXI+CiAgICAgICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uPkZBUTwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICAgICAgPE5hbWU+RkFRPC9OYW1lPgogICAgICAgICAgICAgICAgICAgIDxMaW5rPkFjdGlvbj1DdXN0b21lckZBUUV4cGxvcmVyPC9MaW5rPgogICAgICAgICAgICAgICAgICAgIDxUeXBlPk1lbnU8L1R5cGU+CiAgICAgICAgICAgICAgICAgICAgPEJsb2NrPjwvQmxvY2s+CiAgICAgICAgICAgICAgICAgICAgPE5hdkJhcj5GQVE8L05hdkJhcj4KICAgICAgICAgICAgICAgICAgICA8QWNjZXNzS2V5PjwvQWNjZXNzS2V5PgogICAgICAgICAgICAgICAgICAgIDxQcmlvPjcwMDwvUHJpbz4KICAgICAgICAgICAgICAgIDwvTmF2QmFyPgogICAgICAgICAgICAgICAgPE5hdkJhcj4KICAgICAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24+RkFRIEV4cGxvcmVyPC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgICAgICA8TmFtZT5GQVEgRXhwbG9yZXI8L05hbWU+CiAgICAgICAgICAgICAgICAgICAgPExpbms+QWN0aW9uPUN1c3RvbWVyRkFRRXhwbG9yZXI8L0xpbms+CiAgICAgICAgICAgICAgICAgICAgPFR5cGU+U3VibWVudTwvVHlwZT4KICAgICAgICAgICAgICAgICAgICA8QmxvY2s+PC9CbG9jaz4KICAgICAgICAgICAgICAgICAgICA8TmF2QmFyPkZBUTwvTmF2QmFyPgogICAgICAgICAgICAgICAgICAgIDxBY2Nlc3NLZXk+ZjwvQWNjZXNzS2V5PgogICAgICAgICAgICAgICAgICAgIDxQcmlvPjcxMDwvUHJpbz4KICAgICAgICAgICAgICAgIDwvTmF2QmFyPgogICAgICAgICAgICAgICAgPExvYWRlcj4KICAgICAgICAgICAgICAgICAgICA8Q1NTPkZBUS5DdXN0b21lci5EZXRhaWwuY3NzPC9DU1M+CiAgICAgICAgICAgICAgICAgICAgPENTUz5GQVEuQ3VzdG9tZXIuRGVmYXVsdC5jc3M8L0NTUz4KICAgICAgICAgICAgICAgICAgICA8Q1NTPkZBUS5XaWRnZXQuY3NzPC9DU1M+CiAgICAgICAgICAgICAgICAgICAgPENTU19JRTc+RkFRLkN1c3RvbWVyLkRlZmF1bHQuSUU3LmNzczwvQ1NTX0lFNz4KICAgICAgICAgICAgICAgICAgICA8Q1NTX0lFNz5GQVEuV2lkZ2V0LklFNy5jc3M8L0NTU19JRTc+CiAgICAgICAgICAgICAgICA8L0xvYWRlcj4KICAgICAgICAgICAgPC9Gcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpDdXN0b21lckZBUUV4cGxvcmVyIyMjU2VhcmNoTGltaXQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpDdXN0b21lcjo6RkFROjpWaWV3RXhwbG9yZXI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSJeWzAtOV17MSw4fSQiPjIwMDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVyRkFRRXhwbG9yZXIjIyNTZWFyY2hQYWdlU2hvd24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpDdXN0b21lcjo6RkFROjpWaWV3RXhwbG9yZXI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSJeWzAtOV17MSwzfSQiPjQwPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6Q3VzdG9tZXJGQVFFeHBsb3JlciMjI1NvcnRCeTo6RGVmYXVsdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6Q3VzdG9tZXI6OkZBUTo6Vmlld0V4cGxvcmVyPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSJGQVFJRCI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIj5UaXRsZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRkFRSUQiPk51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2F0ZWdvcnkiPkNhdGVnb3J5PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMYW5ndWFnZSI+TGFndWFnZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPlN0YXRlPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpDdXN0b21lckZBUUV4cGxvcmVyIyMjT3JkZXI6OkRlZmF1bHQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkN1c3RvbWVyOjpGQVE6OlZpZXdFeHBsb3JlcjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iRG93biI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRvd24iPkRvd248L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlVwIj5VcDwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgo8IS0tCiAgICBUaGlzIHNldHRpbmcgaXMgdGVtcG9yYXJ5IG1vdmVkIHRvIFpaWkZBUS54bWwgYXMgaW4gT1RSUyAzLjMueCBjdXJyZW50bHkgdGhlcmUgaXMgYW4gaXNzdWUgdGhhdAogICAgcHJldmVudHMgdGhpcyBzZXR0aW5nIHRvIG92ZXJyaWRlIHRoZSBmcmFtZXdvcmsgb25lCiAgICA8Q29uZmlnSXRlbSBOYW1lPSJQdWJsaWNGcm9udGVuZDo6Q29tbW9uUGFyYW0jIyNBY3Rpb24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmYXVsdCB2YWx1ZSBmb3IgdGhlIEFjdGlvbiBwYXJhbWV0ZXIgZm9yIHRoZSBwdWJsaWMgZnJvbnRlbmQuIFRoZSBBY3Rpb24gcGFyYW1ldGVyIGlzIHVzZWQgaW4gdGhlIHNjcmlwdHMgb2YgdGhlIHN5c3RlbS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6UHVibGljPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZz5QdWJsaWNGQVFFeHBsb3JlcjwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KLS0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJQdWJsaWNGcm9udGVuZDo6TW9kdWxlIyMjUHVibGljRkFRRXhwbG9yZXIiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OlB1YmxpYzo6TW9kdWxlUmVnaXN0cmF0aW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEZyb250ZW5kTW9kdWxlUmVnPgogICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uPlB1YmxpYyBmYXE8L0Rlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgPE5hdkJhck5hbWU+RkFRPC9OYXZCYXJOYW1lPgogICAgICAgICAgICAgICAgPFRpdGxlPjwvVGl0bGU+CiAgICAgICAgICAgICAgICA8TmF2QmFyPgogICAgICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbj5GQVEtQXJlYTwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICAgICAgPE5hbWU+RkFRPC9OYW1lPgogICAgICAgICAgICAgICAgICAgIDxMaW5rPkFjdGlvbj1QdWJsaWNGQVFFeHBsb3JlcjwvTGluaz4KICAgICAgICAgICAgICAgICAgICA8VHlwZT48L1R5cGU+CiAgICAgICAgICAgICAgICAgICAgPEJsb2NrPjwvQmxvY2s+CiAgICAgICAgICAgICAgICAgICAgPE5hdkJhcj48L05hdkJhcj4KICAgICAgICAgICAgICAgICAgICA8QWNjZXNzS2V5PmY8L0FjY2Vzc0tleT4KICAgICAgICAgICAgICAgICAgICA8UHJpbz40MDA8L1ByaW8+CiAgICAgICAgICAgICAgICA8L05hdkJhcj4KICAgICAgICAgICAgICAgIDxMb2FkZXI+CiAgICAgICAgICAgICAgICAgICAgPENTUz5GQVEuQ3VzdG9tZXIuRGV0YWlsLmNzczwvQ1NTPgogICAgICAgICAgICAgICAgICAgIDxDU1M+RkFRLkN1c3RvbWVyLkRlZmF1bHQuY3NzPC9DU1M+CiAgICAgICAgICAgICAgICAgICAgPENTUz5GQVEuV2lkZ2V0LmNzczwvQ1NTPgogICAgICAgICAgICAgICAgICAgIDxDU1NfSUU3PkZBUS5DdXN0b21lci5EZWZhdWx0LklFNy5jc3M8L0NTU19JRTc+CiAgICAgICAgICAgICAgICAgICAgPENTU19JRTc+RkFRLldpZGdldC5JRTcuY3NzPC9DU1NfSUU3PgogICAgICAgICAgICAgICAgPC9Mb2FkZXI+CiAgICAgICAgICAgIDwvRnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6UHVibGljRkFRRXhwbG9yZXIjIyNTZWFyY2hMaW1pdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpQdWJsaWM6OkZBUTo6Vmlld0V4cGxvcmVyPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iXlswLTldezEsOH0kIj4yMDA8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpQdWJsaWNGQVFFeHBsb3JlciMjI1NlYXJjaFBhZ2VTaG93biIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5OdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpQdWJsaWM6OkZBUTo6Vmlld0V4cGxvcmVyPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iXlswLTldezEsM30kIj40MDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OlB1YmxpY0ZBUUV4cGxvcmVyIyMjU29ydEJ5OjpEZWZhdWx0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6UHVibGljOjpGQVE6OlZpZXdFeHBsb3JlcjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iRkFRSUQiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSI+VGl0bGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkZBUUlEIj5OdW1iZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNhdGVnb3J5Ij5DYXRlZ29yeTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGFuZ3VhZ2UiPkxhZ3VhZ2U8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlN0YXRlIj5TdGF0ZTwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6UHVibGljRkFRRXhwbG9yZXIjIyNPcmRlcjo6RGVmYXVsdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OlB1YmxpYzo6RkFROjpWaWV3RXhwbG9yZXI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IkRvd24iPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEb3duIj5Eb3duPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJVcCI+VXA8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlB1YmxpY0Zyb250ZW5kOjpNb2R1bGUjIyNQdWJsaWNGQVFSU1MiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OlB1YmxpYzo6TW9kdWxlUmVnaXN0cmF0aW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEZyb250ZW5kTW9kdWxlUmVnPgogICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uPlB1YmxpYyBmYXE8L0Rlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgPE5hdkJhck5hbWU+RkFRPC9OYXZCYXJOYW1lPgogICAgICAgICAgICAgICAgPExvYWRlcj4KICAgICAgICAgICAgICAgIDwvTG9hZGVyPgogICAgICAgICAgICA8L0Zyb250ZW5kTW9kdWxlUmVnPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6SXRlbTo6SFRNTCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93IEZBUSBBcnRpY2xlIHdpdGggSFRNTC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpJdGVtPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSIxIj4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMCI+Tm88L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEiPlllczwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRnJvbnRlbmQ6OkhlYWRlck1ldGFNb2R1bGUjIyMzLUZBUVNlYXJjaCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Nb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2guPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVNZXRhSGVhZDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpIZWFkZXJNZXRhRkFRU2VhcmNoPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPkFnZW50RkFRU2VhcmNoPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iQ3VzdG9tZXJGcm9udGVuZDo6SGVhZGVyTWV0YU1vZHVsZSMjIzMtRkFRU2VhcmNoIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgZmFxIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpDdXN0b21lcjo6TW9kdWxlTWV0YUhlYWQ8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6Q3VzdG9tZXJIZWFkZXJNZXRhRkFRU2VhcmNoPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPkN1c3RvbWVyRkFRU2VhcmNoPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iUHVibGljRnJvbnRlbmQ6OkhlYWRlck1ldGFNb2R1bGUjIyMzLUZBUVNlYXJjaCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Nb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OlB1YmxpYzo6TW9kdWxlTWV0YUhlYWQ8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6UHVibGljSGVhZGVyTWV0YUZBUVNlYXJjaDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj5QdWJsaWNGQVFTZWFyY2g8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGcm9udGVuZDo6T3V0cHV0OjpGaWx0ZXJFbGVtZW50UG9zdCMjI0ZBUSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHdoZXJlIHRoZSAnSW5zZXJ0IEZBUScgbGluayB3aWxsIGJlIGRpc3BsYXllZC4gTm90ZTogQWdlbnRUaWNrZXRBY3Rpb25Db21tb24gaW5jbHVkZXMgQWdlbnRUaWNrZXROb3RlLCBBZ2VudFRpY2tldENsb3NlLCBBZ2VudFRpY2tldEZyZWVUZXh0LCBBZ2VudFRpY2tldE93bmVyLCBBZ2VudFRpY2tldFBlbmRpbmcsIEFnZW50VGlja2V0UHJpb3JpdHkgYW5kIEFnZW50VGlja2V0UmVzcG9uc2libGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50PC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6Ok91dHB1dEZpbHRlckZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVidWciPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRlbXBsYXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWdlbnRUaWNrZXRQaG9uZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBZ2VudFRpY2tldEVtYWlsIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFnZW50VGlja2V0Q29tcG9zZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBZ2VudFRpY2tldEZvcndhcmQiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWdlbnRUaWNrZXRBY3Rpb25Db21tb24iPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRnJvbnRlbmQ6Ok91dHB1dDo6T3V0cHV0RmlsdGVyVGV4dEF1dG9MaW5rIyMjRkFRIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkEgZmlsdGVyIGZvciBIVE1MIG91dHB1dCB0byBhZGQgbGlua3MgYmVoaW5kIGEgZGVmaW5lZCBzdHJpbmcuIFRoZSBlbGVtZW50IEltYWdlIGFsbG93cyB0d28gaW5wdXQga2luZHMuIEZpcnN0IHRoZSBuYW1lIG9mIGFuIGltYWdlIChlLmcuIGZhcS5wbmcpLiBJbiB0aGlzIGNhc2UgdGhlIE9UUlMgaW1hZ2UgcGF0aCB3aWxsIGJlIHVzZWQuIFRoZSBzZWNvbmQgcG9zc2liaWxpdHkgaXMgdG8gaW5zZXJ0IHRoZSBsaW5rIHRvIHRoZSBpbWFnZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GcmFtZXdvcms8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpXZWI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUmVnRXhwIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPihGQVEpWyNcc10qPzEoXGR7NH0pPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlVSTDEiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIj5GQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVVJMIj4vb3Rycy9pbmRleC5wbD9BY3Rpb249QWdlbnRGQVFab29tO0l0ZW1JRD0mbHQ7TUFUQ0gyJmd0OzwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJJbWFnZSI+aGVscC1zbWFsbC5wbmc8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGFyZ2V0Ij5fYmxhbms8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50RkFRQWRkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8RnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgICAgICAgICA8R3JvdXA+ZmFxPC9Hcm91cD4KICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbj5GQVEtQXJlYTwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICA8TmF2QmFyTmFtZT5GQVE8L05hdkJhck5hbWU+CiAgICAgICAgICAgICAgICA8VGl0bGU+RkFRPC9UaXRsZT4KICAgICAgICAgICAgICAgIDxOYXZCYXI+CiAgICAgICAgICAgICAgICAgICAgPEdyb3VwPmZhcTwvR3JvdXA+CiAgICAgICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TmV3IEZBUSBBcnRpY2xlPC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgICAgICA8TmFtZT5OZXc8L05hbWU+CiAgICAgICAgICAgICAgICAgICAgPExpbms+QWN0aW9uPUFnZW50RkFRQWRkPC9MaW5rPgogICAgICAgICAgICAgICAgICAgIDxUeXBlPjwvVHlwZT4KICAgICAgICAgICAgICAgICAgICA8QmxvY2s+PC9CbG9jaz4KICAgICAgICAgICAgICAgICAgICA8TmF2QmFyPkZBUTwvTmF2QmFyPgogICAgICAgICAgICAgICAgICAgIDxBY2Nlc3NLZXk+bjwvQWNjZXNzS2V5PgogICAgICAgICAgICAgICAgICAgIDxQcmlvPjkyMDwvUHJpbz4KICAgICAgICAgICAgICAgIDwvTmF2QmFyPgogICAgICAgICAgICAgICAgPExvYWRlcj4KICAgICAgICAgICAgICAgICAgICA8Q1NTPkZBUS5BZ2VudC5EZXRhaWwuY3NzPC9DU1M+CiAgICAgICAgICAgICAgICA8L0xvYWRlcj4KICAgICAgICAgICAgPC9Gcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFFZGl0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8RnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgICAgICAgICA8R3JvdXA+ZmFxPC9Hcm91cD4KICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbj5GQVEgRWRpdDwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICA8VGl0bGU+RWRpdDwvVGl0bGU+CiAgICAgICAgICAgICAgICA8TmF2QmFyTmFtZT5GQVE8L05hdkJhck5hbWU+CiAgICAgICAgICAgICAgICA8TG9hZGVyPgogICAgICAgICAgICAgICAgICAgIDxDU1M+RkFRLkFnZW50LkRldGFpbC5jc3M8L0NTUz4KICAgICAgICAgICAgICAgIDwvTG9hZGVyPgogICAgICAgICAgICA8L0Zyb250ZW5kTW9kdWxlUmVnPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudEZBUUxhbmd1YWdlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8RnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgICAgICAgICA8R3JvdXA+ZmFxX2FkbWluPC9Hcm91cD4KICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbj5GQVEtQXJlYTwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICA8VGl0bGU+RkFRPC9UaXRsZT4KICAgICAgICAgICAgICAgIDxOYXZCYXJOYW1lPkZBUTwvTmF2QmFyTmFtZT4KICAgICAgICAgICAgICAgIDxOYXZCYXI+CiAgICAgICAgICAgICAgICAgICAgPEdyb3VwPmZhcV9hZG1pbjwvR3JvdXA+CiAgICAgICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TGFuZ3VhZ2UgTWFuYWdlbWVudDwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICAgICAgPE5hbWUgVHJhbnNsYXRhYmxlPSIxIj5MYW5ndWFnZSBNYW5hZ2VtZW50PC9OYW1lPgogICAgICAgICAgICAgICAgICAgIDxMaW5rPkFjdGlvbj1BZ2VudEZBUUxhbmd1YWdlPC9MaW5rPgogICAgICAgICAgICAgICAgICAgIDxUeXBlPjwvVHlwZT4KICAgICAgICAgICAgICAgICAgICA8QmxvY2s+PC9CbG9jaz4KICAgICAgICAgICAgICAgICAgICA8TmF2QmFyPkZBUTwvTmF2QmFyPgogICAgICAgICAgICAgICAgICAgIDxBY2Nlc3NLZXk+dTwvQWNjZXNzS2V5PgogICAgICAgICAgICAgICAgICAgIDxQcmlvPjk0MDwvUHJpbz4KICAgICAgICAgICAgICAgIDwvTmF2QmFyPgogICAgICAgICAgICAgICAgPExvYWRlcj4KICAgICAgICAgICAgICAgICAgICA8SmF2YVNjcmlwdD5GQVEuQWdlbnQuQ29uZmlybWF0aW9uRGlhbG9nLmpzPC9KYXZhU2NyaXB0PgogICAgICAgICAgICAgICAgPC9Mb2FkZXI+CiAgICAgICAgICAgIDwvRnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50RkFRQ2F0ZWdvcnkiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxGcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICAgICAgICAgIDxHcm91cD5mYXFfYWRtaW48L0dyb3VwPgogICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uPkZBUS1BcmVhPC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgIDxUaXRsZT5GQVE8L1RpdGxlPgogICAgICAgICAgICAgICAgPE5hdkJhck5hbWU+RkFRPC9OYXZCYXJOYW1lPgogICAgICAgICAgICAgICAgPE5hdkJhcj4KICAgICAgICAgICAgICAgICAgICA8R3JvdXA+ZmFxX2FkbWluPC9Hcm91cD4KICAgICAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5DYXRlZ29yeSBNYW5hZ2VtZW50PC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgICAgICA8TmFtZSBUcmFuc2xhdGFibGU9IjEiPkNhdGVnb3J5IE1hbmFnZW1lbnQ8L05hbWU+CiAgICAgICAgICAgICAgICAgICAgPExpbms+QWN0aW9uPUFnZW50RkFRQ2F0ZWdvcnk8L0xpbms+CiAgICAgICAgICAgICAgICAgICAgPFR5cGU+PC9UeXBlPgogICAgICAgICAgICAgICAgICAgIDxCbG9jaz48L0Jsb2NrPgogICAgICAgICAgICAgICAgICAgIDxOYXZCYXI+RkFRPC9OYXZCYXI+CiAgICAgICAgICAgICAgICAgICAgPEFjY2Vzc0tleT5jPC9BY2Nlc3NLZXk+CiAgICAgICAgICAgICAgICAgICAgPFByaW8+OTUwPC9QcmlvPgogICAgICAgICAgICAgICAgPC9OYXZCYXI+CiAgICAgICAgICAgICAgICA8TG9hZGVyPgogICAgICAgICAgICAgICAgICAgIDxKYXZhU2NyaXB0PkZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cuanM8L0phdmFTY3JpcHQ+CiAgICAgICAgICAgICAgICA8L0xvYWRlcj4KICAgICAgICAgICAgPC9Gcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFTZWFyY2giIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxGcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICAgICAgICAgIDxHcm91cD5mYXE8L0dyb3VwPgogICAgICAgICAgICAgICAgPEdyb3VwUm8+ZmFxPC9Hcm91cFJvPgogICAgICAgICAgICAgICAgPFRpdGxlPkZBUTwvVGl0bGU+CiAgICAgICAgICAgICAgICA8TmF2QmFyTmFtZT5GQVE8L05hdkJhck5hbWU+CiAgICAgICAgICAgICAgICA8TmF2QmFyPgogICAgICAgICAgICAgICAgICAgIDxHcm91cFJvPmZhcTwvR3JvdXBSbz4KICAgICAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TZWFyY2ggRkFRPC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgICAgICA8TmFtZSBUcmFuc2xhdGFibGU9IjEiPlNlYXJjaDwvTmFtZT4KICAgICAgICAgICAgICAgICAgICA8TGluaz5BY3Rpb249QWdlbnRGQVFTZWFyY2g8L0xpbms+CiAgICAgICAgICAgICAgICAgICAgPExpbmtPcHRpb24+b25jbGljaz0iQ29yZS5BZ2VudC5TZWFyY2guT3BlblNlYXJjaERpYWxvZygnQWdlbnRGQVFTZWFyY2gnKTsgaWYgKGV2ZW50LnN0b3BQcm9wYWdhdGlvbikgeyBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgfSBlbHNlIHsgd2luZG93LmV2ZW50LmNhbmNlbEJ1YmJsZSA9IHRydWU7IH0gcmV0dXJuIGZhbHNlOyI8L0xpbmtPcHRpb24+CiAgICAgICAgICAgICAgICAgICAgPFR5cGU+PC9UeXBlPgogICAgICAgICAgICAgICAgICAgIDxCbG9jaz48L0Jsb2NrPgogICAgICAgICAgICAgICAgICAgIDxOYXZCYXI+RkFRPC9OYXZCYXI+CiAgICAgICAgICAgICAgICAgICAgPEFjY2Vzc0tleT5zPC9BY2Nlc3NLZXk+CiAgICAgICAgICAgICAgICAgICAgPFByaW8+OTYwPC9QcmlvPgogICAgICAgICAgICAgICAgPC9OYXZCYXI+CiAgICAgICAgICAgICAgICA8TG9hZGVyPgogICAgICAgICAgICAgICAgPC9Mb2FkZXI+CiAgICAgICAgICAgIDwvRnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50RkFRU2VhcmNoU21hbGwiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxGcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICAgICAgICAgIDxHcm91cD5mYXE8L0dyb3VwPgogICAgICAgICAgICAgICAgPEdyb3VwUm8+ZmFxPC9Hcm91cFJvPgogICAgICAgICAgICAgICAgPFRpdGxlPkZBUTwvVGl0bGU+CiAgICAgICAgICAgICAgICA8TmF2QmFyTmFtZT5GQVE8L05hdkJhck5hbWU+CiAgICAgICAgICAgIDwvRnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRnJvbnRlbmQ6OlNlYXJjaCMjI0ZBUSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5GQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpTZWFyY2hSb3V0ZXI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iXig/OkFnZW50fEFkbWluKUZBUSI+QWN0aW9uPUFnZW50RkFRU2VhcmNoO1N1YmFjdGlvbj1BSkFYPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcjIyNTbWFsbCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpGQVFPdmVydmlldzwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpGQVFPdmVydmlld1NtYWxsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5TbWFsbDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZVNob3J0Ij5TPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFTZWFyY2gjIyNTaG93Q29sdW1ucyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6RkFROjpWaWV3U2VhcmNoPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDYXRlZ29yeSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGFuZ3VhZ2UiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlN0YXRlIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJWYWxpZCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2hhbmdlZCI+MTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRU2VhcmNoIyMjU29ydEJ5OjpEZWZhdWx0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpGQVE6OlZpZXdTZWFyY2g8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IkZBUUlEIj4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPlRpdGxlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJGQVFJRCI+TnVtYmVyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDYXRlZ29yeSI+Q2F0ZWdvcnk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikxhbmd1YWdlIj5MYWd1YWdlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTdGF0ZSI+U3RhdGU8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRU2VhcmNoIyMjT3JkZXI6OkRlZmF1bHQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6RkFROjpWaWV3U2VhcmNoPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSJEb3duIj4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRG93biI+RG93bjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVXAiPlVwPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUVNlYXJjaCMjI1NlYXJjaExpbWl0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6RkFROjpWaWV3U2VhcmNoPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iXlswLTldezEsOH0kIj4yMDA8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUUV4cGxvcmVyIyMjU2hvd0NvbHVtbnMiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6RkFROjpWaWV3RXhwbG9yZXI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNhdGVnb3J5Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMYW5ndWFnZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlZhbGlkIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDaGFuZ2VkIj4wPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFFeHBsb3JlciMjI1NvcnRCeTo6RGVmYXVsdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OkZBUTo6Vmlld0V4cGxvcmVyPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSJGQVFJRCI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIj5UaXRsZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRkFRSUQiPk51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2F0ZWdvcnkiPkNhdGVnb3J5PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMYW5ndWFnZSI+TGFndWFnZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPlN0YXRlPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUUV4cGxvcmVyIyMjT3JkZXI6OkRlZmF1bHQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpGQVE6OlZpZXdFeHBsb3JlcjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iRG93biI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRvd24iPkRvd248L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlVwIj5VcDwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFFeHBsb3JlciMjI1NlYXJjaExpbWl0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OkZBUTo6Vmlld0V4cGxvcmVyPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iXlswLTldezEsOH0kIj4yMDA8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJQcmVmZXJlbmNlc0dyb3VwcyMjI0ZBUU92ZXJ2aWV3U21hbGxQYWdlU2hvd24iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlByZWZlcmVuY2VzPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OlByZWZlcmVuY2VzR2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29sdW1uIj5PdGhlciBTZXR0aW5nczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGFiZWwiIFRyYW5zbGF0YWJsZT0iMSI+RkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IktleSIgVHJhbnNsYXRhYmxlPSIxIj5GQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBPdmVydmlldyAiU21hbGwiPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEYXRhIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxMCI+MTA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMTUiPjE1PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjIwIj4yMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIyNSI+MjU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMzAiPjMwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjM1Ij4zNTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRhdGFTZWxlY3RlZCI+MjU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByZWZLZXkiPlVzZXJGQVFPdmVydmlld1NtYWxsUGFnZVNob3duPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj44MDAwPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3RpdmUiPjA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFab29tIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8RnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgICAgICAgICA8R3JvdXA+ZmFxPC9Hcm91cD4KICAgICAgICAgICAgICAgIDxHcm91cFJvPmZhcTwvR3JvdXBSbz4KICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbj5GQVEtQXJlYTwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICA8VGl0bGU+RkFRPC9UaXRsZT4KICAgICAgICAgICAgICAgIDxOYXZCYXJOYW1lPkZBUTwvTmF2QmFyTmFtZT4KICAgICAgICAgICAgICAgIDxMb2FkZXI+CiAgICAgICAgICAgICAgICAgICAgPENTUz5GQVEuQWdlbnQuRGV0YWlsLmNzczwvQ1NTPgogICAgICAgICAgICAgICAgICAgIDxDU1M+RkFRLldpZGdldC5jc3M8L0NTUz4KICAgICAgICAgICAgICAgICAgICA8SmF2YVNjcmlwdD5GQVEuQWdlbnQuQ29uZmlybWF0aW9uRGlhbG9nLmpzPC9KYXZhU2NyaXB0PgogICAgICAgICAgICAgICAgICAgIDxKYXZhU2NyaXB0PkZBUS5BZ2VudC5UaWNrZXRDb21wb3NlLmpzPC9KYXZhU2NyaXB0PgogICAgICAgICAgICAgICAgICAgIDxKYXZhU2NyaXB0PkZBUS5BZ2VudC5GQVFab29tLmpzPC9KYXZhU2NyaXB0PgogICAgICAgICAgICAgICAgPC9Mb2FkZXI+CiAgICAgICAgICAgIDwvRnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICA8Q29uZmlnSXRlbSBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFSaWNoVGV4dCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEZyb250ZW5kTW9kdWxlUmVnPgogICAgICAgICAgICAgICAgPEdyb3VwPmZhcTwvR3JvdXA+CiAgICAgICAgICAgICAgICA8R3JvdXBSbz5mYXE8L0dyb3VwUm8+CiAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24+RkFRIEFKQVggUmVzcG9uZGVyIGZvciBSaWNodGV4dDwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICA8VGl0bGU+RkFRIEFKQVggUmVzcG9uZGVyPC9UaXRsZT4KICAgICAgICAgICAgPC9Gcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpNZW51TW9kdWxlIyMjMDAwLUJhY2siIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OkZBUTo6TWVudU1vZHVsZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpGQVFNZW51R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+QmFjazwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+QmFjazwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPiRFbnZ7Ikxhc3RTY3JlZW5PdmVydmlldyJ9PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXJnZXQiPkJhY2s8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpNZW51TW9kdWxlIyMjMDEwLUVkaXQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OkZBUTo6TWVudU1vZHVsZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpGQVFNZW51R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+RWRpdDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+RWRpdCB0aGlzIEZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj5BZ2VudEZBUUVkaXQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudEZBUUVkaXQ7SXRlbUlEPSRRRGF0YXsiSXRlbUlEIn07U2NyZWVuVHlwZT1Qb3B1cDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGFyZ2V0Ij5Qb3BVcDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUjIyMwMjAtSGlzdG9yeSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OkZBUTo6TWVudU1vZHVsZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpGQVFNZW51R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+SGlzdG9yeTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+SGlzdG9yeSBvZiB0aGlzIEZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj5BZ2VudEZBUUhpc3Rvcnk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudEZBUUhpc3Rvcnk7SXRlbUlEPSRRRGF0YXsiSXRlbUlEIn08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhcmdldCI+UG9wVXA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpNZW51TW9kdWxlIyMjMDMwLVByaW50IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6RkFROjpNZW51TW9kdWxlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkZBUU1lbnVHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5QcmludDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+UHJpbnQgdGhpcyBGQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+QWdlbnRGQVFQcmludDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50RkFRUHJpbnQ7SXRlbUlEPSRRRGF0YXsiSXRlbUlEIn08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmtQYXJhbSI+dGFyZ2V0PSJwcmludF9GQVEiPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXJnZXQiPlBvcFVwPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6TWVudU1vZHVsZSMjIzA0MC1MaW5rIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgRkFRIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIHpvb20gdmlldyBvZiBzdWNoIEZBUSBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6RkFROjpNZW51TW9kdWxlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkZBUU1lbnVHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5MaW5rPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5MaW5rIGFub3RoZXIgb2JqZWN0IHRvIHRoaXMgRkFRIGl0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+QWdlbnRMaW5rT2JqZWN0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRMaW5rT2JqZWN0O1NvdXJjZU9iamVjdD1GQVE7U291cmNlS2V5PSRRRGF0YXsiSXRlbUlEIn08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhcmdldCI+UG9wVXA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpNZW51TW9kdWxlIyMjMDUwLURlbGV0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OkZBUTo6TWVudU1vZHVsZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpGQVFNZW51R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+RGVsZXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5EZWxldGUgdGhpcyBGQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+QWdlbnRGQVFEZWxldGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudEZBUURlbGV0ZTtJdGVtSUQ9JFFEYXRheyJJdGVtSUQifTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGFyZ2V0Ij5Db25maXJtYXRpb25EaWFsb2c8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkVsZW1lbnRTZWxlY3RvciI+IyRRRGF0YXsiTWVudUlEIn08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRpYWxvZ0NvbnRlbnRRdWVyeVN0cmluZyI+QWN0aW9uPUFnZW50RkFRRGVsZXRlO0l0ZW1JRD0kUURhdGF7Ikl0ZW1JRCJ9PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maXJtZWRBY3Rpb25RdWVyeVN0cmluZyI+QWN0aW9uPUFnZW50RkFRRGVsZXRlO1N1YmFjdGlvbj1EZWxldGU7SXRlbUlEPSRRRGF0YXsiSXRlbUlEIn08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRpYWxvZ1RpdGxlIj4kVGV4dHsiRGVsZXRlIn0gJENvbmZpZ3siRkFROjpGQVFIb29rIn0gJFFEYXRheyJOdW1iZXIifTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkN1c3RvbWVyRnJvbnRlbmQ6Ok1vZHVsZSMjI0N1c3RvbWVyRkFRWm9vbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpDdXN0b21lcjo6TW9kdWxlUmVnaXN0cmF0aW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEZyb250ZW5kTW9kdWxlUmVnPgogICAgICAgICAgICAgICAgPFRpdGxlPjwvVGl0bGU+CiAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24+Q3VzdG9tZXIgRkFRLVpvb208L0Rlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgPE5hdkJhck5hbWU+RkFRPC9OYXZCYXJOYW1lPgogICAgICAgICAgICAgICAgPExvYWRlcj4KICAgICAgICAgICAgICAgICAgICA8Q1NTPkZBUS5DdXN0b21lci5EZXRhaWwuY3NzPC9DU1M+CiAgICAgICAgICAgICAgICAgICAgPENTUz5GQVEuQ3VzdG9tZXIuRGVmYXVsdC5jc3M8L0NTUz4KICAgICAgICAgICAgICAgICAgICA8Q1NTPkZBUS5GQVFab29tLmNzczwvQ1NTPgogICAgICAgICAgICAgICAgICAgIDxKYXZhU2NyaXB0PkZBUS5DdXN0b21lci5GQVFab29tLmpzPC9KYXZhU2NyaXB0PgogICAgICAgICAgICAgICAgPC9Mb2FkZXI+CiAgICAgICAgICAgIDwvRnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iQ3VzdG9tZXJGcm9udGVuZDo6TW9kdWxlIyMjQ3VzdG9tZXJGQVFTZWFyY2giIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6Q3VzdG9tZXI6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxGcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbj5DdXN0b21lciBGQVEgc2VhcmNoPC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgIDxOYXZCYXJOYW1lPkZBUTwvTmF2QmFyTmFtZT4KICAgICAgICAgICAgICAgIDxUaXRsZT5TZWFyY2ggRkFRPC9UaXRsZT4KICAgICAgICAgICAgICAgIDxOYXZCYXI+CiAgICAgICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2VhcmNoPC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgICAgICA8TmFtZSBUcmFuc2xhdGFibGU9IjEiPlNlYXJjaDwvTmFtZT4KICAgICAgICAgICAgICAgICAgICA8QmxvY2s+PC9CbG9jaz4KICAgICAgICAgICAgICAgICAgICA8VHlwZT5TdWJtZW51PC9UeXBlPgogICAgICAgICAgICAgICAgICAgIDxOYXZCYXI+RkFRPC9OYXZCYXI+CiAgICAgICAgICAgICAgICAgICAgPExpbms+QWN0aW9uPUN1c3RvbWVyRkFRU2VhcmNoPC9MaW5rPgogICAgICAgICAgICAgICAgICAgIDxMaW5rT3B0aW9uPjwvTGlua09wdGlvbj4KICAgICAgICAgICAgICAgICAgICA8QWNjZXNzS2V5PjwvQWNjZXNzS2V5PgogICAgICAgICAgICAgICAgICAgIDxQcmlvPjc4MDwvUHJpbz4KICAgICAgICAgICAgICAgIDwvTmF2QmFyPgogICAgICAgICAgICAgICAgPExvYWRlcj4KICAgICAgICAgICAgICAgIDwvTG9hZGVyPgogICAgICAgICAgICA8L0Zyb250ZW5kTW9kdWxlUmVnPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVyRkFRU2VhcmNoIyMjU2VhcmNoTGltaXQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkN1c3RvbWVyOjpGQVE6OlZpZXdTZWFyY2g8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSJeWzAtOV17MSw4fSQiPjIwMDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVyRkFRU2VhcmNoIyMjU2VhcmNoUGFnZVNob3duIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6Q3VzdG9tZXI6OkZBUTo6Vmlld1NlYXJjaDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9Il5bMC05XXsxLDN9JCI+NDA8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpDdXN0b21lckZBUVNlYXJjaCMjI1NvcnRCeTo6RGVmYXVsdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpDdXN0b21lcjo6RkFROjpWaWV3U2VhcmNoPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSJGQVFJRCI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIj5UaXRsZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRkFRSUQiPk51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2F0ZWdvcnkiPkNhdGVnb3J5PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMYW5ndWFnZSI+TGFndWFnZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPlN0YXRlPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpDdXN0b21lckZBUVNlYXJjaCMjI09yZGVyOjpEZWZhdWx0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6Q3VzdG9tZXI6OkZBUTo6Vmlld1NlYXJjaDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iRG93biI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRvd24iPkRvd248L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlVwIj5VcDwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50RkFRUHJpbnQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxGcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICAgICAgICAgIDxHcm91cD5mYXE8L0dyb3VwPgogICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uPkZBUSBQcmludDwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICA8VGl0bGU+UHJpbnQ8L1RpdGxlPgogICAgICAgICAgICAgICAgPE5hdkJhck5hbWU+RkFRPC9OYXZCYXJOYW1lPgogICAgICAgICAgICA8L0Zyb250ZW5kTW9kdWxlUmVnPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkN1c3RvbWVyRnJvbnRlbmQ6Ok1vZHVsZSMjI0N1c3RvbWVyRkFRUHJpbnQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6Q3VzdG9tZXI6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxGcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICAgICAgICAgIDxUaXRsZT48L1RpdGxlPgogICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uPkN1c3RvbWVyIEZBUS1QcmludDwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICA8TmF2QmFyTmFtZT5GQVE8L05hdkJhck5hbWU+CiAgICAgICAgICAgIDwvRnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iUHVibGljRnJvbnRlbmQ6Ok1vZHVsZSMjI1B1YmxpY0ZBUVNlYXJjaCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6UHVibGljOjpNb2R1bGVSZWdpc3RyYXRpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8RnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24+UHVibGljIEZBUSBzZWFyY2g8L0Rlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgPE5hdkJhck5hbWU+RkFRPC9OYXZCYXJOYW1lPgogICAgICAgICAgICAgICAgPFRpdGxlPlNlYXJjaCBGQVE8L1RpdGxlPgogICAgICAgICAgICAgICAgPE5hdkJhcj4KICAgICAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5GQVEtQXJlYTwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICAgICAgPE5hbWUgVHJhbnNsYXRhYmxlPSIxIj5TZWFyY2ggRkFRPC9OYW1lPgogICAgICAgICAgICAgICAgICAgIDxCbG9jaz48L0Jsb2NrPgogICAgICAgICAgICAgICAgICAgIDxUeXBlPjwvVHlwZT4KICAgICAgICAgICAgICAgICAgICA8TmF2QmFyPjwvTmF2QmFyPgogICAgICAgICAgICAgICAgICAgIDxMaW5rPkFjdGlvbj1QdWJsaWNGQVFTZWFyY2g8L0xpbms+CiAgICAgICAgICAgICAgICAgICAgPExpbmtPcHRpb24+PC9MaW5rT3B0aW9uPgogICAgICAgICAgICAgICAgICAgIDxBY2Nlc3NLZXk+PC9BY2Nlc3NLZXk+CiAgICAgICAgICAgICAgICAgICAgPFByaW8+NjAwPC9QcmlvPgogICAgICAgICAgICAgICAgPC9OYXZCYXI+CiAgICAgICAgICAgICAgICA8TG9hZGVyPgogICAgICAgICAgICAgICAgICAgIDxDU1M+RkFRLkN1c3RvbWVyLkRlZmF1bHQuY3NzPC9DU1M+CiAgICAgICAgICAgICAgICA8L0xvYWRlcj4KICAgICAgICAgICAgPC9Gcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpQdWJsaWNGQVFTZWFyY2gjIyNTZWFyY2hMaW1pdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OlB1YmxpYzo6RkFROjpWaWV3U2VhcmNoPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iXlswLTldezEsOH0kIj4yMDA8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpQdWJsaWNGQVFTZWFyY2gjIyNTZWFyY2hQYWdlU2hvd24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6UHVibGljOjpWaWV3RkFRU2VhcmNoPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iXlswLTldezEsM30kIj40MDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OlB1YmxpY0ZBUVNlYXJjaCMjI1NvcnRCeTo6RGVmYXVsdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6UHVibGljOjpGQVE6OlZpZXdTZWFyY2g8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IkZBUUlEIj4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPlRpdGxlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJGQVFJRCI+TnVtYmVyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDYXRlZ29yeSI+Q2F0ZWdvcnk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikxhbmd1YWdlIj5MYWd1YWdlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTdGF0ZSI+U3RhdGU8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OlB1YmxpY0ZBUVNlYXJjaCMjI09yZGVyOjpEZWZhdWx0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OlB1YmxpYzo6RkFROjpWaWV3U2VhcmNoPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSJEb3duIj4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRG93biI+RG93bjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVXAiPlVwPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJQdWJsaWNGcm9udGVuZDo6TW9kdWxlIyMjUHVibGljRkFRWm9vbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6UHVibGljOjpNb2R1bGVSZWdpc3RyYXRpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8RnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgICAgICAgICA8VGl0bGU+PC9UaXRsZT4KICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbj5QdWJsaWMgRkFRLVpvb208L0Rlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgPE5hdkJhck5hbWU+RkFRPC9OYXZCYXJOYW1lPgogICAgICAgICAgICAgICAgPExvYWRlcj4KICAgICAgICAgICAgICAgICAgICA8Q1NTPkZBUS5DdXN0b21lci5EZWZhdWx0LmNzczwvQ1NTPgogICAgICAgICAgICAgICAgICAgIDxDU1M+RkFRLkN1c3RvbWVyLkRldGFpbC5jc3M8L0NTUz4KICAgICAgICAgICAgICAgICAgICA8Q1NTPkZBUS5GQVFab29tLmNzczwvQ1NTPgogICAgICAgICAgICAgICAgICAgIDxKYXZhU2NyaXB0PkZBUS5DdXN0b21lci5GQVFab29tLmpzPC9KYXZhU2NyaXB0PgogICAgICAgICAgICAgICAgPC9Mb2FkZXI+CiAgICAgICAgICAgIDwvRnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iUHVibGljRnJvbnRlbmQ6Ok1vZHVsZSMjI1B1YmxpY0ZBUSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6UHVibGljOjpNb2R1bGVSZWdpc3RyYXRpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8RnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgICAgICAgICA8VGl0bGU+PC9UaXRsZT4KICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbj5QdWJsaWMgRkFRLVpvb208L0Rlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgPE5hdkJhck5hbWU+RkFRPC9OYXZCYXJOYW1lPgogICAgICAgICAgICA8L0Zyb250ZW5kTW9kdWxlUmVnPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlB1YmxpY0Zyb250ZW5kOjpNb2R1bGUjIyNQdWJsaWNGQVFQcmludCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6UHVibGljOjpNb2R1bGVSZWdpc3RyYXRpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8RnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgICAgICAgICA8VGl0bGU+PC9UaXRsZT4KICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbj5QdWJsaWMgRkFRLVByaW50PC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgIDxOYXZCYXJOYW1lPkZBUTwvTmF2QmFyTmFtZT4KICAgICAgICAgICAgPC9Gcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFKb3VybmFsIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8RnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgICAgICAgICA8R3JvdXA+ZmFxPC9Hcm91cD4KICAgICAgICAgICAgICAgIDxHcm91cFJvPmZhcTwvR3JvdXBSbz4KICAgICAgICAgICAgICAgIDxUaXRsZT5GQVE8L1RpdGxlPgogICAgICAgICAgICAgICAgPE5hdkJhck5hbWU+RkFRPC9OYXZCYXJOYW1lPgogICAgICAgICAgICAgICAgPE5hdkJhcj4KICAgICAgICAgICAgICAgICAgICA8R3JvdXBSbz5mYXE8L0dyb3VwUm8+CiAgICAgICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RkFRIEpvdXJuYWw8L0Rlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgICAgIDxOYW1lIFRyYW5zbGF0YWJsZT0iMSI+Sm91cm5hbDwvTmFtZT4KICAgICAgICAgICAgICAgICAgICA8TGluaz5BY3Rpb249QWdlbnRGQVFKb3VybmFsPC9MaW5rPgogICAgICAgICAgICAgICAgICAgIDxUeXBlPjwvVHlwZT4KICAgICAgICAgICAgICAgICAgICA8QmxvY2s+PC9CbG9jaz4KICAgICAgICAgICAgICAgICAgICA8TmF2QmFyPkZBUTwvTmF2QmFyPgogICAgICAgICAgICAgICAgICAgIDxBY2Nlc3NLZXk+ajwvQWNjZXNzS2V5PgogICAgICAgICAgICAgICAgICAgIDxQcmlvPjkzMDwvUHJpbz4KICAgICAgICAgICAgICAgIDwvTmF2QmFyPgogICAgICAgICAgICAgICAgPExvYWRlcj4KICAgICAgICAgICAgICAgIDwvTG9hZGVyPgogICAgICAgICAgICA8L0Zyb250ZW5kTW9kdWxlUmVnPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRSm91cm5hbCMjI1Nob3dDb2x1bW5zIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6RkFROjpWaWV3Sm91cm5hbDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2F0ZWdvcnkiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlZhbGlkIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lIj4xPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFKb3VybmFsIyMjSm91cm5hbExpbWl0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpGQVE6OlZpZXdKb3VybmFsPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iXlswLTldezEsOH0kIj4yMDA8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJQcmVmZXJlbmNlc0dyb3VwcyMjI0ZBUUpvdXJuYWxPdmVydmlld1NtYWxsUGFnZVNob3duIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlBhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlByZWZlcmVuY2VzPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OlByZWZlcmVuY2VzR2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29sdW1uIj5PdGhlciBTZXR0aW5nczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGFiZWwiIFRyYW5zbGF0YWJsZT0iMSI+RkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iS2V5IiBUcmFuc2xhdGFibGU9IjEiPkZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGF0YSI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMTAiPjEwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjE1Ij4xNTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIyMCI+MjA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMjUiPjI1PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjMwIj4zMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIzNSI+MzU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEYXRhU2VsZWN0ZWQiPjI1PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmVmS2V5Ij5Vc2VyRkFRSm91cm5hbE92ZXJ2aWV3U21hbGxQYWdlU2hvd248L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjgwMDA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGl2ZSI+MDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkpvdXJuYWxPdmVydmlldyMjI1NtYWxsIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OkZBUUpvdXJuYWxPdmVydmlldzwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+U21hbGw8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWVTaG9ydCI+UzwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudEZBUUhpc3RvcnkiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxGcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICAgICAgICAgIDxHcm91cD5mYXE8L0dyb3VwPgogICAgICAgICAgICAgICAgPEdyb3VwUm8+ZmFxPC9Hcm91cFJvPgogICAgICAgICAgICAgICAgPFRpdGxlPkhpc3Rvcnk8L1RpdGxlPgogICAgICAgICAgICAgICAgPE5hdkJhck5hbWU+RkFRPC9OYXZCYXJOYW1lPgogICAgICAgICAgICA8L0Zyb250ZW5kTW9kdWxlUmVnPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudEZBUURlbGV0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEZyb250ZW5kTW9kdWxlUmVnPgogICAgICAgICAgICAgICAgPEdyb3VwPmZhcTwvR3JvdXA+CiAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24+RkFRIERlbGV0ZTwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICA8VGl0bGU+RGVsZXRlPC9UaXRsZT4KICAgICAgICAgICAgICAgIDxOYXZCYXJOYW1lPkZBUTwvTmF2QmFyTmFtZT4KICAgICAgICAgICAgPC9Gcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OlRpY2tldENvbXBvc2UjIyNJbnNlcnRNZXRob2QiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgaW5mb3JtYXRpb24gdG8gYmUgaW5zZXJ0ZWQgaW4gYSBGQVEgYmFzZWQgVGlja2V0LiAiRnVsbCBGQVEiIGluY2x1ZGVzIHRleHQsIGF0dGFjaG1lbnRzIGFuZCBpbmxpbmUgaW1hZ2VzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlRpY2tldENvbXBvc2U8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IkZ1bGwiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJGdWxsIj5GdWxsIEZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGV4dCI+VGV4dCBPbmx5PC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OlRpY2tldENvbXBvc2UjIyNJbmNsdWRlSW50ZXJuYWwiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+SW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlRpY2tldENvbXBvc2U8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjAiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OlRpY2tldENvbXBvc2UjIyNTaG93RmllbGROYW1lcyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5JbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlRpY2tldENvbXBvc2U8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjEiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OlRpY2tldENvbXBvc2UjIyNTaG93SW5zZXJ0VGV4dEJ1dHRvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93ICJJbnNlcnQgRkFRIFRleHQiIC8gIkluc2VydCBGdWxsIEZBUSIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlRpY2tldENvbXBvc2U8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjEiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OlRpY2tldENvbXBvc2UjIyNTaG93SW5zZXJ0TGlua0J1dHRvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93ICJJbnNlcnQgRkFRIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpUaWNrZXRDb21wb3NlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSIxIj4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMCI+Tm88L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEiPlllczwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpUaWNrZXRDb21wb3NlIyMjU2hvd0luc2VydFRleHRBbmRMaW5rQnV0dG9uIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3cgIkluc2VydCBGQVEgVGV4dCAmYW1wOyBMaW5rIiAvICJJbnNlcnQgRnVsbCBGQVEgJmFtcDsgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlRpY2tldENvbXBvc2U8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjEiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6Ok11bHRpTGFuZ3VhZ2UiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjEiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkRlZmF1bHQ6Okxhbmd1YWdlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmF1bHQgbGFuZ3VhZ2UgZm9yIEZBUSBhcnRpY2xlcyBvbiBzaW5nbGUgbGFuZ3VhZ2UgbW9kZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZz5lbjwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkxvYWRlcjo6QWdlbnQ6OkNvbW1vbkNTUyMjIzIwMC1GQVEiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TGlzdCBvZiBDU1MgZmlsZXMgdG8gYWx3YXlzIGJlIGxvYWRlZCBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GcmFtZXdvcms8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpXZWI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5GQVEuQWdlbnQuRGVmYXVsdC5jc3M8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iTG9hZGVyOjpBZ2VudDo6Q29tbW9uSlMjIyMyMDAtRkFRIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxpc3Qgb2YgSlMgZmlsZXMgdG8gYWx3YXlzIGJlIGxvYWRlZCBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GcmFtZXdvcms8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpXZWI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5GQVEuQWdlbnQuVGlja2V0Q29tcG9zZS5qczwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OlZvdGluZyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5FbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjEiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkNhY2hlVFRMIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkNhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iIj4xNzI4MDA8L1N0cmluZz4gPCEtLSBkZWZhdWx0IDE3Miw4MDAgKDYwICogNjAgKiAyNCAqIDIpIC0tPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkRhc2hib2FyZEJhY2tlbmQjIyMwMzk4LUZBUS1MYXN0Q2hhbmdlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZC4gIkxpbWl0IiBkZWZpbmVzIHRoZSBudW1iZXIgb2YgZW50cmllcyBkaXNwbGF5ZWQgYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgaW5kaWNhdGVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMIiBpbmRpY2F0ZXMgdGhlIGNhY2hlIGV4cGlyYXRpb24gcGVyaW9kIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpEYXNoYm9hcmQ8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6RGFzaGJvYXJkRkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSI+TGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj5MYXN0Q2hhbmdlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCbG9jayI+Q29udGVudFNtYWxsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+ZmFxPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZWZhdWx0Ij4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDYWNoZVRUTCI+NjA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJEYXNoYm9hcmRCYWNrZW5kIyMjMDM5OS1GQVEtTGFzdENyZWF0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQuICJMaW1pdCIgZGVmaW5lcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgZGlzcGxheWVkIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGluZGljYXRlcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTCIgaW5kaWNhdGVzIHRoZSBjYWNoZSBleHBpcmF0aW9uIHBlcmlvZCBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6RGFzaGJvYXJkPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkRhc2hib2FyZEZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPkxhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVHlwZSI+TGFzdENyZWF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQmxvY2siPkNvbnRlbnRTbWFsbDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPmZhcTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVmYXVsdCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2FjaGVUVEwiPjYwPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgoKICAgIDxDb25maWdJdGVtIE5hbWU9IkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6TW9kdWxlIyMjRkFROjpMYW5ndWFnZUxpc3QiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+R2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgb3BlcmF0aW9uIGxheWVyLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkdlbmVyaWNJbnRlcmZhY2U8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5HZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5MYW5ndWFnZUxpc3Q8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbnRyb2xsZXIiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29uZmlnRGlhbG9nIj5BZG1pbkdlbmVyaWNJbnRlcmZhY2VPcGVyYXRpb25EZWZhdWx0PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iR2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpNb2R1bGUjIyNGQVE6OlB1YmxpY0NhdGVnb3J5TGlzdCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5HZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBvcGVyYXRpb24gbGF5ZXIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+R2VuZXJpY0ludGVyZmFjZTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6TW9kdWxlUmVnaXN0cmF0aW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPlB1YmxpY0NhdGVnb3J5TGlzdDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29udHJvbGxlciI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maWdEaWFsb2ciPkFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkRlZmF1bHQ8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246Ok1vZHVsZSMjI0ZBUTo6UHVibGljRkFRR2V0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkdlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIG9wZXJhdGlvbiBsYXllci48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5HZW5lcmljSW50ZXJmYWNlPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpNb2R1bGVSZWdpc3RyYXRpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+UHVibGljRkFRR2V0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb250cm9sbGVyIj5GQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbmZpZ0RpYWxvZyI+QWRtaW5HZW5lcmljSW50ZXJmYWNlT3BlcmF0aW9uRGVmYXVsdDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6TW9kdWxlIyMjRkFROjpQdWJsaWNGQVFTZWFyY2giIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+R2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgb3BlcmF0aW9uIGxheWVyLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkdlbmVyaWNJbnRlcmZhY2U8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5HZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5QdWJsaWNGQVFTZWFyY2g8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbnRyb2xsZXIiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29uZmlnRGlhbG9nIj5BZG1pbkdlbmVyaWNJbnRlcmZhY2VPcGVyYXRpb25EZWZhdWx0PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRIVE1MRmllbGRIZWlnaHREZWZhdWx0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OkZBUTo6Vmlld1pvb208L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSJeWzAtOV17MSw0fSQiPjEwMDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50SFRNTEZpZWxkSGVpZ2h0TWF4IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OkZBUTo6Vmlld1pvb208L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSJeWzAtOV17MSw1fSQiPjI1MDA8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpDdXN0b21lckhUTUxGaWVsZEhlaWdodERlZmF1bHQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkN1c3RvbWVyOjpGQVE6OlZpZXdab29tPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iXlswLTldezEsNH0kIj4xMDA8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpDdXN0b21lckhUTUxGaWVsZEhlaWdodE1heCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6Q3VzdG9tZXI6OkZBUTo6Vmlld1pvb208L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSJeWzAtOV17MSw1fSQiPjI1MDA8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUUFkZCMjI1JpY2hUZXh0V2lkdGgiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgd2lkdGggZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpGQVE6OlZpZXdBZGQ8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSJeXGQrJT8kIj42MjA8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUUFkZCMjI1JpY2hUZXh0SGVpZ2h0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OkZBUTo6Vmlld0FkZDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9Il5cZCslPyQiPjMyMDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRRWRpdCMjI1JpY2hUZXh0V2lkdGgiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgd2lkdGggZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpGQVE6OlZpZXdFZGl0PC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iXlxkKyU/JCI+NjIwPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFFZGl0IyMjUmljaFRleHRIZWlnaHQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6RkFROjpWaWV3RWRpdDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9Il5cZCslPyQiPjMyMDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZyb250ZW5kOjpUb29sQmFyTW9kdWxlIyMjOTAtRkFROjpBZ2VudEZBUUFkZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Ub29sYmFyIEl0ZW0gZm9yIGEgc2hvcnRjdXQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUb29sQmFyTW9kdWxlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OlRvb2xCYXJMaW5rPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5BZGQgRkFRIGFydGljbGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudEZBUUFkZDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj5BZ2VudEZBUUFkZDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWNjZXNzS2V5Ij5uPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDc3NDbGFzcyI+RW1haWxUaWNrZXQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikljb24iPmljb24tcXVlc3Rpb248L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij4xMDIwMDkwPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgo8L290cnNfY29uZmlnPgo=
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxvdHJzX2NvbmZpZyB2ZXJzaW9uPSIxLjAiIGluaXQ9IkFwcGxpY2F0aW9uIj4KICAgIDxDb25maWdJdGVtIE5hbWU9IlB1YmxpY0Zyb250ZW5kOjpDb21tb25QYXJhbSMjI0FjdGlvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZhdWx0IHZhbHVlIGZvciB0aGUgQWN0aW9uIHBhcmFtZXRlciBmb3IgdGhlIHB1YmxpYyBmcm9udGVuZC4gVGhlIEFjdGlvbiBwYXJhbWV0ZXIgaXMgdXNlZCBpbiB0aGUgc2NyaXB0cyBvZiB0aGUgc3lzdGVtLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpQdWJsaWM8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nPlB1YmxpY0ZBUUV4cGxvcmVyPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgo8L290cnNfY29uZmlnPgo=
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==
IyAtLQojIEtlcm5lbC9MYW5ndWFnZS9kYV9GQVEucG0gLSB0cmFuc2xhdGlvbiBmaWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Okxhbmd1YWdlOjpkYV9GQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFBQUZBUQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJ30gPSAnU2lkc3Qgw6ZuZHJlZGUgYXJ0aWtsZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJ30gPSAnTnllc3RlIGFydGlrbGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvcCAxMCBGQVEgYXJ0aWNsZXMnfSA9ICdUb3AgMTAgYXJ0aWtsZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcnkgb2YnfSA9ICdVbmRlcmthdGVnb3JpIGFmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2VsZWN0ZWQhJ30gPSAnSW5nZW4gcmF0ZSB2YWxndCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwbG9yZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChhbGwpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsIChjdXN0b21lciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwgKGFnZW50KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBkYXknfSA9ICdTdGFydCBkYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgbW9udGgnfSA9ICdTdGFydCBtw6VuZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgeWVhcid9ID0gJ1N0YXJ0IMOlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgZGF5J30gPSAnU2x1dCBkYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG1vbnRoJ30gPSAnU2x1dCBtw6VuZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIHllYXInfSA9ICdTbHV0IMOlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFua3MgZm9yIHlvdXIgdm90ZSEnfSA9ICdUYWsgZm9yIGRpbiBzdGVtbWUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJ30gPSAnRHUgaGFyIGFsbGVyZWRlIHN0ZW10ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBQcmludCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKFRvcCAxMCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgdXBkYXRlZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IGFkZGVkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSB1cGRhdGVkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBpcyByZXF1aXJlZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBhbHJlYWR5IGV4aXN0cyEnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RGFzaGJvYXJkRkFRT3ZlcnZpZXcKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBBcnRpY2xlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmFsJ30gPSAnR29ka2VuZHQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQ2F0ZWdvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBjYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIENhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQ2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ1ZpbCBibGl2ZSB2aXN0IHNvbSBrb21tZW50YXIgaSBFeHBsb3JlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjYXRlZ29yeT8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgY2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlIGFuZC9vciBpcyBwYXJlbnQgb2YgYXQgbGVhc3Qgb25lIG90aGVyIGNhdGVnb3J5J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFeHBsb3Jlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWljayBTZWFyY2gnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsZGNhcmRzIGFyZSBhbGxvd2VkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZHZhbmNlZCBTZWFyY2gnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcmllcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSGlzdG9yeQoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIExhbmd1YWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IExhbmd1YWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBsYW5ndWFnZT8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgbGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2xlKHMpJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBhcnRpY2xlcyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgZGF0YSBmb3VuZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBnZW5lcmljIEZBUSB0YWJsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyciLCI1MCd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFQcmludAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRLUluZm8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZXMnfSA9ICdTdGVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUZ1bGx0ZXh0J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFNlYXJjaCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2gtUHJvZmlsZSBhcyBUZW1wbGF0ZT8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHJhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgZGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIHJhbmdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyciLCIxOCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyciLCIyNSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nICUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3V0IG9mIDUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISBCZSB0aGUgZmlyc3Qgb25lIHRvIHJhdGUgdGhpcyBGQVEgYXJ0aWNsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG93bmxvYWQgQXR0YWNobWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgaGVscGZ1bCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBMaW5rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCAmIExpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFQcmludAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIHJlc3RyaWN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHZvdGVzLi4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIHJlc3RyaWN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHJhdGUuLi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsVGV4dAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaFJlc3VsdFNob3J0CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcnRpY2xlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRRXhwbG9yZXIKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFQcmludAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsVGV4dAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFab29tCgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZmlsdGVyIGZvciBIVE1MIG91dHB1dCB0byBhZGQgbGlua3MgYmVoaW5kIGEgZGVmaW5lZCBzdHJpbmcuIFRoZSBlbGVtZW50IEltYWdlIGFsbG93cyB0d28gaW5wdXQga2luZHMuIEZpcnN0IHRoZSBuYW1lIG9mIGFuIGltYWdlIChlLmcuIGZhcS5wbmcpLiBJbiB0aGlzIGNhc2UgdGhlIE9UUlMgaW1hZ2UgcGF0aCB3aWxsIGJlIHVzZWQuIFRoZSBzZWNvbmQgcG9zc2liaWxpdHkgaXMgdG8gaW5zZXJ0IHRoZSBsaW5rIHRvIHRoZSBpbWFnZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYWNoZSBUaW1lIFRvIExlYXZlIGZvciBGQVEgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgY2F0ZWdvcnkgbmFtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBqb3VybmFsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgbGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaW5mb3JtYXRpb24gdG8gYmUgaW5zZXJ0ZWQgaW4gYSBGQVEgYmFzZWQgVGlja2V0LiAiRnVsbCBGQVEiIGluY2x1ZGVzIHRleHQsIGF0dGFjaG1lbnRzIGFuZCBpbmxpbmUgaW1hZ2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBFeHBsb3Jlci4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hlcmUgdGhlIFwnSW5zZXJ0IEZBUVwnIGxpbmsgd2lsbCBiZSBkaXNwbGF5ZWQuIE5vdGU6IEFnZW50VGlja2V0QWN0aW9uQ29tbW9uIGluY2x1ZGVzIEFnZW50VGlja2V0Tm90ZSwgQWdlbnRUaWNrZXRDbG9zZSwgQWdlbnRUaWNrZXRGcmVlVGV4dCwgQWdlbnRUaWNrZXRPd25lciwgQWdlbnRUaWNrZXRQZW5kaW5nLCBBZ2VudFRpY2tldFByaW9yaXR5IGFuZCBBZ2VudFRpY2tldFJlc3BvbnNpYmxlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgdGhpcyBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHBhdGggc2VwYXJhdG9yLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUS1BcmVhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIGludGVybmFsIGZpZWxkcyBvbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgdGhlIG5hbWUgb2YgZWFjaCBmaWVsZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVyZmFjZXMgd2hlcmUgdGhlIHF1aWNrc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgZmFxIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgZmFxIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2guJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBBcnRpY2xlJ30gPSAnTnkgRkFRIEFydGlrZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50IHRoaXMgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgLyAiSW5zZXJ0IEZ1bGwgRkFRICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCIgLyAiSW5zZXJ0IEZ1bGwgRkFRIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgQXJ0aWNsZSB3aXRoIEhUTUwuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIHBhdGggeWVzL25vLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdG9wIDEwIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnJzsKCiAgICAjCiAgICAjIE9CU09MRVRFIEVOVFJJRVMgRk9SIFJFRkVSRU5DRSwgRE8gTk9UIFRSQU5TTEFURSEKICAgICMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgbmVlZHMgbWluLiBvbmUgcGVybWlzc2lvbiBncm91cCEnfSA9ICdFbiBrYXRlZ29yaSBiZWjDuHZlciBtaW5kc3QgZW4gcmV0dGlnaGVkc2dydXBwZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHdoaWNoIGNhbiBhY2Nlc3MgdGhpcyBjYXRlZ29yeS4nfSA9ICdBZ2VudGdydXBwZXIgc29tIGthbiB0aWxnw6UgZGVubmUga2F0ZWdvcmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3JpZXMnfSA9ICdLYXRlZ29yaWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldGFpbFNlYXJjaCd9ID0gJ0RldGFsamVyZXQgc8O4Z25pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIENhdGVnb3J5J30gPSAnRkFRIEthdGVnb3JpZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE5ld3MgKFRvcCAxMCknfSA9ICdGQVEgTnloZWRlciAoVG9wIDEwKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTmV3cyAobmV3IGNyZWF0ZWQpJ30gPSAnRkFRIE55aGVkZXIgKG55b3ByZXR0ZXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOZXdzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ0ZBUSBOeWhlZGVyIChzaWRzdCDDpm5kcmVkZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcnkgYWNjZXNzaWJsZS4gVG8gY3JlYXRlIGFuIGFydGljbGUgeW91IG5lZWQgYWNjZXNzIHRvIGF0IGxlYXN0IG9uZSBjYXRlZ29yeS4gUGxlYXNlIGNoZWNrIHlvdXIgZ3JvdXAvY2F0ZWdvcnkgcGVybWlzc2lvbiB1bmRlciAtY2F0ZWdvcnkgbWVudS0hJ30gPQogICAgICAgICdEZXIgZXIgaWtrZSB2YWxndCBrYXRlZ29yaS4gRm9yIGF0IG9wcmV0dGUgZW4gbnkgYXJ0aWtlbCBza2FsIGR1IGhhdmUgYWRnYW5nIHRpbCBtaW5kc3QgZW4ga2F0ZWdvcmkuIFRqZWsgZGluZSBHcnVwcGUvS2F0ZWdvcmkgcmV0dGlnaGVkZXIgdW5kZXIgLUthdGVnb3JpIG1lbnVlbi0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrU2VhcmNoJ30gPSAnU8O4Z25pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViQ2F0ZWdvcmllcyd9ID0gJ1VuZGVya2F0ZWdvcmllcic7Cgp9CgoxOwo=
IyAtLQojIEtlcm5lbC9MYW5ndWFnZS9kZV9GQVEucG0gLSB0cmFuc2xhdGlvbiBmaWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Okxhbmd1YWdlOjpkZV9GQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFBQUZBUQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICdpbnRlcm4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljJ30gPSAnw7ZmZmVudGxpY2gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICdleHRlcm4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE51bWJlcid9ID0gJ0ZBUS1OdW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJ30gPSAnWnVsZXR6dCBnZcOkbmRlcnRlIEZBUS1BcnRpa2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ1p1bGV0enQgZXJzdGVsbHRlIEZBUS1BcnRpa2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvcCAxMCBGQVEgYXJ0aWNsZXMnfSA9ICdUb3AgMTAgRkFRLUFydGlrZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcnkgb2YnfSA9ICdVbnRlcmthdGVnb3JpZSB2b24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICdLZWluZSBCZXdlcnR1bmcgYXVzZ2V3w6RobHQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGxvcmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAoYWxsKSd9ID0gJ8O2ZmZlbnRsaWNoIChBbGxlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCAoY3VzdG9tZXIpJ30gPSAnZXh0ZXJuIChLdW5kZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwgKGFnZW50KSd9ID0gJ2ludGVybiAoQWdlbnQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IGRheSd9ID0gJ1N0YXJ0IFRhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBtb250aCd9ID0gJ1N0YXJ0IE1vbmF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IHllYXInfSA9ICdTdGFydCBKYWhyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBkYXknfSA9ICdFbmQgVGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBtb250aCd9ID0gJ0VuZCBNb25hdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgeWVhcid9ID0gJ0VuZCBKYWhyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rcyBmb3IgeW91ciB2b3RlISd9ID0gJ1ZpZWxlbiBEYW5rIGbDvHIgSWhyZSBCZXdlcnR1bmchJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJ30gPSAnU2llIGhhYmVuIGJlcmVpdHMgYWJnZXN0aW1tdCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgUHJpbnQnfSA9ICdGQVEtQXJ0aWtlbC1BdXNkcnVjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKFRvcCAxMCknfSA9ICdGQVEtQXJ0aWtlbCAoVG9wIDEwKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKG5ldyBjcmVhdGVkKSd9ID0gJ0ZBUS1BcnRpa2VsIChuZXUgZXJzdGVsbHRlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKHJlY2VudGx5IGNoYW5nZWQpJ30gPSAnRkFRLUFydGlrZWwgKGFrdHVhbGlzaWVydGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ0ZBUS1LYXRlZ29yaWUgYWt0dWFsaXNpZXJ0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgYWRkZWQhJ30gPSAnRkFRLUthdGVnb3JpZSBoaW56dWdlZsO8Z3QhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBuYW1lISd9ID0gJ0VpbmUgS2F0ZWdvcmllIGJlbsO2dGlndCBlaW5lbiBOYW1lbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyd9ID0gJ0RpZXNlIEthdGVnb3JpZSBleGlzdGllcnQgYmVyZWl0cyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIGFkZGVkISd9ID0gJ0ZBUS1TcHJhY2hlIGhpbnp1Z2Vmw7xndCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIHVwZGF0ZWQhJ30gPSAnRkFRLVNwcmFjaGUgYWt0dWFsaXNpZXJ0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBpcyByZXF1aXJlZCEnfSA9ICdEZXIgTmFtZSBpc3QgZXJmb3JkZXJsaWNoISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ0RpZXNlIFNwcmFjaGUgZXhpc3RpZXJ0IGJlcmVpdHMhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudERhc2hib2FyZEZBUU92ZXJ2aWV3CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgQXJ0aWNsZSd9ID0gJ0ZBUS1BcnRpa2VsIGhpbnp1ZsO8Z2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuJ30gPSAnRWluZSBLYXRlZ29yaWUgaXN0IGVyZm9yZGVybGljaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICdGcmVpZ2FiZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFDYXRlZ29yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIENhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdGQVEtS2F0ZWdvcmllbi1WZXJ3YWx0dW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBjYXRlZ29yeSd9ID0gJ0thdGVnb3JpZSBoaW56dWbDvGdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ2F0ZWdvcnknfSA9ICdLYXRlZ29yaWUgbMO2c2NoZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICdPayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQ2F0ZWdvcnknfSA9ICdLYXRlZ29yaWUgaGluenVmw7xnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBDYXRlZ29yeSd9ID0gJ0thdGVnb3JpZSBiZWFyYmVpdGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4nfSA9ICdXaXJkIGltIEV4cGxvcmVyIGFscyBLb21tZW50YXIgYW5nZXplaWd0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwLid9ID0gJ1fDpGhsZW4gU2llIG1pbmRlc3RlbnMgZWluZSBCZXJlY2h0aWd1bmdzZ3J1cHBlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAnQWdlbnRlbi1HcnVwcGVuLCBkaWUgYmVyZWNodGlndCBzaW5kLCBhdWYgRkFRLUFydGlrZWwgaW4gZGllc2VyIEthdGVnb3JpZSB6dXp1Z3JlaWZlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyd9ID0gJ1dvbGxlbiBTaWUgZGllc2UgS2F0ZWdvcmllIHdpcmtsaWNoIGzDtnNjaGVuPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBjYXRlZ29yeS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUgYW5kL29yIGlzIHBhcmVudCBvZiBhdCBsZWFzdCBvbmUgb3RoZXIgY2F0ZWdvcnknfSA9CiAgICAgICAgJ1NpZSBrw7ZubmVuIGRpZXNlIEthdGVnb3JpZSBuaWNodCBsw7ZzY2hlbi4gU2llIHdpcmQgaW4gbWluZGVzdGVucyBlaW5lbSBGQVEtQXJ0aWtlbCB2ZXJ3ZW5kZXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAnRGllc2UgS2F0ZWdvcmllIHdpcmQgaW4gZGVuIGZvbGdlbmRlbiBGQVEtQXJ0aWtlbG4gdmVyd2VuZGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJ0RpZXNlIEthdGVnb3JpZSBpc3QgZWluZSBFbHRlcm4tS2F0ZWdvcmllIGbDvHIgZm9sZ2VuZGUgS2F0ZWdvcmllbic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFEZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGQVEgYXJ0aWNsZT8nfSA9ICdXb2xsZW4gU2llIGRpZXNlbiBGQVEtQXJ0aWtlbCB3aXJrbGljaCBsw7ZzY2hlbj8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRJ30gPSAnRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICdGQVEtRXhwbG9yZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAnU2NobmVsbHN1Y2hlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGRjYXJkcyBhcmUgYWxsb3dlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWR2YW5jZWQgU2VhcmNoJ30gPSAnRXJ3ZWl0ZXJ0ZSBTdWNoZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnVW50ZXJrYXRlZ29yaWVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ0ZBUS1BcnRpa2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN1YmNhdGVnb3JpZXMgZm91bmQuJ30gPSAnS2VpbmUgVW50ZXJrYXRlZ29yaWVuIGdlZnVuZGVuLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFIaXN0b3J5CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZC4nfSA9ICdLZWluZSBGQVEtSm91cm5hbGRhdGVuIGdlZnVuZGVuLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFMYW5ndWFnZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdGQVEtU3ByYWNoZW4tVmVyd2FsdHVuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWdlcy4nfSA9CiAgICAgICAgJ1ZlcndlbmRlbiBTaWUgZGllc2VzIEZlYXR1cmUgd2VubiBTaWUgbWl0IHZlcnNjaGllZGVuZW4gU3ByYWNoZW4gYXJiZWl0ZW4gd29sbGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICdTcHJhY2hlIGhpbnp1ZsO8Z2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBMYW5ndWFnZSd9ID0gJ1NwcmFjaGUgTMO2c2NoZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIExhbmd1YWdlJ30gPSAnU3ByYWNoZSBoaW56dWbDvGdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IExhbmd1YWdlJ30gPSAnU3ByYWNoZSBCZWFyYmVpdGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBsYW5ndWFnZT8nfSA9ICdXb2xsZW4gU2llIGRpZXNlIFNwcmFjaGUgd2lya2xpY2ggbMO2c2NoZW4/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEnfSA9CiAgICAgICAgJ1NpZSBrw7ZubmVuIGRpZXNlIFNwcmFjaGUgbmljaHQgbMO2c2NoZW4uIFNpZSB3aXJkIGluIG1pbmRlc3RlbnMgZWluZW0gRkFRLUFydGlrZWwgdmVyd2VuZGV0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJ0RpZXNlIFNwcmFjaGUgd2lyZCBpbiBkZW4gZm9sZ2VuZGVuIEZBUS1BcnRpa2VsbiB2ZXJ3ZW5kZXQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICdLb250ZXh0LUVpbnN0ZWxsdW5nZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGVzIHBlciBwYWdlJ30gPSAnRkFRLUFydGlrZWwgcHJvIFNlaXRlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJ0tlaW5lIEZBUS1EYXRlbiBnZWZ1bmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBnZW5lcmljIEZBUSB0YWJsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyciLCI1MCd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFQcmludAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRLUluZm8nfSA9ICdGQVEgSW5mb3JtYXRpb25lbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ0Jld2VydHVuZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUZ1bGx0ZXh0J30gPSAnRkFRLVZvbGx0ZXh0JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFNlYXJjaCd9ID0gJ0ZBUSBTdWNoZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2gtUHJvZmlsZSBhcyBUZW1wbGF0ZT8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHJhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgZGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIHJhbmdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ0ZBUS1JbmZvcm1hdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyciLCIxOCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyciLCIyNSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcnfSA9ICdCZXdlcnR1bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nICUnfSA9ICdCZXdlcnR1bmcgJSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJ3ZvbiA1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISd9ID0gJ0tlaW5lIEJld2VydHVuZ2VuIGdlZnVuZGVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEgQmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgRkFRIGFydGljbGUuJ30gPSAnS2VpbmUgQmV3ZXJ0dW5nZW4gZ2VmdW5kZW4hIFNlaWVuIFNpZSBkZXIgZXJzdGUgZGVyIGRpZXNlbiBGQVEtQXJ0aWtlbCBiZXdlcnRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG93bmxvYWQgQXR0YWNobWVudCd9ID0gJ0F0dGFjaG1lbnQgSGVydW50ZXJsYWRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9CiAgICAgICAgJ1dpZSBoaWxmcmVpY2ggd2FyIGRpZXNlciBBcnRpa2VsPyBCaXR0ZSBnZWJlbiBTaWUgSWhyZSBCZXdlcnR1bmcgYWIgdW5kIGhlbGZlbiBTaWUgbWl0IGRpZSBRdWFsaXTDpHQgZGVyIEZBUS1EYXRlbmJhbmsgenUgdmVyYmVzc2Vybi4gVmllbGVuIERhbmshJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBoZWxwZnVsJ30gPSAnbmljaHQgaGlsZnJlaWNoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ZlcnkgaGVscGZ1bCd9ID0gJ3NlaHIgaGlsZnJlaWNoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQnfSA9ICdGQVEtVGV4dCBlaW5mw7xnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgTGluayd9ID0gJ0ZBUS1MaW5rIGVpbmbDvGdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQgJiBMaW5rJ30gPSAnRkFRLVRleHQgJiBMaW5rIGVpbmbDvGdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEgJiBMaW5rJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgYXJ0aWNsZXMgZm91bmQuJ30gPSAnS2VpbmUgRkFRLUFydGlrZWwgZ2VmdW5kZW4uJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVByaW50CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpJ30gPSAnVm9sbHRleHQtU3VjaGUgaW4gRkFRLUFydGlrZWxuICh6LiBCLiAiSm9obipuIiBvciAiV2lsbCoiKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIHJlc3RyaWN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHZvdGVzLi4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIHJlc3RyaWN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHJhdGUuLi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsVGV4dAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaFJlc3VsdFNob3J0CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcnRpY2xlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJ1N1Y2hlIG5hY2ggQXJ0aWtlbG4gbWl0IFNjaGzDvHNzZWx3w7ZydGVybic7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRRXhwbG9yZXIKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFQcmludAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAnw5ZmZmVudGxpY2gnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGxUZXh0CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRTaG9ydAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVpvb20KCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBmaWx0ZXIgZm9yIEhUTUwgb3V0cHV0IHRvIGFkZCBsaW5rcyBiZWhpbmQgYSBkZWZpbmVkIHN0cmluZy4gVGhlIGVsZW1lbnQgSW1hZ2UgYWxsb3dzIHR3byBpbnB1dCBraW5kcy4gRmlyc3QgdGhlIG5hbWUgb2YgYW4gaW1hZ2UgKGUuZy4gZmFxLnBuZykuIEluIHRoaXMgY2FzZSB0aGUgT1RSUyBpbWFnZSBwYXRoIHdpbGwgYmUgdXNlZC4gVGhlIHNlY29uZCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgdGhlIGxpbmsgdG8gdGhlIGltYWdlLid9ID0KICAgICAgICAnRWluIEZpbHRlciB6dXIgYXV0b21hdGlzY2hlbiBHZW5lcmllcnVuZyB2b24gRkFRLUxpbmtzLCB3ZW5uIGVpbiBIaW53ZWlzIGF1ZiBlaW5lbiBGQVEtQXJ0aWtlbCBpZGVudGlmaXppZXJ0IHdpcmQuIERhcyBFbGVtZW50IEltYWdlIGVybGF1YnQgendlaSBFaW5nYWJlZm9ybWVuOiBFcnN0ZW5zIGRlciBOYW1lIGVpbmVzIEljb25zICh6LiBCLiBmYXEucG5nKS4gSW4gZGllc2VtIEZhbGwgd2lyZCBhdWYgZGFzIEdyYWZpay1WZXJ6ZWljaG5pcyBkZXMgT1RSUyB6dWdlZ3JpZmZlbi4gQWxzIHp3ZWl0ZSBNw7ZnbGljaGtlaXQga2FubiBtYW4gYWJlciBhdWNoIGRlbiBkaXJla3RlbiBMaW5rIHp1ciBHcmFmaWsgYW5nZWJlbiAoei4gQi4gaHR0cDovL290cnMub3JnL2ZhcS5wbmcpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ0NTUy1GYXJiZSBmw7xyIGRhcyBCZXdlcnR1bmdzLUVyZ2VibmlzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYWNoZSBUaW1lIFRvIExlYXZlIGZvciBGQVEgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdLYXRlZ29yaWVuLVZlcndhbHR1bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnRGV6aW1hbHN0ZWxsZW4gZGVzIEVyZ2Vibmlzc2VzIGRlciBBcnRpa2VsYmV3ZXJ0dW5nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGNhdGVnb3J5IG5hbWUuJ30gPSAnUm9vdC1LYXRlZ29yaWUtTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLid9ID0gJ1N0YW5kYXJkLVNwcmFjaGUgZsO8ciBGQVEtQXJ0aWtlbCBpbSBFaW56ZWwtU3ByYWNoLU1vZHVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPQogICAgICAgICdTdGFuZGFyZC1Qcmlvcml0w6R0IHZvbiBUaWNrZXRzIGbDvHIgZGllIEZyZWlnYWJlIHZvbiBGQVEtQXJ0aWtlbG4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS4nfSA9ICdTdGFuZGFyZCBTdGF0dXMgZWluZXMgRkFRLUVpbnRyYWdzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnU3RhbmRhcmQtU3RhdHVzIHZvbiBUaWNrZXRzIGbDvHIgZGllIEZyZWlnYWJlIHZvbiBGQVEtQXJ0aWtlbG4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJ30gPQogICAgICAgICdTdGFuZGFyZHdlcnQgZGVzIEFjdGlvbi1QYXJhbWV0ZXJzIGbDvHIgZGVuIMO2ZmZlbnRsaWNoZW4gRkFRLUJlcmVpY2guIERlciBBY3Rpb24tUGFyYW1ldGVyIHdpcmQgdm9uIGRlbiBTa3JpcHRlbiBkZXMgU3lzdGVtcyBiZW51dHp0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGpvdXJuYWwuJ30gPQogICAgICAgICdEZWZpbmllcnQgZWluIMOcYmVyc2ljaHRzLU1vZHVsIHVtIGRpZSBTbWFsbC1BbnNpY2h0IGltIEZBUS1Kb3VybmFsIGFuenV6ZWlnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBlaW4gw5xiZXJzaWNodHMtTW9kdWwgdW0gZGllIFNtYWxsLUFuc2ljaHQgZWluZXIgRkFRLUxpc3RlIGFuenV6ZWlnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGFzIFN0YW5kYXJkLUZBUS1BdHRyaWJ1dCBmw7xyIGRpZSBTb3J0aWVydW5nIGRlciBGQVEtU3VjaGUgaW0gQWdlbnRlbi1JbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGFzIFN0YW5kYXJkLUZBUS1BdHRyaWJ1dCBmw7xyIGRpZSBTb3J0aWVydW5nIGRlcyBGQVEtU3VjaGUgaW0gS3VuZGVuLUludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGFzIFN0YW5kYXJkLUZBUS1BdHRyaWJ1dCBmw7xyIGRpZSBTb3J0aWVydW5nIGRlcyBGQVEtU3VjaGUgaW0gUHVibGljLUludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIFN0YW5kYXJkLVNvcnRpZXJ1bmcgZGVyIEZBUS1TdWNoZSBpbSBBZ2VudGVuLUludGVyZmFjZS4gQXVmOiDDhGx0ZXN0ZXIgRkFRLUFydGlrZWwgb2Jlbi4gQWI6IE5ldWVzdGVyIEZBUS1BcnRpa2VsIG9iZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgU3RhbmRhcmQtU29ydGllcnVuZyBkZXIgRkFRLVN1Y2hlIGltIEt1bmRlbi1JbnRlcmZhY2UuIEF1Zjogw4RsdGVzdGVyIEZBUS1BcnRpa2VsIG9iZW4uIEFiOiBOZXVlc3RlciBGQVEtQXJ0aWtlbCBvYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRpZSBTdGFuZGFyZC1Tb3J0aWVydW5nIGRlciBGQVEtU3VjaGUgaW0gUHVibGljLUludGVyZmFjZS4gQXVmOiDDhGx0ZXN0ZXIgRkFRLUFydGlrZWwgb2Jlbi4gQWI6IE5ldWVzdGVyIEZBUS1BcnRpa2VsIG9iZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICdEZWZpbmVydCBkaWUgYW5nZXplaWd0ZW4gU3BhbHRlbiBpbSBGQVEtRXhwbG9yZXIuIERpZXNlIE9wdGlvbiBoYXQga2VpbmUgQXVzd2lya3VuZyBhdWYgZGllIFBvc2l0aW9uIGRlciBTcGFsdGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0RlZmluZXJ0IGRpZSBhbmdlemVpZ3RlbiBTcGFsdGVuIGltIEZBUS1Kb3VybmFsLiBEaWVzZSBPcHRpb24gaGF0IGtlaW5lIEF1c3dpcmt1bmcgYXVmIGRpZSBQb3NpdGlvbiBkZXIgU3BhbHRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0RlZmluZXJ0IGRpZSBhbmdlemVpZ3RlbiBTcGFsdGVuIGluIGRlciBGQVEtU3VjaGUuIERpZXNlIE9wdGlvbiBoYXQga2VpbmUgQXVzd2lya3VuZyBhdWYgZGllIFBvc2l0aW9uIGRlciBTcGFsdGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoZXJlIHRoZSBcJ0luc2VydCBGQVFcJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLiBOb3RlOiBBZ2VudFRpY2tldEFjdGlvbkNvbW1vbiBpbmNsdWRlcyBBZ2VudFRpY2tldE5vdGUsIEFnZW50VGlja2V0Q2xvc2UsIEFnZW50VGlja2V0RnJlZVRleHQsIEFnZW50VGlja2V0T3duZXIsIEFnZW50VGlja2V0UGVuZGluZywgQWdlbnRUaWNrZXRQcmlvcml0eSBhbmQgQWdlbnRUaWNrZXRSZXNwb25zaWJsZS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCB3byBkZXIgXCdGQVEgRWluZsO8Z2VuXCcgbGluayBhbmdlemVpZ3Qgd2lyZC4gSGlud2VpczogQWdlbnRUaWNrZXRBY3Rpb25Db21tb24gYmVpbmhhbHRldCBBZ2VudFRpY2tldE5vdGUsIEFnZW50VGlja2V0Q2xvc2UsIEFnZW50VGlja2V0RnJlZVRleHQsIEFnZW50VGlja2V0T3duZXIsIEFnZW50VGlja2V0UGVuZGluZywgQWdlbnRUaWNrZXRQcmlvcml0eSB1bmQgQWdlbnRUaWNrZXRSZXNwb25zaWJsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuJ30gPSAnRGVmaW5pdGlvbiBkZXIgZnJlaWVuIFRleHRmZWxkZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJ0RpZXNlIEZBUSBsw7ZzY2hlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJ0ZBUSBiZWFyYmVpdGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBtdWx0aXBsZSBsYW5ndWFnZXMgb24gRkFRIG1vZHVsZS4nfSA9ICdNdWx0aXBsZSBTcHJhY2hlbiBpbSBGQVEtTW9kdWwgYWt0aXZpZXJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHZvdGluZyBtZWNoYW5pc20gb24gRkFRIG1vZHVsZS4nfSA9ICdCZXdlcnR1bmdzLU1lY2hhbmlzbXVzIGltIEZBUS1Nb2R1bCBha3RpdmllcmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCd9ID0gJ0ZBUSBKb3VybmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdGQVEtSm91cm5hbCBBbnphaWdlLUxpbWl0IGbDvHIgZGllIFNtYWxsLUFuc2ljaHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdGQVEtw5xiZXJzaWNodCBBbnplaWdlLUxpbWl0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJ0ZBUSBsaW1pdCBwcm8gU2VpdGUgZsO8ciBkYXMgRkFRLUpvdXJuYWwgaW4gZGVyIFNtYWxsLUFuc2ljaHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICdGQVEgbGltaXQgcHJvIFNlaXRlIGbDvHIgZGllIFNtYWxsLUFuc2ljaHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBwYXRoIHNlcGFyYXRvci4nfSA9ICdUcmVubnplaWNoZW4gaW0gRkFRIFBmYWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdTdWNoLUJhY2tlbmQtUm91dGVyIGbDvHIgZGllIEZBUS1TdWNoZSBpbSBBZ2VudGVuLUludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRLUFyZWEnfSA9ICdGQVEtQmVyZWljaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICdGcm9udGVuZC1Nb2R1bC1SZWdpc3RyaWVydW5nIGbDvHIgZGFzIFB1YmxpYy1JbnRlcmZhY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JvdXAgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnR3J1cHBlIGbDvHIgZGllIEZyZWlnYWJlIHZvbiBGQVEtQXJ0aWtlbG4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgdGhpcyBGQVEnfSA9ICdGQVEtSGlzdG9yaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJ0ludGVybmUgRkFRLUZlbGRlciBpbiBlaW5lbSBGQVEtYmFzaWVydGVuVGlja2V0IHZlcndlbmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSB0aGUgbmFtZSBvZiBlYWNoIGZpZWxkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICdEZW4gTmFtZW4gamVkZXMgRkFRLUZlbGRlcyBlaW5lbSBGQVEtYmFzaWVydGVuIFRpY2tldCB2ZXJ3ZW5kZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVyZmFjZXMgd2hlcmUgdGhlIHF1aWNrc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICdJbnRlcmZhY2VzIGluIGRlbmVuIGRhcyBRdWlja1NlYXJjaCBGZWF0dXJlIGFuZ2V6ZWlndCB3aXJkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydKb3VybmFsJ30gPSAnSm91cm5hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnU3ByYWNoZW4tVmVyd2FsdHVuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIGFub3RoZXIgb2JqZWN0IHRvIHRoaXMgRkFRIGl0ZW0nfSA9ICdEaWVzZSBGQVEgbWl0IGVpbmVtIGFuZGVyZW4gT2JqZWt0IHZlcmtuw7xwZmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01heGltYWxlIEFuemFobCB2b24gRkFRLUFydGlrZWxuIGRpZSBpbSBGQVEtSm91cm5hbCBpbSBBZ2VudGVuLUludGVyZmFjZSBhbmdlemVpZ3Qgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01heGltYWxlIEFuemFobCB2b24gRkFRLUFydGlrZWxuIGRpZSBpbiBkZXIgRkFRLVN1Y2hlIGltIEFnZW50ZW4tSW50ZXJmYWNlIGFuZ2V6ZWlndCB3ZXJkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWF4aW1hbGUgQW56YWhsIHZvbiBGQVEtQXJ0aWtlbG4gZGllIGluIGRlciBGQVEtU3VjaGUgaW0gS3VuZGVuLUludGVyZmFjZSBhbmdlemVpZ3Qgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYXhpbWFsZSBBbnphaGwgdm9uIEZBUS1BcnRpa2VsbiBkaWUgaW4gZGVyIEZBUS1TdWNoZSBpbSBQdWJsaWMtSW50ZXJmYWNlIGFuZ2V6ZWlndCB3ZXJkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgZmFxIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgZmFxIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2guJ30gPQogICAgICAgICdNb2R1bCB6dW0gR2VuZXJpZXJlbiBkZXMgSFRNTCAiT3BlblNlYXJjaCIgUHJvZmlscyB6dXIgRkFRLVN1Y2hlIMO8YmVyIGRhcyBCcm93c2VyLVN1Y2hmZWxkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUnfSA9ICdOZXVlciBGQVEtQXJ0aWtlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIGFydGljbGVzIG5lZWQgYXBwcm92YWwgYmVmb3JlIHRoZXkgZ2V0IHB1Ymxpc2hlZC4nfSA9ICdOZXVlIEZBUS1BcnRpa2VsIGJlbsO2dGlnZW4gZWluZSBGcmVpZ2FiZSB2b3IgZGVyIFZlcsO2ZmZlbnRsaWNodW5nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLid9ID0gJ0FuemFobCBkZXIgenUgYW56ZWlnZW5kZW4gQXJ0aWtlbCBpbiBsZXR6dGVuIMOEbmRlcnVuZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJ0FuemFobCBkZXIgYW56dXplaWdlbmRlbiBBcnRpa2VsIGluIHp1bGV0enQgZXJzdGVsbHRlIEFydGlrZWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuJ30gPSAnQW56YWhsIGRlciBhbnp1emVpZ2VuZGVuIEFydGlrZWwgaW0gVG9wIDEwIEZlYXR1cmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciBmw7xyIGRpZSBTZWl0ZW4gKGluIGRlbmVuIEZBUS1BcnRpa2VsIGFuZ2V6ZWlndCB3ZXJkZW4pIGbDvHIgZGllIFNtYWxsLUFuc2ljaHQgZGVzIEZBUS1Kb3VybmFscy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciBmw7xyIGRpZSBTZWl0ZW4gKGluIGRlbmVuIEZBUS1BcnRpa2VsIGFuZ2V6ZWlndCB3ZXJkZW4pIGbDvHIgZGllIFNtYWxsLUFuc2ljaHQgZGVzIEZBUS1PdmVyaWV3cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnQgdGhpcyBGQVEnfSA9ICdGQVEgZHJ1Y2tlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWV1ZSBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdRdWV1ZSBmw7xyIGRpZSBGcmVpZ2FiZSB2b24gRkFRLUFydGlrZWxuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJ0dld2ljaHR1bmcgZsO8ciBkaWUgQmV3ZXJ0dW5nLiBEZXIgS2V5IG11c3MgaW4gUHJvemVudCBhbmdlZ2ViZW4gd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRJ30gPSAnRkFRIGR1cmNoc3VjaGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgLyAiSW5zZXJ0IEZ1bGwgRkFRICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCIgLyAiSW5zZXJ0IEZ1bGwgRkFRIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgQXJ0aWNsZSB3aXRoIEhUTUwuJ30gPSAnSFRNTCBEYXJzdGVsbHVuZyBkZXIgRkFRLUFydGlrZWwgZWluc2NoYWx0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIHBhdGggeWVzL25vLid9ID0gJ0ZBUSBQZmFkIGFuemVpZ2VuIGphL25laW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaXRlbXMgb2Ygc3ViY2F0ZWdvcmllcy4nfSA9ICdBcnRpa2VsIGF1cyBTdWJrYXRlZ29yaWVuIGFuemVpZ2VuIGphL25laW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ0ludGVyZmFjZXMgaW4gZGVuZW4gZGFzIExhc3RDaGFuZ2UgRmVhdHVyZSBhbmdlemVpZ3Qgd2VyZGVuIHNvbGwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjcmVhdGVkIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdJbnRlcmZhY2VzIGluIGRlbmVuIGRhcyBMYXN0Q3JlYXRlIEZlYXR1cmUgYW5nZXplaWd0IHdlcmRlbiBzb2xsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRvcCAxMCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnSW50ZXJmYWNlcyBpbiBkZW5lbiBkYXMgVG9wIDEwIEZlYXR1cmUgYW5nZXplaWd0IHdlcmRlbiBzb2xsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHZvdGluZyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnSW50ZXJmYWNlcyBpbiBkZW5lbiBkYXMgVm90aW5nIEZlYXR1cmUgYW5nZXplaWd0IHdlcmRlbiBzb2xsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1plaWd0IGVpbmVuIExpbmsgaW4gZGVyIE1lbnUtTGVpc3RlIGluIGRlciBab29tLUFuc2ljaHQgaW0gQWdlbnRlbi1JbnRlcmZhY2UgYW4sIGRlciBlcyBlcm3DtmdsaWNodCBlaW5lbiBGQVEtQXJ0aWtlbCBtaXQgYW5kZXJlbiBPYmpla3RlbiB6dSB2ZXJrbsO8cGZlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIHRvIGRlbGV0ZSBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaZWlndCBlaW5lbiBMaW5rIGluIGRlciBNZW51LUxlaXN0ZSBpbiBkZXIgWm9vbS1BbnNpY2h0IGltIEFnZW50ZW4tSW50ZXJmYWNlIGFuLCBkZXIgZXMgZXJtw7ZnbGljaHQgZWluZW4gRkFRLUFydGlrZWwgenUgbMO2c2NoZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmVpZ3QgZWluZW4gTGluayBpbiBkZXIgTWVudS1MZWlzdGUgaW4gZGVyIFpvb20tQW5zaWNodCBpbSBBZ2VudGVuLUludGVyZmFjZSBhbiwgdW0gZGllIEhpc3RvcmllIGVpbmVzIEZBUS1BcnRpa2VscyBhbnp1emVpZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmVpZ3QgZWluZW4gTGluayBpbiBkZXIgTWVudS1MZWlzdGUgaW4gZGVyIFpvb20tQW5zaWNodCBpbSBBZ2VudGVuLUludGVyZmFjZSBhbiwgZGVyIGVzIGVybcO2Z2xpY2h0IGVpbmVuIEZBUS1BcnRpa2VsIHp1IGJlYXJiZWl0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaZWlndCBlaW5lbiBMaW5rIGluIGRlciBNZW51LUxlaXN0ZSBpbiBkZXIgWm9vbS1BbnNpY2h0IGltIEFnZW50ZW4tSW50ZXJmYWNlIGFuLCBkZXIgZXMgZXJtw7ZnbGljaHQgenVyIHZvcmhlcmlnZW4gU2VpdGUgenVyw7xjayB6dSBnZWhlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaZWlndCBlaW5lbiBMaW5rIGluIGRlciBNZW51LUxlaXN0ZSBpbiBkZXIgWm9vbS1BbnNpY2h0IGltIEFnZW50ZW4tSW50ZXJmYWNlIGFuLCBkZXIgZXMgZXJtw7ZnbGljaHQgZWluZW4gRkFRLUFydGlrZWwgenUgZHJ1Y2tlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnRGVyIElkZW50aWZpa2F0b3IgZsO8ciBlaW5lbiBGQVEtQXJ0aWtlbCwgei4gQi4gRkFRIywgS0IjLCBNeUZBUSMuIERlciBTdGFuZGFyZHdlcnQgaXN0IEZBUSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCwgZGFzcyBlaW4gXCdGQVFcJy1PYmpla3RlIG1pdCBkZW0gTGlua3R5cCBcJ05vcm1hbFwnIG1pdCBhbmRlcmVuIFwnRkFRXCctT2JqZWt0ZW4gdmVybGlua3Qgd2VyZGVuIGthbm4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnRGVmaW5pZXJ0LCBkYXNzIGVpbiBcJ0ZBUVwnLU9iamVrdGUgbWl0IGRlbSBMaW5rdHlwIFwnUGFyZW50Q2hpbGRcJyBtaXQgYW5kZXJlbiBcJ0ZBUVwnLU9iamVrdGVuIHZlcmxpbmt0IHdlcmRlbiBrYW5uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdEZWZpbmllcnQsIGRhc3MgZWluIFwnRkFRXCctT2JqZWt0ZSBtaXQgZGVtIExpbmt0eXAgXCdOb3JtYWxcJyBtaXQgYW5kZXJlbiBcJ1RpY2tldFwnLU9iamVrdGVuIHZlcmxpbmt0IHdlcmRlbiBrYW5uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCwgZGFzcyBlaW4gXCdGQVFcJy1PYmpla3RlIG1pdCBkZW0gTGlua3R5cCBcJ1BhcmVudENoaWxkXCcgbWl0IGFuZGVyZW4gXCdUaWNrZXRcJy1PYmpla3RlbiB2ZXJsaW5rdCB3ZXJkZW4ga2Fubi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ0JvZHkgZGVzIFRpY2tldHMgenVyIEZyZWlnYWJlIGVpbmVzIEZBUS1BcnRpa2Vscy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IHN1YmplY3QgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ0JldHJlZmYgZGVzIFRpY2tldHMgenVyIEZyZWlnYWJlIGVpbmVzIEZBUS1BcnRpa2Vscy4nOwoKICAgICMKICAgICMgT0JTT0xFVEUgRU5UUklFUyBGT1IgUkVGRVJFTkNFLCBETyBOT1QgVFJBTlNMQVRFIQogICAgIwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRhcyBTdGFuZGFyZC1GQVEtQXR0cmlidXQgZsO8ciBkaWUgU29ydGllcnVuZyBkZXMgRkFRLUV4cGxvcmVycyBpbSBBZ2VudGVuLUludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkYXMgU3RhbmRhcmQtRkFRLUF0dHJpYnV0IGbDvHIgZGllIFNvcnRpZXJ1bmcgZGVzIEZBUS1FeHBsb3JlcnMgaW0gS3VuZGVuLUludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGFzIFN0YW5kYXJkLUZBUS1BdHRyaWJ1dCBmw7xyIGRpZSBTb3J0aWVydW5nIGRlcyBGQVEtRXhwbG9yZXJzIGltIFB1YmxpYy1JbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBleHBsb3JlciBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgU3RhbmRhcmQtU29ydGllcnVuZyBkZXMgRkFRLUV4cGxvcmVycyBpbSBLdW5kZW4tSW50ZXJmYWNlLiBBdWY6IMOEbHRlc3RlciBGQVEtQXJ0aWtlbCBvYmVuLiBBYjogTmV1ZXN0ZXIgRkFRLUFydGlrZWwgb2Jlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgU3RhbmRhcmQtU29ydGllcnVuZyBkZXMgRkFRLUV4cGxvcmVycyBpbSBQdWJsaWMtSW50ZXJmYWNlLiBBdWY6IMOEbHRlc3RlciBGQVEtQXJ0aWtlbCBvYmVuLiBBYjogTmV1ZXN0ZXIgRkFRLUFydGlrZWwgb2Jlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBFeHBsb3JlciByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIFN0YW5kYXJkLVNvcnRpZXJ1bmcgZGVzIEZBUS1FeHBsb3JlcnMgaW0gQWdlbnRlbi1JbnRlcmZhY2UuIEF1Zjogw4RsdGVzdGVyIEZBUS1BcnRpa2VsIG9iZW4uIEFiOiBOZXVlc3RlciBGQVEtQXJ0aWtlbCBvYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGU6ICd9ID0gJ0zDtnNjaGVuOiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2VrZXkgd2hpY2ggaXMgZGVmaW5lZCBpbiB0aGUgbGFuZ3VhZ2UgZmlsZSAqX0ZBUS5wbS4nfSA9ICdMYW5ndWFnZUtleSBmw7xyIGRpZSBGcmFnZSBiZWkgZGVyIEFydGlrZWxiZXdlcnR1bmcuIFdpcmQgaW4gZGVuIFNwcmFjaGZpbGVzIGRlZmluaWVydC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01heGltYWxlIEFuemFobCB2b24gRkFRLUFydGlrZWxuIGRpZSBpbSBGQVEtRXhwbG9yZXIgaW0gS3VuZGVuLUludGVyZmFjZSBhbmdlemVpZ3Qgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBleHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01heGltYWxlIEFuemFobCB2b24gRkFRLUFydGlrZWxuIGRpZSBpbSBGQVEtRXhwbG9yZXIgaW0gUHVibGljLUludGVyZmFjZSBhbmdlemVpZ3Qgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBFeHBsb3JlciBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWF4aW1hbGUgQW56YWhsIHZvbiBGQVEtQXJ0aWtlbG4gZGllIGltIEZBUS1FeHBsb3JlciBpbSBBZ2VudGVuLUludGVyZmFjZSBhbmdlemVpZ3Qgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBbnphaGwgdm9uIEZBUS1BcnRpa2VsbiBkaWUgaW4gZGVyIEZBUS1TdWNoZSBpbSBLdW5kZW4tSW50ZXJmYWNlIHBybyBTZWl0ZSBhbmdlemVpZ3Qgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQW56YWhsIHZvbiBGQVEtQXJ0aWtlbG4gZGllIGluIGRlciBGQVEtU3VjaGUgaW0gUHVibGljLUludGVyZmFjZSBwcm8gU2VpdGUgYW5nZXplaWd0IHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBbnphaGwgdm9uIEZBUS1BcnRpa2VsbiBkaWUgaW0gRkFRLUV4cGxvcmVyIGltIEt1bmRlbi1JbnRlcmZhY2UgYW5nZXplaWd0IHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQW56YWhsIHZvbiBGQVEtQXJ0aWtlbG4gZGllIGltIEZBUS1FeHBsb3JlciBpbSBQdWJsaWMtSW50ZXJmYWNlIGFuZ2V6ZWlndCB3ZXJkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICdaZWlnZSAiTGluayBFaW5mw7xnZW4iLUJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmw7xyIMO2ZmZlbnRsaWNoZSBGQVEtQXJ0aWtlbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IFRleHQgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICdaZWlnZSAiVGV4dCAmIExpbmsgRWluZsO8Z2VuIi1CdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZsO8ciDDtmZmZW50bGljaGUgRkFRLUFydGlrZWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBUZXh0IiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPSAnWmVpZ2UgIlRleHQgRWluZsO8Z2VuIi1CdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZsO8ciDDtmZmZW50bGljaGUgRkFRLUFydGlrZWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgV1lTSVdZRyBlZGl0b3IgaW4gYWdlbnQgaW50ZXJmYWNlLid9ID0gJ0FuemVpZ2UgZWluZXMgV1lTSVdZRyBFZGl0b3JzIGltIEFnZW50ZW4tSW50ZXJmYWNlLic7Cgp9CgoxOwo=
IyAtLQojIEtlcm5lbC9MYW5ndWFnZS9lc19GQVEucG0gLSB0cmFuc2xhdGlvbiBmaWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Okxhbmd1YWdlOjplc19GQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFBQUZBUQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICdpbnRlcm5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ3DDumJsaWNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsJ30gPSAnZXh0ZXJubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAnTsO6bWVybyBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJ30gPSAnVWx0aW1vcyBhcnTDrWN1bG9zIG1vZGlmaWNhZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ1VsdGltb3MgYXJ0w61jdWxvcyBjcmVhZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvcCAxMCBGQVEgYXJ0aWNsZXMnfSA9ICdUb3AgMTAgZGUgYXJ0w61jdWxvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yeSBvZid9ID0gJ1N1YmNhdGVnb3LDrWEgZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICfCoU5vIHNlIGhhIHNlbGVjY2lvbmFkbyBuaW5ndW5hIHB1bnR1YWNpw7NuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBsb3Jlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKGFsbCknfSA9ICdww7pibGljbyAodG9kb3MpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsIChjdXN0b21lciknfSA9ICdleHRlcm5vIChjbGllbnRlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAnaW50ZXJubyAoYWdlbnRlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBkYXknfSA9ICdEw61hIGRlIGluaWNpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBtb250aCd9ID0gJ01lcyBkZSBpbmljaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgeWVhcid9ID0gJ0HDsW8gZGUgaW5pY2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBkYXknfSA9ICdEw61hIGRlIGZpbmFsaXphY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG1vbnRoJ30gPSAnTWVzIGRlIGZpbmFsaXphY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIHllYXInfSA9ICdBw7FvIGRlIGZpbmFsaXphY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAnwqFHcmFjaWFzIHBvciBzdSB2b3RvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISd9ID0gJ8KhVXN0ZWQgeWEgaGEgdm90YWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBQcmludCd9ID0gJ0ltcHJpbWlyIGVsIGFydMOtY3VsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAnQXJ0w61jdWxvcyBGQVEgKFRvcCAxMCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknfSA9ICdBcnTDrWN1bG9zIEZBUSAobnVldm9zKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKHJlY2VudGx5IGNoYW5nZWQpJ30gPSAnQXJ0w61jdWxvcyBGQVEgKG1vZGlmaWNhZG9zIHJlY2llbnRlbWVudGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ0FjdHVhbGl6YWRhIGNhdGVnb3LDrWEgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSBhZGRlZCEnfSA9ICdBw7FhZGlkYSBjYXRlZ29yw61hIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEnfSA9ICfCoUxhcyBjYXRlZ29yw61hcyBkZWJlIHRlbmVyIG5vbWJyZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyd9ID0gJ0VzdGEgY2F0ZWdvcsOtYSB5YSBleGlzdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIGFkZGVkISd9ID0gJ0HDsWFkaWRvIGlkaW9tYSBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIHVwZGF0ZWQhJ30gPSAnQWN0dWFsaXphZG8gaWRpb21hIGRlIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJ30gPSAnRWwgbm9tYnJlIGVzIGltcHJlc2NpbmRpYmxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ0VzdGUgaWRpb21hIHlhIGV4aXN0ZS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RGFzaGJvYXJkRkFRT3ZlcnZpZXcKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBBcnRpY2xlJ30gPSAnQcOxYWRpciBhcnTDrWN1bG8gRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3Jkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IGlzIHJlcXVpcmVkLid9ID0gJ1NlIHJlcXVpZXJlIHVuYSBjYXRlZ29yw61hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZhbCd9ID0gJ0Fwcm9iYWNpw7NuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0dlc3Rpw7NuIGRlIGNhdGVnb3LDrWFzIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICdBw7FhZGlyIGNhdGVnb3LDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENhdGVnb3J5J30gPSAnQm9ycmFyIGNhdGVnb3LDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICdBY2VwdGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJ0HDsWFkaXIgY2F0ZWdvcsOtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAnRWRpdGFyIGNhdGVnb3LDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ1NlIG1vc3RyYXLDoSBjb21vIGNvbWVudGFyaW8gZW4gZWwgZXhwbG9yYWRvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICdQb3IgZmF2b3IsIHNlbGVjY2lvbmUgYWwgbWVub3MgdW4gZ3J1cG8gZGUgcGVybWlzb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHRoYXQgY2FuIGFjY2VzcyBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5Lid9ID0gJ0dydXBvcyBkZSBhZ2VudGVzIHF1ZSBwdWVkZW4gYWNjZWRlciBhIGxvcyBhcnTDrWN1bG9zIGRlIGVzdGEgY2F0ZWdvcsOtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAnwr9TZWd1cm8gcXVlIGRlc2VhIGJvcnJhciBlc3RhIGNhdGVnb3LDrWE/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAnTm8gcHVlZGUgYm9ycmFyIGVzdGEgY2F0ZWdvcsOtYS4gRXN0w6Egc2llbmRvIHVzYWRhIHBvciBhbCBtZW5vcyB1biBhcnTDrWN1bG8gRkFRIHkvbyBlcyBwYWRyZSBkZSBhbCBtZW5vcyBvdHJhIGNhdGVnb3LDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocyknfSA9ICdFc3RhIGNhdGVnb3LDrWEgZXN0w6Egc2llbmRvIHVzYWRhIHBvciBsb3Mgc2lndWllbnRlcyBhcnTDrWN1bG9zIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHBhcmVudCBvZiB0aGUgZm9sbG93aW5nIHN1YmNhdGVnb3JpZXMnfSA9ICdFc3RhIGNhdGVnb3LDrWEgZXMgcGFkcmUgZGUgbGFzIHNpZ3VpZW50ZXMgc3ViY2F0ZWdvcsOtYXMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgRkFRIGFydGljbGU/J30gPSAnwr9TZWd1cm8gcXVlIGRlc2VhIGJvcnJhciBlc3RlIGFydMOtY3VsbyBGQVE/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSd9ID0gJ0ZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEV4cGxvcmVyJ30gPSAnRXhwbG9yYWRvciBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAnQsO6c3F1ZWRhIFLDoXBpZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsZGNhcmRzIGFyZSBhbGxvd2VkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZHZhbmNlZCBTZWFyY2gnfSA9ICdCw7pzcXVlZGEgQXZhbnphZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcmllcyd9ID0gJ1N1YmNhdGVnb3LDrWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ0FydMOtY3Vsb3MgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN1YmNhdGVnb3JpZXMgZm91bmQuJ30gPSAnTm8gc2UgZW5jb250cmFyb24gc3ViY2F0ZWdvcsOtYXMuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUhpc3RvcnkKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUpvdXJuYWxPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgSm91cm5hbCBkYXRhIGZvdW5kLid9ID0gJ05vIHNlIGVuY29udHJhcm9uIGRhdG9zIGVuIGxhIEJpdMOhY29yYSBGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRTGFuZ3VhZ2UKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnR2VzdGnDs24gZGUgSWRpb21hcyBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VnZXMuJ30gPQogICAgICAgICdVdGlsaWNlIGVzdGEgZnVuY2lvbmFsaWRhZCBzaSBkZXNlYSB0cmFiYWphciBjb24gbcO6bHRpcGxlcyBpZGlvbWFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICdBw7FhZGlyIElkaW9tYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgTGFuZ3VhZ2UnfSA9ICdCb3JyYXIgSWRpb21hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJ0HDsWFkaXIgSWRpb21hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgTGFuZ3VhZ2UnfSA9ICdFZGl0YXIgSWRpb21hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBsYW5ndWFnZT8nfSA9ICfCv1NlZ3VybyBxdWUgZGVzZWEgYm9ycmFyIGVzdGUgaWRpb21hPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBsYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUhJ30gPQogICAgICAgICdObyBwdWVkZSBib3JyYXIgZXN0ZSBpZGlvbWEuIEVzdMOhIHNpZW5kbyB1c2FkbyBwb3IgYWwgbWVub3MgdW4gYXJ0w61jdWxvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJ0VzdGUgaWRpb21hIGVzdGEgc2llbmRvIHVzYWRvIHBvciBsb3Mgc2lndWllbnRlcyBBcnTDrWN1bG9zIEZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJ0FqdXN0ZXMgZGUgQ29udGV4dG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGVzIHBlciBwYWdlJ30gPSAnQXJ0w61jdWxvcyBGQVEgcG9yIHDDoWdpbmEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGRhdGEgZm91bmQuJ30gPSAnTm8gc2UgZW5jb250cmFyb24gZGF0b3MgZGUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGdlbmVyaWMgRkFRIHRhYmxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyIsIjUwJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVByaW50CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEtSW5mbyd9ID0gJ0luZm9ybWFjacOzbi1GQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZXMnfSA9ICdWb3Rvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IHVwZGF0ZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSAoZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIChlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVFGdWxsdGV4dCd9ID0gJ1RleHRvIGNvbXBsZXRvIEZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBTZWFyY2gnfSA9ICdCw7pzcXVlZGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaC1Qcm9maWxlIGFzIFRlbXBsYXRlPyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlIHNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHZvdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgcmF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyBkYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgcmFuZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYWNpw7NuIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyciLCIxOCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyciLCIyNSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcnfSA9ICdQdW50dWFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcgJSd9ID0gJ1B1bnR1YWNpw7NuICUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3V0IG9mIDUnfSA9ICdkZSA1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISd9ID0gJ8KhTm8gc2UgZW5jb250csOzIG5pbmfDum4gdm90byEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLid9ID0gJ05vIHNlIGVuY29udHLDsyBuaW5nw7puIHZvdG8uIFNlYSBlbCBwcmltZXJvIGVuIHZhbG9yYXIgZXN0ZSBhcnTDrWN1bG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rvd25sb2FkIEF0dGFjaG1lbnQnfSA9ICdEZXNjYXJnYXIgQWRqdW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9CiAgICAgICAgJ8K/Q8OzbW8gZGUgw7p0aWwgZnVlIGVzdGUgYXJ0w61jdWxvPyBQb3IgZmF2b3IsIGTDqW5vcyBzdSBwdW50dWFjacOzbiB5IGF5dWRlIGEgbWVqb3JhciBsYSBiYXNlIGRlIGRhdG9zIGRlIEZBUS4gR3JhY2lhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICdwb2NvIMO6dGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ZlcnkgaGVscGZ1bCd9ID0gJ211eSDDunRpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb21TbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAnSW5zZXJ0YXIgVGV4dG8gZGUgbGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICdJbnNlcnRhciBFbmxhY2UgYSBsYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJ0luc2VydGFyIHRleHRvIHkgRW5sYWNlIGEgbGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSAmIExpbmsnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBhcnRpY2xlcyBmb3VuZC4nfSA9ICdObyBzZSBlbmNvbnRyYXJvbiBhcnTDrWN1bG9zIEZBUSc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFQcmludAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSd9ID0gJ0LDunNxdWVkYSBkZSB0ZXh0byBjb21wbGV0byBlbiBhcnTDrWN1bG9zIEZBUSAoZWo6ICJKb2huKm4iIG8gIldpbGwqIiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSByZXN0cmljdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCB2b3Rlcy4uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSByZXN0cmljdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCByYXRlLi4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbFRleHQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hSZXN1bHRTaG9ydAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGZvciBhcnRpY2xlcyB3aXRoIGtleXdvcmQnfSA9ICdCdXNjYXIgYXJ0w61jdWxvcyBjb24gbGEgcGFsYWJyYSBjbGF2ZSc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRRXhwbG9yZXIKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFQcmludAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAnUMO6YmxpY28nOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGxUZXh0CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRTaG9ydAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVpvb20KCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBmaWx0ZXIgZm9yIEhUTUwgb3V0cHV0IHRvIGFkZCBsaW5rcyBiZWhpbmQgYSBkZWZpbmVkIHN0cmluZy4gVGhlIGVsZW1lbnQgSW1hZ2UgYWxsb3dzIHR3byBpbnB1dCBraW5kcy4gRmlyc3QgdGhlIG5hbWUgb2YgYW4gaW1hZ2UgKGUuZy4gZmFxLnBuZykuIEluIHRoaXMgY2FzZSB0aGUgT1RSUyBpbWFnZSBwYXRoIHdpbGwgYmUgdXNlZC4gVGhlIHNlY29uZCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgdGhlIGxpbmsgdG8gdGhlIGltYWdlLid9ID0KICAgICAgICAnRmlsdHJvIHBhcmEgZWwgSFRNTCByZXN1bHRhbnRlIHBhcmEgYcOxYWRpciBlbmxhY2VzIGEgdW5hIGNhZGVuYSBkZXRlcm1pbmFkYS4gRWwgZWxlbWVudG8gSW1hZ2VuIGNvbnRlbXBsYSBkb3MgdGlwb3MgZGUgcmVnaXN0cm9zLiBFbCBwcmltZXJvIGVzIGVsIG5vbWJyZSBkZSB1bmEgaW1hZ2VuIChwb3IgZWplbXBsbyBmYXEucG5nKS4gRW4gZXN0ZSBjYXNvIHNlIHV0aWxpemFyw6EgbGEgcnV0YSBkZSBpbcOhZ2VuZXMgZGUgT1RSUy4gTGEgc2VndW5kYSBwb3NpYmlsaWRhZCBlcyBpbnNlcnRhciBlbCBlbmxhY2UgYSBsYSBpbWFnZW4uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ0NvbG9yIENTUyBwYXJhIGVsIHJlc3VsdGFkbyBkZSBsYSB2b3RhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nfSA9ICdUaWVtcG8gZGUgdmlkYSBkZSBsYSBjYWNow6kgcGFyYSBsb3MgZWxlbWVudG9zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0dlc3Rpw7NuIGRlIGxhcyBDYXRlZ29yw61hcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICdOw7ptZXJvIGRlIGRlY2ltYWxlcyBwYXJhIGVsIHJlc3VsdGFkbyBkZSBsYSB2b3RhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJ05vbWJyZSBwcmVkZXRlcm1pbmFkbyBkZSBsYSBjYXRlZ29yw61hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbGFuZ3VhZ2UgZm9yIEZBUSBhcnRpY2xlcyBvbiBzaW5nbGUgbGFuZ3VhZ2UgbW9kZS4nfSA9ICdJZGlvbWEgcG9yIG9taXNpw7NuIHBhcmEgbG9zIGFydMOtY3Vsb3MgRkFRIGVuIG1vZG8gaWRpb21hIMO6bmljbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPQogICAgICAgICdQcmlvcmlkYWQgcG9yIG9taXNpw7NuIGRlIGxvcyB0aWNrZXRzIHBhcmEgYXByb2JhY2nDs24gZGUgbG9zIGFydMOtY3Vsb3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIGZvciBGQVEgZW50cnkuJ30gPSAnRXN0YWRvIHBvciBvbWlzacOzbiBwYXJhIGxvcyBhcnTDrWN1bG9zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0VzdGFkbyBwb3Igb21pc2nDs24gZGUgbG9zIHRpY2tldHMgcGFyYSBhcHJvYmFjacOzbiBkZSBsb3MgYXJ0w61jdWxvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJ30gPQogICAgICAgICdWYWxvciBwb3Igb21pc2nDs24gcGFyYSBlbCBwYXLDoW1ldHJvICJBY3Rpb24iIHBhcmEgbGEgaW50ZXJmYXogcMO6YmxpY2EuIEVsIHBhcsOhbWV0cm8gIkFjdGlvbiIgc2UgdXNhIGVuIGxvcyAic2NyaXB0cyIgZGVsIHNpc3RlbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9CiAgICAgICAgJ0RlZmluZSB1biBtw7NkdWxvIGRlIHZpc3RhIGdlbmVyYWwgcGFyYSBtb3N0cmFyIGxhIHZpc3RhIHBlcXVlw7FhIGRlIGxhIGJpdMOhY29yYSBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5lIHVuIG3Ds2R1bG8gZGUgdmlzdGEgcHJldmlhIHBhcmEgbW9zdHJhciBsYSB2aXN0YSBwZXF1ZcOxYSBkZSB1biBsaXN0YWRvIGRlIEZBUXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBwb3Igb21pc2nDs24gcGFyYSBvcmRlbmFyIGxvcyBhcnTDrWN1bG9zIEZBUSBlbiB1bmEgYsO6c3F1ZWRhIGRlIEZBUSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGF0cmlidXRvIHBvciBvbWlzacOzbiBwYXJhIG9yZGVuYXIgbG9zIGFydMOtY3Vsb3MgRkFRIGVuIHVuYSBiw7pzcXVlZGEgZGUgRkFRIGVuIGxhIGludGVyZmF6IGRlbCBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBwb3Igb21pc2nDs24gcGFyYSBvcmRlbmFyIGxvcyBhcnTDrWN1bG9zIEZBUSBlbiB1bmEgYsO6c3F1ZWRhIGRlIEZBUSBlbiBsYSBpbnRlcmZheiBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gcG9yIG9taXNpw7NuIHBhcmEgb3JkZW5hciBsb3MgYXJ0w61jdWxvcyBGQVEgZW4gZWwgZXhwbG9yYWRvciBkZSBGQVEgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdERWZpbmUgZWwgYXRyaWJ1dG8gcG9yIG9taXNpw7NuIHBhcmEgb3JkZW5hciBsYXMgRkFRIGVuIGVsIGV4cGxvcmFkb3IgZGUgRkFRIGRlIGxhIGludGVyZmF6IGRlbCBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gZGUgRkFRIHF1ZSBzZSB1c2Fyw6EgcG9yIG9taXNpw7NuIHBhcmEgb3JkZW5hciBsYXMgRkFRIGVuIGVsIGV4cGxvcmFkb3IgZGUgRkFRIGRlIGxhIGludGVyZmF6IHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBvcmRlbiBwb3Igb21pc2nDs24gZGUgbGFzIEZBUSBlbiBsb3MgcmVzdWx0YWRvcyBkZWwgZXhwbG9yYWRvciBkZSBGQVEgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4gQXJyaWJhOiBsb3MgbcOhcyBhbnRpZ3VvcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4gQWJham86IExvcyDDumx0aW1vcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgZWwgb3JkZW4gcG9yIG9taXNpw7NuIGRlIGxhcyBGQVEgZW4gbG9zIHJlc3VsdGFkb3MgZGVsIGV4cGxvcmFkb3IgZGUgRkFRIGRlIGxhIGludGVyZmF6IGRlbCBjbGllbnRlLiBBcnJpYmE6IGxvcyBtw6FzIGFudGlndW9zIGVuIGxhIHBhcnRlIHN1cGVyaW9yLiBBYmFqbzogbG9zIG3DoXMgcmVjaWVudGVzIGVuIGxhIHBhcnRlIHN1cGVyaW9yLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgZWwgb3JkZW4gcG9yIG9taXNpw7NuIGRlIGxhcyBGQVEgZW4gZWwgZXhwbG9yYWRvciBkZSBGQVEgZGUgbGEgaW50ZXJmYXogcMO6YmxpY2EuIEFycmliYTogbG9zIG3DoXMgYW50aWd1b3MgZW4gbGEgcGFydGUgc3VwZXJpb3IuIEFiYWpvOiBsb3MgbcOhcyByZWNpZW50ZXMgZW4gbGEgcGFydGUgc3VwZXJpb3IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBvcmRlbiBwb3Igb21pc2nDs24gZGUgbG9zIHJlc3VsdGFkb3MgZGUgdW5hIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZhY2UgZGVsIGFnZW50ZS4gQXJyaWJhOiBsb3MgbcOhcyBhbnRpZ3VvcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4gQWJham86IGxvcyDDumx0aW1vcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGVsIG9yZGVuIHBvciBvbWlzacOzbiBkZSBsb3MgcmVzdWx0YWRvcyBkZSB1bmEgYsO6c3F1ZWRhIGVuIGxhIGludGVyZmFjZSBkZWwgY2xpZW50ZS4gQXJyaWJhOiBsb3MgbcOhcyBhbnRpZ3VvcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4gQWJham86IGxvcyDDumx0aW1vcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBvcmRlbiBwb3Igb21pc2nDs24gZGUgbG9zIHJlc3VsdGFkb3MgZGUgdW5hIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZhY2UgcMO6YmxpY2EuIEFycmliYTogbG9zIG3DoXMgYW50aWd1b3MgZW4gbGEgcGFydGUgc3VwZXJpb3IuIEFiYWpvOiBsb3Mgw7psdGltb3MgZW4gbGEgcGFydGUgc3VwZXJpb3IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICdEZWZpbmUgbGFzIGNvbHVtbmFzIHF1ZSBzZSBtb3N0cmFyw6FuIGVuIGVsIEV4cGxvcmFkb3IgZGUgRkFRLiBFc3RhIG9wY2nDs24gbm8gdGllbmUgZWZlY3RvcyBlbiBsYSBwb3NpY2nDs24gZGUgbGFzIGNvbHVtbmFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0RlZmluZSBsYXMgY29sdW1uYXMgcXVlIHNlIG1vc3RyYXLDoW4gZW4gbGEgYml0w6Fjb3JhIGRlIEZBUS4gRXN0YSBvcGNpw7NuIG5vIHRpZW5lIGVmZWN0b3MgZW4gbGEgcG9zaWNpw7NuIGRlIGxhcyBjb2x1bW5hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0RlZmluZSBsYXMgY29sdW1uYXMgcXVlIHNlIG1vc3RyYXLDoW4gZW4gbGEgYsO6c3F1ZWRhIGRlIEZBUS4gRXN0YSBvcGNpw7NuIG5vIHRpZW5lIGVmZWN0b3MgZW4gbGEgcG9zaWNpw7NuIGRlIGxhcyBjb2x1bW5hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4gTm90ZTogQWdlbnRUaWNrZXRBY3Rpb25Db21tb24gaW5jbHVkZXMgQWdlbnRUaWNrZXROb3RlLCBBZ2VudFRpY2tldENsb3NlLCBBZ2VudFRpY2tldEZyZWVUZXh0LCBBZ2VudFRpY2tldE93bmVyLCBBZ2VudFRpY2tldFBlbmRpbmcsIEFnZW50VGlja2V0UHJpb3JpdHkgYW5kIEFnZW50VGlja2V0UmVzcG9uc2libGUuJ30gPQogICAgICAgICdEZWZpbmUgZMOzbmRlIHNlIG1vc3RyYXLDoSBlbCBlbmxhY2UgwqtJbnNlcnRhciBGQVHCuy4gTm90YTogQWdlbnRUaWNrZXRBY3Rpb25Db21tb24gaW5jbHV5ZSBBZ2VudFRpY2tldE5vdGUsIEFnZW50VGlja2V0Q2xvc2UsIEFnZW50VGlja2V0RnJlZVRleHQsIEFnZW50VGlja2V0T3duZXIsIEFnZW50VGlja2V0UGVuZGluZywgQWdlbnRUaWNrZXRQcmlvcml0eSB5IEFnZW50VGlja2V0UmVzcG9uc2libGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJ0RlZmluaWNpw7NuIGRlbCBjYW1wbyDCq3RleHRvIGxpYnJlwrsgcGFyYSBsb3MgYXJ0w61jdWxvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJ0JvcnJhciBlc3RlIGFydMOtY3VsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJ0VkaXRhciBlc3RlIGFydMOtY3VsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLid9ID0gJ0hhYmlsaXRhciBtw7psdGlwbGVzIGlkaW9tYXMgZW4gZWwgbcOzZHVsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHZvdGluZyBtZWNoYW5pc20gb24gRkFRIG1vZHVsZS4nfSA9ICdIYWJpbGl0YXIgZWwgbWVjYW5pc21vIGRlIHZvdGFjacOzbiBlbiBlbCBtw7NkdWxvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCd9ID0gJ0JpdMOhY29yYSBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0zDrW1pdGUgcGFyYSBsYSB2aXN0YSBnZW5lcmFsIMKrcGVxdWXDsWHCuyBkZSBsYSBCaXTDoWNvcmEgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnTMOtbWl0ZSBwYXJhIGxhIHZpc3RhIGdlbmVyYWwgwqtwZXF1ZcOxYcK7IGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICdMw61taXRlIGRlIEZBUSBwb3IgcMOhZ2luYSBwYXJhIGxhIHZpc3RhIGdlbmVyYWwgwqtwZXF1ZcOxYcK7IGRlIGxhIEJpdMOhY29yYSBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJ0zDrW1pdGUgZGUgRkFRIHBvciBww6FnaW5hIHBhcmEgbGEgdmlzdGEgZ2VuZXJhbCDCq3BlcXVlw7FhwrsgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBwYXRoIHNlcGFyYXRvci4nfSA9ICdTZXBhcmFkb3IgZGUgbGEgcnV0YSBkZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdFbmNhbWluYWRvciBwYXJhIGxhIGLDunNxdWVkYSBkZSBGQVEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRLUFyZWEnfSA9ICfDgXJlYS1GQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnUmVnaXN0cm8gZGUgbcOzZHVsbyAiRnJvbnRlbmQiIGVuIGxhIGludGVyZmF6IHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdHcnVwbyBwYXJhIGxhIGFwcm9iYWNpw7NuIGRlIGxvcyBhcnTDrWN1bG9zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJ0hpc3RvcmlhIGRlIGVzdGUgYXJ0w61jdWxvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIGludGVybmFsIGZpZWxkcyBvbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnSW5jbHVpciBjYW1wb3MgaW50ZXJub3MgZW4gbG9zIHRpY2tldHMgYmFzYWRvcyBlbiB1biBhcnTDrWN1bG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgdGhlIG5hbWUgb2YgZWFjaCBmaWVsZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnSW5jbHVpciBlbCBub21icmUgZGUgY2FkYSBjYW1wbyBlbiBsb3MgdGlja2V0cyBiYXNhZG9zIGVuIHVuIGFydMOtY3VsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2tzZWFyY2ggc2hvdWxkIGJlIHNob3duLid9ID0gJ0ludGVyZmFjZXMgZW4gbGFzIHF1ZSBzZSBkZWJlIG1vc3RyYXIgbGEgYnVzcXVlZGEgcsOhcGlkYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJ0JpdMOhY29yYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnR2VzdGnDs24gZGUgSWRpb21hcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIGFub3RoZXIgb2JqZWN0IHRvIHRoaXMgRkFRIGl0ZW0nfSA9ICdFbmxhemFyIG90cm8gb2JqZWN0byBhIGVzdGUgYXJ0w61jdWxvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBtw6F4aW1vIGRlIGFydMOtY3Vsb3MgRkFRIGEgbW9zdHJhciBlbiBsb3MgcmVzdWx0YWRvcyBkZWwgZXhwbG9yYWRvciBGQVEgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBtw6F4aW1vIGRlIGFydMOtY3Vsb3MgRkFRIGEgbW9zdHJhciBlbiBsb3MgcmVzdWx0YWRvcyBkZWwgZXhwbG9yYWRvciBGQVEgZGUgbGEgaW50ZXJmYXogZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIG3DoXhpbW8gZGUgYXJ0w61jdWxvcyBGQVEgYSBtb3N0cmFyIGVuIGxvcyByZXN1bHRhZG9zIGRlbCBleHBsb3JhZG9yIEZBUSBkZSBsYSBpbnRlcmZheiBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gbcOheGltbyBkZSBhcnTDrWN1bG9zIEZBUSBhIG1vc3RyYXIgZW4gbGEgYml0w6Fjb3JhIGRlIEZBUSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gbcOheGltbyBkZSBhcnTDrWN1bG9zIEZBUSBhIG1vc3RyYXIgY29tbyByZXN1bHRhZG8gZGUgdW5hIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gbcOheGltbyBkZSBhcnTDrWN1bG9zIEZBUSBhIG1vc3RyYXIgY29tbyByZXN1bHRhZG8gZGUgdW5hIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZheiBkZWwgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBtw6F4aW1vIGRlIGFydMOtY3Vsb3MgRkFRIGEgbW9zdHJhciBjb21vIHJlc3VsdGFkbyBkZSB1bmEgYsO6c3F1ZWRhIGVuIGxhIGludGVyZmF6IHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBmYXEgc2VhcmNoLid9ID0KICAgICAgICAnTcOzZHVsbyBwYXJhIGdlbmVyYXIgZWwgcGVyZmlsIGh0bWwgIk9wZW5TZWFyY2giIHBhcmEgYsO6c3F1ZWRhcyBjb3J0YXMgZGUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUnfSA9ICdOdWV2byBhcnTDrWN1bG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJ0xvcyBudWV2b3MgYXJ0w61jdWxvcyBGQVEgcmVxdWllcmVuIGFwcm9iYWNpw7NuIGFudGVzIGRlIHB1YmxpY2Fyc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgYXJ0w61jdWxvcyBGQVEgYSBtb3N0cmFyIGVuIGVsIGV4cGxvcmFkb3IgZGUgRkFRIGRlIGxhIGludGVyZmF6IGRlbCBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSBhcnTDrWN1bG9zIEZBUSBhIG1vc3RyYXIgZW4gZWwgZXhwbG9yYWRvciBkZSBGQVEgZGUgbGEgaW50ZXJmYXogcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgYXJ0w61jdWxvcyBGQVEgYSBtb3N0cmFyIGVuIGNhZGEgcMOhZ2luYSBkZSBsb3MgcmVzdWx0YWRvcyBkZSB1bmEgYsO6c3F1ZWRhIGVuIGxhIGludGVyZmF6IGRlbCBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSBhcnTDrWN1bG9zIEZBUSBhIG1vc3RyYXIgZW4gY2FkYSBww6FnaW5hIGRlIGxvcyByZXN1bHRhZG9zIGRlIHVuYSBiw7pzcXVlZGEgZW4gbGEgaW50ZXJmYXogcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuJ30gPSAnTsO6bWVybyBkZSBlbGVtZW50b3MgYSBtb3N0cmFyIGVuIMO6bHRpbW9zIGNhbWJpb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJ30gPSAnTsO6bWVybyBkZSBlbGVtZW50b3MgYSBtb3N0cmFyIGVuIMO6bHRpbW9zIGNyZWFkb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuJ30gPSAnTsO6bWVybyBkZSBlbGVtZW50b3MgYSBtb3N0cmFyIGVuIGVsIFRvcCAxMC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBqb3VybmFsIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgZGUgbGFzIHDDoWdpbmFzIChlbiBsYXMgcXVlIHNlIG11ZXN0cmFuIGxvcyBlbGVtZW50b3MgRkFRKSBkZSBsYSB2aXN0YSBnZW5lcmFsIHBlcXVlw7FhIGRlIGxhIGJpdMOhY29yYSBkZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgb3ZlcnZpZXcuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBkZSBsYXMgcMOhZ2luYXMgKGVuIGxhcyBxdWUgc2UgbXVlc3RyYW4gbG9zIGVsZW1lbnRvcyBGQVEpIGRlIGxhIHZpc3RhIGdlbmVyYWwgZGUgRkFRIHBlcXVlw7FhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludCB0aGlzIEZBUSd9ID0gJ0ltcHJpbWlyIGVzdGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0ZpbGEgcGFyYSBsYSBhcHJvYmFjacOzbiBkZSBsb3MgYXJ0w61jdWxvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGVzIGZvciB2b3RpbmcuIEtleSBtdXN0IGJlIGluIHBlcmNlbnQuJ30gPSAnUG9uZGVyYWNpw7NuIHBhcmEgbGEgdm90YWNpw7NuLiBMYSBjbGF2ZSBkZWJlIGV4cHJlc2Fyc2UgZW4gcG9yY2VudGFqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSd9ID0gJ0LDunNxdWVkYSBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnRXN0YWJsZWNlciBsYSBhbHR1cmEgcHJlZGV0ZXJtaW5hZGEgKGVuIHDDrXhlbGVzKSBkZSBsb3MgY2FtcG9zIEhUTUwgwqtpbmxpbmXCuyBkZSBBZ2VudEZBUVpvb20nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICdFc3RhYmxlY2VyIGxhIGFsdHVyYSBwcmVkZXRlcm1pbmFkYSAoZW4gcMOteGVsZXMpIGRlIGxvcyBjYW1wb3MgSFRNTCDCq2lubGluZcK7IGRlIEN1c3RvbWVyRkFRWm9vbSAoeSBQdWJsaWNGQVFab29tKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnRXN0YWJsZWNlciBsYSBhbHR1cmEgbcOheGltYSAoZW4gcMOteGVsZXMpIGRlIGxvcyBjYW1wb3MgSFRNTCDCq2lubGluZcK7IGRlIEFnZW50RkFRWm9vbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJ0VzdGFibGVjZXIgbGEgYWx0dXJhIG3DoXhpbWEgKGVuIHDDrXhlbGVzKSBkZSBsb3MgY2FtcG9zIEhUTUwgwqtpbmxpbmXCuyBkZSBDdXN0b21lckZBUVpvb20gKHkgUHVibGljRkFRWm9vbSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnTW9zdHJhciBib3TDs24gwqtJbnNlcnRhciBlbmxhY2UgYSBGQVHCuyBlbiBBZ2VudEZBUVpvb21TbWFsbCBwYXJhIGxvcyBhcnTDrWN1bG9zIEZBUSBww7pibGljb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIC8gIkluc2VydCBGdWxsIEZBUSIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJ8K/TW9zdHJhciBjb250ZW5pZG8gSFRNTCBlbiBsb3MgYXJ0w61jdWxvcyBGQVE/Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICfCv01vc3RyYXIgbGEgcnV0YSBkZSBsYSBGQVE/IHPDrS9uby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJ8K/TW9zdHJhciBsb3MgZWxlbWVudG9zIGRlIGxhcyBzdWJjYXRlZ29yw61hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNoYW5nZSBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnTW9zdHJhciBsb3Mgw7psdGltb3MgYXJ0w61jdWxvcyBhY3R1YWxpemFkb3MgZW4gbGFzIGludGVyZmFjZXMgZGVmaW5pZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnTW9zdHJhciBsb3Mgw7psdGltb3MgYXJ0w61jdWxvcyBjcmVhZG9zIGVuIGxhcyBpbnRlcmZhY2VzIGRlZmluaWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ01vc3RyYXIgbG9zIGFydMOtY3Vsb3MgVG9wIDEwIGVuIGxhcyBpbnRlcmZhY2VzIGRlZmluaWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ01vc3RyYXIgbGEgdm90YWNpw7NuIGVuIGxhcyBpbnRlcmZhY2VzIGRlZmluaWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBGQVEgd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgem9vbSB2aWV3IG9mIHN1Y2ggRkFRIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBxdWUgcGVybWl0ZSBlbmxhemFyIGEgdW4gYXJ0w61jdWxvIEZBUSBjb24gb3RybyBvYmpldG8gZW4gc3UgdmlzdGEgYW1wbGlhZGEgZGUgZXNhIEZBUSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHF1ZSBwZXJtaXRlIGJvcnJhciB1biBhcnTDrWN1bG8gRkFRIGVuIGxhIHZpc3RhIGFtcGxpYWRhIGRlIGVzYSBGQVEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIGFjY2VkZXIgYWwgaGlzdG9yaWFsIGRlIHVuIGFydMOtY3VsbyBGQVEgZW4gc3UgdmlzdGEgYW1wbGlhZGEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgZWRpdGFyIHVuIGFydMOtY3VsbyBGQVEgZW4gc3UgdmlzdGEgYW1wbGlhZGEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgcmV0cm9jZWRlciBlbiBsYSB2aXN0YSBhbXBsaWFkYSBkZSBGQVEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIGltcHJpbWlyIHVuIGFydMOtY3VsbyBGQVEgZW4gc3UgdmlzdGEgYW1wbGlhZGEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnRWwgaWRlbnRpZmljYWRvciBwYXJhIHVuYSBGQVEsIHBvciBlamVtcGxvIEZBUSMsIEtCIywgTWlGQVEjLiBGQVEjIGVzIGxhIG9wY2nDs24gcG9yIG9taXNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0VzdGUgYWp1c3RlIGRlZmluZSBxdWUgdW4gb2JqZXRvIMKrRkFRwrsgcHVlZGUgZW5sYXphcnNlIGNvbiBvdHJvcyBvYmpldG9zIMKrRkFRwrsgdXRpbGl6YW5kbyBlbCB0aXBvIGRlIGVubGFjZSDCq05vcm1hbMK7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0VzdGUgYWp1c3RlIGRlZmluZSBxdWUgdW4gb2JqZXRvIMKrRkFRwrsgcHVlZGUgZW5sYXphcnNlIGNvbiBvdHJvcyBvYmpldG9zIMKrRkFRwrsgdXRpbGl6YW5kbyBlbCB0aXBvIGRlIGVubGFjZSDCq1BhcmVudENoaWxkwrsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0VzdGUgYWp1c3RlIGRlZmluZSBxdWUgdW4gb2JqZXRvIMKrRkFRwrsgcHVlZGUgZW5sYXphcnNlIGNvbiBvdHJvcyBvYmpldG9zIMKrVGlja2V0wrsgdXRpbGl6YW5kbyBlbCB0aXBvIGRlIGVubGFjZSDCq05vcm1hbMK7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0VzdGUgYWp1c3RlIGRlZmluZSBxdWUgdW4gb2JqZXRvIMKrRkFRwrsgcHVlZGUgZW5sYXphcnNlIGNvbiBvdHJvcyBvYmpldG9zIMKrVGlja2V0wrsgdXRpbGl6YW5kbyBlbCB0aXBvIGRlIGVubGFjZSDCq1BhcmVudENoaWxkwrsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBib2R5IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdDdWVycG8gZGVsIHRpY2tldCBwYXJhIGFwcm9iYWNpw7NuIGRlIGFydMOtY3Vsb3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnQXN1bnRvIGRlbCB0aWNrZXQgcGFyYSBhcHJvYmFjacOzbiBkZSBhcnTDrWN1bG9zIEZBUS4nOwoKICAgICMKICAgICMgT0JTT0xFVEUgRU5UUklFUyBGT1IgUkVGRVJFTkNFLCBETyBOT1QgVFJBTlNMQVRFIQogICAgIwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBuZWVkcyBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cCEnfSA9ICdVbmEgY2F0ZWdvcsOtYSBkZWJlIHRlbmVyIGFsIG1lbm9zIHVuIGdydXBvIGRlIHBlcm1pc29zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBjb21tZW50ISd9ID0gJ1VuYSBjYXRlZ29yw61hIGRlYmUgdGVuZXIgdW4gY29tZW50YXJpbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHdoaWNoIGNhbiBhY2Nlc3MgdGhpcyBjYXRlZ29yeS4nfSA9ICdMb3MgZ3J1cG9zIGFnZW50ZXMgcHVlZGVuIGFjY2VkZXIgYSBlc3RhIGNhdGVnb3LDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZXMnfSA9ICdBcnTDrWN1bG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3JpZXMnfSA9ICdDYXRlZ29yaWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBwb3Igb21pc2nDs24gcGFyYSBvcmRlbmFyIGxvcyBhcnTDrWN1bG9zIEZBUSBlbiBlbCBFeHBsb3JhZG9yIEZBUSBlbiBsYSBpbnRlcmZhY2UgZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBwb3Igb21pc2nDs24gcGFyYSBvcmRlbmFyIGxvcyBhcnTDrWN1bG9zIEZBUSBlbiBlbCBFeHBsb3JhZG9yIEZBUSBlbiBsYSBpbnRlcmZhY2UgZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGF0cmlidXRvIHBvciBvbWlzacOzbiBwYXJhIG9yZGVuYXIgbG9zIGFydMOtY3Vsb3MgRkFRIGVuIGVsIEV4cGxvcmFkb3IgRkFRIGVuIGxhIGludGVyZmFjZSBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGVsIHNlbnRpZG8gZGVsIG9yZGVuIHBvciBvbWlzacOzbiBlbiBlbCByZXN1bHRhZG8gZGVsIEV4cGxvcmFkb3IgRkFRIGVuIGxhIGludGVyZmFjZSBkZWwgY2xpZW50ZS4gQXJyaWJhOiBsb3MgbcOhcyBhbnRpZ3VvcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4gQWJham86IGxvcyDDumx0aW1vcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBzZW50aWRvIGRlbCBvcmRlbiBwb3Igb21pc2nDs24gZW4gZWwgcmVzdWx0YWRvIGRlbCBFeHBsb3JhZG9yIEZBUSBlbiBsYSBpbnRlcmZhY2UgcMO6YmxpY2EuIEFycmliYTogbG9zIG3DoXMgYW50aWd1b3MgZW4gbGEgcGFydGUgc3VwZXJpb3IuIEFiYWpvOiBsb3Mgw7psdGltb3MgZW4gbGEgcGFydGUgc3VwZXJpb3IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgRXhwbG9yZXIgcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGVsIHNlbnRpZG8gZGVsIG9yZGVuIHBvciBvbWlzacOzbiBlbiBlbCByZXN1bHRhZG8gZGVsIEV4cGxvcmFkb3IgRkFRIGVuIGxhIGludGVyZmFjZSBkZWwgYWdlbnRlLiBBcnJpYmE6IGxvcyBtw6FzIGFudGlndW9zIGVuIGxhIHBhcnRlIHN1cGVyaW9yLiBBYmFqbzogbG9zIMO6bHRpbW9zIGVuIGxhIHBhcnRlIHN1cGVyaW9yLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoZXJlIHRoZSBcJ0luc2VydCBGQVFcJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLid9ID0gJ0RlZmluZSBkw7NuZGUgZXMgcXVlIGxhIGxpZ2EgXCdJbnNlcnRhciBGQVFcJyBzZXLDoSBkZXNwbGVnYWRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGU6ICd9ID0gJ0JvcnJhcjogJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldGFpbFNlYXJjaCd9ID0gJ0J1c3F1ZWRhIGRldGFsbGFkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgQ2F0ZWdvcnk/J30gPSAnwr9Fc3TDoSBzZWd1cm8gZGUgcXVlcmVyIGJvcnJhciBlc3RhIENhdGVnb3LDrWE/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBMYW5ndWFnZT8nfSA9ICfCv0VzdMOhIHNlZ3VybyBkZSBxdWVyZXIgYm9ycmFyIGVzdGUgSWRpb21hPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnknfSA9ICdDYXRlZ29yw61hIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZWtleSB3aGljaCBpcyBkZWZpbmVkIGluIHRoZSBsYW5ndWFnZSBmaWxlICpfRkFRLnBtLid9ID0gJ0NsYXZlIGRlIGlkaW9tYSBkZWZpbmlkYSBlbiBlbCBmaWNoZXJvIGRlIGlkaW9tYSAqX0ZBUS5wbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gbcOheGltbyBkZSBhcnTDrWN1bG9zIEZBUSBhIHNlciBtb3N0cmFkb3MgZGVudHJvIGRlbCBleHBsb3JhZG9yIGVuIGxhIGludGVyZmFjZSBkZWwgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIG3DoXhpbW8gZGUgYXJ0w61jdWxvcyBGQVEgYSBzZXIgbW9zdHJhZG9zIGRlbnRybyBkZWwgZXhwbG9yYWRvciBlbiBsYSBpbnRlcmZhY2UgcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIEV4cGxvcmVyIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIG3DoXhpbW8gZGUgYXJ0w61jdWxvcyBGQVEgYSBzZXIgbW9zdHJhZG9zIGNvbW8gcmVzdWx0YWRvIGRlbCBFeHBsb3JhZG9yIEZBUSBlbiBsYSBpbnRlcmZhY2UgZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcnkgYWNjZXNzaWJsZS4gVG8gY3JlYXRlIGFuIGFydGljbGUgeW91IG5lZWQgYWNjZXNzIHRvIGF0IGxlYXN0IG9uZSBjYXRlZ29yeS4gUGxlYXNlIGNoZWNrIHlvdXIgZ3JvdXAvY2F0ZWdvcnkgcGVybWlzc2lvbiB1bmRlciAtY2F0ZWdvcnkgbWVudS0hJ30gPQogICAgICAgICdObyBzZSBwdWVkZSBhY2NlZGVyIGEgbmluZ3VuYSBjYXRlZ29yw61hLiBQYXJhIGNyZWFyIHVuIGFydGljdWxvIHVzdGVkIGRlYmUgdGVuZXIgYWNjZXNvIGEgbcOtbmltbyB1bmEgY2F0ZWdvcsOtYS4gUG9yIGZhdm9yIHJldmlzZSBzdXMgcGVybWlzb3MgZGUgZ3J1cG8vY2F0ZWdvcsOtYSBlbiBlbCAtbWVuw7ogY2F0ZWdvcsOtYS0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgYXJ0w61jdWxvcyBGQVEgYSBzZXIgbW9zdHJhZG9zIHBvciBjYWRhIHDDoWdpbmEgY29tbyByZXN1bHRhZG8gZGUgdW5hIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZhY2UgZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIGRlIGFydMOtY3Vsb3MgRkFRIGEgc2VyIG1vc3RyYWRvcyBwb3IgY2FkYSBww6FnaW5hIGNvbW8gcmVzdWx0YWRvIGRlIHVuYSBiw7pzcXVlZGEgZW4gbGEgaW50ZXJmYWNlIHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgYXJ0w61jdWxvcyBGQVEgYSBzZXIgbW9zdHJhZG9zIGRlbnRybyBkZWwgZXhwbG9yYWRvciBlbiBsYSBpbnRlcmZhY2UgZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBleHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgYXJ0w61jdWxvcyBGQVEgYSBzZXIgbW9zdHJhZG9zIGRlbnRybyBkZWwgZXhwbG9yYWRvciBlbiBsYSBpbnRlcmZhY2UgcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrU2VhcmNoJ30gPSAnQnVzcXVlZGEgcsOhcGlkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICdNb3N0cmFyIGJvdMOzbiDCq0luc2VydGFyIHRleHRvIHkgZW5sYWNlIGRlIGxhIEZBUcK7IGVuIEFnZW50RkFRWm9vbVNtYWxsIHBhcmEgbG9zIGFydMOtY3Vsb3MgRkFRIHDDumJsaWNvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPSAnTW9zdHJhciBib3TDs24gwqtJbnNlcnRhciB0ZXh0byBkZSBsYSBGQVHCuyBlbiBBZ2VudEZBUVpvb21TbWFsbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJ01vc3RyYXIgZWwgQm90w7NuICJJbnNlcnRhciBWw61uY3VsbyIgZW4gQWdlbnRGQVFab29tU21hbGwgcGFyYSBhcnTDrWN1bG9zIEZBUSBww7pibGljb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IFRleHQgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICdNb3N0cmFyIGVsIEJvdMOzbiAiSW5zZXJ0YXIgVGV4dG8gJiBWw61uY3VsbyIgZW4gQWdlbnRGQVFab29tU21hbGwgcGFyYSBhcnTDrWN1bG9zIEZBUSBww7pibGljb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IFRleHQiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9ICdNb3N0cmFyIGVsIEJvdMOzbiAiSW5zZXJ0YXIgVGV4dG8iIGVuIEFnZW50RkFRWm9vbVNtYWxsIHBhcmEgYXJ0w61jdWxvcyBGQVEgcMO6YmxpY29zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgV1lTSVdZRyBlZGl0b3IgaW4gYWdlbnQgaW50ZXJmYWNlLid9ID0gJ01vc3RyYXIgZWwgZWRpdG9yIFdZU0lXWUcgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UnfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gbGlnYSBlbiBlbCBtZW7DuiBwYXJhIGFjY2VkZXIgYWwgaGlzdG9yaWFsIGRlIHVuIGFydMOtY3VsbyBGQVEgZW4gc3UgdmlzdGEgZGUgZGV0YWxsZXMgZW4gbGEgaW50ZXJmYWNlIGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YkNhdGVnb3JpZXMnfSA9ICdTdWJjYXRlZ29yaWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB0aXRsZSBpcyByZXF1aXJlZC4nfSA9ICdFbCB0w610dWxvIGVzIHJlcXVlcmlkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBDYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBTdWJDYXRlZ29yaWVzJ30gPSAnRXN0YSBDYXRlZ29yw61hIGVzIHBhZHJlIGRlIGxhcyBzaWd1aWVudGVzIFN1YkNhdGVnb3LDrWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgQ2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2UocyknfSA9ICdFc3RhIENhdGVnb3LDrWEgZXN0YSBzaWVuZG8gdXNhZGEgcG9yIGxvcyBzaWd1aWVudGVzIEFydMOtY3Vsb3MgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgTGFuZ3VhZ2UgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2xlKHMpJ30gPSAnRXN0ZSBJZGlvbWEgZXN0YSBzaWVuZG8gdXNhZG8gcG9yIGxvcyBzaWd1aWVudGVzIEFydMOtY3Vsb3MgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMhJ30gPSAnRXN0YSBjYXRlZ29yw61hIHlhIGV4aXN0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGVkJ30gPSAnQWN0dWFsaXphZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgQ2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBBcnRpY2xlISBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IGFub3RoZXIgQ2F0ZWdvcnknfSA9CiAgICAgICAgJ05vIHB1ZWRlIGJvcnJhciBlc3RhIENhdGVnb3LDrWEuIEVzdMOhIHNpZW5kbyB1c2FkYSBwb3IgYWwgbWVub3MgdW4gQXJ0w61jdWxvIEZBUSB5L28gZXMgcGFkcmUgZGUgYWwgbWVub3Mgb3RyYSBDYXRlZ29yw61hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIExhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgQXJ0aWNsZSEnfSA9CiAgICAgICAgJ05vIHB1ZWRlIGJvcnJhciBlc3RlIElkaW9tYS4gRXN0w6Egc2llbmRvIHVzYWRvIHBvciBhbCBtZW5vcyB1biBBcnTDrWN1bG8gRkFRJzsKCn0KCjE7Cg==
IyAtLQojIEtlcm5lbC9MYW5ndWFnZS9lc19NWF9GQVEucG0gLSB0cmFuc2xhdGlvbiBmaWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Okxhbmd1YWdlOjplc19NWF9GQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFBQUZBUQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICdpbnRlcm5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ3DDumJsaWNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsJ30gPSAnZXh0ZXJubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAnTsO6bWVybyBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJ30gPSAnVWx0aW1vcyBhcnTDrWN1bG9zIG1vZGlmaWNhZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ1VsdGltb3MgYXJ0w61jdWxvcyBjcmVhZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvcCAxMCBGQVEgYXJ0aWNsZXMnfSA9ICdUb3AgMTAgZGUgYXJ0w61jdWxvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yeSBvZid9ID0gJ1N1YmNhdGVnb3LDrWEgZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICfCoU5vIHNlIGhhIHNlbGVjY2lvbmFkbyBuaW5ndW5hIHB1bnR1YWNpw7NuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBsb3Jlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKGFsbCknfSA9ICdww7pibGljbyAodG9kb3MpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsIChjdXN0b21lciknfSA9ICdleHRlcm5vIChjbGllbnRlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAnaW50ZXJubyAoYWdlbnRlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBkYXknfSA9ICdEw61hIGRlIGluaWNpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBtb250aCd9ID0gJ01lcyBkZSBpbmljaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgeWVhcid9ID0gJ0HDsW8gZGUgaW5pY2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBkYXknfSA9ICdEw61hIGRlIGZpbmFsaXphY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG1vbnRoJ30gPSAnTWVzIGRlIGZpbmFsaXphY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIHllYXInfSA9ICdBw7FvIGRlIGZpbmFsaXphY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAnwqFHcmFjaWFzIHBvciBzdSB2b3RvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISd9ID0gJ8KhVXN0ZWQgeWEgaGEgdm90YWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBQcmludCd9ID0gJ0ltcHJpbWlyIGVsIGFydMOtY3VsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAnQXJ0w61jdWxvcyBGQVEgKFRvcCAxMCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknfSA9ICdBcnTDrWN1bG9zIEZBUSAobnVldm9zKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKHJlY2VudGx5IGNoYW5nZWQpJ30gPSAnQXJ0w61jdWxvcyBGQVEgKG1vZGlmaWNhZG9zIHJlY2llbnRlbWVudGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ0FjdHVhbGl6YWRhIGNhdGVnb3LDrWEgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSBhZGRlZCEnfSA9ICdBw7FhZGlkYSBjYXRlZ29yw61hIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEnfSA9ICfCoUxhcyBjYXRlZ29yw61hcyBkZWJlIHRlbmVyIG5vbWJyZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyd9ID0gJ0VzdGEgY2F0ZWdvcsOtYSB5YSBleGlzdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIGFkZGVkISd9ID0gJ0HDsWFkaWRvIGlkaW9tYSBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIHVwZGF0ZWQhJ30gPSAnQWN0dWFsaXphZG8gaWRpb21hIGRlIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJ30gPSAnRWwgbm9tYnJlIGVzIGltcHJlc2NpbmRpYmxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ0VzdGUgaWRpb21hIHlhIGV4aXN0ZS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RGFzaGJvYXJkRkFRT3ZlcnZpZXcKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBBcnRpY2xlJ30gPSAnQcOxYWRpciBhcnTDrWN1bG8gRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3Jkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IGlzIHJlcXVpcmVkLid9ID0gJ1NlIHJlcXVpZXJlIHVuYSBjYXRlZ29yw61hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZhbCd9ID0gJ0Fwcm9iYWNpw7NuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0dlc3Rpw7NuIGRlIGNhdGVnb3LDrWFzIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICdBw7FhZGlyIGNhdGVnb3LDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENhdGVnb3J5J30gPSAnQm9ycmFyIGNhdGVnb3LDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICdBY2VwdGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJ0HDsWFkaXIgY2F0ZWdvcsOtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAnRWRpdGFyIGNhdGVnb3LDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ1NlIG1vc3RyYXLDoSBjb21vIGNvbWVudGFyaW8gZW4gZWwgZXhwbG9yYWRvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICdQb3IgZmF2b3IsIHNlbGVjY2lvbmUgYWwgbWVub3MgdW4gZ3J1cG8gZGUgcGVybWlzb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHRoYXQgY2FuIGFjY2VzcyBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5Lid9ID0gJ0dydXBvcyBkZSBhZ2VudGVzIHF1ZSBwdWVkZW4gYWNjZWRlciBhIGxvcyBhcnTDrWN1bG9zIGRlIGVzdGEgY2F0ZWdvcsOtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAnwr9TZWd1cm8gcXVlIGRlc2VhIGJvcnJhciBlc3RhIGNhdGVnb3LDrWE/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAnTm8gcHVlZGUgYm9ycmFyIGVzdGEgY2F0ZWdvcsOtYS4gRXN0w6Egc2llbmRvIHVzYWRhIHBvciBhbCBtZW5vcyB1biBhcnTDrWN1bG8gRkFRIHkvbyBlcyBwYWRyZSBkZSBhbCBtZW5vcyBvdHJhIGNhdGVnb3LDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocyknfSA9ICdFc3RhIGNhdGVnb3LDrWEgZXN0w6Egc2llbmRvIHVzYWRhIHBvciBsb3Mgc2lndWllbnRlcyBhcnTDrWN1bG9zIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHBhcmVudCBvZiB0aGUgZm9sbG93aW5nIHN1YmNhdGVnb3JpZXMnfSA9ICdFc3RhIGNhdGVnb3LDrWEgZXMgcGFkcmUgZGUgbGFzIHNpZ3VpZW50ZXMgc3ViY2F0ZWdvcsOtYXMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgRkFRIGFydGljbGU/J30gPSAnwr9TZWd1cm8gcXVlIGRlc2VhIGJvcnJhciBlc3RlIGFydMOtY3VsbyBGQVE/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSd9ID0gJ0ZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEV4cGxvcmVyJ30gPSAnRXhwbG9yYWRvciBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAnQsO6c3F1ZWRhIFLDoXBpZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsZGNhcmRzIGFyZSBhbGxvd2VkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZHZhbmNlZCBTZWFyY2gnfSA9ICdCw7pzcXVlZGEgQXZhbnphZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcmllcyd9ID0gJ1N1YmNhdGVnb3LDrWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ0FydMOtY3Vsb3MgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN1YmNhdGVnb3JpZXMgZm91bmQuJ30gPSAnTm8gc2UgZW5jb250cmFyb24gc3ViY2F0ZWdvcsOtYXMuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUhpc3RvcnkKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUpvdXJuYWxPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgSm91cm5hbCBkYXRhIGZvdW5kLid9ID0gJ05vIHNlIGVuY29udHJhcm9uIGRhdG9zIGVuIGxhIEJpdMOhY29yYSBGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRTGFuZ3VhZ2UKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnR2VzdGnDs24gZGUgSWRpb21hcyBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VnZXMuJ30gPQogICAgICAgICdVdGlsaWNlIGVzdGEgZnVuY2lvbmFsaWRhZCBzaSBkZXNlYSB0cmFiYWphciBjb24gbcO6bHRpcGxlcyBpZGlvbWFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICdBw7FhZGlyIElkaW9tYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgTGFuZ3VhZ2UnfSA9ICdCb3JyYXIgSWRpb21hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJ0HDsWFkaXIgSWRpb21hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgTGFuZ3VhZ2UnfSA9ICdFZGl0YXIgSWRpb21hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBsYW5ndWFnZT8nfSA9ICfCv1NlZ3VybyBxdWUgZGVzZWEgYm9ycmFyIGVzdGUgaWRpb21hPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBsYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUhJ30gPQogICAgICAgICdObyBwdWVkZSBib3JyYXIgZXN0ZSBpZGlvbWEuIEVzdMOhIHNpZW5kbyB1c2FkbyBwb3IgYWwgbWVub3MgdW4gYXJ0w61jdWxvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJ0VzdGUgaWRpb21hIGVzdGEgc2llbmRvIHVzYWRvIHBvciBsb3Mgc2lndWllbnRlcyBBcnTDrWN1bG9zIEZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJ0FqdXN0ZXMgZGUgQ29udGV4dG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGVzIHBlciBwYWdlJ30gPSAnQXJ0w61jdWxvcyBGQVEgcG9yIHDDoWdpbmEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGRhdGEgZm91bmQuJ30gPSAnTm8gc2UgZW5jb250cmFyb24gZGF0b3MgZGUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGdlbmVyaWMgRkFRIHRhYmxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyIsIjUwJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVByaW50CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEtSW5mbyd9ID0gJ0luZm9ybWFjacOzbi1GQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZXMnfSA9ICdWb3Rvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IHVwZGF0ZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSAoZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIChlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVFGdWxsdGV4dCd9ID0gJ1RleHRvIGNvbXBsZXRvIEZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBTZWFyY2gnfSA9ICdCw7pzcXVlZGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaC1Qcm9maWxlIGFzIFRlbXBsYXRlPyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlIHNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHZvdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgcmF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyBkYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgcmFuZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYWNpw7NuIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyciLCIxOCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyciLCIyNSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcnfSA9ICdQdW50dWFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcgJSd9ID0gJ1B1bnR1YWNpw7NuICUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3V0IG9mIDUnfSA9ICdkZSA1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISd9ID0gJ8KhTm8gc2UgZW5jb250csOzIG5pbmfDum4gdm90byEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLid9ID0gJ05vIHNlIGVuY29udHLDsyBuaW5nw7puIHZvdG8uIFNlYSBlbCBwcmltZXJvIGVuIHZhbG9yYXIgZXN0ZSBhcnTDrWN1bG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rvd25sb2FkIEF0dGFjaG1lbnQnfSA9ICdEZXNjYXJnYXIgQWRqdW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9CiAgICAgICAgJ8K/Q8OzbW8gZGUgw7p0aWwgZnVlIGVzdGUgYXJ0w61jdWxvPyBQb3IgZmF2b3IsIGTDqW5vcyBzdSBwdW50dWFjacOzbiB5IGF5dWRlIGEgbWVqb3JhciBsYSBiYXNlIGRlIGRhdG9zIGRlIEZBUS4gR3JhY2lhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICdwb2NvIMO6dGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ZlcnkgaGVscGZ1bCd9ID0gJ211eSDDunRpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb21TbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAnSW5zZXJ0YXIgVGV4dG8gZGUgbGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICdJbnNlcnRhciBFbmxhY2UgYSBsYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJ0luc2VydGFyIHRleHRvIHkgRW5sYWNlIGEgbGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSAmIExpbmsnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBhcnRpY2xlcyBmb3VuZC4nfSA9ICdObyBzZSBlbmNvbnRyYXJvbiBhcnTDrWN1bG9zIEZBUSc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFQcmludAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSd9ID0gJ0LDunNxdWVkYSBkZSB0ZXh0byBjb21wbGV0byBlbiBhcnTDrWN1bG9zIEZBUSAoZWo6ICJKb2huKm4iIG8gIldpbGwqIiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSByZXN0cmljdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCB2b3Rlcy4uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSByZXN0cmljdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCByYXRlLi4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbFRleHQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hSZXN1bHRTaG9ydAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGZvciBhcnRpY2xlcyB3aXRoIGtleXdvcmQnfSA9ICdCdXNjYXIgYXJ0w61jdWxvcyBjb24gbGEgcGFsYWJyYSBjbGF2ZSc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRRXhwbG9yZXIKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFQcmludAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAnUMO6YmxpY28nOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGxUZXh0CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRTaG9ydAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVpvb20KCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBmaWx0ZXIgZm9yIEhUTUwgb3V0cHV0IHRvIGFkZCBsaW5rcyBiZWhpbmQgYSBkZWZpbmVkIHN0cmluZy4gVGhlIGVsZW1lbnQgSW1hZ2UgYWxsb3dzIHR3byBpbnB1dCBraW5kcy4gRmlyc3QgdGhlIG5hbWUgb2YgYW4gaW1hZ2UgKGUuZy4gZmFxLnBuZykuIEluIHRoaXMgY2FzZSB0aGUgT1RSUyBpbWFnZSBwYXRoIHdpbGwgYmUgdXNlZC4gVGhlIHNlY29uZCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgdGhlIGxpbmsgdG8gdGhlIGltYWdlLid9ID0KICAgICAgICAnRmlsdHJvIHBhcmEgZWwgSFRNTCByZXN1bHRhbnRlIHBhcmEgYcOxYWRpciBlbmxhY2VzIGEgdW5hIGNhZGVuYSBkZXRlcm1pbmFkYS4gRWwgZWxlbWVudG8gSW1hZ2VuIGNvbnRlbXBsYSBkb3MgdGlwb3MgZGUgcmVnaXN0cm9zLiBFbCBwcmltZXJvIGVzIGVsIG5vbWJyZSBkZSB1bmEgaW1hZ2VuIChwb3IgZWplbXBsbyBmYXEucG5nKS4gRW4gZXN0ZSBjYXNvIHNlIHV0aWxpemFyw6EgbGEgcnV0YSBkZSBpbcOhZ2VuZXMgZGUgT1RSUy4gTGEgc2VndW5kYSBwb3NpYmlsaWRhZCBlcyBpbnNlcnRhciBlbCBlbmxhY2UgYSBsYSBpbWFnZW4uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ0NvbG9yIENTUyBwYXJhIGVsIHJlc3VsdGFkbyBkZSBsYSB2b3RhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nfSA9ICdUaWVtcG8gZGUgdmlkYSBkZSBsYSBjYWNow6kgcGFyYSBsb3MgZWxlbWVudG9zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0dlc3Rpw7NuIGRlIGxhcyBDYXRlZ29yw61hcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICdOw7ptZXJvIGRlIGRlY2ltYWxlcyBwYXJhIGVsIHJlc3VsdGFkbyBkZSBsYSB2b3RhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJ05vbWJyZSBwcmVkZXRlcm1pbmFkbyBkZSBsYSBjYXRlZ29yw61hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbGFuZ3VhZ2UgZm9yIEZBUSBhcnRpY2xlcyBvbiBzaW5nbGUgbGFuZ3VhZ2UgbW9kZS4nfSA9ICdJZGlvbWEgcG9yIG9taXNpw7NuIHBhcmEgbG9zIGFydMOtY3Vsb3MgRkFRIGVuIG1vZG8gaWRpb21hIMO6bmljbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPQogICAgICAgICdQcmlvcmlkYWQgcG9yIG9taXNpw7NuIGRlIGxvcyB0aWNrZXRzIHBhcmEgYXByb2JhY2nDs24gZGUgbG9zIGFydMOtY3Vsb3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIGZvciBGQVEgZW50cnkuJ30gPSAnRXN0YWRvIHBvciBvbWlzacOzbiBwYXJhIGxvcyBhcnTDrWN1bG9zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0VzdGFkbyBwb3Igb21pc2nDs24gZGUgbG9zIHRpY2tldHMgcGFyYSBhcHJvYmFjacOzbiBkZSBsb3MgYXJ0w61jdWxvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJ30gPQogICAgICAgICdWYWxvciBwb3Igb21pc2nDs24gcGFyYSBlbCBwYXLDoW1ldHJvICJBY3Rpb24iIHBhcmEgbGEgaW50ZXJmYXogcMO6YmxpY2EuIEVsIHBhcsOhbWV0cm8gIkFjdGlvbiIgc2UgdXNhIGVuIGxvcyAic2NyaXB0cyIgZGVsIHNpc3RlbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9CiAgICAgICAgJ0RlZmluZSB1biBtw7NkdWxvIGRlIHZpc3RhIGdlbmVyYWwgcGFyYSBtb3N0cmFyIGxhIHZpc3RhIHBlcXVlw7FhIGRlIGxhIGJpdMOhY29yYSBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5lIHVuIG3Ds2R1bG8gZGUgdmlzdGEgcHJldmlhIHBhcmEgbW9zdHJhciBsYSB2aXN0YSBwZXF1ZcOxYSBkZSB1biBsaXN0YWRvIGRlIEZBUXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBwb3Igb21pc2nDs24gcGFyYSBvcmRlbmFyIGxvcyBhcnTDrWN1bG9zIEZBUSBlbiB1bmEgYsO6c3F1ZWRhIGRlIEZBUSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGF0cmlidXRvIHBvciBvbWlzacOzbiBwYXJhIG9yZGVuYXIgbG9zIGFydMOtY3Vsb3MgRkFRIGVuIHVuYSBiw7pzcXVlZGEgZGUgRkFRIGVuIGxhIGludGVyZmF6IGRlbCBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBwb3Igb21pc2nDs24gcGFyYSBvcmRlbmFyIGxvcyBhcnTDrWN1bG9zIEZBUSBlbiB1bmEgYsO6c3F1ZWRhIGRlIEZBUSBlbiBsYSBpbnRlcmZheiBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gcG9yIG9taXNpw7NuIHBhcmEgb3JkZW5hciBsb3MgYXJ0w61jdWxvcyBGQVEgZW4gZWwgZXhwbG9yYWRvciBkZSBGQVEgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdERWZpbmUgZWwgYXRyaWJ1dG8gcG9yIG9taXNpw7NuIHBhcmEgb3JkZW5hciBsYXMgRkFRIGVuIGVsIGV4cGxvcmFkb3IgZGUgRkFRIGRlIGxhIGludGVyZmF6IGRlbCBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gZGUgRkFRIHF1ZSBzZSB1c2Fyw6EgcG9yIG9taXNpw7NuIHBhcmEgb3JkZW5hciBsYXMgRkFRIGVuIGVsIGV4cGxvcmFkb3IgZGUgRkFRIGRlIGxhIGludGVyZmF6IHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBvcmRlbiBwb3Igb21pc2nDs24gZGUgbGFzIEZBUSBlbiBsb3MgcmVzdWx0YWRvcyBkZWwgZXhwbG9yYWRvciBkZSBGQVEgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4gQXJyaWJhOiBsb3MgbcOhcyBhbnRpZ3VvcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4gQWJham86IExvcyDDumx0aW1vcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgZWwgb3JkZW4gcG9yIG9taXNpw7NuIGRlIGxhcyBGQVEgZW4gbG9zIHJlc3VsdGFkb3MgZGVsIGV4cGxvcmFkb3IgZGUgRkFRIGRlIGxhIGludGVyZmF6IGRlbCBjbGllbnRlLiBBcnJpYmE6IGxvcyBtw6FzIGFudGlndW9zIGVuIGxhIHBhcnRlIHN1cGVyaW9yLiBBYmFqbzogbG9zIG3DoXMgcmVjaWVudGVzIGVuIGxhIHBhcnRlIHN1cGVyaW9yLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgZWwgb3JkZW4gcG9yIG9taXNpw7NuIGRlIGxhcyBGQVEgZW4gZWwgZXhwbG9yYWRvciBkZSBGQVEgZGUgbGEgaW50ZXJmYXogcMO6YmxpY2EuIEFycmliYTogbG9zIG3DoXMgYW50aWd1b3MgZW4gbGEgcGFydGUgc3VwZXJpb3IuIEFiYWpvOiBsb3MgbcOhcyByZWNpZW50ZXMgZW4gbGEgcGFydGUgc3VwZXJpb3IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBvcmRlbiBwb3Igb21pc2nDs24gZGUgbG9zIHJlc3VsdGFkb3MgZGUgdW5hIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZhY2UgZGVsIGFnZW50ZS4gQXJyaWJhOiBsb3MgbcOhcyBhbnRpZ3VvcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4gQWJham86IGxvcyDDumx0aW1vcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGVsIG9yZGVuIHBvciBvbWlzacOzbiBkZSBsb3MgcmVzdWx0YWRvcyBkZSB1bmEgYsO6c3F1ZWRhIGVuIGxhIGludGVyZmFjZSBkZWwgY2xpZW50ZS4gQXJyaWJhOiBsb3MgbcOhcyBhbnRpZ3VvcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4gQWJham86IGxvcyDDumx0aW1vcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBvcmRlbiBwb3Igb21pc2nDs24gZGUgbG9zIHJlc3VsdGFkb3MgZGUgdW5hIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZhY2UgcMO6YmxpY2EuIEFycmliYTogbG9zIG3DoXMgYW50aWd1b3MgZW4gbGEgcGFydGUgc3VwZXJpb3IuIEFiYWpvOiBsb3Mgw7psdGltb3MgZW4gbGEgcGFydGUgc3VwZXJpb3IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICdEZWZpbmUgbGFzIGNvbHVtbmFzIHF1ZSBzZSBtb3N0cmFyw6FuIGVuIGVsIEV4cGxvcmFkb3IgZGUgRkFRLiBFc3RhIG9wY2nDs24gbm8gdGllbmUgZWZlY3RvcyBlbiBsYSBwb3NpY2nDs24gZGUgbGFzIGNvbHVtbmFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0RlZmluZSBsYXMgY29sdW1uYXMgcXVlIHNlIG1vc3RyYXLDoW4gZW4gbGEgYml0w6Fjb3JhIGRlIEZBUS4gRXN0YSBvcGNpw7NuIG5vIHRpZW5lIGVmZWN0b3MgZW4gbGEgcG9zaWNpw7NuIGRlIGxhcyBjb2x1bW5hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0RlZmluZSBsYXMgY29sdW1uYXMgcXVlIHNlIG1vc3RyYXLDoW4gZW4gbGEgYsO6c3F1ZWRhIGRlIEZBUS4gRXN0YSBvcGNpw7NuIG5vIHRpZW5lIGVmZWN0b3MgZW4gbGEgcG9zaWNpw7NuIGRlIGxhcyBjb2x1bW5hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4gTm90ZTogQWdlbnRUaWNrZXRBY3Rpb25Db21tb24gaW5jbHVkZXMgQWdlbnRUaWNrZXROb3RlLCBBZ2VudFRpY2tldENsb3NlLCBBZ2VudFRpY2tldEZyZWVUZXh0LCBBZ2VudFRpY2tldE93bmVyLCBBZ2VudFRpY2tldFBlbmRpbmcsIEFnZW50VGlja2V0UHJpb3JpdHkgYW5kIEFnZW50VGlja2V0UmVzcG9uc2libGUuJ30gPQogICAgICAgICdEZWZpbmUgZMOzbmRlIHNlIG1vc3RyYXLDoSBlbCBlbmxhY2UgwqtJbnNlcnRhciBGQVHCuy4gTm90YTogQWdlbnRUaWNrZXRBY3Rpb25Db21tb24gaW5jbHV5ZSBBZ2VudFRpY2tldE5vdGUsIEFnZW50VGlja2V0Q2xvc2UsIEFnZW50VGlja2V0RnJlZVRleHQsIEFnZW50VGlja2V0T3duZXIsIEFnZW50VGlja2V0UGVuZGluZywgQWdlbnRUaWNrZXRQcmlvcml0eSB5IEFnZW50VGlja2V0UmVzcG9uc2libGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJ0RlZmluaWNpw7NuIGRlbCBjYW1wbyDCq3RleHRvIGxpYnJlwrsgcGFyYSBsb3MgYXJ0w61jdWxvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJ0JvcnJhciBlc3RlIGFydMOtY3VsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJ0VkaXRhciBlc3RlIGFydMOtY3VsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLid9ID0gJ0hhYmlsaXRhciBtw7psdGlwbGVzIGlkaW9tYXMgZW4gZWwgbcOzZHVsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHZvdGluZyBtZWNoYW5pc20gb24gRkFRIG1vZHVsZS4nfSA9ICdIYWJpbGl0YXIgZWwgbWVjYW5pc21vIGRlIHZvdGFjacOzbiBlbiBlbCBtw7NkdWxvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCd9ID0gJ0JpdMOhY29yYSBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0zDrW1pdGUgcGFyYSBsYSB2aXN0YSBnZW5lcmFsIMKrcGVxdWXDsWHCuyBkZSBsYSBCaXTDoWNvcmEgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnTMOtbWl0ZSBwYXJhIGxhIHZpc3RhIGdlbmVyYWwgwqtwZXF1ZcOxYcK7IGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICdMw61taXRlIGRlIEZBUSBwb3IgcMOhZ2luYSBwYXJhIGxhIHZpc3RhIGdlbmVyYWwgwqtwZXF1ZcOxYcK7IGRlIGxhIEJpdMOhY29yYSBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJ0zDrW1pdGUgZGUgRkFRIHBvciBww6FnaW5hIHBhcmEgbGEgdmlzdGEgZ2VuZXJhbCDCq3BlcXVlw7FhwrsgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBwYXRoIHNlcGFyYXRvci4nfSA9ICdTZXBhcmFkb3IgZGUgbGEgcnV0YSBkZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdFbmNhbWluYWRvciBwYXJhIGxhIGLDunNxdWVkYSBkZSBGQVEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRLUFyZWEnfSA9ICfDgXJlYS1GQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnUmVnaXN0cm8gZGUgbcOzZHVsbyAiRnJvbnRlbmQiIGVuIGxhIGludGVyZmF6IHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdHcnVwbyBwYXJhIGxhIGFwcm9iYWNpw7NuIGRlIGxvcyBhcnTDrWN1bG9zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJ0hpc3RvcmlhIGRlIGVzdGUgYXJ0w61jdWxvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIGludGVybmFsIGZpZWxkcyBvbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnSW5jbHVpciBjYW1wb3MgaW50ZXJub3MgZW4gbG9zIHRpY2tldHMgYmFzYWRvcyBlbiB1biBhcnTDrWN1bG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgdGhlIG5hbWUgb2YgZWFjaCBmaWVsZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnSW5jbHVpciBlbCBub21icmUgZGUgY2FkYSBjYW1wbyBlbiBsb3MgdGlja2V0cyBiYXNhZG9zIGVuIHVuIGFydMOtY3VsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2tzZWFyY2ggc2hvdWxkIGJlIHNob3duLid9ID0gJ0ludGVyZmFjZXMgZW4gbGFzIHF1ZSBzZSBkZWJlIG1vc3RyYXIgbGEgYnVzcXVlZGEgcsOhcGlkYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJ0JpdMOhY29yYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnR2VzdGnDs24gZGUgSWRpb21hcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIGFub3RoZXIgb2JqZWN0IHRvIHRoaXMgRkFRIGl0ZW0nfSA9ICdFbmxhemFyIG90cm8gb2JqZWN0byBhIGVzdGUgYXJ0w61jdWxvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBtw6F4aW1vIGRlIGFydMOtY3Vsb3MgRkFRIGEgbW9zdHJhciBlbiBsb3MgcmVzdWx0YWRvcyBkZWwgZXhwbG9yYWRvciBGQVEgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBtw6F4aW1vIGRlIGFydMOtY3Vsb3MgRkFRIGEgbW9zdHJhciBlbiBsb3MgcmVzdWx0YWRvcyBkZWwgZXhwbG9yYWRvciBGQVEgZGUgbGEgaW50ZXJmYXogZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIG3DoXhpbW8gZGUgYXJ0w61jdWxvcyBGQVEgYSBtb3N0cmFyIGVuIGxvcyByZXN1bHRhZG9zIGRlbCBleHBsb3JhZG9yIEZBUSBkZSBsYSBpbnRlcmZheiBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gbcOheGltbyBkZSBhcnTDrWN1bG9zIEZBUSBhIG1vc3RyYXIgZW4gbGEgYml0w6Fjb3JhIGRlIEZBUSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gbcOheGltbyBkZSBhcnTDrWN1bG9zIEZBUSBhIG1vc3RyYXIgY29tbyByZXN1bHRhZG8gZGUgdW5hIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gbcOheGltbyBkZSBhcnTDrWN1bG9zIEZBUSBhIG1vc3RyYXIgY29tbyByZXN1bHRhZG8gZGUgdW5hIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZheiBkZWwgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBtw6F4aW1vIGRlIGFydMOtY3Vsb3MgRkFRIGEgbW9zdHJhciBjb21vIHJlc3VsdGFkbyBkZSB1bmEgYsO6c3F1ZWRhIGVuIGxhIGludGVyZmF6IHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBmYXEgc2VhcmNoLid9ID0KICAgICAgICAnTcOzZHVsbyBwYXJhIGdlbmVyYXIgZWwgcGVyZmlsIGh0bWwgIk9wZW5TZWFyY2giIHBhcmEgYsO6c3F1ZWRhcyBjb3J0YXMgZGUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUnfSA9ICdOdWV2byBhcnTDrWN1bG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJ0xvcyBudWV2b3MgYXJ0w61jdWxvcyBGQVEgcmVxdWllcmVuIGFwcm9iYWNpw7NuIGFudGVzIGRlIHB1YmxpY2Fyc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgYXJ0w61jdWxvcyBGQVEgYSBtb3N0cmFyIGVuIGVsIGV4cGxvcmFkb3IgZGUgRkFRIGRlIGxhIGludGVyZmF6IGRlbCBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSBhcnTDrWN1bG9zIEZBUSBhIG1vc3RyYXIgZW4gZWwgZXhwbG9yYWRvciBkZSBGQVEgZGUgbGEgaW50ZXJmYXogcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgYXJ0w61jdWxvcyBGQVEgYSBtb3N0cmFyIGVuIGNhZGEgcMOhZ2luYSBkZSBsb3MgcmVzdWx0YWRvcyBkZSB1bmEgYsO6c3F1ZWRhIGVuIGxhIGludGVyZmF6IGRlbCBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSBhcnTDrWN1bG9zIEZBUSBhIG1vc3RyYXIgZW4gY2FkYSBww6FnaW5hIGRlIGxvcyByZXN1bHRhZG9zIGRlIHVuYSBiw7pzcXVlZGEgZW4gbGEgaW50ZXJmYXogcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuJ30gPSAnTsO6bWVybyBkZSBlbGVtZW50b3MgYSBtb3N0cmFyIGVuIMO6bHRpbW9zIGNhbWJpb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJ30gPSAnTsO6bWVybyBkZSBlbGVtZW50b3MgYSBtb3N0cmFyIGVuIMO6bHRpbW9zIGNyZWFkb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuJ30gPSAnTsO6bWVybyBkZSBlbGVtZW50b3MgYSBtb3N0cmFyIGVuIGVsIFRvcCAxMC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBqb3VybmFsIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgZGUgbGFzIHDDoWdpbmFzIChlbiBsYXMgcXVlIHNlIG11ZXN0cmFuIGxvcyBlbGVtZW50b3MgRkFRKSBkZSBsYSB2aXN0YSBnZW5lcmFsIHBlcXVlw7FhIGRlIGxhIGJpdMOhY29yYSBkZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgb3ZlcnZpZXcuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBkZSBsYXMgcMOhZ2luYXMgKGVuIGxhcyBxdWUgc2UgbXVlc3RyYW4gbG9zIGVsZW1lbnRvcyBGQVEpIGRlIGxhIHZpc3RhIGdlbmVyYWwgZGUgRkFRIHBlcXVlw7FhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludCB0aGlzIEZBUSd9ID0gJ0ltcHJpbWlyIGVzdGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0ZpbGEgcGFyYSBsYSBhcHJvYmFjacOzbiBkZSBsb3MgYXJ0w61jdWxvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGVzIGZvciB2b3RpbmcuIEtleSBtdXN0IGJlIGluIHBlcmNlbnQuJ30gPSAnUG9uZGVyYWNpw7NuIHBhcmEgbGEgdm90YWNpw7NuLiBMYSBjbGF2ZSBkZWJlIGV4cHJlc2Fyc2UgZW4gcG9yY2VudGFqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSd9ID0gJ0LDunNxdWVkYSBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnRXN0YWJsZWNlciBsYSBhbHR1cmEgcHJlZGV0ZXJtaW5hZGEgKGVuIHDDrXhlbGVzKSBkZSBsb3MgY2FtcG9zIEhUTUwgwqtpbmxpbmXCuyBkZSBBZ2VudEZBUVpvb20nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICdFc3RhYmxlY2VyIGxhIGFsdHVyYSBwcmVkZXRlcm1pbmFkYSAoZW4gcMOteGVsZXMpIGRlIGxvcyBjYW1wb3MgSFRNTCDCq2lubGluZcK7IGRlIEN1c3RvbWVyRkFRWm9vbSAoeSBQdWJsaWNGQVFab29tKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnRXN0YWJsZWNlciBsYSBhbHR1cmEgbcOheGltYSAoZW4gcMOteGVsZXMpIGRlIGxvcyBjYW1wb3MgSFRNTCDCq2lubGluZcK7IGRlIEFnZW50RkFRWm9vbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJ0VzdGFibGVjZXIgbGEgYWx0dXJhIG3DoXhpbWEgKGVuIHDDrXhlbGVzKSBkZSBsb3MgY2FtcG9zIEhUTUwgwqtpbmxpbmXCuyBkZSBDdXN0b21lckZBUVpvb20gKHkgUHVibGljRkFRWm9vbSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnTW9zdHJhciBib3TDs24gwqtJbnNlcnRhciBlbmxhY2UgYSBGQVHCuyBlbiBBZ2VudEZBUVpvb21TbWFsbCBwYXJhIGxvcyBhcnTDrWN1bG9zIEZBUSBww7pibGljb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIC8gIkluc2VydCBGdWxsIEZBUSIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJ8K/TW9zdHJhciBjb250ZW5pZG8gSFRNTCBlbiBsb3MgYXJ0w61jdWxvcyBGQVE/Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICfCv01vc3RyYXIgbGEgcnV0YSBkZSBsYSBGQVE/IHPDrS9uby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJ8K/TW9zdHJhciBsb3MgZWxlbWVudG9zIGRlIGxhcyBzdWJjYXRlZ29yw61hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNoYW5nZSBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnTW9zdHJhciBsb3Mgw7psdGltb3MgYXJ0w61jdWxvcyBhY3R1YWxpemFkb3MgZW4gbGFzIGludGVyZmFjZXMgZGVmaW5pZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnTW9zdHJhciBsb3Mgw7psdGltb3MgYXJ0w61jdWxvcyBjcmVhZG9zIGVuIGxhcyBpbnRlcmZhY2VzIGRlZmluaWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ01vc3RyYXIgbG9zIGFydMOtY3Vsb3MgVG9wIDEwIGVuIGxhcyBpbnRlcmZhY2VzIGRlZmluaWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ01vc3RyYXIgbGEgdm90YWNpw7NuIGVuIGxhcyBpbnRlcmZhY2VzIGRlZmluaWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBGQVEgd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgem9vbSB2aWV3IG9mIHN1Y2ggRkFRIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBxdWUgcGVybWl0ZSBlbmxhemFyIGEgdW4gYXJ0w61jdWxvIEZBUSBjb24gb3RybyBvYmpldG8gZW4gc3UgdmlzdGEgYW1wbGlhZGEgZGUgZXNhIEZBUSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHF1ZSBwZXJtaXRlIGJvcnJhciB1biBhcnTDrWN1bG8gRkFRIGVuIGxhIHZpc3RhIGFtcGxpYWRhIGRlIGVzYSBGQVEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIGFjY2VkZXIgYWwgaGlzdG9yaWFsIGRlIHVuIGFydMOtY3VsbyBGQVEgZW4gc3UgdmlzdGEgYW1wbGlhZGEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgZWRpdGFyIHVuIGFydMOtY3VsbyBGQVEgZW4gc3UgdmlzdGEgYW1wbGlhZGEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgcmV0cm9jZWRlciBlbiBsYSB2aXN0YSBhbXBsaWFkYSBkZSBGQVEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIGltcHJpbWlyIHVuIGFydMOtY3VsbyBGQVEgZW4gc3UgdmlzdGEgYW1wbGlhZGEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnRWwgaWRlbnRpZmljYWRvciBwYXJhIHVuYSBGQVEsIHBvciBlamVtcGxvIEZBUSMsIEtCIywgTWlGQVEjLiBGQVEjIGVzIGxhIG9wY2nDs24gcG9yIG9taXNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0VzdGUgYWp1c3RlIGRlZmluZSBxdWUgdW4gb2JqZXRvIMKrRkFRwrsgcHVlZGUgZW5sYXphcnNlIGNvbiBvdHJvcyBvYmpldG9zIMKrRkFRwrsgdXRpbGl6YW5kbyBlbCB0aXBvIGRlIGVubGFjZSDCq05vcm1hbMK7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0VzdGUgYWp1c3RlIGRlZmluZSBxdWUgdW4gb2JqZXRvIMKrRkFRwrsgcHVlZGUgZW5sYXphcnNlIGNvbiBvdHJvcyBvYmpldG9zIMKrRkFRwrsgdXRpbGl6YW5kbyBlbCB0aXBvIGRlIGVubGFjZSDCq1BhcmVudENoaWxkwrsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0VzdGUgYWp1c3RlIGRlZmluZSBxdWUgdW4gb2JqZXRvIMKrRkFRwrsgcHVlZGUgZW5sYXphcnNlIGNvbiBvdHJvcyBvYmpldG9zIMKrVGlja2V0wrsgdXRpbGl6YW5kbyBlbCB0aXBvIGRlIGVubGFjZSDCq05vcm1hbMK7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0VzdGUgYWp1c3RlIGRlZmluZSBxdWUgdW4gb2JqZXRvIMKrRkFRwrsgcHVlZGUgZW5sYXphcnNlIGNvbiBvdHJvcyBvYmpldG9zIMKrVGlja2V0wrsgdXRpbGl6YW5kbyBlbCB0aXBvIGRlIGVubGFjZSDCq1BhcmVudENoaWxkwrsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBib2R5IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdDdWVycG8gZGVsIHRpY2tldCBwYXJhIGFwcm9iYWNpw7NuIGRlIGFydMOtY3Vsb3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnQXN1bnRvIGRlbCB0aWNrZXQgcGFyYSBhcHJvYmFjacOzbiBkZSBhcnTDrWN1bG9zIEZBUS4nOwoKICAgICMKICAgICMgT0JTT0xFVEUgRU5UUklFUyBGT1IgUkVGRVJFTkNFLCBETyBOT1QgVFJBTlNMQVRFIQogICAgIwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBuZWVkcyBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cCEnfSA9ICdVbmEgY2F0ZWdvcsOtYSBkZWJlIHRlbmVyIGFsIG1lbm9zIHVuIGdydXBvIGRlIHBlcm1pc29zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBjb21tZW50ISd9ID0gJ1VuYSBjYXRlZ29yw61hIGRlYmUgdGVuZXIgdW4gY29tZW50YXJpbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHdoaWNoIGNhbiBhY2Nlc3MgdGhpcyBjYXRlZ29yeS4nfSA9ICdMb3MgZ3J1cG9zIGFnZW50ZXMgcHVlZGVuIGFjY2VkZXIgYSBlc3RhIGNhdGVnb3LDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZXMnfSA9ICdBcnTDrWN1bG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3JpZXMnfSA9ICdDYXRlZ29yaWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBwb3Igb21pc2nDs24gcGFyYSBvcmRlbmFyIGxvcyBhcnTDrWN1bG9zIEZBUSBlbiBlbCBFeHBsb3JhZG9yIEZBUSBlbiBsYSBpbnRlcmZhY2UgZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBwb3Igb21pc2nDs24gcGFyYSBvcmRlbmFyIGxvcyBhcnTDrWN1bG9zIEZBUSBlbiBlbCBFeHBsb3JhZG9yIEZBUSBlbiBsYSBpbnRlcmZhY2UgZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGF0cmlidXRvIHBvciBvbWlzacOzbiBwYXJhIG9yZGVuYXIgbG9zIGFydMOtY3Vsb3MgRkFRIGVuIGVsIEV4cGxvcmFkb3IgRkFRIGVuIGxhIGludGVyZmFjZSBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGVsIHNlbnRpZG8gZGVsIG9yZGVuIHBvciBvbWlzacOzbiBlbiBlbCByZXN1bHRhZG8gZGVsIEV4cGxvcmFkb3IgRkFRIGVuIGxhIGludGVyZmFjZSBkZWwgY2xpZW50ZS4gQXJyaWJhOiBsb3MgbcOhcyBhbnRpZ3VvcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4gQWJham86IGxvcyDDumx0aW1vcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBzZW50aWRvIGRlbCBvcmRlbiBwb3Igb21pc2nDs24gZW4gZWwgcmVzdWx0YWRvIGRlbCBFeHBsb3JhZG9yIEZBUSBlbiBsYSBpbnRlcmZhY2UgcMO6YmxpY2EuIEFycmliYTogbG9zIG3DoXMgYW50aWd1b3MgZW4gbGEgcGFydGUgc3VwZXJpb3IuIEFiYWpvOiBsb3Mgw7psdGltb3MgZW4gbGEgcGFydGUgc3VwZXJpb3IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgRXhwbG9yZXIgcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGVsIHNlbnRpZG8gZGVsIG9yZGVuIHBvciBvbWlzacOzbiBlbiBlbCByZXN1bHRhZG8gZGVsIEV4cGxvcmFkb3IgRkFRIGVuIGxhIGludGVyZmFjZSBkZWwgYWdlbnRlLiBBcnJpYmE6IGxvcyBtw6FzIGFudGlndW9zIGVuIGxhIHBhcnRlIHN1cGVyaW9yLiBBYmFqbzogbG9zIMO6bHRpbW9zIGVuIGxhIHBhcnRlIHN1cGVyaW9yLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoZXJlIHRoZSBcJ0luc2VydCBGQVFcJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLid9ID0gJ0RlZmluZSBkw7NuZGUgZXMgcXVlIGxhIGxpZ2EgXCdJbnNlcnRhciBGQVFcJyBzZXLDoSBkZXNwbGVnYWRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGU6ICd9ID0gJ0JvcnJhcjogJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldGFpbFNlYXJjaCd9ID0gJ0J1c3F1ZWRhIGRldGFsbGFkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgQ2F0ZWdvcnk/J30gPSAnwr9Fc3TDoSBzZWd1cm8gZGUgcXVlcmVyIGJvcnJhciBlc3RhIENhdGVnb3LDrWE/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBMYW5ndWFnZT8nfSA9ICfCv0VzdMOhIHNlZ3VybyBkZSBxdWVyZXIgYm9ycmFyIGVzdGUgSWRpb21hPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnknfSA9ICdDYXRlZ29yw61hIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZWtleSB3aGljaCBpcyBkZWZpbmVkIGluIHRoZSBsYW5ndWFnZSBmaWxlICpfRkFRLnBtLid9ID0gJ0NsYXZlIGRlIGlkaW9tYSBkZWZpbmlkYSBlbiBlbCBmaWNoZXJvIGRlIGlkaW9tYSAqX0ZBUS5wbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gbcOheGltbyBkZSBhcnTDrWN1bG9zIEZBUSBhIHNlciBtb3N0cmFkb3MgZGVudHJvIGRlbCBleHBsb3JhZG9yIGVuIGxhIGludGVyZmFjZSBkZWwgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIG3DoXhpbW8gZGUgYXJ0w61jdWxvcyBGQVEgYSBzZXIgbW9zdHJhZG9zIGRlbnRybyBkZWwgZXhwbG9yYWRvciBlbiBsYSBpbnRlcmZhY2UgcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIEV4cGxvcmVyIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIG3DoXhpbW8gZGUgYXJ0w61jdWxvcyBGQVEgYSBzZXIgbW9zdHJhZG9zIGNvbW8gcmVzdWx0YWRvIGRlbCBFeHBsb3JhZG9yIEZBUSBlbiBsYSBpbnRlcmZhY2UgZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcnkgYWNjZXNzaWJsZS4gVG8gY3JlYXRlIGFuIGFydGljbGUgeW91IG5lZWQgYWNjZXNzIHRvIGF0IGxlYXN0IG9uZSBjYXRlZ29yeS4gUGxlYXNlIGNoZWNrIHlvdXIgZ3JvdXAvY2F0ZWdvcnkgcGVybWlzc2lvbiB1bmRlciAtY2F0ZWdvcnkgbWVudS0hJ30gPQogICAgICAgICdObyBzZSBwdWVkZSBhY2NlZGVyIGEgbmluZ3VuYSBjYXRlZ29yw61hLiBQYXJhIGNyZWFyIHVuIGFydGljdWxvIHVzdGVkIGRlYmUgdGVuZXIgYWNjZXNvIGEgbcOtbmltbyB1bmEgY2F0ZWdvcsOtYS4gUG9yIGZhdm9yIHJldmlzZSBzdXMgcGVybWlzb3MgZGUgZ3J1cG8vY2F0ZWdvcsOtYSBlbiBlbCAtbWVuw7ogY2F0ZWdvcsOtYS0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgYXJ0w61jdWxvcyBGQVEgYSBzZXIgbW9zdHJhZG9zIHBvciBjYWRhIHDDoWdpbmEgY29tbyByZXN1bHRhZG8gZGUgdW5hIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZhY2UgZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIGRlIGFydMOtY3Vsb3MgRkFRIGEgc2VyIG1vc3RyYWRvcyBwb3IgY2FkYSBww6FnaW5hIGNvbW8gcmVzdWx0YWRvIGRlIHVuYSBiw7pzcXVlZGEgZW4gbGEgaW50ZXJmYWNlIHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgYXJ0w61jdWxvcyBGQVEgYSBzZXIgbW9zdHJhZG9zIGRlbnRybyBkZWwgZXhwbG9yYWRvciBlbiBsYSBpbnRlcmZhY2UgZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBleHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgYXJ0w61jdWxvcyBGQVEgYSBzZXIgbW9zdHJhZG9zIGRlbnRybyBkZWwgZXhwbG9yYWRvciBlbiBsYSBpbnRlcmZhY2UgcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrU2VhcmNoJ30gPSAnQnVzcXVlZGEgcsOhcGlkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICdNb3N0cmFyIGJvdMOzbiDCq0luc2VydGFyIHRleHRvIHkgZW5sYWNlIGRlIGxhIEZBUcK7IGVuIEFnZW50RkFRWm9vbVNtYWxsIHBhcmEgbG9zIGFydMOtY3Vsb3MgRkFRIHDDumJsaWNvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPSAnTW9zdHJhciBib3TDs24gwqtJbnNlcnRhciB0ZXh0byBkZSBsYSBGQVHCuyBlbiBBZ2VudEZBUVpvb21TbWFsbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJ01vc3RyYXIgZWwgQm90w7NuICJJbnNlcnRhciBWw61uY3VsbyIgZW4gQWdlbnRGQVFab29tU21hbGwgcGFyYSBhcnTDrWN1bG9zIEZBUSBww7pibGljb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IFRleHQgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICdNb3N0cmFyIGVsIEJvdMOzbiAiSW5zZXJ0YXIgVGV4dG8gJiBWw61uY3VsbyIgZW4gQWdlbnRGQVFab29tU21hbGwgcGFyYSBhcnTDrWN1bG9zIEZBUSBww7pibGljb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IFRleHQiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9ICdNb3N0cmFyIGVsIEJvdMOzbiAiSW5zZXJ0YXIgVGV4dG8iIGVuIEFnZW50RkFRWm9vbVNtYWxsIHBhcmEgYXJ0w61jdWxvcyBGQVEgcMO6YmxpY29zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgV1lTSVdZRyBlZGl0b3IgaW4gYWdlbnQgaW50ZXJmYWNlLid9ID0gJ01vc3RyYXIgZWwgZWRpdG9yIFdZU0lXWUcgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UnfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gbGlnYSBlbiBlbCBtZW7DuiBwYXJhIGFjY2VkZXIgYWwgaGlzdG9yaWFsIGRlIHVuIGFydMOtY3VsbyBGQVEgZW4gc3UgdmlzdGEgZGUgZGV0YWxsZXMgZW4gbGEgaW50ZXJmYWNlIGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YkNhdGVnb3JpZXMnfSA9ICdTdWJjYXRlZ29yaWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB0aXRsZSBpcyByZXF1aXJlZC4nfSA9ICdFbCB0w610dWxvIGVzIHJlcXVlcmlkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBDYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBTdWJDYXRlZ29yaWVzJ30gPSAnRXN0YSBDYXRlZ29yw61hIGVzIHBhZHJlIGRlIGxhcyBzaWd1aWVudGVzIFN1YkNhdGVnb3LDrWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgQ2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2UocyknfSA9ICdFc3RhIENhdGVnb3LDrWEgZXN0YSBzaWVuZG8gdXNhZGEgcG9yIGxvcyBzaWd1aWVudGVzIEFydMOtY3Vsb3MgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgTGFuZ3VhZ2UgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2xlKHMpJ30gPSAnRXN0ZSBJZGlvbWEgZXN0YSBzaWVuZG8gdXNhZG8gcG9yIGxvcyBzaWd1aWVudGVzIEFydMOtY3Vsb3MgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMhJ30gPSAnRXN0YSBjYXRlZ29yw61hIHlhIGV4aXN0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGVkJ30gPSAnQWN0dWFsaXphZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgQ2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBBcnRpY2xlISBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IGFub3RoZXIgQ2F0ZWdvcnknfSA9CiAgICAgICAgJ05vIHB1ZWRlIGJvcnJhciBlc3RhIENhdGVnb3LDrWEuIEVzdMOhIHNpZW5kbyB1c2FkYSBwb3IgYWwgbWVub3MgdW4gQXJ0w61jdWxvIEZBUSB5L28gZXMgcGFkcmUgZGUgYWwgbWVub3Mgb3RyYSBDYXRlZ29yw61hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIExhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgQXJ0aWNsZSEnfSA9CiAgICAgICAgJ05vIHB1ZWRlIGJvcnJhciBlc3RlIElkaW9tYS4gRXN0w6Egc2llbmRvIHVzYWRvIHBvciBhbCBtZW5vcyB1biBBcnTDrWN1bG8gRkFRJzsKCn0KCjE7Cg==
IyAtLQojIEtlcm5lbC9MYW5ndWFnZS9mYV9GQVEucG0gLSB0cmFuc2xhdGlvbiBmaWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Okxhbmd1YWdlOjpmYV9GQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFBQUZBUQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJ30gPSAn2KLYrtix24zZhiDYp9mC2YTYp9mFINiq2LnYsduM2YEg2LTYr9mHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ9ii2K7YsduM2YYg2KfZgtmE2KfZhSDYp9uM2KzYp9ivINi02K/Zhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3AgMTAgRkFRIGFydGljbGVzJ30gPSAn2KjYp9mE2KfYqtix24zZhiDbsduwINmC2YTZhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yeSBvZid9ID0gJ9iy24zYsSDZhdis2YXZiNi52YfigIzbjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNlbGVjdGVkISd9ID0gJ9in2YXYqtuM2KfYsiDYsdinINin2YbYqtiu2KfYqCDZhtqp2LHYr9mH4oCM2KfbjNivISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBsb3Jlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKGFsbCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwgKGN1c3RvbWVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IGRheSd9ID0gJ9ix2YjYsiDYoti62KfYsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBtb250aCd9ID0gJ9mF2KfZhyDYoti62KfYsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCB5ZWFyJ30gPSAn2LPYp9mEINii2LrYp9iyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBkYXknfSA9ICfYsdmI2LIg2b7Yp9uM2KfZhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgbW9udGgnfSA9ICfZhdin2Ycg2b7Yp9uM2KfZhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgeWVhcid9ID0gJ9iz2KfZhCDZvtin24zYp9mGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rcyBmb3IgeW91ciB2b3RlISd9ID0gJ9in2LIg2LHYp9uMINi02YXYpyDYs9m+2KfYs9qv2LLYp9ix24zZhSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnfSA9ICfYtNmF2Kcg2YLYqNmE2Kcg2LHYp9uMINiv2KfYr9mH4oCM2KfbjNivISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBQcmludCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKFRvcCAxMCknfSA9ICfYp9iu2KjYp9ixIEZBUSAo27HbsCDYqtin24wg2KjYsdiq2LEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAn2KfYrtio2KfYsSBGQVEgKNis2K/bjNiv2Kcg2KfbjNis2KfYryDYtNiv2YcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknfSA9ICfYp9iu2KjYp9ixIEZBUSAo2KzYr9uM2K/YpyDYqti624zbjNixINuM2KfZgdiq2YcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgYWRkZWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBuYW1lISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSBhZGRlZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIHVwZGF0ZWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnREYXNoYm9hcmRGQVFPdmVydmlldwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICfYqtin24zbjNivJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4nfSA9ICfYr9ixIEV4cGxvcmVyINio2Ycg2LXZiNix2Kog24zaqSDZhdiq2YYg2KrZiNi224zYrduMINmG2YXYp9uM2LQg2K/Yp9iv2Ycg2K7ZiNin2YfZhtivINi02K8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIHBlcm1pc3Npb24gZ3JvdXAuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FnZW50IGdyb3VwcyB0aGF0IGNhbiBhY2Nlc3MgYXJ0aWNsZXMgaW4gdGhpcyBjYXRlZ29yeS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBjYXRlZ29yeS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUgYW5kL29yIGlzIHBhcmVudCBvZiBhdCBsZWFzdCBvbmUgb3RoZXIgY2F0ZWdvcnknfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgYXJ0aWNsZShzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHBhcmVudCBvZiB0aGUgZm9sbG93aW5nIHN1YmNhdGVnb3JpZXMnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgRkFRIGFydGljbGU/J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEV4cGxvcmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrIFNlYXJjaCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxkY2FyZHMgYXJlIGFsbG93ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkdmFuY2VkIFNlYXJjaCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdWJjYXRlZ29yaWVzIGZvdW5kLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFIaXN0b3J5CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZC4nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRTGFuZ3VhZ2UKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZSB0aGlzIGZlYXR1cmUgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIG11bHRpcGxlIGxhbmd1Z2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBsYW5ndWFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgTGFuZ3VhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIExhbmd1YWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgTGFuZ3VhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxhbmd1YWdlPyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBsYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUhJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGVzIHBlciBwYWdlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGdlbmVyaWMgRkFRIHRhYmxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyIsIjUwJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVByaW50CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEtSW5mbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ9ii2LHYpyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IHVwZGF0ZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSAoZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIChlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVFGdWxsdGV4dCd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBTZWFyY2gnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoLVByb2ZpbGUgYXMgVGVtcGxhdGU/J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGUgc2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgdm90ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyByYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIGRhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSByYW5nZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnIiwiMTgnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnIiwiMjUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyAlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J291dCBvZiA1J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEgQmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgRkFRIGFydGljbGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rvd25sb2FkIEF0dGFjaG1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSG93IGhlbHBmdWwgd2FzIHRoaXMgYXJ0aWNsZT8gUGxlYXNlIGdpdmUgdXMgeW91ciByYXRpbmcgYW5kIGhlbHAgdG8gaW1wcm92ZSB0aGUgRkFRIERhdGFiYXNlLiBUaGFuayBZb3UhJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsndmVyeSBoZWxwZnVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgTGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQgJiBMaW5rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSAmIExpbmsnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBhcnRpY2xlcyBmb3VuZC4nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRUHJpbnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbHRleHQgc2VhcmNoIGluIEZBUSBhcnRpY2xlcyAoZS4gZy4gIkpvaG4qbiIgb3IgIldpbGwqIiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSByZXN0cmljdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCB2b3Rlcy4uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSByZXN0cmljdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCByYXRlLi4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbFRleHQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hSZXN1bHRTaG9ydAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGZvciBhcnRpY2xlcyB3aXRoIGtleXdvcmQnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUUV4cGxvcmVyCgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRUHJpbnQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2gKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbFRleHQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFNob3J0CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRWm9vbQoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVFJTIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1NTIGNvbG9yIGZvciB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FjaGUgVGltZSBUbyBMZWF2ZSBmb3IgRkFRIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlY2ltYWwgcGxhY2VzIG9mIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGNhdGVnb3J5IG5hbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbGFuZ3VhZ2UgZm9yIEZBUSBhcnRpY2xlcyBvbiBzaW5nbGUgbGFuZ3VhZ2UgbW9kZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBwcmlvcml0eSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHZhbHVlIGZvciB0aGUgQWN0aW9uIHBhcmFtZXRlciBmb3IgdGhlIHB1YmxpYyBmcm9udGVuZC4gVGhlIEFjdGlvbiBwYXJhbWV0ZXIgaXMgdXNlZCBpbiB0aGUgc2NyaXB0cyBvZiB0aGUgc3lzdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIGpvdXJuYWwuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoZXJlIHRoZSBcJ0luc2VydCBGQVFcJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLiBOb3RlOiBBZ2VudFRpY2tldEFjdGlvbkNvbW1vbiBpbmNsdWRlcyBBZ2VudFRpY2tldE5vdGUsIEFnZW50VGlja2V0Q2xvc2UsIEFnZW50VGlja2V0RnJlZVRleHQsIEFnZW50VGlja2V0T3duZXIsIEFnZW50VGlja2V0UGVuZGluZywgQWdlbnRUaWNrZXRQcmlvcml0eSBhbmQgQWdlbnRUaWNrZXRSZXNwb25zaWJsZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHRoaXMgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgdGhpcyBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBPdmVydmlldyAiU21hbGwiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBwYXRoIHNlcGFyYXRvci4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEtQXJlYSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JvdXAgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgdGhpcyBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWlja3NlYXJjaCBzaG91bGQgYmUgc2hvd24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0pvdXJuYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIGFub3RoZXIgb2JqZWN0IHRvIHRoaXMgRkFRIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBmYXEgc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgQXJ0aWNsZSd9ID0gJ9mG2YjYtNiq2Ycg2KzYr9uM2K8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gdGhlIHRvcCAxMCBmZWF0dXJlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIGpvdXJuYWwgb3ZlcnZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludCB0aGlzIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWV1ZSBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIC8gIkluc2VydCBGdWxsIEZBUSIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY2hhbmdlIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNyZWF0ZWQgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRvcCAxMCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdm90aW5nIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBGQVEgd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgem9vbSB2aWV3IG9mIHN1Y2ggRkFRIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIHRvIGRlbGV0ZSBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgRkFRIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIEZBUSwgZS5nLiBGQVEjLCBLQiMsIE15RkFRIy4gVGhlIGRlZmF1bHQgaXMgRkFRIy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBib2R5IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IHN1YmplY3QgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJyc7CgogICAgIwogICAgIyBPQlNPTEVURSBFTlRSSUVTIEZPUiBSRUZFUkVOQ0UsIERPIE5PVCBUUkFOU0xBVEUhCiAgICAjCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgd2hpY2ggY2FuIGFjY2VzcyB0aGlzIGNhdGVnb3J5Lid9ID0gJ9qv2LHZiNmH4oCM2YfYp9uMINqp2KfYsdi02YbYp9iz24wg2qnZhyDYqNmHINin24zZhiDYr9iz2KrZh+KAjNio2YbYr9uMINiv2LPYqtix2LPbjCDYr9in2LHZhtivLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yaWVzJ30gPSAn2K/Ys9iq2YfigIzYqNmG2K/bjOKAjNmH2KcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV0YWlsU2VhcmNoJ30gPSAn2KzYs9iq2KzZiNuMINio2Kcg2KzYstuM24zYp9iqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBDYXRlZ29yeSd9ID0gJ9iv2LPYqtmHIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjYXRlZ29yeSBhY2Nlc3NpYmxlLiBUbyBjcmVhdGUgYW4gYXJ0aWNsZSB5b3UgbmVlZCBhY2Nlc3MgdG8gYXQgbGVhc3Qgb25lIGNhdGVnb3J5LiBQbGVhc2UgY2hlY2sgeW91ciBncm91cC9jYXRlZ29yeSBwZXJtaXNzaW9uIHVuZGVyIC1jYXRlZ29yeSBtZW51LSEnfSA9CiAgICAgICAgJ9iv2LPYqtix2LPbjCDYqNmHINmH24zahiDaqdiv2KfZhSDYp9iyINiv2LPYqtmH4oCM2KjZhtiv24zigIzZh9inINmF2YLYr9mI2LEg2YbbjNiz2KouINio2LHYp9uMINin24zYrNin2K8g24zaqSDZhtmI2LTYqtmHINis2K/bjNivINin2YLZhNinINio2Ycg24zaqSDYr9iz2KrZh+KAjNio2YbYr9uMINio2KfbjNivINiv2LPYqtix2LPbjCDYr9in2LTYqtmHINio2KfYtNuM2K8uINmE2LfZgdinINin2LIg2LfYsduM2YIg2YXZhtmI24wgY2F0ZWdvcnkg2K/Ys9iq2LHYs9uM4oCM2YfYp9uMINqv2LHZiNmHL9iv2LPYqtmHINix2Kcg2KjYsdix2LPbjCDZgdix2YXYp9uM24zYryEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2tTZWFyY2gnfSA9ICfYrNiz2KrYrNmI24wg2LPYsduM2LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViQ2F0ZWdvcmllcyd9ID0gJ9iy24zYsSDYr9iz2KrZh+KAjNmH2KcnOwoKfQoKMTsK
IyAtLQojIEtlcm5lbC9MYW5ndWFnZS9maV9GQVEucG0gLSB0cmFuc2xhdGlvbiBmaWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Okxhbmd1YWdlOjpmaV9GQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFBQUZBUQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICdzaXPDpGluZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljJ30gPSAnanVsa2luZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICd1bGtvaW5lbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAnRkFRLW51bWVybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdWaWltZWtzaSBww6Rpdml0ZXR5dCBhcnRpa2tlbGl0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ1ZpaW1la3NpIGp1bGthaXN0dXQgYXJ0aWtrZWxpdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3AgMTAgRkFRIGFydGljbGVzJ30gPSAnVG9wIDEwIGFydGlra2VsaXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcnkgb2YnfSA9ICdBbGFrYXRlZ29yaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICdFaSB2YWxpdHR1YSBhcnZpb3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGxvcmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAoYWxsKSd9ID0gJ2p1bGtpbmVuIChrYWlra2kpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsIChjdXN0b21lciknfSA9ICd1bGtvaW5lbiAoYXNpYWtrYWF0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAnc2lzw6RpbmVuIChhZ2VudGl0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBkYXknfSA9ICdBbG9pdHVzcMOkaXbDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBtb250aCd9ID0gJ0Fsb2l0dXMga3V1a2F1c2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgeWVhcid9ID0gJ0Fsb2l0dXN2dW9zaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgZGF5J30gPSAnTG9wcHVww6RpdsOkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBtb250aCd9ID0gJ0xvcHB1a3V1a2F1c2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIHllYXInfSA9ICdMb3BwdXZ1b3NpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rcyBmb3IgeW91ciB2b3RlISd9ID0gJ0tpaXRvcyBhcnZvc3RlbHVzdGFzaSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnfSA9ICdPbGV0IGpvIGFydm9zdGVsbHV0IHTDpG3DpG4gYXJ0aWtrZWxpbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgUHJpbnQnfSA9ICdUdWxvc3RhIGFydGlra2VsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKFRvcCAxMCknfSA9ICdBcnRpa2tlbGl0IChUb3AgMTApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAnQXJ0aWtrZWxpICh1dWRldCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ0FydGlra2VsaSAocMOkaXZpdGV0dHkgw6Rza2V0dMOkaW4pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ0thdGVnb3JpYSBww6Rpdml0ZXR0eSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IGFkZGVkISd9ID0gJ0thdGVnb3JpYSBsaXPDpHR0eSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAnS2F0ZWdvcmlhbGxhIHR1bGVlIG9sbGEgbmltaSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyd9ID0gJ1TDpG3DpCBrYXRlZ29yaWEgb24gam8gb2xlbWFzc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIGFkZGVkISd9ID0gJ0tpZWxpIGxpc8OkdHR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSB1cGRhdGVkISd9ID0gJ0tpZWxpIHDDpGl2aXRldHR5ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBpcyByZXF1aXJlZCEnfSA9ICdOaW1pIG9uIHBha29sbGluZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMhJ30gPSAnVMOkbcOkIGtpZWxpIG9uIGpvIG9sZW1hc3NhISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnREYXNoYm9hcmRGQVFPdmVydmlldwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdMaXPDpMOkIEZBUSBhcnRpa2tlbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICdLYXRlZ29yaWEgb24gcGFrb2xsaW5lbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICdIeXbDpGtzeW50w6QnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQ2F0ZWdvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnRkFROm4gS2F0ZWdvcmlvaWRlbiBoYWxsaW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICdMaXPDpMOkIGthdGVnb3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ2F0ZWdvcnknfSA9ICdQb2lzdGEga2F0ZWdvcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnT2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIENhdGVnb3J5J30gPSAnTGlzw6TDpCBrYXRlZ29yaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBDYXRlZ29yeSd9ID0gJ011b2trYWEga2F0ZWdvcmlhYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxsIGJlIHNob3duIGFzIGNvbW1lbnQgaW4gRXhwbG9yZXIuJ30gPSAnTsOkeXRldMOkw6RuIGtvbW1lbnR0aW5hIFNlbGFpbWVzc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIHBlcm1pc3Npb24gZ3JvdXAuJ30gPSAnVmFsaXRzZSBhaW5ha2luIHlrc2kgb2lrZXVzcnlobcOkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAnQWdlbnR0aXJ5aG3DpHQsIGpvaWxsYSBvbiBww6TDpHN5IGFydGlra2VsZWloaW4gdMOkc3PDpCBrYXRlZ29yaWFzc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyd9ID0gJ0hhbHVhdGtvIHZhcm1hc3RpIHBvaXN0YWEgdMOkbcOkbiBrYXRlZ29yaWFuPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBjYXRlZ29yeS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUgYW5kL29yIGlzIHBhcmVudCBvZiBhdCBsZWFzdCBvbmUgb3RoZXIgY2F0ZWdvcnknfSA9CiAgICAgICAgJ0V0IHZvaSBwb2lzdGFhIHTDpHTDpCBrYXRlZ29yaWFhISBTZSBzaXPDpGx0w6TDpCBqb2tvIGFydGlra2VsZWl0YSB0YWkgc2Ugb24gdG9pc2VuIGthdGVnb3JpYW4gaXPDpG50w6RrYXRlZ29yaWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAnU2V1cmFhdmF0IGFydGlra2VsaXQga3V1bHV2YXQgdMOkaMOkbiBrYXRlZ29yaWFhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHBhcmVudCBvZiB0aGUgZm9sbG93aW5nIHN1YmNhdGVnb3JpZXMnfSA9ICdOw6Rtw6Qga2F0ZWdvcmlhdCBvdmF0IHTDpG3DpG4ga2F0ZWdvcmlhbiBhbGFrYXRlZ29yaW9pdGEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgRkFRIGFydGljbGU/J30gPSAnSGFsdWF0a28gdmFybWFzdGkgcG9pc3RhYSB0w6Rtw6RuIGFydGlra2VsaW4/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSd9ID0gJ0ZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEV4cGxvcmVyJ30gPSAnU2VsYWluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrIFNlYXJjaCd9ID0gJ1Bpa2FoYWt1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGRjYXJkcyBhcmUgYWxsb3dlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWR2YW5jZWQgU2VhcmNoJ30gPSAnTW9uaXB1b2xpbmVuIGhha3UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcmllcyd9ID0gJ0FsYWthdGVnb3JpYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzJ30gPSAnQXJ0aWtrZWxpdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdWJjYXRlZ29yaWVzIGZvdW5kLid9ID0gJ0VpIGFsYWthdGVnb3Jpb2l0YS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSGlzdG9yeQoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ0ZBUTpuIGtpZWx0ZW4gaGFsbGludGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VnZXMuJ30gPQogICAgICAgICdLw6R5dMOkIHTDpHTDpCBvbWluYWlzdXV0dGEsIGpvcyBoYWx1YXQga8OkeXR0w6TDpCB1c2VhbXBhYSBraWVsdMOkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICdMaXPDpMOkIGtpZWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBMYW5ndWFnZSd9ID0gJ1BvaXN0YSBraWVsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTGFuZ3VhZ2UnfSA9ICdMaXPDpMOkIGtpZWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgTGFuZ3VhZ2UnfSA9ICdNdW9ra2FhIGtpZWx0w6QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxhbmd1YWdlPyd9ID0gJ0hhbHVhdGtvIHZhcm1hc3RpIHBvaXN0YWEgdMOkbcOkbiBraWVsZW4/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEnfSA9CiAgICAgICAgJ0V0IHZvaSBwb2lzdGFhIHTDpHTDpCBraWVsdMOkLiBBaW5ha2luIHlrc2kgYXJ0aWtrZWxpIGvDpHl0dMOkw6QgdMOkdMOkIGtpZWx0w6QhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2xlKHMpJ30gPSAnU2V1cmFhdmF0IGFydGlra2VsaXQga8OkeXR0w6R2w6R0IHTDpHTDpCBraWVsdMOkJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBhcnRpY2xlcyBwZXIgcGFnZSd9ID0gJ0FydGlra2VsZWl0YSBwZXIgc2l2dSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgZGF0YSBmb3VuZC4nfSA9ICdZaHTDpMOkbiBhcnRpa2tlbGlhIGVpIGzDtnl0eW55dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGdlbmVyaWMgRkFRIHRhYmxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyIsIjUwJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVByaW50CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEtSW5mbyd9ID0gJ0ZBUSB0aWVkb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZXMnfSA9ICfDhMOkbmVzdHlrc2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUZ1bGx0ZXh0J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFNlYXJjaCd9ID0gJ0ZBUSBoYWt1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaC1Qcm9maWxlIGFzIFRlbXBsYXRlPyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlIHNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHZvdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgcmF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyBkYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgcmFuZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAnRkFRLWluZm9ybWFhdGlvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyIsIjE4J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyIsIjI1J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJ0Fydm9zdGVsdXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nICUnfSA9ICdBcnZvc3RlbHUgJSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJy8gNSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICdFaSDDpMOkbmnDpCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLid9ID0gJ0VpIGFubmV0dHVqYSDDpMOkbmnDpCEgw4TDpG5lc3TDpCB0w6R0w6QgYXJ0aWtrZWxpYSBlbnNpbW3DpGlzZW7DpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG93bmxvYWQgQXR0YWNobWVudCd9ID0gJ0xhdGFhIGxpaXRldGllZG9zdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSG93IGhlbHBmdWwgd2FzIHRoaXMgYXJ0aWNsZT8gUGxlYXNlIGdpdmUgdXMgeW91ciByYXRpbmcgYW5kIGhlbHAgdG8gaW1wcm92ZSB0aGUgRkFRIERhdGFiYXNlLiBUaGFuayBZb3UhJ30gPQogICAgICAgICdLdWlua2EgaHnDtmR5bGxpbmVuIHTDpG3DpCBhcnRpa2tlbGkgb2xpPyBBcnZvc3RlbGUgYXJ0aWtrZWxpLCBqb3R0YSB2b2ltbWUga2VoaXR0w6TDpCBGQVEtdGlldG9rYW50YWFtbWUuIEtpaXRvcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICdoecO2ZHl0w7ZuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ZlcnkgaGVscGZ1bCd9ID0gJ2h5w7ZkeWxsaW5lbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb21TbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAnTGlzw6TDpCBGQVEtdGVrc3RpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICdMaXPDpMOkIEZBUS1saW5ra2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJ0xpc8Okw6QgRkFRLXRla3N0aSBqYSAtbGlua2tpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSAmIExpbmsnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBhcnRpY2xlcyBmb3VuZC4nfSA9ICdZaHTDpMOkbiBhcnRpa2tlbGlhIGVpIGzDtnl0eW55dC4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRUHJpbnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbHRleHQgc2VhcmNoIGluIEZBUSBhcnRpY2xlcyAoZS4gZy4gIkpvaG4qbiIgb3IgIldpbGwqIiknfSA9ICdIYWUgYXJ0aWtrZWxlaXN0YSAoZXNpbS4gIk1hdHRpKiIgdGFpICJNZWlrKm5lbiIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgcmVzdHJpY3Rpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggdm90ZXMuLi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgcmVzdHJpY3Rpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggcmF0ZS4uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGxUZXh0CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoUmVzdWx0U2hvcnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FydGljbGUgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBmb3IgYXJ0aWNsZXMgd2l0aCBrZXl3b3JkJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFFeHBsb3JlcgoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVByaW50CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoCgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMnfSA9ICdKdWxraW5lbic7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbFRleHQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFNob3J0CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRWm9vbQoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVFJTIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1NTIGNvbG9yIGZvciB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FjaGUgVGltZSBUbyBMZWF2ZSBmb3IgRkFRIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnS2F0ZWdvcmlhaGFsbGludGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgY2F0ZWdvcnkgbmFtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBqb3VybmFsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgbGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaW5mb3JtYXRpb24gdG8gYmUgaW5zZXJ0ZWQgaW4gYSBGQVEgYmFzZWQgVGlja2V0LiAiRnVsbCBGQVEiIGluY2x1ZGVzIHRleHQsIGF0dGFjaG1lbnRzIGFuZCBpbmxpbmUgaW1hZ2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBFeHBsb3Jlci4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hlcmUgdGhlIFwnSW5zZXJ0IEZBUVwnIGxpbmsgd2lsbCBiZSBkaXNwbGF5ZWQuIE5vdGU6IEFnZW50VGlja2V0QWN0aW9uQ29tbW9uIGluY2x1ZGVzIEFnZW50VGlja2V0Tm90ZSwgQWdlbnRUaWNrZXRDbG9zZSwgQWdlbnRUaWNrZXRGcmVlVGV4dCwgQWdlbnRUaWNrZXRPd25lciwgQWdlbnRUaWNrZXRQZW5kaW5nLCBBZ2VudFRpY2tldFByaW9yaXR5IGFuZCBBZ2VudFRpY2tldFJlc3BvbnNpYmxlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgdGhpcyBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHBhdGggc2VwYXJhdG9yLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUS1BcmVhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIGludGVybmFsIGZpZWxkcyBvbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgdGhlIG5hbWUgb2YgZWFjaCBmaWVsZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVyZmFjZXMgd2hlcmUgdGhlIHF1aWNrc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnS2llbHRlbiBoYWxsaW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIGFub3RoZXIgb2JqZWN0IHRvIHRoaXMgRkFRIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBmYXEgc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgQXJ0aWNsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIGFydGljbGVzIG5lZWQgYXBwcm92YWwgYmVmb3JlIHRoZXkgZ2V0IHB1Ymxpc2hlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY2hhbmdlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY3JlYXRlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIHRoZSB0b3AgMTAgZmVhdHVyZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBqb3VybmFsIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgb3ZlcnZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnQgdGhpcyBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVldWUgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGVzIGZvciB2b3RpbmcuIEtleSBtdXN0IGJlIGluIHBlcmNlbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQgJiBMaW5rIiAvICJJbnNlcnQgRnVsbCBGQVEgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiAvICJJbnNlcnQgRnVsbCBGQVEiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBBcnRpY2xlIHdpdGggSFRNTC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgcGF0aCB5ZXMvbm8uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaXRlbXMgb2Ygc3ViY2F0ZWdvcmllcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNoYW5nZSBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjcmVhdGVkIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHZvdGluZyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgRkFRIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIHpvb20gdmlldyBvZiBzdWNoIEZBUSBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyB0byBkZWxldGUgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBGQVEsIGUuZy4gRkFRIywgS0IjLCBNeUZBUSMuIFRoZSBkZWZhdWx0IGlzIEZBUSMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgYm9keSBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBzdWJqZWN0IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICcnOwoKICAgICMKICAgICMgT0JTT0xFVEUgRU5UUklFUyBGT1IgUkVGRVJFTkNFLCBETyBOT1QgVFJBTlNMQVRFIQogICAgIwoKfQoKMTsK
IyAtLQojIEtlcm5lbC9MYW5ndWFnZS9mcl9GQVEucG0gLSB0cmFuc2xhdGlvbiBmaWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Okxhbmd1YWdlOjpmcl9GQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFBQUZBUQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICdpbnRlcm5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ3B1YmxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsJ30gPSAnZXh0ZXJuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAnTnVtw6lybyBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJ30gPSAnRGVybmnDqHJlcyBxdWVzdGlvbnMgbW9kaWZpw6llcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdEZXJuacOocmVzIHF1ZXN0aW9ucyBjcsOpw6llcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3AgMTAgRkFRIGFydGljbGVzJ30gPSAnVG9wIDEwIGRlcyBxdWVzdGlvbnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcnkgb2YnfSA9ICdTb3VzIGNhdMOpZ29yaWUgZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICdQYXMgZGUgc8OpbGVjdGlvbiAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGxvcmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAoYWxsKSd9ID0gJ3B1YmxpYyAodG91cyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwgKGN1c3RvbWVyKSd9ID0gJ2V4dGVybmUgKGNsaWVudCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwgKGFnZW50KSd9ID0gJ2ludGVybmUgKG9ww6lyYXRldXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IGRheSd9ID0gJ0pvdXIgZGUgZMOpcGFydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBtb250aCd9ID0gJ01vaXMgZGUgZMOpcGFydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCB5ZWFyJ30gPSAnQW5uw6llIGRlIETDqXBhcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIGRheSd9ID0gJ0pvdXIgZGUgRmluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBtb250aCd9ID0gJ01vaXMgZGUgRmluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCB5ZWFyJ30gPSAnQW5uw6llIGRlIEZpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFua3MgZm9yIHlvdXIgdm90ZSEnfSA9ICdNZXJjaSBwb3VyIHZvdHJlIHZvdGUgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISd9ID0gJ1ZvdXMgYXZleiBkw6lqw6Agdm90w6kgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBQcmludCd9ID0gJ0ltcHJpbWVyIEFydGljbGUgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAoVG9wIDEwKSd9ID0gJ0FydGljbGVzIGRlIEZBUSAoVG9wIDEwKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKG5ldyBjcmVhdGVkKSd9ID0gJ0FydGljbGVzIGRlIEZBUSAobm91dmVsbGVzIHF1ZXN0aW9ucyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ0FydGljbGVzIGRlIEZBUSAoZGVybmllcnMgY2hhbmdlbWVudHMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ0NhdMOpZ29yaWUgZGUgRkFRIG1pc2Ugw6Agam91ciEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IGFkZGVkISd9ID0gJ0NhdMOpZ29yaWUgZGUgRkFRIGFqb3V0w6llISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEnfSA9ICdVbmUgY2F0w6lnb3JpZSBkZXZyYWl0IGF2b2lyIHVuIG5vbSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyd9ID0gJ0NldHRlIGNhdMOpZ29yaWUgZXhpc3RlIGTDqWrDoCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIGFkZGVkISd9ID0gJ0xhbmd1ZSBkZSBGQVEgYWpvdXTDqSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIHVwZGF0ZWQhJ30gPSAnTGFuZ3VlIGRlIEZBUSBtaXNlIMOgIGpvdXIhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJ0xlIG5vbSBlc3QgcmVxdWlzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ0NldHRlIGxhbmd1ZSBleGlzdGUgZMOpasOgISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnREYXNoYm9hcmRGQVFPdmVydmlldwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdBam91dGVyIEFydGljbGUgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuJ30gPSAnVW5lIGNhdMOpZ29yaWUgZXN0IHJlcXVpc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICdBdXRvcmlzYXRpb24nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQ2F0ZWdvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnR2VzdGlvbiBDYXTDqWdvcmllcyBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGNhdGVnb3J5J30gPSAnQWpvdXQgQ2F0w6lnb3JpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ2F0ZWdvcnknfSA9ICdFZmZhY2VyIENhdMOpZ29yaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICdPayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQ2F0ZWdvcnknfSA9ICdBam91dCBDYXTDqWdvcmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQ2F0ZWdvcnknfSA9ICdFZGl0ZXIgQ2F0w6lnb3JpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxsIGJlIHNob3duIGFzIGNvbW1lbnQgaW4gRXhwbG9yZXIuJ30gPSAnU2VyYSBhZmZpY2jDqSBjb21tZSB1biBjb21tZW50YWlyZSBkYW5zIGxcJ0V4cGxvcmVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwLid9ID0gJ01lcmNpIGRlIFPDqWxlY3Rpb25uZXIgYXUgbW9pbnMgdW4gZ3JvdXBlIGRlIHBlcm1pc3Npb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FnZW50IGdyb3VwcyB0aGF0IGNhbiBhY2Nlc3MgYXJ0aWNsZXMgaW4gdGhpcyBjYXRlZ29yeS4nfSA9ICdHcm91cGVzIGRcJ2FnZW50cyBwb3V2YW50IGFjY8OpZGVyIGF1eCBhcnRpY2xlcyBkZSBjZXR0ZSBjYXTDqWdvcmllLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAnVm91bGV6LXZvdXMgdnJhaW1lbnQgZWZmYWNlciBjZXR0ZSBjYXTDqWdvcmllPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBjYXRlZ29yeS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUgYW5kL29yIGlzIHBhcmVudCBvZiBhdCBsZWFzdCBvbmUgb3RoZXIgY2F0ZWdvcnknfSA9CiAgICAgICAgJ0ltcG9zc2libGUgZFwnZWZmYWNlciBjZXR0ZSBjYXTDqWdvcmllLiBFbGxlIGVzdCB1dGlsaXPDqWUgZGFucyBhdSBtb2lucyB1biBhcnRpY2xlIGRlIEZBUSBldC9vdSBlc3QgcGFyZW50ZSBkXCdhdSBtb2lucyB1bmUgYXV0cmUgY2F0w6lnb3JpZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocyknfSA9ICdDZXR0ZSBjYXTDqWdvcmllIGVzdCB1dGlsaXPDqWUgZGFucyBsZXMgYXJ0aWNsZXMgZGUgRkFRIHN1aXZhbnRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJ0NldHRlIGNhdMOpZ29yaWUgZXN0IHBhcmVudGUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgRkFRIGFydGljbGU/J30gPSAnVm91bGV6LXZvdXMgdnJhaW1lbnQgZWZmYWNlciBjZXQgYXJ0aWNsZSBkZSBGQVE/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEV4cGxvcmVyJ30gPSAnTmF2aWdhdGV1ciBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAnUmVjaGVyY2hlIHJhcGlkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxkY2FyZHMgYXJlIGFsbG93ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkdmFuY2VkIFNlYXJjaCd9ID0gJ1JlY2hlcmNoZSBBdmFuY8OpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnU291cy1jYXTDqWdvcmllcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMnfSA9ICdBcnRpY2xlcyBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICdQYXMgZGUgc291cy1jYXTDqWdvcmllIHRyb3V2w6llLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFIaXN0b3J5CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZC4nfSA9ICdQYXMgZGUgam91cm5hbCBkZSBkb25uw6llcyBGQVEgdHJvdXbDqSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFMYW5ndWFnZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdHZXN0aW9uIExhbmd1ZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VnZXMuJ30gPQogICAgICAgICdVdGlsaXNlciBjZXR0ZSBmb25jdGlvbiBhZmluIGRlIHRyYXZhaWxsZXIgYXZlYyBkZSBtdWx0aXBsZXMgbGFuZ3Vlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICdBam91dGVyIHVuZSBsYW5ndWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIExhbmd1YWdlJ30gPSAnRWZmYWNlciB1bmUgbGFuZ3VlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJ0Fqb3V0ZXIgdW5lIGxhbmd1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IExhbmd1YWdlJ30gPSAnRWRpdGVyIGxhIGxhbmd1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAnVm91bGV6LXZvdXMgdnJhaW1lbnQgZWZmYWNlciBjZXR0ZSBsYW5ndWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgbGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlISd9ID0KICAgICAgICAnSW1wb3NzaWJsZSBkXCdlZmZhY2VyIGNldHRlIGxhbmd1ZS4gRWxsZSBlc3QgdXRpbGlzw6llIGRhbnMgYXUgbW9pbnMgdW4gYXJ0aWNsZSBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknfSA9ICdDZXR0ZSBsYW5ndWUgZXN0IHV0aWxpc8OpZSBkYW5zIGxlcyBhcnRpY2xlcyBGQVEgc3VpdmFudHMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICdSw6lnbGFnZXMgZGUgQ29udGV4dGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGVzIHBlciBwYWdlJ30gPSAnQXJ0aWNsZXMgRkFRIHBhciBwYWdlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJ3BhcyBkZSBkb25uw6llcyBGQVEgdHJvdXbDqWVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZ2VuZXJpYyBGQVEgdGFibGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnIiwiNTAnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRUHJpbnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUS1JbmZvJ30gPSAnRkFRLUluZm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZXMnfSA9ICdWb3Rlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IHVwZGF0ZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSAoZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIChlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVFGdWxsdGV4dCd9ID0gJ1RleHRlIEludMOpZ3JhbCBGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgU2VhcmNoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaC1Qcm9maWxlIGFzIFRlbXBsYXRlPyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlIHNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHZvdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgcmF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyBkYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgcmFuZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYXRpb24gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyIsIjE4J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyIsIjI1J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJ0NvdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nICUnfSA9ICclIGRlIENvdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3V0IG9mIDUnfSA9ICdzdXIgNSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICdBdWN1biB2b3RlIHRyb3V2w6khJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISBCZSB0aGUgZmlyc3Qgb25lIHRvIHJhdGUgdGhpcyBGQVEgYXJ0aWNsZS4nfSA9ICdTb3lleiBsZSBwcmVtaWVyIMOgIG5vdGVyIGNldGUgYXJ0aWNsZSBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG93bmxvYWQgQXR0YWNobWVudCd9ID0gJ1TDqWzDqWNoYXJnZXIgRmljaGllciBKb2ludCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9CiAgICAgICAgJ0NldCBBcnRpY2xlIMOpdGFpdC1pbCB1dGlsZT8gTWVyY2kgZGUgZG9ubmVyIHVuZSBub3RlIGV0IGRlIHBhcnRpY2lwZXIgw6AgbFwnYW3DqWxpb3JhdGlvbiBkZSBsYSBiYXNlIGRlIGRvbm7DqWVzLiBNZXJjaSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICdwZXUgdXRpbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsndmVyeSBoZWxwZnVsJ30gPSAndHLDqHMgdXRpbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCd9ID0gJ0luc8OpcmVyIFRleHRlIGRhbnMgbGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICdJbnPDqXJlciBMaWVuIGRhbnMgbGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCAmIExpbmsnfSA9ICdJbnPDqXJlciBUZXh0ZSAmIExpZW4gZGFucyBsYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJ1BhcyBkXCdhcnRpY2xlIGRlIEZBUSB0cm91dsOpLic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFQcmludAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSd9ID0gJ1JlY2hlcmNoZSB0ZXh0ZSBpbnTDqWdyYWxlIGRhbnMgbGVzIGFydGljbGVzIEZBUSAoZXguICJFbWlsaWUqIiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSByZXN0cmljdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCB2b3Rlcy4uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSByZXN0cmljdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCByYXRlLi4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbFRleHQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hSZXN1bHRTaG9ydAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGZvciBhcnRpY2xlcyB3aXRoIGtleXdvcmQnfSA9ICdSZWNoZXJjaGUgZGVzIEFydGljbGVzIGF2ZWMgbW90IGNsw6knOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUUV4cGxvcmVyCgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRUHJpbnQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2gKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyd9ID0gJ1B1YmxpYyc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbFRleHQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFNob3J0CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRWm9vbQoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVFJTIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1NTIGNvbG9yIGZvciB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FjaGUgVGltZSBUbyBMZWF2ZSBmb3IgRkFRIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnR2VzdGlvbiBkZXMgY2F0w6lnb3JpZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgY2F0ZWdvcnkgbmFtZS4nfSA9ICdOb20gZGUgY2F0w6lnb3JpZSBwYXIgZMOpZmF1dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGxhbmd1YWdlIGZvciBGQVEgYXJ0aWNsZXMgb24gc2luZ2xlIGxhbmd1YWdlIG1vZGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgcHJpb3JpdHkgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIGZvciBGQVEgZW50cnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIEFjdGlvbiBwYXJhbWV0ZXIgZm9yIHRoZSBwdWJsaWMgZnJvbnRlbmQuIFRoZSBBY3Rpb24gcGFyYW1ldGVyIGlzIHVzZWQgaW4gdGhlIHNjcmlwdHMgb2YgdGhlIHN5c3RlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGpvdXJuYWwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBsaXN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBpbmZvcm1hdGlvbiB0byBiZSBpbnNlcnRlZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuICJGdWxsIEZBUSIgaW5jbHVkZXMgdGV4dCwgYXR0YWNobWVudHMgYW5kIGlubGluZSBpbWFnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4gTm90ZTogQWdlbnRUaWNrZXRBY3Rpb25Db21tb24gaW5jbHVkZXMgQWdlbnRUaWNrZXROb3RlLCBBZ2VudFRpY2tldENsb3NlLCBBZ2VudFRpY2tldEZyZWVUZXh0LCBBZ2VudFRpY2tldE93bmVyLCBBZ2VudFRpY2tldFBlbmRpbmcsIEFnZW50VGlja2V0UHJpb3JpdHkgYW5kIEFnZW50VGlja2V0UmVzcG9uc2libGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJ1N1cHByaW1lciBjZXR0ZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJ01vZGlmaWVyIGNldHRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHBhdGggc2VwYXJhdG9yLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUS1BcmVhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJ0hpc3RvcmlxdWUgZGUgY2V0dGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSB0aGUgbmFtZSBvZiBlYWNoIGZpZWxkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2tzZWFyY2ggc2hvdWxkIGJlIHNob3duLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydKb3VybmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdHZXN0aW9uIGRlcyBsYW5ndWVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgZmFxIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgZmFxIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2guJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBBcnRpY2xlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gdGhlIHRvcCAxMCBmZWF0dXJlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIGpvdXJuYWwgb3ZlcnZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludCB0aGlzIEZBUSd9ID0gJ0ltcHJpbWVyIGNldHRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWV1ZSBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSd9ID0gJ1JlY2hlcmNoZSBkYW5zIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIC8gIkluc2VydCBGdWxsIEZBUSIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJ0FmZmljaGVyIGxlcyDDqWzDqW1lbnRzIGRlcyBzb3VzLWNhdMOpZ29yaWVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdG9wIDEwIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnJzsKCiAgICAjCiAgICAjIE9CU09MRVRFIEVOVFJJRVMgRk9SIFJFRkVSRU5DRSwgRE8gTk9UIFRSQU5TTEFURSEKICAgICMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FnZW50IGdyb3VwcyB3aGljaCBjYW4gYWNjZXNzIHRoaXMgY2F0ZWdvcnkuJ30gPSAnR3JvdXBlcyBkXCdBZ2VudHMgcG91dmFudCBhY2PDqWRlciDDoCBjZXR0ZSBjYXTDqWdvcmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3JpZXMnfSA9ICdDYXTDqWdvcmllcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXRhaWxTZWFyY2gnfSA9ICdEw6l0YWlscyBkZSBsYSByZWNoZXJjaGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcnkgYWNjZXNzaWJsZS4gVG8gY3JlYXRlIGFuIGFydGljbGUgeW91IG5lZWQgYWNjZXNzIHRvIGF0IGxlYXN0IG9uZSBjYXRlZ29yeS4gUGxlYXNlIGNoZWNrIHlvdXIgZ3JvdXAvY2F0ZWdvcnkgcGVybWlzc2lvbiB1bmRlciAtY2F0ZWdvcnkgbWVudS0hJ30gPQogICAgICAgICdBdWN1biBjYXTDqWdvcmllIGFjY2Vzc2libGUuIFBvdXIgY3LDqWVyIHVuZSBxdWVzdGlvbiwgdm91cyBkZXZleiBhdm9pciBhY2PDqHMgw6AgYXUgbW9pbnMgdW5lIGNhdMOpZ29yaWUuIFNWUCB2w6lyaWZpZXogbGVzIHBlcm1pc3Npb25zIGRlIHZvdHJlIGdyb3VwZS9jYXTDqWdvcmllIHZpYSBsZSBtZW51IC1jYXTDqWdvcmllLSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrU2VhcmNoJ30gPSAnUmVjaGVyY2hlIHJhcGlkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJDYXRlZ29yaWVzJ30gPSAnU291cy1jYXTDqWdvcmllcyc7Cgp9CgoxOwo=
IyAtLQojIEtlcm5lbC9MYW5ndWFnZS9odV9GQVEucG0gLSB0cmFuc2xhdGlvbiBmaWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Okxhbmd1YWdlOjpodV9GQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFBQUZBUQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICdiZWxzxZEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljJ30gPSAncHVibGlrdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICdrw7xsc8WRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOdW1iZXInfSA9ICdGQVEtc29yc3rDoW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJ30gPSAnTGVndXTDs2JiIHbDoWx0b3pvdHQgZWxlbWVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ0xlZ3V0w7NiYiBsw6l0cmVob3pvdHQgZWxlbWVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvcCAxMCBGQVEgYXJ0aWNsZXMnfSA9ICdUb3AgMTAgZWxlbWVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3J5IG9mJ30gPSAnQWxrYXRlZ8OzcmnDoWphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2VsZWN0ZWQhJ30gPSAnTmluY3Mgw6lydMOpa2Vsw6lzIGtpdsOhbGFzenR2YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwbG9yZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChhbGwpJ30gPSAnbnlpbHbDoW5vcyAow7Zzc3plcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwgKGN1c3RvbWVyKSd9ID0gJ2vDvGxzxZEgKMO8Z3lmw6lsKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAnYmVsc8WRICjDvGd5aW50w6l6xZEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IGRheSd9ID0gJ0tlemTFkSBuYXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgbW9udGgnfSA9ICdLZXpkxZEgaMOzbmFwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IHllYXInfSA9ICdLZXpkxZEgw6l2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBkYXknfSA9ICdaw6Fyw7MgbmFwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBtb250aCd9ID0gJ1rDoXLDsyBow7NuYXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIHllYXInfSA9ICdaw6Fyw7Mgw6l2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rcyBmb3IgeW91ciB2b3RlISd9ID0gJ1N6YXZhemF0w6F0IGvDtnN6w7ZuasO8ayEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnfSA9ICdNw6FyIHN6YXZhem90dCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgUHJpbnQnfSA9ICdGQVEgY2lrayBueW9tdGF0w6FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAoVG9wIDEwKSd9ID0gJ0ZBUSBjaWtrIChUb3AgMTApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAnRkFRIGNpa2sgKMO6aiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ0ZBUSBjaWtrICh2w6FsdG96b3R0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgdXBkYXRlZCEnfSA9ICdGQVEga2F0ZWfDs3JpYSBtw7Nkb3N1bHQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSBhZGRlZCEnfSA9ICdGQVEga2F0ZWfDs3JpYSBob3p6w6FhZHZhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEnfSA9ICdTesO8a3PDqWdlcywgaG9neSBhIGthdGVnw7NyacOhdCBlbG5ldmV6emUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICdBIGthdGVnw7NyaWEgbcOhciBsw6l0ZXppayEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIGFkZGVkISd9ID0gJ0ZBUSBueWVsdiBob3p6w6FhZHZhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICdGQVEgbnllbHYgbcOzZG9zdWx0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBpcyByZXF1aXJlZCEnfSA9ICdBIG7DqXYgc3rDvGtzw6lnZXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMhJ30gPSAnQSBueWVsdiBtw6FyIGzDqXRlemlrISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnREYXNoYm9hcmRGQVFPdmVydmlldwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdGQVEgY2lrayBob3p6w6FhZMOhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICdBIGthdGVnw7NyaWEgc3rDvGtzw6lnZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmFsJ30gPSAnSsOzdsOhaGFnecOhcyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFDYXRlZ29yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIENhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdGQVEga2F0ZWfDs3JpYSBrZXplbMOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICdLYXRlZ8OzcmlhIGhvenrDoWFkw6FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ2F0ZWdvcnknfSA9ICdLYXRlZ8OzcmlhIHTDtnJsw6lzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJ09rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJ0thdGVnw7NyaWEgaG96esOhYWTDoXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQ2F0ZWdvcnknfSA9ICdLYXRlZ8OzcmlhIHN6ZXJrZXN6dMOpc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ0EgYsO2bmfDqXN6xZFiZW4gbWVnamVneXrDqXNrw6ludCBmb2cgbWVnamVsZW5uaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICdLw6lyZW0sIHbDoWxhc3N6b24gbGVnYWzDoWJiIGVneSBqb2dvc3VsdHPDoWcgY3NvcG9ydG90Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAnw5xneWludMOpesWRIGNzb3BvcnQsIGFtZWx5aWsgaG96esOhZsOpciBhIGNpa2tla2hleiBlYmJlbiBhIGthdGVnw7NyacOhYmFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAnVmFsw7NiYW4gdMO2csO2bG5pIGFrYXJqYSBhIGthdGVnw7NyacOhdD8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgY2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlIGFuZC9vciBpcyBwYXJlbnQgb2YgYXQgbGVhc3Qgb25lIG90aGVyIGNhdGVnb3J5J30gPQogICAgICAgICdBIGthdGVnw7NyaWEgbmVtIHTDtnLDtmxoZXTFkS4gRkFRIGNpa2sgaGFzem7DoWxqYSB2YWd5IG3DoXMga2F0ZWfDs3JpYSBzesO8bMWRamUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAnQSBrYXRlZ8OzcmlhIGEga8O2dmV0a2V6xZEgRkFRIGNpa2tla27DqWwgaGFzem7DoWx0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJ0Ega2F0ZWfDs3JpYSBhIGvDtnZldGtlesWRIGthdGVnw7NyacOhayBzesO8bMWRamUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgRkFRIGFydGljbGU/J30gPSAnVmFsw7NiYW4gdMO2csO2bG5pIGFrYXJqYSBlenQgYSBGQVEgY2lra2V0Pyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICdGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFeHBsb3Jlcid9ID0gJ0ZBUS1Cw7ZuZ8Opc3rFkSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWljayBTZWFyY2gnfSA9ICdHeW9yc2tlcmVzw6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGRjYXJkcyBhcmUgYWxsb3dlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWR2YW5jZWQgU2VhcmNoJ30gPSAnw5Zzc3pldGV0dCBrZXJlc8Opcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnQWxrYXRlZ8OzcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ0ZBUSBjaWtrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN1YmNhdGVnb3JpZXMgZm91bmQuJ30gPSAnTmluY3MgYWxrYXRlZ8OzcmlhLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFIaXN0b3J5CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZC4nfSA9ICdOaW5jcyBGQVEtSm91cm5hbCBhZGF0Lic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFMYW5ndWFnZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdGQVEgbnllbHYga2V6ZWzDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VnZXMuJ30gPQogICAgICAgICdIYXN6bsOhbGphIGV6dCBhIHN6b2xnw6FsdGF0w6FzdCwgaGEgdMO2YmIgbnllbHZ2ZWwgc3plcmV0bmUgZG9sZ296bmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBsYW5ndWFnZSd9ID0gJ055ZWx2IGhvenrDoWFkw6FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgTGFuZ3VhZ2UnfSA9ICdOeWVsdiB0w7ZybMOpc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIExhbmd1YWdlJ30gPSAnTnllbHYgaG96esOhYWTDoXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgTGFuZ3VhZ2UnfSA9ICdOeWVsdiBzemVya2VzenTDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBsYW5ndWFnZT8nfSA9ICdWYWzDs2JhbiB0w7Zyw7Zsbmkgc3plcmV0bsOpIGV6dCBhIG55ZWx2ZXQ/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEnfSA9CiAgICAgICAgJ0EgbnllbHYgbmVtIHTDtnLDtmxoZXTFkSwgbGVnYWzDoWJiIGVneSBGQVEgY2lrayBoYXN6bsOhbGphISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJ0V6IGEgbnllbHYgaGFzem7DoWxhdGJhbiB2YW4gYSBrw7Z2ZXRrZXrFkSBGQVEgY2lra27DqWwnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICdUYXJ0YWxvbSBiZcOhbGzDrXTDoXNvayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgYXJ0aWNsZXMgcGVyIHBhZ2UnfSA9ICdGQVEgY2lra2VrIG9sZGFsYW5rw6ludCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgZGF0YSBmb3VuZC4nfSA9ICdOaW5jcyBGQVEgYWRhdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBnZW5lcmljIEZBUSB0YWJsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyciLCI1MCd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFQcmludAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRLUluZm8nfSA9ICdGQVEtaW5mw7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZXMnfSA9ICdTemF2YXphdG9rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUZ1bGx0ZXh0J30gPSAnRkFRIHRlbGplcyBzesO2dmVnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFNlYXJjaCd9ID0gJ0ZBUSBrZXJlc8Opcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2gtUHJvZmlsZSBhcyBUZW1wbGF0ZT8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHJhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgZGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIHJhbmdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ0ZBUSBpbmZvcm3DoWNpw7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnIiwiMTgnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnIiwiMjUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nJ30gPSAnw4lydMOpa2Vsw6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyAlJ30gPSAnw4lydMOpa2Vsw6lzICUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3V0IG9mIDUnfSA9ICc1LWLFkWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhJ30gPSAnTmluY3Mgc3phdmF6YXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISBCZSB0aGUgZmlyc3Qgb25lIHRvIHJhdGUgdGhpcyBGQVEgYXJ0aWNsZS4nfSA9ICdOaW5jcyBzemF2YXphdCEgTGVneWVuIGF6IGVsc8WRLCBha2kgw6lydMOpa2VsaSBhIEZBUSBjaWtrZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rvd25sb2FkIEF0dGFjaG1lbnQnfSA9ICdNZWxsw6lrbGV0IGxldMO2bHTDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hvdyBoZWxwZnVsIHdhcyB0aGlzIGFydGljbGU/IFBsZWFzZSBnaXZlIHVzIHlvdXIgcmF0aW5nIGFuZCBoZWxwIHRvIGltcHJvdmUgdGhlIEZBUSBEYXRhYmFzZS4gVGhhbmsgWW91ISd9ID0KICAgICAgICAnSG93IGhlbHBmdWwgd2FzIHRoaXMgYXJ0aWNsZT8gUGxlYXNlIGdpdmUgdXMgeW91ciByYXRpbmcgYW5kIGhlbHAgdG8gaW1wcm92ZSB0aGUgRkFRIERhdGFiYXNlLiBUaGFuayBZb3UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBoZWxwZnVsJ30gPSAnbmVtIHNlZ8OtdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICduYWd5b24gc2Vnw610JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQnfSA9ICdGQVEgc3rDtnZlZyBiZcOtcsOhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgTGluayd9ID0gJ0ZBUSBsaW5rIGJlw61yw6FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQgJiBMaW5rJ30gPSAnRkFRIHN6w7Z2ZWcgw6lzIGxpbmsgYmXDrXLDoXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSAmIExpbmsnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBhcnRpY2xlcyBmb3VuZC4nfSA9ICdOZW0gdGFsw6FsaGF0w7MgRkFRIGNpa2suJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVByaW50CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpJ30gPSAnVGVsamVzIHN6w7Z2ZWdlcyBrZXJlc8OpcyBhIEZBUSBjaWtrZWtiZW4gKHBsLiAiSipub3MiIG9yICJLb3YqIiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSByZXN0cmljdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCB2b3Rlcy4uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSByZXN0cmljdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCByYXRlLi4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbFRleHQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hSZXN1bHRTaG9ydAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGZvciBhcnRpY2xlcyB3aXRoIGtleXdvcmQnfSA9ICdDaWtrZWsga2VyZXPDqXNlIGt1bGNzc3phdmFra2FsJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFFeHBsb3JlcgoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVByaW50CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoCgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMnfSA9ICdOeWlsdsOhbm9zJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsVGV4dAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFab29tCgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZmlsdGVyIGZvciBIVE1MIG91dHB1dCB0byBhZGQgbGlua3MgYmVoaW5kIGEgZGVmaW5lZCBzdHJpbmcuIFRoZSBlbGVtZW50IEltYWdlIGFsbG93cyB0d28gaW5wdXQga2luZHMuIEZpcnN0IHRoZSBuYW1lIG9mIGFuIGltYWdlIChlLmcuIGZhcS5wbmcpLiBJbiB0aGlzIGNhc2UgdGhlIE9UUlMgaW1hZ2UgcGF0aCB3aWxsIGJlIHVzZWQuIFRoZSBzZWNvbmQgcG9zc2liaWxpdHkgaXMgdG8gaW5zZXJ0IHRoZSBsaW5rIHRvIHRoZSBpbWFnZS4nfSA9CiAgICAgICAgJ0VneSBzesWxcsWRIGEgSFRNTCBraW1lbmV0aGV6LCBob2d5IGhvenrDoWFkam9uIGxpbmtla2V0IGEgZGVmaW5pw6FsdCBzesO2dmVnZWtoZXouIEF6IEltYWdlIGVsZW0ga8OpdGbDqWxlIGJlbWVuZXRldCBlbmdlZC4gQSBrw6lwIG5ldmUgYXogZWxzxZEgKHBsLiBmYXEucG5nKS4gRWJiZW4gYXogZXNldGJlbiBheiBPVFJTIGvDqXBlayDDunR2b25hbGEga2Vyw7xsIGZlbGhhc3puw6Fsw6FzcmEuIEEgbcOhc29kaWsgbGVoZXTFkXPDqWcgYSBrw6lwcmUgbXV0YXTDsyBsaW5rIGJlbGlsbGVzenTDqXNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ0NTUyBzemluZWsgYSBzemF2YXrDoXMgZXJlZG3DqW55w6loZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0thdGVnw7NyaWFrZXplbMOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICdBIHN6YXZhesOhc2kgZXJlZG3DqW55IHRpemVkZXNqZWd5ZWluZWsgc3rDoW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGNhdGVnb3J5IG5hbWUuJ30gPSAnQWxhcMOpcnRlbG1lemV0dCBrYXRlZ8OzcmlhIG5ldmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbGFuZ3VhZ2UgZm9yIEZBUSBhcnRpY2xlcyBvbiBzaW5nbGUgbGFuZ3VhZ2UgbW9kZS4nfSA9ICdFZ3lueWVsdsWxIG3Ds2QgZXNldMOpbiBhIEZBUSBjaWtrZWsgYWxhcMOpcnRlbG1lemV0dCBueWVsdmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgcHJpb3JpdHkgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9CiAgICAgICAgJ0ZBUSBjaWtrZWsgasOzdsOhaGFnecOhc8OhaG96IGEgamVneWVrIGFsYXDDqXJ0ZWxtZXpldHQgcHJpb3JpdMOhc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS4nfSA9ICdBIEZBUSBjaWtrIGFsYXDDqXJ0ZWxtZXpldHQgw6FsbGFwb3RhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnRkFRIGNpa2tlayBqw7N2w6FoYWd5w6Fzw6Fob3ogYSBqZWd5ZWsgYWxhcMOpcnRlbG1lemV0dCDDoWxsYXBvdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJ30gPQogICAgICAgICdBIHB1YmxpYyBmcm9udGVuZCBBY3Rpb24gcGFyYW1ldGVyw6luZWsgYWxhcMOpcnRlbG1lemV0dCDDqXJ0w6lrZS4gQXogQWN0aW9uIHBhcmFtZXRlciBhIHJlbmRzemVyIHNjaXBydC1qZWliZW4ga2Vyw7xsIGZlbGhhc3puw6Fsw6FzcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9CiAgICAgICAgJ0VneSDDoXR0ZWtpbnTFkSBtb2R1bHQgZGVmaW5pw6FsIGEgRkFRIGpvdXJuYWwga2ljc2kgbsOpemV0w6luZWsgbWVnbXV0YXTDoXPDoWhvei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBsaXN0Lid9ID0KICAgICAgICAnRWd5IMOhdHRla2ludMWRIG1vZHVsdCBkZWZpbmnDoWwgYSBGQVEgbGlzdGEga2ljc2kgbsOpemV0w6luZWsgbWVnbXV0YXTDoXPDoWhvei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F6IGFsYXDDqXJ0ZWxtZXpldHQgRkFRIGF0dHJpYsO6dHVtb2thdCBkZWZpbmnDoWxqYSBhIEZBUSByZW5kZXrDqXNoZXogYXogw7xneWludMOpesWRIGZlbMO8bGV0w6luIGEgRkFRIGtlcmVzw6lzbsOpbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F6IGFsYXDDqXJ0ZWxtZXpldHQgRkFRIGF0dHJpYsO6dHVtb2thdCBkZWZpbmnDoWxqYSBhIEZBUSByZW5kZXrDqXNoZXogYXogw7xneWbDqWwgZmVsw7xsZXTDqW4gYSBGQVEga2VyZXPDqXNuw6lsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F6IGFsYXDDqXJ0ZWxtZXpldHQgRkFRIGF0dHJpYsO6dHVtb2thdCBkZWZpbmnDoWxqYSBhIEZBUSByZW5kZXrDqXNoZXogYSBueWlsdsOhbm9zIGZlbMO8bGV0ZW4gYSBGQVEga2VyZXPDqXNuw6lsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F6IGFsYXDDqXJ0ZWxtZXpldHQgRkFRIGF0dHJpYsO6dHVtb2thdCBkZWZpbmnDoWxqYSBhIEZBUSByZW5kZXrDqXNoZXogYXogw7xneWludMOpesWRIGZlbMO8bGV0w6luIGEgRkFRIGLDtm5nw6lzesWRbsOpbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBeiBhbGFww6lydGVsbWV6ZXR0IEZBUSBhdHRyaWLDunR1bW9rYXQgZGVmaW5pw6FsamEgYSBGQVEgcmVuZGV6w6lzaGV6IGF6IMO8Z3lmw6lsIGZlbMO8bGV0w6luIGEgRkFRIGLDtm5nw6lzesWRbsOpbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXogYWxhcMOpcnRlbG1lemV0dCBGQVEgYXR0cmliw7p0dW1va2F0IGRlZmluacOhbGphIGEgRkFRIHJlbmRlesOpc2hleiBhIG55aWx2w6Fub3MgZmVsw7xsZXRlbiBhIEZBUSBiw7ZuZ8Opc3rFkW7DqWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnQXogYWxhcMOpcnRlbG1lemV0dCBGQVEgc29ycmVuZGV0IGRlZmluacOhbGphIGEgRkFRIGLDtm5nw6lzesWRYmVuIGF6IMO8Z3lpbnTDqXrFkSBmZWzDvGxldMOpbi4gVXA6IHLDqWdlYmJpZWsgZmVsw7xsLCBEb3duOiBsZWdmcmlzc2ViYiBmZWzDvGwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnQXogYWxhcMOpcnRlbG1lemV0dCBGQVEgc29ycmVuZGV0IGRlZmluacOhbGphIGEgRkFRIGLDtm5nw6lzesWRYmVuIGF6IMO8Z3lmw6lsIGZlbMO8bGV0w6luLiBVcDogcsOpZ2ViYmllayBmZWzDvGwsIERvd246IGxlZ2ZyaXNzZWJiIGZlbMO8bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnQXogYWxhcMOpcnRlbG1lemV0dCBGQVEgc29ycmVuZGV0IGRlZmluacOhbGphIGEgRkFRIGLDtm5nw6lzesWRYmVuIGEgbnlpbHbDoW5vcyBmZWzDvGxldGVuLiBVcDogcsOpZ2ViYmllayBmZWzDvGwsIERvd246IGxlZ2ZyaXNzZWJiIGZlbMO8bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnQXogYWxhcMOpcnRlbG1lemV0dCBGQVEgc29ycmVuZGV0IGRlZmluacOhbGphIGEga2VyZXPDqXNuw6lsIGF6IMO8Z3lpbnTDqXrFkSBmZWzDvGxldMOpbi4gVXA6IHLDqWdlYmJpZWsgZmVsw7xsLCBEb3duOiBsZWdmcmlzc2ViYiBmZWzDvGwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0F6IGFsYXDDqXJ0ZWxtZXpldHQgRkFRIHNvcnJlbmRldCBkZWZpbmnDoWxqYSBhIGtlcmVzw6lzbsOpbCBheiDDvGd5ZsOpbCBmZWzDvGxldMOpbi4gVXA6IHLDqWdlYmJpZWsgZmVsw7xsLCBEb3duOiBsZWdmcmlzc2ViYiBmZWzDvGwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdBeiBhbGFww6lydGVsbWV6ZXR0IEZBUSBzb3JyZW5kZXQgZGVmaW5pw6FsamEgYSBrZXJlc8Opc27DqWwgYSBueWlsdsOhbm9zIGZlbMO8bGV0ZW4uIFVwOiByw6lnZWJiaWVrIGZlbMO8bCwgRG93bjogbGVnZnJpc2VzYmIgZmVsw7xsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBpbmZvcm1hdGlvbiB0byBiZSBpbnNlcnRlZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuICJGdWxsIEZBUSIgaW5jbHVkZXMgdGV4dCwgYXR0YWNobWVudHMgYW5kIGlubGluZSBpbWFnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnQSBGQVEgYsO2bmfDqXN6xZFiZW4gbMOhdGhhdMOzIG9zemxvcG9rYXQgZGVmaW5pw6FsamEuIEEgcGFyYW3DqXRlciBuaW5jcyBoYXTDoXNzYWwgYXogb3N6bG9wIHBvesOtY2nDs2rDoXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0EgRkFRIGpvdXJuYWwtYmFuIGzDoXRoYXTDsyBvc3psb3Bva2F0IGRlZmluacOhbGphLiBBIHBhcmFtw6l0ZXIgbmluY3MgaGF0w6Fzc2FsIGF6IG9zemxvcCBwb3rDrWNpw7Nqw6FyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0EgRkFRIGtlcmVzw6lzbsOpbCBsw6F0aGF0w7Mgb3N6bG9wb2thdCBkZWZpbmnDoWxqYS4gQSBwYXJhbcOpdGVyIG5pbmNzIGhhdMOhc3NhbCBheiBvc3psb3AgcG96w61jacOzasOhcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hlcmUgdGhlIFwnSW5zZXJ0IEZBUVwnIGxpbmsgd2lsbCBiZSBkaXNwbGF5ZWQuIE5vdGU6IEFnZW50VGlja2V0QWN0aW9uQ29tbW9uIGluY2x1ZGVzIEFnZW50VGlja2V0Tm90ZSwgQWdlbnRUaWNrZXRDbG9zZSwgQWdlbnRUaWNrZXRGcmVlVGV4dCwgQWdlbnRUaWNrZXRPd25lciwgQWdlbnRUaWNrZXRQZW5kaW5nLCBBZ2VudFRpY2tldFByaW9yaXR5IGFuZCBBZ2VudFRpY2tldFJlc3BvbnNpYmxlLid9ID0KICAgICAgICAnRGVmaW5pw6FsamEsIGhvZ3kgYSBcJ0luc2VydCBGQVFcJyBsaW5rIGhvbCBsw6F0aGF0w7MuIE1lZ2plZ3l6w6lzOiBBZ2VudFRpY2tldEFjdGlvbkNvbW1vbiB0YXJ0YWxtYXp6YSBheiBBZ2VudFRpY2tldE5vdGUsIEFnZW50VGlja2V0Q2xvc2UsIEFnZW50VGlja2V0RnJlZVRleHQsIEFnZW50VGlja2V0T3duZXIsIEFnZW50VGlja2V0UGVuZGluZywgQWdlbnRUaWNrZXRQcmlvcml0eSDDqXMgIEFnZW50VGlja2V0UmVzcG9uc2libGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJ0EgRkFRIGNpa2sgc3phYmFkLXN6w7Z2ZWdlcyBtZXrFkWrDqXQgZGVmaW5pw6FsamEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJ1TDtnLDtmxkIGV6dCBhIEZBUS10JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgdGhpcyBGQVEnfSA9ICdTemVya2VzemQgZXp0IGEgRkFRLXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLid9ID0gJ1TDtmJiIG55ZWx2IGhhc3puw6FsYXTDoXQgZW5nZWTDqWx5ZXppIGEgRkFRIG1vZHVsYmFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLid9ID0gJ0Egc3phdmF6w6FzIGVuZ2Vkw6lseWV6w6lzZSBhIEZBUSBtb2R1bGJhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwnfSA9ICdGQVEgSm91cm5hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnRkFRIEpvdXJuYWwgw6F0dGVraW50xZEgImtpY3NpIG7DqXpldCIgbGltaXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdGQVEgw6F0dGVraW50xZEgIktpY3NpIG7DqXpldCIgbGltaXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiJ30gPSAnRkFRIGxpbWl0IG9sZGFsYW5rw6ludCBhIEZBUSBKb3VybmFsIMOhdHRla2ludMWRICJraWNzaSBuw6l6ZXTDqWhleiInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJ0ZBUSBsaW1pdCBvbGRhbGFua8OpbnQgYSBGQVEgIMOhdHRla2ludMWRICJraWNzaSBuw6l6ZXTDqWhleiInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHBhdGggc2VwYXJhdG9yLid9ID0gJ0ZBUSDDunR2b25hbCBlbHbDoWxhc3p0w7MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUS1BcmVhJ30gPSAnRkFRLXRlcsO8bGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJ0EgbnlpbHbDoW5vcyBpbnRlcmZhY2UgZnJvbnRlbmQgbW9kdWxlIHJlZ2lzenRyw6FjacOzamEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyb3VwIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0Nzb3BvcnQgYSBGQVEgY2lrayBqw7N2w6FoYWd5w6FzaG96Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIHRoaXMgRkFRJ30gPSAnRkFRIHTDtnJ0w6luZXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICdCZWxzxZEgbWV6xZFrZXQgdGFydGFsbWF6IGEgRkFRIGFsYXDDuiBqZWd5ZWtoZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgdGhlIG5hbWUgb2YgZWFjaCBmaWVsZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnTWluZGVuIG1lesWRIG5ldsOpdCB0YXJ0YWxtYXp6YSBhIEZBUSBhbGFww7ogamVneWVrYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWlja3NlYXJjaCBzaG91bGQgYmUgc2hvd24uJ30gPSAnRmVsw7xsZXQsIGFob2wgYSBneW9yc2tlcmVzw6lzIGzDoXRoYXTDsy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJ0pvdXJuYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ055ZWx2ZWsga2V6ZWzDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJ0EgRkFRIGVsZW1iZW4gbcOhcyBvYmpla3R1bXJhIHZhbMOzIGhpdmF0a296w6FzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSBtZWdqZWxlbsWRIEZBUSBjaWtrZWsgbWF4aW3DoWxpcyBzesOhbWEgYSBGQVEgYsO2bmfDqXN6xZEgw7xneWludMOpesWRIGZlbMO8bGV0w6luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIG1lZ2plbGVuxZEgRkFRIGNpa2tlayBtYXhpbcOhbGlzIHN6w6FtYSBhIEZBUSBiw7ZuZ8Opc3rFkSDDvGd5ZsOpbCBmZWzDvGxldMOpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0EgbWVnamVsZW7FkSBGQVEgY2lra2VrIG1heGltw6FsaXMgc3rDoW1hIGEgRkFRIGLDtm5nw6lzesWRIG55aWx2w6Fub3MgZmVsw7xsZXTDqW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIG1lZ2plbGVuxZEgRkFRIGNpa2tlayBtYXhpbcOhbGlzIHN6w6FtYSBhIEZBUSBqb3VybmFsIMO8Z3lpbnTDqXrFkSBmZWzDvGxldMOpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIG1lZ2plbGVuxZEgRkFRIGNpa2tlayBtYXhpbcOhbGlzIHN6w6FtYSBhIGtlcmVzw6lzbsOpbCBheiDDvGd5aW50w6l6xZEgZmVsw7xsZXTDqW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSBtZWdqZWxlbsWRIEZBUSBjaWtrZWsgbWF4aW3DoWxpcyBzesOhbWEgYSBrZXJlc8Opc27DqWwgYXogw7xneWbDqWwgZmVsw7xsZXTDqW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0EgbWVnamVsZW7FkSBGQVEgY2lra2VrIG1heGltw6FsaXMgc3rDoW1hIGEga2VyZXPDqXNuw6lsIGEgbnlpbHbDoW5vcyBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBmYXEgc2VhcmNoLid9ID0KICAgICAgICAnTW9kdWwgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgbMOpdHJlaG96w6Fzw6Fob3ogcsO2dmlkIEZBUSBrZXJlc8Opc27DqWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgQXJ0aWNsZSd9ID0gJ8OaaiBGQVEgY2lrayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIGFydGljbGVzIG5lZWQgYXBwcm92YWwgYmVmb3JlIHRoZXkgZ2V0IHB1Ymxpc2hlZC4nfSA9ICdBeiDDumogRkFRIGNpa2sgasOzdsOhaGFnecOhc2Egc3rDvGtzw6lnZXMgYSBwdWJsaWvDoWzDoXMgZWzFkXR0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIG1lZ2plbGVuxZEgRkFRIGNpa2tlayBzesOhbWEgYSBGQVEgYsO2bmfDqXN6xZEgw7xneWludMOpesWRIGZlbMO8bGV0w6luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSBtZWdqZWxlbsWRIEZBUSBjaWtrZWsgc3rDoW1hIGEgRkFRIGLDtm5nw6lzesWRIG55aWx2w6Fub3MgZmVsw7xsZXTDqW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0EgbWVnamVsZW7FkSBGQVEgY2lra2VrIHN6w6FtYSBtaW5kZW4gbGFwb24gYSBrZXJlc8Opc27DqWwgYXogw7xneWbDqWwgZmVsw7xsZXTDqW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIG1lZ2plbGVuxZEgRkFRIGNpa2tlayBzesOhbWEgbWluZGVuIGxhcG9uIGEga2VyZXPDqXNuw6lsIGEgbnlpbHbDoW5vcyBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLid9ID0gJ0EgbWVnamVsZW7FkSBlbGVtZWsgc3rDoW1hIGF6IHV0b2xzw7MgIG3Ds2Rvc3VsdGFrbsOhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY3JlYXRlZC4nfSA9ICdBIG1lZ2plbGVuxZEgZWxlbWVrIHN6w6FtYSBheiB1dG9sc8OzIGzDqXRyZWhvem90dGFrbsOhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIHRoZSB0b3AgMTAgZmVhdHVyZS4nfSA9ICdBIG1lZ2plbGVuxZEgZWxlbWVrIHN6w6FtYSBhIFRPUDEwLW7DqWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcmFtw6l0ZXJlayBhIGxhcG9raG96IChhbWVseWVrZW4gYSBGQVEgZWxlbWVrIG1lZ2plbGVubmVrKSBhIGtpY3NpIEZBUSBqb3VybmFsIMOhdHRla2ludMOpc8OpbsOpbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcmFtw6l0ZXJlayBhIGxhcG9raG96IChhbWVseWVrZW4gYSBGQVEgZWxlbWVrIG1lZ2plbGVubmVrKSBhIGtpY3NpIEZBUSDDoXR0ZWtpbnTDqXPDqW7DqWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50IHRoaXMgRkFRJ30gPSAnTnlvbXRhc2QgZXp0IGEgRkFRLXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVldWUgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnVsOhcsOzbGlzdGEgYSBGQVEgY2lra2VrIGrDs3bDoWhhZ3nDoXPDoWhveic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJ8OJcnTDqWtlayBhIHN6YXZhesOhc2hvei4gQSBrdWxjcyBzesOhemFsw6lrIGtlbGwgbGVneWVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRJ30gPSAnRkFRIGtlcmVzw6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICdNZWdtdXRhdGphIGEgIkZBUSBsaW5rIGJlc3rDunLDoXMiIGdvbWJvdCBheiBBZ2VudEZBUVpvb21TbWFsbCBhIG55aWx2w6Fub3MgRkFRIGNpa2tla2hlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgLyAiSW5zZXJ0IEZ1bGwgRkFRICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCIgLyAiSW5zZXJ0IEZ1bGwgRkFRIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgQXJ0aWNsZSB3aXRoIEhUTUwuJ30gPSAnRkFRIGNpa2sgbWVnamVsZW7DrXTDqXNlIEhUTUwtYmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIHBhdGggeWVzL25vLid9ID0gJ0ZBUSDDunR2b25hbCBtZWdqZWxlbsOtdMOpc2UgaWdlbi9uZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaXRlbXMgb2Ygc3ViY2F0ZWdvcmllcy4nfSA9ICdBeiBhbGthdGVnw7NyaWEgZWxlbWVpbmVrIG1lZ2plbGVuw610w6lzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY2hhbmdlIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdBeiB1dG9sc8OzIG3Ds2Rvc8OtdG90dCBlbGVtZWsgbWVnamVsZW7DrXTDqXNlIGEgZGVmaW5pw6FsdCBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnQXogdXRvbHPDsyBsw6l0cmVob3pvdHQgZWxlbWVrIG1lZ2plbGVuw610w6lzZSBhIGRlZmluacOhbHQgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ0EgVE9QIDEwIGVsZW1layBtZWdqZWxlbsOtdMOpc2UgYSBkZWZpbmnDoWx0IGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdm90aW5nIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdTemF2YXrDoXMgbWVnamVsZW7DrXTDqXNlIGEgZGVmaW5pw6FsdCBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0xpbmsgbWVnamVsZW7DrXTDqXNlIGEgbWVuw7xiZW4gYW1pIGVuZ2VkaSBhIEZBUSBsaW5rZWzDqXPDqXQgbcOhcyBvYmpla3R1bW9ra2FsIGEgRkFRIHLDqXN6bGV0ZWluw6lsIGF6IMO8Z3lpbnTDqXrFkSBmZWzDvGxldMOpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIHRvIGRlbGV0ZSBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdMaW5rIG1lZ2plbGVuw610w6lzZSBhIG1lbsO8YmVuIGFtaSBlbmdlZGkgYSBGQVEgdMO2cmzDqXPDqXQgYSBGQVEgcsOpc3psZXRlaW7DqWwgYXogw7xneWludMOpesWRIGZlbMO8bGV0w6luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0xpbmsgbWVnamVsZW7DrXTDqXNlIGEgbWVuw7xiZW4gYW1pIGVsw6lyaSBhIEZBUSB0w7ZydMOpbmV0w6l0IGEgRkFRIHLDqXN6bGV0ZWluw6lsIGF6IMO8Z3lpbnTDqXrFkSBmZWzDvGxldMOpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0xpbmsgbWVnamVsZW7DrXTDqXNlIGEgbWVuw7xiZW4gYW1pIGVuZ2VkaSBhIEZBUSBzemVya2VzenTDqXPDqXQgYSBGQVEgcsOpc3psZXRlaW7DqWwgYXogw7xneWludMOpesWRIGZlbMO8bGV0w6luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgRkFRIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTGluayBtZWdqZWxlbsOtdMOpc2UgYSBtZW7DvGJlbiBhbWkgZW5nZWRpIGEgdmlzc3phbMOpcMOpc3QgYSBGQVEgcsOpc3psZXRlaW7DqWwgYXogw7xneWludMOpesWRIGZlbMO8bGV0w6luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0xpbmsgbWVnamVsZW7DrXTDqXNlIGEgbWVuw7xiZW4gYW1pIGVuZ2VkaSBhIEZBUSBueW9tdGF0w6Fzw6F0IGEgRkFRIHLDqXN6bGV0ZWluw6lsIGF6IMO8Z3lpbnTDqXrFkSBmZWzDvGxldMOpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnQSBGQVEgYXpvbm9zw610w7NqYSwgcGwuIEZBUSMsIEtCIywgTXlGQVEjLiBBeiBhbGFww6lydGVsbWV6ZXR0OiBGQVEjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdFeiBhIGJlw6FsbMOtdMOhcyBkZWZpbmnDoWxqYSwgaG9neSBhIFwnRkFRXCcgb2JqZWt0dW0gw7Zzc3pla2FwY3NvbGhhdMOzIG3DoXMgXCdGQVFcJyBvYmpla3R1bW1hbCBcJ05vcm1hbFwnIGxpbmsgdMOtcHVzIGhhc3puw6FsYXTDoXZhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdFeiBhIGJlw6FsbMOtdMOhcyBkZWZpbmnDoWxqYSwgaG9neSBhIFwnRkFRXCcgb2JqZWt0dW0gw7Zzc3pla2FwY3NvbGhhdMOzIG3DoXMgXCdGQVFcJyBvYmpla3R1bW1hbCBcJ1BhcmVudENoaWxkXCcgbGluayB0w61wdXMgaGFzem7DoWxhdMOhdmFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdFeiBhIGJlw6FsbMOtdMOhcyBkZWZpbmnDoWxqYSwgaG9neSBhIFwnRkFRXCcgb2JqZWt0dW0gw7Zzc3pla2FwY3NvbGhhdMOzIG3DoXMgXCdKZWd5XCcgb2JqZWt0dW1tYWwgXCdOb3JtYWxcJyBsaW5rIHTDrXB1cyBoYXN6bsOhbGF0w6F2YWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnRXogYSBiZcOhbGzDrXTDoXMgZGVmaW5pw6FsamEsIGhvZ3kgYSBcJ0ZBUVwnIG9iamVrdHVtIMO2c3N6ZWthcGNzb2xoYXTDsyBtw6FzIFwnSmVneVwnIG9iamVrdHVtbWFsIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHTDrXB1cyBoYXN6bsOhbGF0w6F2YWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBib2R5IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdKZWd5IHTDtnJ6c2UgYSBGQVEgY2lrayBqw7N2w6FoYWd5w6Fzw6Fob3ouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBzdWJqZWN0IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdKZWd5IHTDoXJneWEgYSBGQVEgY2lrayBqw7N2w6FoYWd5w6Fzw6Fob3ouJzsKCiAgICAjCiAgICAjIE9CU09MRVRFIEVOVFJJRVMgRk9SIFJFRkVSRU5DRSwgRE8gTk9UIFRSQU5TTEFURSEKICAgICMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkYXMgU3RhbmRhcmQtRkFRLUF0dHJpYnV0IGbDvHIgZGllIFNvcnRpZXJ1bmcgZGVzIEZBUS1FeHBsb3JlcnMgaW0gQWdlbnRlbi1JbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGFzIFN0YW5kYXJkLUZBUS1BdHRyaWJ1dCBmw7xyIGRpZSBTb3J0aWVydW5nIGRlcyBGQVEtRXhwbG9yZXJzIGltIEt1bmRlbi1JbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRhcyBTdGFuZGFyZC1GQVEtQXR0cmlidXQgZsO8ciBkaWUgU29ydGllcnVuZyBkZXMgRkFRLUV4cGxvcmVycyBpbSBQdWJsaWMtSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIFN0YW5kYXJkLVNvcnRpZXJ1bmcgZGVzIEZBUS1FeHBsb3JlcnMgaW0gS3VuZGVuLUludGVyZmFjZS4gQXVmOiDDhGx0ZXN0ZXIgRkFRLUFydGlrZWwgb2Jlbi4gQWI6IE5ldWVzdGVyIEZBUS1BcnRpa2VsIG9iZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBleHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIFN0YW5kYXJkLVNvcnRpZXJ1bmcgZGVzIEZBUS1FeHBsb3JlcnMgaW0gUHVibGljLUludGVyZmFjZS4gQXVmOiDDhGx0ZXN0ZXIgRkFRLUFydGlrZWwgb2Jlbi4gQWI6IE5ldWVzdGVyIEZBUS1BcnRpa2VsIG9iZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgRXhwbG9yZXIgcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRpZSBTdGFuZGFyZC1Tb3J0aWVydW5nIGRlcyBGQVEtRXhwbG9yZXJzIGltIEFnZW50ZW4tSW50ZXJmYWNlLiBBdWY6IMOEbHRlc3RlciBGQVEtQXJ0aWtlbCBvYmVuLiBBYjogTmV1ZXN0ZXIgRkFRLUFydGlrZWwgb2Jlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlOiAnfSA9ICdMw7ZzY2hlbjogJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdla2V5IHdoaWNoIGlzIGRlZmluZWQgaW4gdGhlIGxhbmd1YWdlIGZpbGUgKl9GQVEucG0uJ30gPSAnQSAqX0ZBUS5wbSBmw6FqbGJhbiBkZWZpbmnDoWx0IG55ZWx2IGt1bGNzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01heGltYWxlIEFuemFobCB2b24gRkFRLUFydGlrZWxuIGRpZSBpbSBGQVEtRXhwbG9yZXIgaW0gS3VuZGVuLUludGVyZmFjZSBhbmdlemVpZ3Qgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBleHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01heGltYWxlIEFuemFobCB2b24gRkFRLUFydGlrZWxuIGRpZSBpbSBGQVEtRXhwbG9yZXIgaW0gUHVibGljLUludGVyZmFjZSBhbmdlemVpZ3Qgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBFeHBsb3JlciBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWF4aW1hbGUgQW56YWhsIHZvbiBGQVEtQXJ0aWtlbG4gZGllIGltIEZBUS1FeHBsb3JlciBpbSBBZ2VudGVuLUludGVyZmFjZSBhbmdlemVpZ3Qgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBbnphaGwgdm9uIEZBUS1BcnRpa2VsbiBkaWUgaW4gZGVyIEZBUS1TdWNoZSBpbSBLdW5kZW4tSW50ZXJmYWNlIHBybyBTZWl0ZSBhbmdlemVpZ3Qgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQW56YWhsIHZvbiBGQVEtQXJ0aWtlbG4gZGllIGluIGRlciBGQVEtU3VjaGUgaW0gUHVibGljLUludGVyZmFjZSBwcm8gU2VpdGUgYW5nZXplaWd0IHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBbnphaGwgdm9uIEZBUS1BcnRpa2VsbiBkaWUgaW0gRkFRLUV4cGxvcmVyIGltIEt1bmRlbi1JbnRlcmZhY2UgYW5nZXplaWd0IHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQW56YWhsIHZvbiBGQVEtQXJ0aWtlbG4gZGllIGltIEZBUS1FeHBsb3JlciBpbSBQdWJsaWMtSW50ZXJmYWNlIGFuZ2V6ZWlndCB3ZXJkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJ01lZ211dGF0amEgYSAiRkFRIGxpbmsgw6lzIHN6w7Z2ZWcgYmVzesO6csOhcyIgZ29tYm90IGF6IEFnZW50RkFRWm9vbVNtYWxsIGEgbnlpbHbDoW5vcyBGQVEgY2lra2VraGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9ICdNZWdtdXRhdGphIGEgIkZBUSBzesO2dmVnIGJlc3rDunLDoXMiIGdvbWJvdCBheiBBZ2VudEZBUVpvb21TbWFsbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJ1plaWdlICJMaW5rIEVpbmbDvGdlbiItQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGbDvHIgw7ZmZmVudGxpY2hlIEZBUS1BcnRpa2VsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgVGV4dCAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJ1plaWdlICJUZXh0ICYgTGluayBFaW5mw7xnZW4iLUJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmw7xyIMO2ZmZlbnRsaWNoZSBGQVEtQXJ0aWtlbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IFRleHQiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9ICdaZWlnZSAiVGV4dCBFaW5mw7xnZW4iLUJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmw7xyIMO2ZmZlbnRsaWNoZSBGQVEtQXJ0aWtlbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBXWVNJV1lHIGVkaXRvciBpbiBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnV1lTSVdZRyBlZGl0b3IgbWVnamVsZW7DrXTDqXNlIGF6IMO8Z3lpbnTDqXrFkSBmZWzDvGxldMOpbi4nOwoKfQoKMTsK
IyAtLQojIEtlcm5lbC9MYW5ndWFnZS9qYV9GQVEucG0gLSB0cmFuc2xhdGlvbiBmaWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Okxhbmd1YWdlOjpqYV9GQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFBQUZBUQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICflhoXpg6jlkJEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljJ30gPSAn5YWs6ZaLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsJ30gPSAn5aSW6YOo5ZCRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOdW1iZXInfSA9ICdGQVHjg4rjg7Pjg5Djg7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3AgMTAgRkFRIGFydGljbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3J5IG9mJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2VsZWN0ZWQhJ30gPSAn6KmV5L6h44GM6YG45oqe44GV44KM44Gm44GE44G+44Gb44KT44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGxvcmVyJ30gPSAn5LiA6KanJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAoYWxsKSd9ID0gJ+WFrOmWiyAo5YWo5ZOhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCAoY3VzdG9tZXIpJ30gPSAn5aSW6YOoICjpoaflrqIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsIChhZ2VudCknfSA9ICflhoXpg6ggKOaLheW9k+iAhSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgZGF5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IG1vbnRoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IHllYXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIGRheSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgbW9udGgnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIHllYXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAn6KmV5L6h44KS44GE44Gf44Gg44GN44GC44KK44GM44Go44GG44GU44GW44GE44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJ30gPSAn44GC44Gq44Gf44Gv44GZ44Gn44Gr6KmV5L6h5riI44Gn44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIFByaW50J30gPSAn6KiY5LqL5Y2w5Yi3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAoVG9wIDEwKSd9ID0gJ+S4iuS9jTEw5Lu244Gu6KiY5LqLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAn5paw552A6KiY5LqLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknfSA9ICfmnIDov5Hmm7TmlrDjgZXjgozjgZ/oqJjkuosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IHVwZGF0ZWQhJ30gPSAn44Kr44OG44K044Oq44GM5pu05paw44GV44KM44G+44GX44Gf44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSBhZGRlZCEnfSA9ICfmlrDjgZfjgYTjgqvjg4bjgrTjg6rjgYzov73liqDjgZXjgozjgb7jgZfjgZ/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAn44CM5ZCN5YmN44CN44Gv5b+F6aCI6aCF55uu44Gn44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICfjgZPjga7jgqvjg4bjgrTjg6rjga/jgZnjgafjgavlrZjlnKjjgZfjgabjgYTjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIGFkZGVkISd9ID0gJ+iogOiqnuOBjOi/veWKoOOBleOCjOOBvuOBl+OBn+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICfoqIDoqp7jgYzmm7TmlrDjgZXjgozjgb7jgZfjgZ/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJ30gPSAn44CM5ZCN5YmN44CN44Gv5b+F6aCI6aCF55uu44Gn44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMhJ30gPSAn44GT44Gu6KiA6Kqe44Gv6Kit5a6a5riI44Gn44GZ44CCJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudERhc2hib2FyZEZBUU92ZXJ2aWV3CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgQXJ0aWNsZSd9ID0gJ0ZBUeOBruaWsOimj+i/veWKoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3Jkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IGlzIHJlcXVpcmVkLid9ID0gJ+OCq+ODhuOCtOODquOBr+W/hemgiOmgheebruOBp+OBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZhbCd9ID0gJ+aJv+iqjSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFDYXRlZ29yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIENhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdGQVEg44Kr44OG44K044Oq566h55CGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBjYXRlZ29yeSd9ID0gJ+OCq+ODhuOCtOODquOCkui/veWKoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ2F0ZWdvcnknfSA9ICfjgqvjg4bjgrTjg6rjgpLliYrpmaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICfjga/jgYQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIENhdGVnb3J5J30gPSAn44Kr44OG44K044Oq44KS6L+95YqgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQ2F0ZWdvcnknfSA9ICfjgqvjg4bjgrTjg6rjgpLnt6jpm4YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ+S4gOimp+OBp+OCs+ODoeODs+ODiOOBqOOBl+OBpuihqOekuuOBleOCjOOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwLid9ID0gJ+OBsuOBqOOBpOS7peS4iuOBruaoqemZkOOBruOCsOODq+ODvOODl+OCkumBuOaKnuOBl+OBpuOBj+OBoOOBleOBhOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAn44GT44Gu44Kr44OG44K044Oq44Gn6aCF55uu44Gr44Ki44Kv44K744K544Gn44GN44KL44Ko44O844K444Kn44Oz44OI44Kw44Or44O844OXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjYXRlZ29yeT8nfSA9ICfjgZPjga7jgqvjg4bjgrTjg6rjgpLliYrpmaTjgZfjgabjgojjgo3jgZfjgYTjgafjgZnjgYvvvJ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgY2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlIGFuZC9vciBpcyBwYXJlbnQgb2YgYXQgbGVhc3Qgb25lIG90aGVyIGNhdGVnb3J5J30gPQogICAgICAgICfjgZPjga7jgqvjg4bjgrTjg6rjgpLliYrpmaTjgZnjgovjgZPjgajjga/jgafjgY3jgb7jgZvjgpPjgILkuIDjgaTku6XkuIrjga5GQVHoqJjkuovjgafkvb/nlKjjgZXjgozjgabjgYTjgovjgYvjgIHjgb7jgZ/jga/ku5bjga7jgqvjg4bjgrTjg6rjga7opqrjgqvjg4bjgrTjg6rjgavjgarjgaPjgabjgYTjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocyknfSA9ICfjgZPjga7jgqvjg4bjgrTjg6rjga/ku6XkuIvjga7oqJjkuovjgafkvb/nlKjjgZXjgozjgabjgYTjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJ30gPSAn44GT44Gu44Kr44OG44K044Oq44Gv5Lul5LiL44Gu44Kr44OG44K044Oq44Gu6Kaq44Kr44OG44K044Oq44Gn44GZ44CCJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJ+OBk+OBruiomOS6i+OCkuWJiumZpOOBl+OBpuOCiOOCjeOBl+OBhOOBp+OBmeOBi++8nyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFeHBsb3Jlcid9ID0gJ0ZBUeS4gOimpyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWljayBTZWFyY2gnfSA9ICfmpJzntKInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsZGNhcmRzIGFyZSBhbGxvd2VkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZHZhbmNlZCBTZWFyY2gnfSA9ICfpq5jmqZ/og73mpJzntKInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcmllcyd9ID0gJ+OCteODluOCq+ODhuOCtOODqic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMnfSA9ICdGQVHpoIXnm64nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICflrZDjgqvjg4bjgrTjg6rjga/jgYLjgorjgb7jgZvjgpPjgIInOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSGlzdG9yeQoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAn44K444Oj44O844OK44Or44Gu5oOF5aCx44GM44GC44KK44G+44Gb44KT44CCJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ0ZBUSDoqIDoqp7nrqHnkIYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VnZXMuJ30gPQogICAgICAgICflpJroqIDoqp7jgafkvZzmpa3jgpLjgZfjgZ/jgYTloLTlkIjjgIHjgZPjga7poIXnm67jgpLoqK3lrprjgZfjgabjgY/jgaDjgZXjgYTjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGxhbmd1YWdlJ30gPSAn6KiA6Kqe44KS6L+95YqgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBMYW5ndWFnZSd9ID0gJ+iogOiqnuOCkuWJiumZpCc7CiAgICAkU2VsZi0+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+OCs+ODs+ODhuOCreOCueODiOOBruioreWumic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgYXJ0aWNsZXMgcGVyIHBhZ2UnfSA9ICfjg5rjg7zjgrjmr47jga7oqJjkuovmlbAnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGRhdGEgZm91bmQuJ30gPSAnRkFR44OH44O844K/44Gv44GC44KK44G+44Gb44KT44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZ2VuZXJpYyBGQVEgdGFibGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnIiwiNTAnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRUHJpbnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUS1JbmZvJ30gPSAnRkFR5oOF5aCxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGVzJ30gPSAnVm90ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCB1cGRhdGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3JkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgKGUuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSAoZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRRnVsbHRleHQnfSA9ICdGQVHlhajmlocnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgU2VhcmNoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaC1Qcm9maWxlIGFzIFRlbXBsYXRlPyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlIHNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHZvdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgcmF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyBkYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgcmFuZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAnRkFR5oOF5aCxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyIsIjE4J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyIsIjI1J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJ+ODrOODvOODhuOCo+ODs+OCsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcgJSd9ID0gJ+ODrOODvOODhuOCo+ODs+OCsO+8iO+8he+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJzXjgaTmmJ/jga7jgYbjgaEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhJ30gPSAn5oqV56Wo44Gv44GC44KK44G+44Gb44KT44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISBCZSB0aGUgZmlyc3Qgb25lIHRvIHJhdGUgdGhpcyBGQVEgYXJ0aWNsZS4nfSA9ICfmipXnpajjga/jgYLjgorjgb7jgZvjgpPjgILjgZPjga7oqJjkuovjgavlp4vjgoHjgaboqZXkvqHjgpLmipXnpajjgZfjgb7jgZfjgofjgYbjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG93bmxvYWQgQXR0YWNobWVudCd9ID0gJ+a3u+S7mOODleOCoeOCpOODq+OCkuODgOOCpuODs+ODreODvOODiSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgaGVscGZ1bCd9ID0gJ+OBguOBvuOCiuW9ueOBq+eri+OBn+OBquOBi+OBo+OBnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICfjgajjgabjgoLlvbnjgavnq4vjgaPjgZ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCd9ID0gJ+iomOS6i+OCkuaMv+WFpeOBmeOCiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBMaW5rJ30gPSAn44Oq44Oz44Kv44KS5oy/5YWl44GZ44KLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCAmIExpbmsnfSA9ICfoqJjkuovjgajjg6rjg7Pjgq/jgpLmjL/lhaXjgZnjgosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJ+ipsuW9k+OBmeOCi+iomOS6i+OBr+OBguOCiuOBvuOBm+OCk+OAgic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFQcmludAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSd9ID0gJ0ZBUeWFqOaWh+aknOe0ou+8iOS+i++8miJKb2huKm4i44CBIldpbGwqIu+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIHJlc3RyaWN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHZvdGVzLi4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIHJlc3RyaWN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHJhdGUuLi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsVGV4dAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaFJlc3VsdFNob3J0CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcnRpY2xlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJ+iomOS6i+OBruOCreODvOODr+ODvOODieaknOe0oic7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRRXhwbG9yZXIKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFQcmludAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAn5YWs6ZaLJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsVGV4dAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFab29tCgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZmlsdGVyIGZvciBIVE1MIG91dHB1dCB0byBhZGQgbGlua3MgYmVoaW5kIGEgZGVmaW5lZCBzdHJpbmcuIFRoZSBlbGVtZW50IEltYWdlIGFsbG93cyB0d28gaW5wdXQga2luZHMuIEZpcnN0IHRoZSBuYW1lIG9mIGFuIGltYWdlIChlLmcuIGZhcS5wbmcpLiBJbiB0aGlzIGNhc2UgdGhlIE9UUlMgaW1hZ2UgcGF0aCB3aWxsIGJlIHVzZWQuIFRoZSBzZWNvbmQgcG9zc2liaWxpdHkgaXMgdG8gaW5zZXJ0IHRoZSBsaW5rIHRvIHRoZSBpbWFnZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ+ipleS+oeOBrue1kOaenOihqOekuuOCiOOBhuOBruOCq+ODqeODvO+8iOOCueOCv+OCpOODq+OCt+ODvOODiO+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYWNoZSBUaW1lIFRvIExlYXZlIGZvciBGQVEgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICfjgqvjg4bjgrTjg6rjg7znrqHnkIYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAn5oqV56Wo44Gu57WQ5p6c44Gu5bCP5pWw54K55Lul5LiL44Gu5qGB5pWwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgY2F0ZWdvcnkgbmFtZS4nfSA9ICfml6Llrprjga7jgqvjg4bjgrTjg6onOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLid9ID0gJ+imj+WumuOBruiogOiqnu+8iOWNmOS4gOiogOiqnuODouODvOODieOBp+mBi+eUqOaZgu+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPQogICAgICAgICdGQVHjgbjjga7lj5bjgorovrzjgb/jgpLooYzjgYbjg4HjgrHjg4Pjg4jjga7lhKrlhYjpoIbkvY3jga7ml6LlrprlgKQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJ+iomOS6i+OCqOODs+ODiOODquODvOaZguOBruimj+WumuOBruOCueODhuODvOOCv+OCuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnRkFR44G444Gu5Y+W44KK6L6844G/44KS6KGM44GG44OB44Kx44OD44OI44Gu5YSq5YWI6aCG5L2N44Gu5pei5a6a5YCkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJ30gPQogICAgICAgICflhazplovnlLvpnaLnlKjjg5Hjg6njg6Hjg7zjgr/jga7jg4fjg5Xjgqnjg6vjg4jlgKTjgILjg5Hjg6njg6Hjg7zjgr/vvIhBY3Rpb249WFhYWFhY77yJ44Gv44CB44K544Kv44Oq44OX44OI44Gn5L2/55So44GV44KM44Gm44GE44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9CiAgICAgICAgJ+ewoeaYk+eJiEZBUeOCuOODo+ODvOODiuODq+ihqOekuueUqOODouOCuOODpeODvOODq+OBruamguimgeOCkuWumue+qSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuJ30gPQogICAgICAgICfnsKHmmJPniYhGQVHkuIDopqfooajnpLrnlKjjg6Ljgrjjg6Xjg7zjg6vjga7mpoLopoHjgpLlrprnvqknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+OCqOODvOOCuOOCp+ODs+ODiOeUqOeUu+mdouOBq+OBiuOBkeOCi+OAgUZBUeaknOe0oue1kOaenOS4puOBs+abv+OBiOOBq+WIqeeUqOOBmeOCi+WxnuaAp+mghuOBruaXouWumuWApOOCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn6aGn5a6i55So55S76Z2i44Gr44GK44GR44KL44CBRkFR5qSc57Si57WQ5p6c5Lim44Gz5pu/44GI44Gr5Yip55So44GZ44KL5bGe5oCn6aCG44Gu5pei5a6a5YCk44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5YWs6ZaL55S76Z2i44Gr44GK44GR44KL44CBRkFR5qSc57Si57WQ5p6c5Lim44Gz5pu/44GI44Gr5Yip55So44GZ44KL5bGe5oCn6aCG44Gu5pei5a6a5YCk44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn44Ko44O844K444Kn44Oz44OI55So55S76Z2i77yIRkFR5LiA6Kan77yJ44Gr44GK44GR44KL44CBRkFR5qSc57Si57WQ5p6c5Lim44Gz5pu/44GI44Gr5Yip55So44GZ44KL5bGe5oCn6aCG44Gu5pei5a6a5YCk44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn6aGn5a6i55So55S76Z2i77yIRkFR5LiA6Kan77yJ44Gr44GK44GR44KL44CBRkFR5qSc57Si57WQ5p6c5Lim44Gz5pu/44GI44Gr5Yip55So44GZ44KL5bGe5oCn6aCG44Gu5pei5a6a5YCk44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WFrOmWi+eUu+mdou+8iEZBUeS4gOimp++8ieOBq+OBiuOBkeOCi+OAgUZBUeaknOe0oue1kOaenOS4puOBs+abv+OBiOOBq+WIqeeUqOOBmeOCi+WxnuaAp+mghuOBruaXouWumuWApOOCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ+OCqOODvOOCuOOCp+ODs+ODiOeUqOeUu+mdouOBq+OBiuOBkeOCi+OAgUZBUeS4gOimp+OBruihqOekuumghuOBruaXouWumuWApOOCkuWumue+qeOBl+OBvuOBmeOAglwnVXBcJ+KGkuWPpOOBhOmghiAvIFwnRG93blwn4oaS5paw44GX44GE6aCGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn6aGn5a6i55So55S76Z2i44Gr44GK44GR44KL44CBRkFR5LiA6Kan44Gu6KGo56S66aCG44Gu5pei5a6a5YCk44KS5a6a576p44GX44G+44GZ44CCXCdVcFwn4oaS5Y+k44GE6aCGIC8gXCdEb3duXCfihpLmlrDjgZfjgYTpoIYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn5YWs6ZaL55S76Z2i44Gr44GK44GR44KL44CBRkFR5LiA6Kan44Gu6KGo56S66aCG44Gu5pei5a6a5YCk44KS5a6a576p44GX44G+44GZ44CCXCdVcFwn4oaS5Y+k44GE6aCGIC8gXCdEb3duXCfihpLmlrDjgZfjgYTpoIYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn44Ko44O844K444Kn44Oz44OI55So55S76Z2i77yIRkFR5LiA6Kan77yJ44Gr44GK44GR44KL44CBRkFR5qSc57Si57WQ5p6c5Lim44Gz6aCG44Gu5pei5a6a5YCk44KS5a6a576p44GX44G+44GZ44CCXCdVcFwn4oaS5Y+k44GE6aCGIC8gXCdEb3duXCfihpLmlrDjgZfjgYTpoIYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn6aGn5a6i55So55S76Z2i44Gr44GK44GR44KL44CBRkFR5qSc57Si57WQ5p6c5Lim44Gz6aCG44Gu5pei5a6a5YCk44KS5a6a576p44GX44G+44GZ44CCXCdVcFwn4oaS5Y+k44GE6aCGIC8gXCdEb3duXCfihpLmlrDjgZfjgYTpoIYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ+WFrOmWi+eUu+mdouOBq+OBiuOBkeOCi+OAgUZBUeaknOe0oue1kOaenOS4puOBs+mghuOBruaXouWumuWApOOCkuWumue+qeOBl+OBvuOBmeOAglwnVXBcJ+KGkuWPpOOBhOmghiAvIFwnRG93blwn4oaS5paw44GX44GE6aCGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICfjgqjjg7zjgrjjgqfjg7Pjg4jnlKjnlLvpnaLjgavjgYrjgZHjgovjgIFGQVHkuIDopqfjgafjga7ooajnpLrpoIXnm67jga7oqK3lrprjgILjgZPjga7oqK3lrprjgavjgojjgaPjgabpoIXnm67jga7kuKbjgbPpoIbjgpLliLblvqHjgZnjgovjgZPjgajjga/jgafjgY3jgb7jgZvjgpPjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIGpvdXJuYWwuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICfpoaflrqLnlKjnlLvpnaLjgavjgYrjgZHjgovjgIFGQVHkuIDopqfjgafjga7ooajnpLrpoIXnm67jga7oqK3lrprjgILjgZPjga7oqK3lrprjgavjgojjgaPjgabpoIXnm67jga7kuKbjgbPpoIbjgpLliLblvqHjgZnjgovjgZPjgajjga/jgafjgY3jgb7jgZvjgpPjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ+WFrOmWi+eUu+mdouOBq+OBiuOBkeOCi+OAgUZBUeS4gOimp+OBp+OBruihqOekuumgheebruOBruioreWumuOAguOBk+OBruioreWumuOBq+OCiOOBo+OBpumgheebruOBruS4puOBs+mghuOCkuWItuW+oeOBmeOCi+OBk+OBqOOBr+OBp+OBjeOBvuOBm+OCk+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoZXJlIHRoZSBcJ0luc2VydCBGQVFcJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLiBOb3RlOiBBZ2VudFRpY2tldEFjdGlvbkNvbW1vbiBpbmNsdWRlcyBBZ2VudFRpY2tldE5vdGUsIEFnZW50VGlja2V0Q2xvc2UsIEFnZW50VGlja2V0RnJlZVRleHQsIEFnZW50VGlja2V0T3duZXIsIEFnZW50VGlja2V0UGVuZGluZywgQWdlbnRUaWNrZXRQcmlvcml0eSBhbmQgQWdlbnRUaWNrZXRSZXNwb25zaWJsZS4nfSA9CiAgICAgICAgJ+Wumue+qea4iOOBruimgee0oOOBq+ODquODs+OCr+OCkuS7mOWKoOOBmeOCi+ODouOCuOODpeODvOODq+OBp+OBmeOAgueUu+WDj+imgee0oOOBq+OBpOOBhOOBpuOBrzLpgJrjgorjga7lhaXlipvmlrnms5XjgYzjgYLjgorjgb7jgZnjgILjgbLjgajjgaTjga/jgIxmYXEucG5n44CN44Gu44KI44GG44Gr55S75YOP44Gu44OV44Kh44Kk44Or5ZCN44KS5oyH5a6a44GZ44KL5pa55rOV44CC44GT44Gu44Kx44O844K544Gn44GvT1RSU+OBruOCpOODoeODvOOCuOODkeOCueOBjOS9v+eUqOOBleOCjOOBvuOBmeOAguOCguOBhuOBsuOBqOOBpOOBr1VSTOOCkuaMh+WumuOBmeOCi+aWueazleOBp+OBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC4nfSA9ICdGQVHjga7jg5Xjg6rjg7zjg4bjgq3jgrnjg4jjg5XjgqPjg7zjg6vjg4njga7lrprnvqnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHRoaXMgRkFRJ30gPSAn44GT44Gu6KiY5LqL44KS5YmK6ZmkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgdGhpcyBGQVEnfSA9ICfjgZPjga7oqJjkuovjgpLnt6jpm4YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLid9ID0gJ+WkmuiogOiqnuOCkuacieWKueOBq+OBmeOCiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLid9ID0gJ+ipleS+oeOBruapn+iDveOCkuacieWKueOBq+OBmeOCiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCd9ID0gJ0ZBUSDjgrjjg6Pjg7zjg4rjg6snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0ZBUeOCuOODo+ODvOODiuODq+S4gOimpyhTKeOBruihqOekuuaVsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0ZBUeS4gOimpyhTKeOBruihqOekuuaVsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICdGQVHjgrjjg6Pjg7zjg4rjg6vkuIDopqcoUynjga4x44Oa44O844K45q+O44Gu6KGo56S65pWwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICdGQVHkuIDopqcoUynjga4x44Oa44O844K45q+O44Gu6KGo56S65pWwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBwYXRoIHNlcGFyYXRvci4nfSA9ICfjg5HjgrnjgqTjg7Pjg5XjgqnjgpLkvb/nlKjjgZnjgovpmpvjga7jgrvjg5Hjg6zjg7zjgr/mloflrZfvvIjkvovvvJpcJy9cJ++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAn44Ko44O844K444Kn44Oz44OI55So55S76Z2i44Gr44GK44GR44KL44CBRkFR5qSc57Si44Gu44OQ44OD44Kv44Ko44Oz44OJ44Or44O844K/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUS1BcmVhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJ+WFrOmWi+eUu+mdouOBruODleODreODs+ODiOOCqOODs+ODieODouOCuOODpeODvOODq+OBruWumue+qSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdGQVHjga7oqJjkuovjga7mib/oqo3jga7jgZ/jgoHjga7jgrDjg6vjg7zjg5cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJ+OBk+OBruiomOS6i+OBruWxpeattCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIGludGVybmFsIGZpZWxkcyBvbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnRkFR55Sx5p2l44Gu44OB44Kx44OD44OI44Gr5ZCr44G+44KM44KL5YaF6YOo6aCF55uuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgdGhlIG5hbWUgb2YgZWFjaCBmaWVsZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnRkFR55Sx5p2l44Gu44OB44Kx44OD44OI44Gr5ZCr44G+44KM44KL5YaF6YOo6aCF55uu44GZ44G544Gm44Gu5ZCN56ewJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVyZmFjZXMgd2hlcmUgdGhlIHF1aWNrc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICfmpJzntKLnqpPjgpLooajnpLrjgZnjgovnlLvpnaLjgpLoqK3lrponOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJ+OCuOODo+ODvOODiuODqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAn6KiA6Kqe566h55CGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJ+OBk+OBruiomOS6i+OBi+OCieS7luOBruiomOS6i+OBuOOBruODquODs+OCryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn44Ko44O844K444Kn44Oz44OI55S76Z2i44GuRkFR5LiA6Kan44Gn6KGo56S644GZ44KL6KiY5LqL44Gu5pyA5aSn5pWwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+mhp+WuoueUqOeUu+mdouOBrkZBUeS4gOimp+OBp+ihqOekuuOBmeOCi+iomOS6i+OBruacgOWkp+aVsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5YWs6ZaL55S76Z2i44GuRkFR5LiA6Kan44Gn6KGo56S644GZ44KL6KiY5LqL44Gu5pyA5aSn5pWwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfjgqjjg7zjgrjjgqfjg7Pjg4jnlLvpnaLjga5GQVHjgrjjg6Pjg7zjg4rjg6vjgafooajnpLrjgZnjgovoqJjkuovjga7mnIDlpKfmlbAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgZmFxIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgZmFxIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2guJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBBcnRpY2xlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLid9ID0gJ+OAjOacgOi/keOBruWkieabtOOAjeOBq+S9leS7tuOBvuOBp+ihqOekuuOBmeOCi+OBiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJ+OAjOacgOaWsOOBruaWsOimj+S9nOaIkOOAjeOBq+S9leS7tuOBvuOBp+ihqOekuuOBmeOCi+OBiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gdGhlIHRvcCAxMCBmZWF0dXJlLid9ID0gJ+OAjOODiOODg+ODlzEw6KiY5LqL44CN44Gr5L2V5Lu244G+44Gn6KGo56S644GZ44KL44GLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9CiAgICAgICAgJ+ewoeaYk+eJiEZBUeOCuOODo+ODvOODiuODq+S4gOimp+OBruODmuODvOOCuOaMh+WumueUqOOBruODkeODqeODoeODvOOCvyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIG92ZXJ2aWV3Lid9ID0KICAgICAgICAn57Ch5piT54mIRkFR5qaC6KaB44Gu44Oa44O844K45oyH5a6a55So44Gu44OR44Op44Oh44O844K/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50IHRoaXMgRkFRJ30gPSAn44GT44Gu6KiY5LqL44KS5Y2w5Yi3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ+iomOS6i+aJv+iqjeOCreODpeODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJ+ipleS+oeeOh+OAguOCreODvOOBr+OAgeODkeODvOOCu+ODs+ODiOOBp+aMh+WumuOBmeOCi+W/heimgeOBjOOBguOCiuOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRJ30gPSAnRkFR44KS5qSc57SiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICdcJ0FnZW50RkFRWm9vbVNtYWxsXCfjga7oqK3lrprjgILlhazplovnlLvpnaLjgavjgYrjgYTjgabjgIzjg6rjg7Pjgq/jgpLmjL/lhaXjgZnjgovjgI3jg5zjgr/jg7PjgpLooajnpLrjgZnjgosv6KGo56S644GX44Gq44GEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIC8gIkluc2VydCBGdWxsIEZBUSIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJ+iomOS6i+OBp0hUTUzjgr/jgrDjgpLooajnpLrjgZnjgosv6KGo56S644GX44Gq44GEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIHBhdGggeWVzL25vLid9ID0gJ+iomOS6i+OBruODkeOCueOCkuihqOekuuOBmeOCiy/ooajnpLrjgZfjgarjgYQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJ+OCteODluOCq+ODhuOCtOODquODvOOBruODiOODlOODg+OCr+OCkuihqOekuuOBmeOCiy/ooajnpLrjgZfjgarjgYQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNoYW5nZSBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAn5pyA5paw44Gu5aSJ5pu044KS6KGo56S644GZ44KL55S76Z2i77yI44Ko44O844K444Kn44Oz44OI55SoL+mhp+WuoueUqC/lhazplovvvInjgpLlrprnvqknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNyZWF0ZWQgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ+acgOaWsOOBruaWsOimj+S9nOaIkOOCkuihqOekuuOBmeOCi+eUu+mdou+8iOOCqOODvOOCuOOCp+ODs+ODiOeUqC/poaflrqLnlKgv5YWs6ZaL77yJ44KS5a6a576pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdG9wIDEwIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICfjg4jjg4Pjg5cxMOOCkuihqOekuuOBmeOCi+eUu+mdou+8iOOCqOODvOOCuOOCp+ODs+ODiOeUqC/poaflrqLnlKgv5YWs6ZaL77yJ44KS5a6a576pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdm90aW5nIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICfoqZXkvqHjgpLooajnpLrjgZnjgovnlLvpnaLvvIjjgqjjg7zjgrjjgqfjg7Pjg4jnlKgv6aGn5a6i55SoL+WFrOmWi++8ieOCkuWumue+qSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ+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+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBib2R5IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IHN1YmplY3QgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJyc7CgogICAgIwogICAgIyBPQlNPTEVURSBFTlRSSUVTIEZPUiBSRUZFUkVOQ0UsIERPIE5PVCBUUkFOU0xBVEUhCiAgICAjCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgd2hpY2ggY2FuIGFjY2VzcyB0aGlzIGNhdGVnb3J5Lid9ID0gJ+OBk+OBruOCq+ODhuOCtOODquOBq+OCouOCr+OCu+OCueWPr+iDveOBquOCqOODvOOCuOOCp+ODs+ODiOOCsOODq+ODvOODlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yaWVzJ30gPSAn44Kr44OG44K044OqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldGFpbFNlYXJjaCd9ID0gJ+ips+e0sOaknOe0oic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmREYXknfSA9ICfntYLkuobml6UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kTW9udGgnfSA9ICfntYLkuobmnIgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kWWVhcid9ID0gJ+e1guS6huW5tCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZWtleSB3aGljaCBpcyBkZWZpbmVkIGluIHRoZSBsYW5ndWFnZSBmaWxlICpfRkFRLnBtLid9ID0gJ+iogOiqnuODleOCoeOCpOODq++8iCpfRkFRLnBt77yJ44Gn5a6a576p44GV44KM44Gm44GE44KLTGFuZ3VhZ2VrZXknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0Q2hhbmdlZEl0ZW1zJ30gPSAn5pyA6L+R5aSJ5pu044GV44KM44Gf44Ki44Kk44OG44OgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdENyZWF0ZWRJdGVtcyd9ID0gJ+acgOi/keS9nOaIkOOBleOCjOOBn+OCouOCpOODhuODoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjYXRlZ29yeSBhY2Nlc3NpYmxlLiBUbyBjcmVhdGUgYW4gYXJ0aWNsZSB5b3UgbmVlZCBhY2Nlc3MgdG8gYXQgbGVhc3Qgb25lIGNhdGVnb3J5LiBQbGVhc2UgY2hlY2sgeW91ciBncm91cC9jYXRlZ29yeSBwZXJtaXNzaW9uIHVuZGVyIC1jYXRlZ29yeSBtZW51LSEnfSA9CiAgICAgICAgJ+OCq+ODhuOCtOODquOBq+OCouOCr+OCu+OCueOBp+OBjeOBvuOBm+OCk+OAguiomOS6i+OCkuS9nOaIkOOBmeOCi+OBq+OBr+OAgTHjgaTku6XkuIrjga7jgqvjg4bjgrTjg6rjgavjgqLjgq/jgrvjgrnjgZnjgovlv4XopoHjgYzjgYLjgorjgb7jgZnjgILjgqvjg4bjgrTjg6rjga7jg6Hjg4vjg6Xjg7zjgavjgYrjgYTjgabjgIHjgYLjgarjgZ/jga7jgrDjg6vjg7zjg5cv44Kr44OG44K044Oq44Gr5qip6ZmQ44KS5LiO44GI44Gm44GP44Gg44GV44GE44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2JsZW0nfSA9ICfllY/poYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2tTZWFyY2gnfSA9ICfmpJzntKInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnXCdBZ2VudEZBUVpvb21TbWFsbFwn44Gu6Kit5a6a44CC5YWs6ZaL55S76Z2i44Gr44GK44GE44Gm44CM44OG44Kt44K544OI44Go44Oq44Oz44Kv44KS5oy/5YWl44GZ44KL44CN44Oc44K/44Oz44KS6KGo56S644GZ44KLL+ihqOekuuOBl+OBquOBhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9ICdcJ0FnZW50RkFRWm9vbVNtYWxsXCfjga7oqK3lrprjgILjgIzjg4bjgq3jgrnjg4jjgpLmjL/lhaXjgZnjgovjgI3jg5zjgr/jg7PjgpLooajnpLrjgZnjgosv6KGo56S644GX44Gq44GEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgV1lTSVdZRyBlZGl0b3IgaW4gYWdlbnQgaW50ZXJmYWNlLid9ID0gJ+OCqOODvOOCuOOCp+ODs+ODiOeUu+mdouOBq+OBiuOBhOOBpldZU0lXWUfjgqjjg4fjgqPjgr/jgpLooajnpLrjgZnjgosv6KGo56S644GX44Gq44GEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0RGF5J30gPSAn6ZaL5aeL5pelJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0TW9udGgnfSA9ICfplovlp4vmnIgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRZZWFyJ30gPSAn6ZaL5aeL5bm0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YkNhdGVnb3J5T2YnfSA9ICfopqrjgqvjg4bjgrTjg6onOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ltcHRvbSd9ID0gJ+eXh+eKtic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3AxMEl0ZW1zJ30gPSAn44OI44OD44OXMTDjgqLjgq/jgrvjgrknOwoKfQoKMTsK
IyAtLQojIEtlcm5lbC9MYW5ndWFnZS9tc19GQVEucG0gLSB0cmFuc2xhdGlvbiBmaWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Okxhbmd1YWdlOjptc19GQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFBQUZBUQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICdkYWxhbWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ3VtdW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICdsdWFyYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE51bWJlcid9ID0gJ05vbWJvciBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJ30gPSAnS2VtYXNraW5pIEFydGlrZWwgRkFRIHRlcmJhcnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJ30gPSAnTWVuY2lwdGEgYXJpdGtlbCBGQVEgdGVyYmFydSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3AgMTAgRkFRIGFydGljbGVzJ30gPSAnQXJpdGtlbCBGQVEgMTAgdGVyYmFpayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yeSBvZid9ID0gJ1N1Yi1rYXRlZ29yaSBkYXJpcGFkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNlbGVjdGVkISd9ID0gJ1RpYWRhIGthZGFyIGRpcGlsaWghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGxvcmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAoYWxsKSd9ID0gJ1VtdW0gKFNlbXVhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCAoY3VzdG9tZXIpJ30gPSAnbHVhcmFuIChwZWxhbmdnYW4pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsIChhZ2VudCknfSA9ICdkYWxhbWFuIChlamVuKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBkYXknfSA9ICdIYXJpIG11bGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgbW9udGgnfSA9ICdCdWxhbiBtdWxhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IHllYXInfSA9ICdUYWh1biBtdWxhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBkYXknfSA9ICdIYXJpIGFraGlyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBtb250aCd9ID0gJ0J1bGFuIGFraGlyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCB5ZWFyJ30gPSAnVGFodW4gYWtoaXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAnVGVyaW1hIGthc2loIHVudHVrIHVuZGlhbiBhbmRhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISd9ID0gJ0FuZCBzdWRhaCBtZW5ndW5kaSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgUHJpbnQnfSA9ICdBcnRpa2VsIEZBUSBkaWNldGFrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAoVG9wIDEwKSd9ID0gJ0FydGlrZWwgRkFRICgxMCB0ZXJiYWlrKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKG5ldyBjcmVhdGVkKSd9ID0gJ0FydGlrZWwgRkFRIChiYXJ1IGRpY2lwdGEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknfSA9ICdBcnRpa2VsIEZBUSAoYmFydSBkaXViYWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ0thdGVnb3JpIEZBUSBkaWtlbWFza2luaSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IGFkZGVkISd9ID0gJ2thdGVnb3JpIEZBUSBkaXRhbWJhaCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAnS2F0ZWdvcmkgcGVybHUgbWVtcHVueWFpIG5hbWEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICdrYXRlZ29yaSBpbmkgc3VkYWggd3VqdWQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSBhZGRlZCEnfSA9ICdCYWhhc2EgRkFRIGRpdGFtYmFoISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICdCYWhhc2EgRkFRIGRpa2VtYXNraW5pISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBpcyByZXF1aXJlZCEnfSA9ICdOYW1hIGRpcGVybHVrYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMhJ30gPSAnQmFoYXNhIGluaSBzdWRhaCB3dWp1ZCEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RGFzaGJvYXJkRkFRT3ZlcnZpZXcKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBBcnRpY2xlJ30gPSAnVGFtYmFoIGFydGlrZWwgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuJ30gPSAnS2F0ZWdvcmkgZGlwZXJsdWthbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICdQZW5nZXNhaGFuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ1Blbmd1cnVzYW4gS2F0ZWdvcmkgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBjYXRlZ29yeSd9ID0gJ1RhbWJhaCBrYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ2F0ZWdvcnknfSA9ICdQYWRhbSBrYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJ09rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJ1RhbWJhaCBrYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAnQXVkaXQgS2F0ZWdvcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ0FrYW4gZGlwYXBhcmthbiBzZWJhZ2FpIGtvbWVuIGRhbGFtIEV4cGxvcmVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwLid9ID0gJ1NpbGEgcGlsaWggc2VrdXJhbmcta3VyYW5nbnlhIHNhdHUgcGVybWludGFhbiBrdW1wdWxhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHRoYXQgY2FuIGFjY2VzcyBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5Lid9ID0gJ0t1bXB1bGFuIGVqZW4gYm9sZWggbWVuZ2Frc2VzIGFydGlrZWwgZGFsYW0ga2F0ZWdvcmkgaW5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAnQWRha2FoIGFuZGEgaW5naW4gbWVtYWRhbSBrYXRlZ29yaSBpbmk/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAnQW5kYSB0aWRhayBib2xlaCBtZW1hZGFtIGthdGVnb3JpIGluaS4gSWEgZGlndW5ha2FuIGRhbGFtIHNla3VyYW5nLWt1cmFuZ255YSBzYXR1IGF0aWtlbCBGQVEgZGFuL2F0YXUgYWRhbGFoIGlidWJhcGEga2VwYWRhIHNla3VyYW5nLWt1cmFuZ255YSBzYXR1IGthdGVnb3JpIGxhaW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAnS2F0ZWdvcmkgaW5pIGRpZ3VuYWthbiBkYWxhbSBhdGlrZXQgRkFRIGJlcmlrdXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJ30gPSAnS2F0ZWdvcmkgaW5pIGFkYWxhaCBpYnViYXBhIGtlcGFkYSBzdWIta2F0ZWdvcmkgYmVyaWt1dCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFEZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGQVEgYXJ0aWNsZT8nfSA9ICdBZGFrYWggYW5kYSBpbmdpbiBtZW1hZGFtIGFydGlrZWwgRkFRIGluaT8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRJ30gPSAnRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICdGQVEtRXhwbG9yZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAnQ2FyaWFuIFBhbnRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxkY2FyZHMgYXJlIGFsbG93ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkdmFuY2VkIFNlYXJjaCd9ID0gJ0NhcmlhbiBUZXJwZXJpbmNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3JpZXMnfSA9ICdTdWIta2F0ZWdvcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzJ30gPSAnQXJ0aWtldCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICdUaWFkYSBzdWIta2F0ZWdvcmkgZGl0ZW11aS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSGlzdG9yeQoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAnVGlhZGEgZGF0YSBKdXJuYWwgRkFRIGRpdGVtdWkuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ1Blbmd1cnVzYW4gQmFoYXNhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWdlcy4nfSA9CiAgICAgICAgJ0d1bmEga2FlZGFoIGluaSBqaWthIGFuZGEgaW5naW4gYmVrZXJqYSBkZW5nYW4gcGVsYmFnYWkgYmFoYXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICdUYW1iYWggYmFoYXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBMYW5ndWFnZSd9ID0gJ1BhZGFtIGJhaGFzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTGFuZ3VhZ2UnfSA9ICdUYW1iYWggYmFoYXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgTGFuZ3VhZ2UnfSA9ICdBdWRpdCBiYWhhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxhbmd1YWdlPyd9ID0gJ0FkYWthaCBhbmRhIGluZ2luIG1lbWFkYW1rYW4gYmFoYXNhIGluaT8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgbGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlISd9ID0KICAgICAgICAnQW5kYSB0aWRhayBib2xlaCBtZW1hZGFtIGJhaGFzYSBpbmkuIElhIGRpZ3VuYWthbiBzZWt1cmFuZy1rdXJhbmdueWEgc2F0dSBhcnRpa2VsIEZBUSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknfSA9ICdCYWhhc2EgaW5pIGRpZ3VuYWthbiBkYWxhbSBBcnRpa2VsIEZBUSB5YW5nIGJlcmlrdXQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICdBdHVyYW4ga29udGVrcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgYXJ0aWNsZXMgcGVyIHBhZ2UnfSA9ICdBcnRpa2VsIEZBUSBwZXIgbXVrYSBzdXJhdCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgZGF0YSBmb3VuZC4nfSA9ICdUaWFkYSBkYXRhIEZBUSBkaXRlbXVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGdlbmVyaWMgRkFRIHRhYmxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyIsIjUwJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVByaW50CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEtSW5mbyd9ID0gJ0luZm9ybWFzaSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZXMnfSA9ICdVbmRpYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCB1cGRhdGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3JkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgKGUuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSAoZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRRnVsbHRleHQnfSA9ICdGQVFUZWtzUGVudWgnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgU2VhcmNoJ30gPSAnQ2FyaWFuIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2gtUHJvZmlsZSBhcyBUZW1wbGF0ZT8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHJhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgZGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIHJhbmdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFzaSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnIiwiMjUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nJ30gPSAnTWVuaWxhaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcgJSd9ID0gJ01lbmlsYWkgJSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJ2RhcmlwYWRhIDUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhJ30gPSAnVGlhZGEgdW5kaWFuIGRpdGVtdWkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISBCZSB0aGUgZmlyc3Qgb25lIHRvIHJhdGUgdGhpcyBGQVEgYXJ0aWNsZS4nfSA9ICdUaWFkYSB1bmRpYW4gZGl0ZW11aSEgSmFkaWxhaCBvcmFuZyBwZXJ0YW1hIG1lbmlsYWkgYXJpdGwgRkFRIGluaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG93bmxvYWQgQXR0YWNobWVudCd9ID0gJ011YXQgdHVydW4gbGFtcGlyYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSG93IGhlbHBmdWwgd2FzIHRoaXMgYXJ0aWNsZT8gUGxlYXNlIGdpdmUgdXMgeW91ciByYXRpbmcgYW5kIGhlbHAgdG8gaW1wcm92ZSB0aGUgRkFRIERhdGFiYXNlLiBUaGFuayBZb3UhJ30gPQogICAgICAgICdCZXJhcGEgYmFueWFrIGFyaWtlbCBpbmkgbWVtYmFudHU/IFNpbGEgYmVyaSBrYW1pIHBlbmlsYWlhbiBhbmRhIGRhbiBiYW50dSB1bnR1ayBtZW5pbmdrYXRrYW4gcGFuZ2thbGFuIGRhdGEgRkFRLiBUZXJpbWEgS2FzaWghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBoZWxwZnVsJ30gPSAnVGlkYWsgbWVtYmFudHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsndmVyeSBoZWxwZnVsJ30gPSAnU2FuZ2F0IG1lbWJhbnR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQnfSA9ICdNYXN1ayBUZWtzIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBMaW5rJ30gPSAnTWFzdWsgcGF1dGFuIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQgJiBMaW5rJ30gPSAnTWFzdWsgVGVrcyBGQVEgJiBQYXV0YW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJ1RpYWRhIGFydGlrZWwgRkFRIGRpanVtcGFpLic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFQcmludAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSd9ID0gJ0NhcmlhbiBUZWtzIHBlbnVoIGRhbGFtIGFydGlrZWwgRkFRIChjb250b2guICJKb2huKm4iIG9yICJXaWxsKiIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgcmVzdHJpY3Rpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggdm90ZXMuLi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgcmVzdHJpY3Rpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggcmF0ZS4uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGxUZXh0CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoUmVzdWx0U2hvcnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FydGljbGUgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBmb3IgYXJ0aWNsZXMgd2l0aCBrZXl3b3JkJ30gPSAnQ2FyaWFuIHVudHVrIGFydGlrZWwgZGVuZ2FuIGtla3VuY2kgcGVya2F0YWFuJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFFeHBsb3JlcgoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVByaW50CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoCgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMnfSA9ICdVbXVtJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsVGV4dAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFab29tCgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZmlsdGVyIGZvciBIVE1MIG91dHB1dCB0byBhZGQgbGlua3MgYmVoaW5kIGEgZGVmaW5lZCBzdHJpbmcuIFRoZSBlbGVtZW50IEltYWdlIGFsbG93cyB0d28gaW5wdXQga2luZHMuIEZpcnN0IHRoZSBuYW1lIG9mIGFuIGltYWdlIChlLmcuIGZhcS5wbmcpLiBJbiB0aGlzIGNhc2UgdGhlIE9UUlMgaW1hZ2UgcGF0aCB3aWxsIGJlIHVzZWQuIFRoZSBzZWNvbmQgcG9zc2liaWxpdHkgaXMgdG8gaW5zZXJ0IHRoZSBsaW5rIHRvIHRoZSBpbWFnZS4nfSA9CiAgICAgICAgJ0FzaW5nYW4gdW50dWsgaGFzaWwga2VsdWFyYW4gdW50dWsgbWVuYW1iYWggcGF1dGFuIGRpYmVsYWthbmcgamFyaW5nYW4gc3RyaW5nLiBFbGVtZW4gZ2FtYmFyIGRpYmVuYXJrYW4gZHVhIGlucHV0LiBwZXJ0YW1hIG5hbWEgZ2FtYmFyIHRlcnNlYnV0IChmYXEucG5nKS4gRGFsYW0ga2VzIGluaSwgamFsYW4gZ2FtYmFyIE9UUlMgYWthbiBkaWd1bmFrYW4uIGtlZHVhbnlhIGtlbXVuZ2tpbmFuIGFkYWxhaCB1bnR1ayBtZW1hc3Vra2FuIHBhdXRhbiBwYWRhIGdhbWJhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1NTIGNvbG9yIGZvciB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICdXYXJuYSBDU1MgdW50dWsga2VwdXR1c2FuIHVuZGlhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FjaGUgVGltZSBUbyBMZWF2ZSBmb3IgRkFRIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnUGVuZ3VydXNhbiBrYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICdUaXRpayBwZXJwdWx1aGFuIGRhcmlwYWRhIGtlcHV0dXNhbiB1bmRpYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgY2F0ZWdvcnkgbmFtZS4nfSA9ICdLYXRlZ29yaSBuYW1hIHNlZGlhIGFkYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLid9ID0gJ0JhaGFzYSBzZWRpYSBhZGEgdW50dWsgYXJ0aWtlbCBGQVEgcGFkYSBzYXR1IG1vZCBiYWhhc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgcHJpb3JpdHkgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9CiAgICAgICAgJ0tldXRhbWFhbiBzZWRpYSBhZGEgdGlrZXQgdW50dWsgcGVuZ2VzYWhhbiBhcnRpa2VsIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJ0tlYWRhYW4gc2VkaWEgYWRhIHVudHVrIGtlbWFzdWthbiBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdLZWFkYWFuIHNlZGlhIGFkYSB0aWtldCB1bnR1ayBwZW5nZXNhaGFuIGRhcmlwYWRhIGFydGlrZWwgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHZhbHVlIGZvciB0aGUgQWN0aW9uIHBhcmFtZXRlciBmb3IgdGhlIHB1YmxpYyBmcm9udGVuZC4gVGhlIEFjdGlvbiBwYXJhbWV0ZXIgaXMgdXNlZCBpbiB0aGUgc2NyaXB0cyBvZiB0aGUgc3lzdGVtLid9ID0KICAgICAgICAnTmlsYWkgc2VkaWEgYWRhIHVudHVrIHRpbmRha2FuIHBhcmFtZXRlciBrZXBhZGEgZGVwYW5ha2hpciB1bXVtLiBUaW5kYWthbiBwYXJhbWV0ZXIgZGlndW5ha2FuIGRhbGFtIHNrcmlwIHNpc3RlbSB0ZXJzZWJ1dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBqb3VybmFsLid9ID0KICAgICAgICAnS2VuYWxwYXN0aSBsaWhhdCBzZW11bGEgbW9kdWwgdW50dWsgcGFwYXIgcGFwYXJhbiBrZWNpbCBkYXJpIEp1cm5hbCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgbGlzdC4nfSA9CiAgICAgICAgJ0tlbmFscGFzdGkgbGloYXQgc2VtdWxhIG1vZHVsIHVudHVrIHBhcGFyIHBhcGFyYW4ga2VjaWwgZGFyaSBzZW5hcmFpIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0tlbmFscGFzdGkgc2lmYXQgc2VkaWEgYWRhIEZBUSBtZW55dXN1biBkYWxhbSBjYXJpYW4gRkFRIGRhcmlwYWRhIGludGVyZmFjZSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS2VuYWxwYXN0aSBzaWZhdCBzZWRpYSBhZGEgRkFRIG1lbnl1c3VuIGRhbGFtIGNhcmlhbiBGQVEgZGFyaXBhZGEgaW50ZXJmYWNlIHBlbGFuZ2dhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLZW5hbHBhc3RpIHNpZmF0IHNlZGlhIGFkYSBGQVEgbWVueXVzdW4gZGFsYW0gY2FyaWFuIEZBUSBkYXJpcGFkYSBpbnRlcmZhY2UgdW11bS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLZW5hbHBhc3RpIHNpZmF0IHNlZGlhIGFkYSBGQVEgbWVueXVzdW4gZGFsYW0gY2FyaWFuIEZBUSBkYXJpcGFkYSBlamVuIGludGVyZmFjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBwZXJpbnRhaCBsYWxhaSBGQVEgaGFzaWwgY2FyaWFuIGRhbGFtIGFudGFyYSBtdWthIGVqZW4uIEF0YXM6IHRlcnR1YSBkaSBhdGFzLiBCYXdhaDogdGVyYmFydSBkaSBhdGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gcGVyaW50YWggbGFsYWkgRkFRIGhhc2lsIGNhcmlhbiBkYWxhbSBhbnRhcmEgbXVrYSBwZWxhbmdnYW4uIEF0YXM6IHRlcnR1YSBkaSBhdGFzLiBCYXdhaDogdGVyYmFydSBkaSBhdGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIHBlcmludGFoIGxhbGFpIEZBUSBoYXNpbCBjYXJpYW4gZGFsYW0gYW50YXJhIG11a2EgYXdhbS4gQXRhczogdGVydHVhIGRpIGF0YXMuIEJhd2FoOiB0ZXJiYXJ1IGRpIGF0YXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gbGFqdXIgbWVudW5qdWtrYW4gZGkgRXhwbG9yZXIgRkFRLiBQaWxpaGFuIGluaSB0aWRhayBtZW1wdW55YWkga2VzYW4ga2UgYXRhcyBrZWR1ZHVrYW4gdGlhbmcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIHJ1YW5nYW4geWFuZyBkaXR1bmp1a2thbiBkYWxhbSBqdXJuYWwgRkFRLiBQaWxpaGFuIGluaSB0aWRhayBtZW1wdW55YWkga2VzYW4ga2UgYXRhcyBrZWR1ZHVrYW4gdGlhbmcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gcnVhbmdhbiB5YW5nIGRpdHVuanVra2FuIGRhbGFtIGNhcmlhbiBGQVEuIFBpbGloYW4gaW5pIHRpZGFrIG1lbXB1bnlhaSBrZXNhbiBrZSBhdGFzIGtlZHVkdWthbiB0aWFuZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4gTm90ZTogQWdlbnRUaWNrZXRBY3Rpb25Db21tb24gaW5jbHVkZXMgQWdlbnRUaWNrZXROb3RlLCBBZ2VudFRpY2tldENsb3NlLCBBZ2VudFRpY2tldEZyZWVUZXh0LCBBZ2VudFRpY2tldE93bmVyLCBBZ2VudFRpY2tldFBlbmRpbmcsIEFnZW50VGlja2V0UHJpb3JpdHkgYW5kIEFnZW50VGlja2V0UmVzcG9uc2libGUuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gbWFuYSBwYXV0YW4gXCdNYXN1a2thbiBGQVEgXCcgYWthbiBkaXBhcGFya2FuLiBOb3RhOiBBZ2VudFRpY2tldEFjdGlvbkNvbW1vbiB0ZXJtYXN1ayBBZ2VudFRpY2tldE5vdGUsIEFnZW50VGlja2V0Q2xvc2UsIEFnZW50VGlja2V0RnJlZVRleHQsIEFnZW50VGlja2V0T3duZXIsIEFnZW50VGlja2V0UGVuZGluZywgQWdlbnRUaWNrZXRQcmlvcml0eSBkYW4gQWdlbnRUaWNrZXRSZXNwb25zaWJsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuJ30gPSAnRGVmaW5pc2kgaXRlbSBGQVEgcGVyY3VtYSBiaWRhbmcgdGVrcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHRoaXMgRkFRJ30gPSAnUGFkYW0gRkFRIGluaSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJ0F1ZGl0IEZBUSBpbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLid9ID0gJ0FrdGlma2FuIHBlbGJhZ2FpIGJhaGFzYSBwYWRhIG1vZHVsIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHZvdGluZyBtZWNoYW5pc20gb24gRkFRIG1vZHVsZS4nfSA9ICdBa3RpZmthbiB1bmRpYW4gbWVrYW5pc21hIHBhZGEgbW9kdWwgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCd9ID0gJ2p1cm5hbCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0p1cm5hbCBGQVEgbGloYXQgc2VtdWxhICJLZWNpbCIgaGFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnTGloYXQgc2VtdWxhIEZBUSBoYWQgImtlY2lsIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICdTb2FsYW4gTGF6aW0gaGFkIGJhZ2kgc2V0aWFwIGhhbGFtYW4gdW50dWsgVGluamF1YW4gSnVybmFsIEZBUSAiS2VjaWwiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBPdmVydmlldyAiU21hbGwiJ30gPSAnSGFkIEZBUSBzZXRpYXAgaGFsYW1hbiB1bnR1ayBUaW5qYXVhbiBGQVEgIktlY2lsIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHBhdGggc2VwYXJhdG9yLid9ID0gJ0xhbHVhbiBwZW1pc2FoIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJ0NhcmlhbiBTb2FsYW4gTGF6aW0gYmFja2VuZCByb3V0ZXIgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEtQXJlYSd9ID0gJ0thd2FzYW4gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJ0Zyb250ZW5kIHBlbmRhZnRhcmFuIG1vZHVsIHVudHVrIGFudGFyYSBtdWthIGF3YW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyb3VwIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0t1bXB1bGFuIGJhZ2kga2VsdWx1c2FuIGFydGlrZWwgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIHRoaXMgRkFRJ30gPSAnU2VqYXJhaCBGQVEgaW5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICdUZXJtYXN1ayBiaWRhbmcgZGFsYW1hbiBUaWtldCBiZXJhc2Fza2FuIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSB0aGUgbmFtZSBvZiBlYWNoIGZpZWxkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICdUZXJtYXN1ayBuYW1hIHNldGlhcCBiaWRhbmcgZGFsYW0gVGlrZXQgYmVyYXNhc2thbiBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVyZmFjZXMgd2hlcmUgdGhlIHF1aWNrc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICdBbnRhcmFtdWthIG1hbmEgZGVuZ2FuIFBhbnRhcyBoZW5kYWtsYWggZGl0dW5qdWtrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0pvdXJuYWwnfSA9ICdKdXJuYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ1Blbmd1cnVzYW4gQmFoYXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJ0ZBUSBwYXV0YW4gaW5pIGtlcGFkYSBvYmplayBsYWluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCaWxhbmdhbiBtYWtzaW11bSBhcnRpa2VsIEZBUSBha2FuIGRpcGFwYXJrYW4gZGFsYW0gaGFzaWwgRkFRIEV4cGxvcmVyIG11a2EgZWplbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCaWxhbmdhbiBtYWtzaW11bSBhcnRpa2VsIEZBUSBha2FuIGRpcGFwYXJrYW4gZGFsYW0gaGFzaWwgRkFRIEV4cGxvcmVyIG11a2EgcGVsYW5nZ2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JpbGFuZ2FuIG1ha3NpbXVtIEZBUSBhcnRpa2VsIHVudHVrIGRpcGFwYXJrYW4gZGFsYW0ganVybmFsIEZBUSBkaSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmlsYW5nYW4gbWFrc2ltdW0gYXJ0aWtlbCBGQVEgdW50dWsgZGlwYXBhcmthbiBkYWxhbSBoYXNpbCBjYXJpYW4gZGFsYW0gYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCaWxhbmdhbiBtYWtzaW11bSBhcnRpa2VsIEZBUSB1bnR1ayBkaXBhcGFya2FuIGRhbGFtIGhhc2lsIGNhcmlhbiBkYWxhbSBhbnRhcmEgbXVrYSBwZWxhbmdnYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JpbGFuZ2FuIG1ha3NpbXVtIGFydGlrZWwgRkFRIHVudHVrIGRpcGFwYXJrYW4gZGFsYW0gaGFzaWwgY2FyaWFuIGRhbGFtIGFudGFyYSBtdWthIGF3YW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgZmFxIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgZmFxIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2guJ30gPQogICAgICAgICdNb2R1bCB1bnR1ayBtZW5qYW5hIGh0bWwgcHJvZmlsIG9wZW5zZWFyY2ggdW50dWsgY2FyaWFuIGZhcSByaW5na2FzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUnfSA9ICdQZXJrYXJhIEJhcnUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJ0FydGlrZWwgYmFydSBGQVEgcGVybHUga2VsdWx1c2FuIHNlYmVsdW0gbWVyZWthIG1lbmRhcGF0IGRpdGVyYml0a2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCaWxhbmdhbiBhcnRpa2VsIEZBUSB1bnR1ayBkaXBhcGFya2FuIGRhbGFtIEV4cGxvcmVyIEZBUSBhbnRhcmEgbXVrYSBwZWxhbmdnYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JpbGFuZ2FuIGFydGlrZWwgRkFRIHVudHVrIGRpcGFwYXJrYW4gZGFsYW0gRXhwbG9yZXIgRkFRIGFudGFyYSBtdWthIGF3YW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmlsYW5nYW4gYXJ0aWtlbCBGQVEgdW50dWsgZGlwYXBhcmthbiBwYWRhIHNldGlhcCBoYWxhbWFuIGhhc2lsIGNhcmlhbiBkYWxhbSBhbnRhcmEgbXVrYSBwZWxhbmdnYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JpbGFuZ2FuIGFydGlrZWwgRkFRIGFrYW4gZGlwYXBhcmthbiBwYWRhIHNldGlhcCBoYWxhbWFuIGhhc2lsIGNhcmlhbiBkYWxhbSBhbnRhcmEgbXVrYSBhd2FtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLid9ID0gJ0JpbGFuZ2FuIGl0ZW0geWFuZyBkaXR1bmp1a2thbiBkYWxhbSBwZXJ1YmFoYW4gdGVyYWtoaXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJ30gPSAnQmlsYW5nYW4gaXRlbSB5YW5nIGRpdHVuanVra2FuIGRhbGFtIHRlcmFraGlyIGRpY2lwdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuJ30gPSAnQmlsYW5nYW4gaXRlbSB5YW5nIGRpdHVuanVra2FuIGRhbGFtIDEwIHRlcmF0YXMgY2lyaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBqb3VybmFsIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIG11a2Egc3VyYXQgKGRpIG1hbmEgaXRlbSBGQVEgZGl0dW5qdWtrYW4pIGdhbWJhcmFuIGtlY2lsIGp1cm5hbCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgb3ZlcnZpZXcuJ30gPQogICAgICAgICdQYXJhbWV0ZXIgdW50dWsgbXVrYSBzdXJhdCAoZGkgbWFuYSBpdGVtIEZBUSBkaXR1bmp1a2thbikgZ2FtYmFyYW4ga2VzZWx1cnVoYW4gRkFRIGtlY2lsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludCB0aGlzIEZBUSd9ID0gJ0NldGFrIGhhbGFtYW4gRkFRIGluaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWV1ZSBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdCZXJhdHVyIHVudHVrIGtlbHVsdXNhbiBhcnRpa2VsIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC4nfSA9ICdLYWRhciB1bnR1ayBtZW5ndW5kaS4gS3VuY2kgbWVzdGlsYWggZGFsYW0gcGVyYXR1cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSd9ID0gJ0NhcmlhbiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJ1R1bmp1a2thbiAiU2lzaXBhbiBGQVEgTGluayIgQnV0YW5nIGRpIEFnZW50RkFRWm9vbVNtYWxsIHVudHVrIGF3YW0gRkFRIEFydGlrZWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIC8gIkluc2VydCBGdWxsIEZBUSIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJ1BhcGFyIEZBUSBQZXJrYXJhIGRlbmdhbiBIVE1MLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICdQYXBhciBGQVEgamFsYW4geWEgLyB0aWRhay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJ1BhcGFyIGl0ZW0gc3Via2F0ZWdvcmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ01lbnVuanVra2FuIGl0ZW0gcGVydWJhaGFuIHRlcmFraGlyIGRhbGFtIGFudGFyYSBtdWthIHlhbmcgZGl0YWtyaWZrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjcmVhdGVkIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdUdW5qdWtrYW4gYWtoaXIgbWVuY2lwdGEgaXRlbSBkYWxhbSBhbnRhcmEgbXVrYSB5YW5nIGRpdGFrcmlma2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRvcCAxMCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnUGFwYXIgdG9wIDEwIGl0ZW0gZGFsYW0gYW50YXJhIG11a2EgeWFuZyBkaXRha3JpZmthbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ1BhcGFyIG1lbmd1bmRpIGRhbGFtIGFudGFyYSBtdWthIHlhbmcgZGl0YWtyaWZrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgRkFRIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIHpvb20gdmlldyBvZiBzdWNoIEZBUSBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudW5qdWtrYW4gcGF1dGFuIGRhbGFtIG1lbnUgeWFuZyBtZW1ib2xlaGthbiBtZW5naHVidW5na2FuIEZBUSBkZW5nYW4gb2JqZWsgbGFpbiBkYWxhbSBwYW5kYW5nYW4gem9vbSBGQVEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIHBhdXRhbiBkaSBiYXIgbWVudSBkYWxhbSBwYW5kYW5nYW4gZGl6dW0gZGFsYW0gYW50YXJhIG11a2EgcGVsYW5nZ2FuIHlhbmcgbWVtYm9sZWhrYW4gdW50dWsgbWVtYWRhbSBhcnRpa2VsIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBwYXV0YW4gZGkgYmFyIG1lbnUgZGFsYW0gcGFuZGFuZ2FuIGRpenVtIGRhbGFtIGVqZW4gdW50dWsgbWVsaWhhdCBzZWphcmFoIGFydGlrZWwgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudW5qdWtrYW4gcGF1dGFuIGRpIGJhciBtZW51IGRhbGFtIHBhbmRhbmdhbiBkaXp1bSBkYWxhbSBhbnRhcmEgbXVrYSBwZWxhbmdnYW4geWFuZyBtZW1ib2xlaGthbiB1bnR1ayBtZW5nZWRpdCBhcnRpa2VsIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIHBhdXRhbiBkaSBiYXIgbWVudSBkYWxhbSBwYW5kYW5nYW4gZGl6dW0gZGFsYW0gYW50YXJhIG11a2EgcGVsYW5nZ2FuIHlhbmcgbWVtYm9sZWhrYW4gdW50dWsga2VtYmFsaSBrZSBoYWxhbWFuIHNlYmVsdW1ueWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudW5qdWtrYW4gcGF1dGFuIGRpIGJhciBtZW51IGRhbGFtIHBhbmRhbmdhbiBkaXp1bSBkYWxhbSBhbnRhcmEgbXVrYSBlamVuLCB5YW5nIG1lbWJvbGVoa2FuIHVudHVrIG1lbmNldGFrIGFydGlrZWwgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBGQVEsIGUuZy4gRkFRIywgS0IjLCBNeUZBUSMuIFRoZSBkZWZhdWx0IGlzIEZBUSMuJ30gPQogICAgICAgICdQZW5nZWNhbSB1bnR1ayBpdGVtIEZBUSwgc2VwZXJ0aSBGQVEgIywgIyBLQiwgTXlGQVEgIy4gTmlsYWkgbGFsYWkgYWRhbGFoICMgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIGJhaGF3YSBcJyBGQVFcJyBvYmplayBkZW5nYW4gamVuaXMgcGF1dGFuIFwnYmlhc2FcJyBsYWluIFwnVGlrZXRcJyBib2xlaCBkaWthaXRrYW4gZGVuZ2FuIG9iamVrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgYm9keSBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnQmFkYW4gdGlrZXQgdW50dWsgbWVsZXBhc2thbiBhcnRpa2VsIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IHN1YmplY3QgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ1RlcnRha2x1ayBrZXBhZGEgdGlrZXQgdW50dWsgbWVsZXBhc2thbiBhcnRpa2VsIEZBUS4nOwoKICAgICMKICAgICMgT0JTT0xFVEUgRU5UUklFUyBGT1IgUkVGRVJFTkNFLCBETyBOT1QgVFJBTlNMQVRFIQogICAgIwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIHNpZmF0IGxhbGFpIEZBUSB1bnR1ayBtZW55dXN1biBFeHBsb3JlciBGQVEgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBzaWZhdCBsYWxhaSBGQVEgdW50dWsgbWVueXVzdW4gRXhwbG9yZXIgRkFRIGRhbGFtIGFudGFyYSBtdWthIHBlbGFuZ2dhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gc2lmYXQgbGFsYWkgRkFRIHVudHVrIG1lbnl1c3VuIEV4cGxvcmVyIEZBUSBkYWxhbSBhbnRhcmFtdWthIEF3YW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBleHBsb3JlciBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBzb3J0aW5nIGxhbGFpIEV4cGxvcmVyIEZBUSBkYWxhbSBhbnRhcmEgbXVrYSBwZWxhbmdnYW4uIEluOiBFbGRlciBGQVEgYXJ0aWtlbCBkaSBhdGFzLiBGcm9tOiBBcnRpa2VsIEZBUSBOZXdlc3QgYXRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBzb3J0aW5nIGxhbGFpIEV4cGxvcmVyIEZBUSBtdWthIEF3YW0uIEluOiBFbGRlciBGQVEgYXJ0aWtlbCBkaSBhdGFzLiBGcm9tOiBBcnRpa2VsIEZBUSBOZXdlc3QgYXRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBFeHBsb3JlciByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gc29ydGluZyBsYWxhaSBFeHBsb3JlciBGQVEgZGkgYW50YXJhIG11a2EgcGVsYW5nZ2FuLiBJbjogRWxkZXIgRkFRIGFydGlrZWwgZGkgYXRhcy4gRnJvbTogQXJ0aWtlbCBGQVEgdGVyYmFydSBhdGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGU6ICd9ID0gJ1BhZGFtOiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2VrZXkgd2hpY2ggaXMgZGVmaW5lZCBpbiB0aGUgbGFuZ3VhZ2UgZmlsZSAqX0ZBUS5wbS4nfSA9ICdLdW5jaSBiYWhhc2EgeWFuZyBkaXRha3JpZmthbiBkYWxhbSBmYWlsIGJhaGFzYSAqIF9GQVEucG0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCaWxhbmdhbiBtYWtzaW11bSBGQVEgYXJ0aWtlbCB5YW5nIG11bmN1bCBkaSBFeHBsb3JlciBGQVEgZGFsYW0gYW50YXJhIG11a2EgcGVsYW5nZ2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBleHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JpbGFuZ2FuIG1ha3NpbXVtIEZBUSBhcnRpa2VsIHlhbmcgbXVuY3VsIGRpIEV4cGxvcmVyIEZBUSBkaSBNdWthIEF3YW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIEV4cGxvcmVyIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCaWxhbmdhbiBtYWtzaW11bSBhcnRpa2VsIEZBUSB5YW5nIG11bmN1bCBkYWxhbSBFeHBsb3JlciBGQVEgZGkgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmlsYW5nYW4gYXJ0aWtlbCBGQVEgeWFuZyBtdW5jdWwgZGFsYW0gY2FyaWFuIEZBUSBkYWxhbSBhbnRhcmEgbXVrYSBwZWxhbmdnYW4gc2V0aWFwIGhhbGFtYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCaWxhbmdhbiBhcnRpa2VsIEZBUSB5YW5nIG11bmN1bCBkYWxhbSBjYXJpYW4gRkFRIGRhbGFtIGFudGFyYSBtdWthIEF3YW0gcGVyIGhhbGFtYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBleHBsb3JlciBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmlsYW5nYW4gYXJ0aWtlbCBGQVEgeWFuZyBtdW5jdWwgZGFsYW0gRXhwbG9yZXIgRkFRIGRhbGFtIGFudGFyYSBtdWthIHBlbGFuZ2dhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmlsYW5nYW4gYXJ0aWtlbCBGQVEgeWFuZyBtdW5jdWwgZGFsYW0gRXhwbG9yZXIgRkFRIGRpIE11a2EgQXdhbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnUGFwYXIgIlNpc2lwYW4gRkFRIFRla3MgJiBMaW5rIiBCdXR0b24gZGkgQWdlbnRGQVFab29tU21hbGwgdW50dWsgQXJ0aWtlbCBGQVEgYXdhbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPSAnUGFwYXIgIlNpc2lwYW4gRkFRIFRla3MiIEJ1dHRvbiBkYWxhbSBBZ2VudEZBUVpvb21TbWFsbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJ0xpaGF0ICJNYXN1a2thbiBQYXV0YW4iIGJ1dGFuZyBkaSBBZ2VudEZBUVpvb21TbWFsbCB1bnR1ayBhcnRpa2VsIEZBUSBhd2FtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgVGV4dCAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJ0xpaGF0ICJUZWtzICYgUGFzdGUgTGluayIgYnV0YW5nIGRpIEFnZW50RkFRWm9vbVNtYWxsIHVudHVrIGFydGlrZWwgRkFRIGF3YW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBUZXh0IiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPSAnTGloYXQgIk1hc3Vra2FuIHRla3MiIGJ1dGFuZyBkaSBBZ2VudEZBUVpvb21TbWFsbCB1bnR1ayBhcnRpa2VsIEZBUSBhd2FtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IFdZU0lXWUcgZWRpdG9yIGluIGFnZW50IGludGVyZmFjZS4nfSA9ICdQYXBhciBlZGl0b3IgV1lTSVdZRyBkYWxhbSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJ29iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJ29iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCdsaW5rIHR5cGUuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gYmFoYXdhIFwnRkFRXCdvYmplayBkZW5nYW4gamVuaXMgcGF1dGFuIFwnYmlhc2EgXCdsYWluIFwnRkFRXCdvYmplayBib2xlaCBkaWthaXRrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYW4gXCdGQVFcJ29iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJ29iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJ2xpbmsgdHlwZS4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBiYWhhd2EgXCdGQVFcJ29iamVrIGRlbmdhbiBqZW5pcyBwYXV0YW4gXCdJYnUgQmFwYSBLYW5hay1rYW5hayBcJ2xhaW4gXCdGQVFcJ29iamVrIGl0dSBib2xlaCBkaWthaXRrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYW4gXCdGQVFcJ29iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJ29iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJ2xpbmsgdHlwZS4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBiYWhhd2EgXCdGQVFcJ29iamVrIGRlbmdhbiBqZW5pcyBwYXV0YW4gXCdJYnUgQmFwYSBLYW5hay1rYW5hayBcJ2xhaW4gXCdUaWtldCBcJ2JvbGVoIGRpa2FpdGthbiBkZW5nYW4gb2JqZWsuJzsKCn0KCjE7Cg==
IyAtLQojIEtlcm5lbC9MYW5ndWFnZS9uYl9OT19GQVEucG0gLSB0cmFuc2xhdGlvbiBmaWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Okxhbmd1YWdlOjpuYl9OT19GQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFBQUZBUQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICdpbnRlcm50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ3B1Ymxpc2VyZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICdla3N0ZXJudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAnT1NTLW51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdTaXN0IG9wcGRhdGVydGUgT1NTLWFydGlrbGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ1Npc3Qgb3BwcmV0dGVkZSBPU1MtYXJ0aWtsZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9wIDEwIEZBUSBhcnRpY2xlcyd9ID0gJ1RvcHAgMTAgT1NTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3J5IG9mJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2VsZWN0ZWQhJ30gPSAnSW5nZW4gcmF0aW5nIHZhbGd0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGxvcmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAoYWxsKSd9ID0gJ29mZmVudGxpZyAoYWxsZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwgKGN1c3RvbWVyKSd9ID0gJ2t1biB0aWwga3VuZGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsIChhZ2VudCknfSA9ICdrdW4gaW50ZXJudCAoYWdlbnRlciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgZGF5J30gPSAnU3RhcnRkYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgbW9udGgnfSA9ICdNw6VuZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgeWVhcid9ID0gJ8OFcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgZGF5J30gPSAnU2x1dHRkYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG1vbnRoJ30gPSAnTcOlbmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCB5ZWFyJ30gPSAnw4VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rcyBmb3IgeW91ciB2b3RlISd9ID0gJ1Rha2sgZm9yIGRpbiBzdGVtbWUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJ30gPSAnRHUgaGFyIGFsbGVyZWRlIHN0ZW10JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIFByaW50J30gPSAnVXRza3JpZnQgYXYgT1NTLWFydGlra2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAoVG9wIDEwKSd9ID0gJ09TUy1hcnRpa2xlciAoVG9wcCAxMCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknfSA9ICdPU1MtYXJ0aWtsZXIgKG55bGlnIG9wcHJldHRldCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ09TUy1hcnRpa2xlciAobnlsaWcgZW5kcmV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgdXBkYXRlZCEnfSA9ICdPU1Mta2F0ZWdvcmkgb3BwZGF0ZXJ0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgYWRkZWQhJ30gPSAnT1NTLWthdGVnb3JpIGxhZ3QgdGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBuYW1lISd9ID0gJ0VuIGthdGVnb3JpIG3DpSBoYSBldCBuYXZuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzJ30gPSAnRGVubmUga2F0ZWdvcmllbiBla3Npc3RlcmVyIGFsbGVyZWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSBhZGRlZCEnfSA9ICdPU1Mtc3Byw6VrIGxhZ3QgdGlsISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICdPU1Mtc3Byw6VrIG9wcGRhdGVydCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJ30gPSAnTmF2biBlciBww6VrcmV2ZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBhbHJlYWR5IGV4aXN0cyEnfSA9ICdEZXR0ZSBzcHLDpWtldCBmaW5uZXMgYWxsZXJlZGUhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudERhc2hib2FyZEZBUU92ZXJ2aWV3CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgQXJ0aWNsZSd9ID0gJ0xlZ2cgdGlsIE9TUy1hcnRpa2tlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3Jkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IGlzIHJlcXVpcmVkLid9ID0gJ0thdGVnb3JpIGVyIG9ibGlnYXRvcmlzay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICdHb2RramVubmluZyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFDYXRlZ29yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIENhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdLYXRlZ29yaW9wcHNldHQgZm9yIE9TUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICdMZWdnIHRpbCBrYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ2F0ZWdvcnknfSA9ICdTbGV0dCBrYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJ09rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJ0xlZ2cgdGlsIGthdGVnb3JpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQ2F0ZWdvcnknfSA9ICdFbmRyZSBrYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxsIGJlIHNob3duIGFzIGNvbW1lbnQgaW4gRXhwbG9yZXIuJ30gPSAnVmlsIHZpc2VzIHNvbSBrb21tZW50YXIgaSB1dGZvcnNrZXJlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAnU2Frc2JlaGFuZGxlcmdydXBwZXIgc29tIGhhciB0aWxnYW5nIHRpbCBhcnRpa2xlciBpIGRlbm5lIGthdGVnb3JpZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyd9ID0gJ1ZpbCBkdSB2aXJrZWxpZyBzbGV0dGUgZGVubmUga2F0ZWdvcmllbj8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgY2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlIGFuZC9vciBpcyBwYXJlbnQgb2YgYXQgbGVhc3Qgb25lIG90aGVyIGNhdGVnb3J5J30gPQogICAgICAgICdEdSBrYW4gaWtrZSBzbGV0dGUgZGVubmUga2F0ZWdvcmllbiwgZm9yZGkgZGVuIGVyIGJydWt0IGkgbWluc3QgZW4gT1NTLWFydGlra2VsIG9nL2VsbGVyIGZvcmVsZHJlIHRpbCBtaW5zdCBlbiBhbm5lbiBrYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgYXJ0aWNsZShzKSd9ID0gJ0Rlbm5lIGthdGVnb3JpZW4gZXIgYnJ1a3QgaSBmw7hsZ2VuZGUgT1NTLWFydGlrbGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJ0Rlbm5lIGthdGVnb3JpZW4gZXIgZm9yZWxkcmUgdGlsIGbDuGxnZW5kZSB1bmRlcmthdGVnb3JpZXInOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgRkFRIGFydGljbGU/J30gPSAnVmlsIGR1IHZpcmtlbGlnIHNsZXR0ZSBkZW5uZSBhcnRpa2tlbGVuPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFeHBsb3Jlcid9ID0gJ1V0Zm9yc2tlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWljayBTZWFyY2gnfSA9ICdIdXJ0aWdzw7hrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGRjYXJkcyBhcmUgYWxsb3dlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWR2YW5jZWQgU2VhcmNoJ30gPSAnQXZhbnNlcnQgc8O4ayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnVW5kZXJrYXRlZ29yaWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ09mdGUgU3RpbHRlIFNww7hyc23DpWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICdJbmdlbiB1bmRlcmthdGVnb3JpZXIgZnVubmV0JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUhpc3RvcnkKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUpvdXJuYWxPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgSm91cm5hbCBkYXRhIGZvdW5kLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFMYW5ndWFnZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdTcHLDpWtvcHBzZXR0IGZvciBPU1MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGxhbmd1YWdlJ30gPSAnTGVnZyB0aWwgc3Byw6VrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBMYW5ndWFnZSd9ID0gJ1NsZXR0IHNwcsOlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTGFuZ3VhZ2UnfSA9ICdMZWdnIHRpbCBzcHLDpWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJ0VuZHJlIHNwcsOlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgYXJ0aWNsZXMgcGVyIHBhZ2UnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGRhdGEgZm91bmQuJ30gPSAnSW5nZW4gYXJ0aWtsZXIgZnVubmV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZ2VuZXJpYyBGQVEgdGFibGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnIiwiNTAnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRUHJpbnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUS1JbmZvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGVzJ30gPSAnU3RlbW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IHVwZGF0ZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSAoZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIChlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVFGdWxsdGV4dCd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBTZWFyY2gnfSA9ICdPU1Mtc8O4ayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2gtUHJvZmlsZSBhcyBUZW1wbGF0ZT8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHJhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgZGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIHJhbmdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ0luZm8gb20gT1NTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyIsIjE4J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyIsIjI1J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJ1JhdGluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcgJSd9ID0gJ1JhdGluZyAlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J291dCBvZiA1J30gPSAnYXYgNSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICdJbmdlbiBzdGVtbWVyIGZ1bm5ldCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLid9ID0gJ0luZ2VuIHN0ZW1tZXIgYXZnaXR0ISBCbGkgZGVuIGbDuHJzdGUgdGlsIMOlIHN0ZW1tZSBww6UgZGVubmUgYXJ0aWtrZWxlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG93bmxvYWQgQXR0YWNobWVudCd9ID0gJ0xhc3QgbmVkIHZlZGxlZ2cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSG93IGhlbHBmdWwgd2FzIHRoaXMgYXJ0aWNsZT8gUGxlYXNlIGdpdmUgdXMgeW91ciByYXRpbmcgYW5kIGhlbHAgdG8gaW1wcm92ZSB0aGUgRkFRIERhdGFiYXNlLiBUaGFuayBZb3UhJ30gPQogICAgICAgICdWYXIgZGVubmUgYXJ0aWtrZWxlbiB0aWwgaGplbHA/IFbDpnIgc25pbGwgb2cgZ2kgb3NzIGRpbiBzdGVtbWUsIHNsaWsgYXQgdmkga2FuIGZvcmJlZHJlIGRhdGFiYXNlbi4gVHVzZW4gdGFrayEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICdpa2tlIHRpbCBoamVscCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICd2ZWxkaWcgbnl0dGlnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQnfSA9ICdTZXR0IGlubiBPU1MtdGVrc3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgTGluayd9ID0gJ1NldHQgaW5uIE9TUy1sZW5rZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQgJiBMaW5rJ30gPSAnU2V0dCBpbm4gT1NTLXRla3N0IG9nIC1sZW5rZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEgJiBMaW5rJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgYXJ0aWNsZXMgZm91bmQuJ30gPSAnSW5nZW4gT1NTLWFydGlrbGVyIGJsZSBmdW5uZXQnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRUHJpbnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbHRleHQgc2VhcmNoIGluIEZBUSBhcnRpY2xlcyAoZS4gZy4gIkpvaG4qbiIgb3IgIldpbGwqIiknfSA9ICdGdWxsdGVrc3Rzw7hrIGkgT1NTLWFydGlrbGVyIChmLmVrcy4gIk9sKiIgZWxsZXIgIkFuZHJlYXMqbiInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSByZXN0cmljdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCB2b3Rlcy4uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSByZXN0cmljdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCByYXRlLi4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbFRleHQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hSZXN1bHRTaG9ydAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGZvciBhcnRpY2xlcyB3aXRoIGtleXdvcmQnfSA9ICdTw7hrIGV0dGVyIGFydGlrbGVyIG1lZCBuw7hra2Vsb3JkJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFFeHBsb3JlcgoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVByaW50CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoCgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGxUZXh0CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRTaG9ydAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVpvb20KCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBmaWx0ZXIgZm9yIEhUTUwgb3V0cHV0IHRvIGFkZCBsaW5rcyBiZWhpbmQgYSBkZWZpbmVkIHN0cmluZy4gVGhlIGVsZW1lbnQgSW1hZ2UgYWxsb3dzIHR3byBpbnB1dCBraW5kcy4gRmlyc3QgdGhlIG5hbWUgb2YgYW4gaW1hZ2UgKGUuZy4gZmFxLnBuZykuIEluIHRoaXMgY2FzZSB0aGUgT1RSUyBpbWFnZSBwYXRoIHdpbGwgYmUgdXNlZC4gVGhlIHNlY29uZCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgdGhlIGxpbmsgdG8gdGhlIGltYWdlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnQ1NTLWZhcmdlIGZvciBhdnN0ZW1uaW5nc3Jlc3VsdGF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0thdGVnb3Jpb3Bwc2V0dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICdBbnRhbGwgZGVzaW1hbGVyIGZvciBhdnN0ZW1uaW5nc3Jlc3VsdGF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgY2F0ZWdvcnkgbmFtZS4nfSA9ICdGb3J2YWxndCBrYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGxhbmd1YWdlIGZvciBGQVEgYXJ0aWNsZXMgb24gc2luZ2xlIGxhbmd1YWdlIG1vZGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgcHJpb3JpdHkgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9CiAgICAgICAgJ1N0YW5kYXJkIHByaW9yaXRldCBmb3Igc2FrZXIgZm9yIGdvZGtqZW5uaW5nIGF2IE9TUy1hcnRpa2xlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJ1N0YW5kYXJkIHN0YXR1cyBmb3IgZXQgT1NTLW9iamVrdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ1N0YW5kYXJkIHN0YXR1cyBmb3Igc2FrZXIgZm9yIGdvZGtqZW5uaW5nIGF2IE9TUy1hcnRpa2xlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIEFjdGlvbiBwYXJhbWV0ZXIgZm9yIHRoZSBwdWJsaWMgZnJvbnRlbmQuIFRoZSBBY3Rpb24gcGFyYW1ldGVyIGlzIHVzZWQgaW4gdGhlIHNjcmlwdHMgb2YgdGhlIHN5c3RlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGpvdXJuYWwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBsaXN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBpbmZvcm1hdGlvbiB0byBiZSBpbnNlcnRlZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuICJGdWxsIEZBUSIgaW5jbHVkZXMgdGV4dCwgYXR0YWNobWVudHMgYW5kIGlubGluZSBpbWFnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4gTm90ZTogQWdlbnRUaWNrZXRBY3Rpb25Db21tb24gaW5jbHVkZXMgQWdlbnRUaWNrZXROb3RlLCBBZ2VudFRpY2tldENsb3NlLCBBZ2VudFRpY2tldEZyZWVUZXh0LCBBZ2VudFRpY2tldE93bmVyLCBBZ2VudFRpY2tldFBlbmRpbmcsIEFnZW50VGlja2V0UHJpb3JpdHkgYW5kIEFnZW50VGlja2V0UmVzcG9uc2libGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuJ30gPSAnRGVmaW5pc2pvbiBhdiBmcml0ZWtzdGZlbHQgZm9yIE9TUy1hcnRpa2xlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgdGhpcyBGQVEnfSA9ICdTbGV0dCBkZW5uZSBhcnRpa2tlbGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgdGhpcyBGQVEnfSA9ICdFbmRyZSBkZW5uZSBhcnRpa2tlbGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBtdWx0aXBsZSBsYW5ndWFnZXMgb24gRkFRIG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHZvdGluZyBtZWNoYW5pc20gb24gRkFRIG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwnfSA9ICdPU1Mtam91cm5hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBPdmVydmlldyAiU21hbGwiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBwYXRoIHNlcGFyYXRvci4nfSA9ICdTZXBhcmF0b3IgZm9yIE9TUy1zdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEtQXJlYSd9ID0gJ09TUy1vbXLDpWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJ01vZHVscmVnaXN0cmVyaW5nIGZvciBkZW4gb2ZmZW50bGlnZSBkZWxlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdHcnVwcGUgc29tIHNrYWwgZ29ka2plbm5lIE9TUy1hcnRpa2xlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJ0hpc3RvcmlrayBvdmVyIGRlbm5lIGFydGlra2VsZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWlja3NlYXJjaCBzaG91bGQgYmUgc2hvd24uJ30gPSAnR3JlbnNlc25pdHQgZGVyIGh1cnRpZ3PDuGtldCBza2FsIHZpc2VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydKb3VybmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdTcHLDpWtvcHBzZXR0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJ0xlbmsgb3BwIGV0IGFubmV0IG9iamVrdCB0aWwgZGVubmUgYXJ0aWtrZWxlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgZmFxIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgZmFxIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2guJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBBcnRpY2xlJ30gPSAnTnkgT1NTLWFydGlra2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJ055ZSBhcnRpa2xlciB0cmVuZ2VyIGdvZGtqZW5uaW5nIGbDuHIgZGUga2FuIHB1Ymxpc2VyZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuJ30gPSAnQW50YWxsIG9iamVrdGVyIHZpc3QgaSBzaXN0ZSBlbmRyaW5nZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJ30gPSAnQW50YWxsIHZpc3RlIG9iamVrdGVyIHVuZGVyIHNpc3Qgb3BwcmV0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gdGhlIHRvcCAxMCBmZWF0dXJlLid9ID0gJ0FudGFsbCB2aXN0ZSBhcnRpa2xlciBpICJUb3BwIDEwIi1mdW5rc2pvbmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50IHRoaXMgRkFRJ30gPSAnU2tyaXYgdXQgZGVubmUgYXJ0aWtrZWxlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWV1ZSBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdLw7ggZm9yIGdvZGtqZW5uaW5nIGF2IE9TUy1hcnRpa2xlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC4nfSA9ICdSYXRlciBmb3IgYXZzdGVtbWluZy4gTsO4a2tlbCBtw6UgdsOmcmUgaSBwcm9zZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgLyAiSW5zZXJ0IEZ1bGwgRkFRICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCIgLyAiSW5zZXJ0IEZ1bGwgRkFRIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgQXJ0aWNsZSB3aXRoIEhUTUwuJ30gPSAnVmlzIEhUTUwgaSBPU1MtYXJ0aWtrZWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIHBhdGggeWVzL25vLid9ID0gJ1ZpcyBPU1Mtc3RpIChqYS9uZWkpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaXRlbXMgb2Ygc3ViY2F0ZWdvcmllcy4nfSA9ICdWaXMgaW5uaG9sZCBpIHVuZGVya2F0ZWdvcmllci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNoYW5nZSBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnVmlzIHNpc3QgZW5kcmVkZSBhcnRpa2xlciBpIGRlZmluZXJ0ZSBncmVuc2Vzbml0dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNyZWF0ZWQgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ1ZpcyBzaXN0IG9wcHJldHRlZGUgYXJ0aWtsZXIgaSBkZWZpbmVydGUgZ3JlbnNlc25pdHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ1ZpcyAiVG9wcCAxMCIgaSBkZWZpbmVydGUgZ3JlbnNlc25pdHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdm90aW5nIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdWaXMgYXZzdGVtbWluZyBpIGRlZmluZXJ0ZSBncmVuc2Vuc25pdHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBGQVEgd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgem9vbSB2aWV3IG9mIHN1Y2ggRkFRIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIHRvIGRlbGV0ZSBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgRkFRIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIEZBUSwgZS5nLiBGQVEjLCBLQiMsIE15RkFRIy4gVGhlIGRlZmF1bHQgaXMgRkFRIy4nfSA9CiAgICAgICAgJ0lkZW50aWZpa2F0b3IgZm9yIGVuIE9TUy1hcnRpa2tlbCwgZi5la3MuIEZBUSMsIEtCIywgT1NTIywgTWluT1NTIy4gU3RhbmRhcmQgZXIgRkFRIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnRGVubmUgaW5uc3RpbGxpbmdlbiBkZWZpbmVyZXIgYXQgZW4gT1NTLWFydGlra2VsIGthbiBsZW5rZXMgdGlsIGFuZHJlIE9TUy1hcnRpa2xlciBtZWQgIk5vcm1hbCIgbGVua2V0eXBlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0Rlbm5lIGlubnN0aWxsaW5nZW4gZGVmaW5lcmVyIGF0IGVuIE9TUy1hcnRpa2tlbCBrYW4gbGVua2VzIHRpbCBhbmRyZSBPU1MtYXJ0aWtsZXIgbWVkICJGb3JlbGRyZS9CYXJuIi1sZW5rZXR5cGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0Rlbm5lIGlubnN0aWxsaW5nZW4gZGVmaW5lcmVyIGF0IGVuIE9TUy1hcnRpa2tlbCBrYW4gbGVua2VzIHRpbCBhbmRyZSBzYWtlciBtZWQgIk5vcm1hbCIgbGVua2V0eXBlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0Rlbm5lIGlubnN0aWxsaW5nZW4gZGVmaW5lcmVyIGF0IGVuIE9TUy1hcnRpa2tlbCBrYW4gbGVua2VzIHRpbCBhbmRyZSBzYWtlciBtZWQgIkZvcmVsZHJlL0Jhcm4iLWxlbmtldHlwZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ1Nha3Npbm5ob2xkIGZvciBnb2RramVubmluZyBhdiBPU1MtYXJ0aWtsZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBzdWJqZWN0IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdTYWtzZW1uZSBmb3IgZ29ka2plbm5pbmcgYXYgT1NTLWFydGlrbGVyLic7CgogICAgIwogICAgIyBPQlNPTEVURSBFTlRSSUVTIEZPUiBSRUZFUkVOQ0UsIERPIE5PVCBUUkFOU0xBVEUhCiAgICAjCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IG5lZWRzIGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwISd9ID0gJ0VuIGthdGVnb3JpIHRyZW5nZXIgbWluc3Qgw6luIHRpbGdhbmdzZ3J1cHBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBjb21tZW50ISd9ID0gJ0VuIGthdGVnb3JpIG3DpSBoYSBlbiBrb21tZW50YXIhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FnZW50IGdyb3VwcyB3aGljaCBjYW4gYWNjZXNzIHRoaXMgY2F0ZWdvcnkuJ30gPSAnQWdlbnQtZ3J1cHBlciBzb20gaGFyIHRpbGdhbmcgdGlsIGRlbm5lIGthdGVnb3JpZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcmllcyd9ID0gJ0thdGVnb3JpZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4nfSA9ICdEZWZpbmVyZXIgaHZvciAiU2V0dCBpbm4gT1NTIi1sZW5rZW4gc2thbCB2aXNlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV0YWlsU2VhcmNoJ30gPSAnRGV0YWxqc8O4ayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgQ2F0ZWdvcnk/J30gPSAnVmlsIGR1IHZpcmtlbGlnIHNsZXR0ZSBkZW5uZSBrYXRnb3JpZW4/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBMYW5ndWFnZT8nfSA9ICdWaWwgZHUgdmlya2VsaWcgc2xldHRlIGRldHRlIHNwcsOla2V0Pyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnknfSA9ICdPU1Mta2F0ZWdvcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2VrZXkgd2hpY2ggaXMgZGVmaW5lZCBpbiB0aGUgbGFuZ3VhZ2UgZmlsZSAqX0ZBUS5wbS4nfSA9ICdMYW5ndWFnZUtleSBkZWZpbmVydCBpIHNwcsOla2ZpbGVuICpfRkFRLnBtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNhdGVnb3J5IGFjY2Vzc2libGUuIFRvIGNyZWF0ZSBhbiBhcnRpY2xlIHlvdSBuZWVkIGFjY2VzcyB0byBhdCBsZWFzdCBvbmUgY2F0ZWdvcnkuIFBsZWFzZSBjaGVjayB5b3VyIGdyb3VwL2NhdGVnb3J5IHBlcm1pc3Npb24gdW5kZXIgLWNhdGVnb3J5IG1lbnUtISd9ID0KICAgICAgICAnSW5nZW4gdGlsZ2FuZyB0aWwga2F0ZWdvcmkuIEZvciDDpSBvcHByZXR0ZSBlbiBhcnRpa2tlbCBtw6UgZHUgaGEgdGlsZ2FuZyB0aWwgbWluc3Qgw6luIGthdGVnb3JpLiBWZW5ubGlnc3Qgc2pla2sgZGluZSBncnVwcGUtL2thdGVnb3JpLXRpbGdhbmdlciB1bmRlciAta2F0ZWdvcmltZW55LSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWlja1NlYXJjaCd9ID0gJ0h1cnRpZ3PDuGsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBXWVNJV1lHIGVkaXRvciBpbiBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnVmlzIFdZU0lXWUctcmVkaWdlcmVyIGkgYWdlbnQtZGVsZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YkNhdGVnb3JpZXMnfSA9ICdVbmRlcmthdGVnb3JpZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHRpdGxlIGlzIHJlcXVpcmVkLid9ID0gJ0VtbmUgZXIgb2JsaWdhdG9yaXNrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIENhdGVnb3J5IGlzIHBhcmVudCBvZiB0aGUgZm9sbG93aW5nIFN1YkNhdGVnb3JpZXMnfSA9ICdEZW5uZSBrYXRlZ29yaWVuIGVyIGZvcmVsZGVyIHRpbCBmw7hsZ2VuZGUgdW5kZXJrYXRlZ29yaWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgQ2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2UocyknfSA9ICdEZW5uZSBrYXRlZ29yaWVuIGJydWtlcyBpIGbDuGxnZW5kZSBPU1MtYXJ0aWtsZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBMYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknfSA9ICdEZXR0ZSBzcHLDpWtldCBlciBpIGJydWsgcMOlIGbDuGxnZW5kZSBhcnRpa2xlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzISd9ID0gJ0Rlbm5lIGthdGVnb3JpZW4gZmlubmVzIGFsbGVyZWRlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGVkJ30gPSAnT3BwZGF0ZXJ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIENhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgQXJ0aWNsZSEgYW5kL29yIGlzIHBhcmVudCBvZiBhdCBsZWFzdCBhbm90aGVyIENhdGVnb3J5J30gPQogICAgICAgICdEdSBrYW4gaWtrZSBzbGV0dGUgZGVubmUga2F0ZWdvcmllbi4gRGVuIGJydWtlcyBhdiBtaW5zdCDDqW4gYXJ0aWtrZWwgb2cvZWxsZXIgYXYgbWluc3Qgw6luIHVuZGVya2F0ZWdvcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgTGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBBcnRpY2xlISd9ID0KICAgICAgICAnRHUga2FuIGlra2Ugc2xldHRlIGRldHRlIHNwcsOla2V0LCBkZXQgZXIgaSBicnVrIHDDpSBtaW5zdCDDqW4gYXJ0aWtrZWwuJzsKCn0KCjE7Cg==
IyAtLQojIEtlcm5lbC9MYW5ndWFnZS9ubF9GQVEucG0gLSB0cmFuc2xhdGlvbiBmaWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Okxhbmd1YWdlOjpubF9GQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFBQUZBUQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICdpbnRlcm4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljJ30gPSAncHVibGllayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCd9ID0gJ2V4dGVybic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAnRkFRIG51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdMYWF0c3QgZ2V3aWp6aWdkZSBhcnRpa2VsZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJ30gPSAnTGFhdHN0IGFhbmdlbWFha3RlIGFydGlrZWxlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3AgMTAgRkFRIGFydGljbGVzJ30gPSAnUG9wdWxhaXJzdGUgYXJ0aWtlbGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3J5IG9mJ30gPSAnU3ViY2F0ZWdvcmllIHZhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNlbGVjdGVkISd9ID0gJ0dlZW4gd2FhcmRlcmluZyBnZXNlbGVjdGVlcmQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGxvcmVyJ30gPSAnT3ZlcnppY2h0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAoYWxsKSd9ID0gJ3B1YmxpZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwgKGN1c3RvbWVyKSd9ID0gJ2V4dGVybiAoa2xhbnRlbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwgKGFnZW50KSd9ID0gJ2ludGVybiAoZ2VicnVpa2VycyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgZGF5J30gPSAnRWVyc3RlIGRhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBtb250aCd9ID0gJ0VlcnN0ZSBtYWFuZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCB5ZWFyJ30gPSAnRWVyc3RlIGphYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIGRheSd9ID0gJ0xhYXRzdGUgZGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBtb250aCd9ID0gJ0xhYXRzdGUgbWFhbmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIHllYXInfSA9ICdMYWF0c3RlIGphYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAnQmVkYW5rdCB2b29yIHV3IHN0ZW0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJ30gPSAnVSBoZWVmdCBhbCBnZXN0ZW1kLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBQcmludCd9ID0gJ0FydGlrZWwgYWZkcnVra2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAoVG9wIDEwKSd9ID0gJ0FydGlrZWxlbiAodG9wIDEwKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKG5ldyBjcmVhdGVkKSd9ID0gJ0FydGlrZWxlbiAobmlldXcgYWFuZ2VtYWFrdCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ0FydGlrZWxlbiAobGFhdHN0IGdld2lqemlnZCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IHVwZGF0ZWQhJ30gPSAnRkFRIGNhdGVnb3JpZSBiaWpnZXdlcmt0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgYWRkZWQhJ30gPSAnRkFRIGNhdGVnb3JpZSB0b2VnZXZvZWdkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEnfSA9ICdHZWVmIGVlbiBuYWFtIG9wIHZvb3IgZGUgY2F0ZWdvcmllLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzJ30gPSAnRGV6ZSBjYXRlZ29yaWUgYmVzdGFhdCBhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnVGFhbCB0b2VnZXZvZWdkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICdUYWFsIGJpamdld2Vya3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJ30gPSAnRGUgbmFhbSBpcyB2ZXJwbGljaHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMhJ30gPSAnRGV6ZSB0YWFsIGJlc3RhYXQgYWwuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudERhc2hib2FyZEZBUU92ZXJ2aWV3CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgQXJ0aWNsZSd9ID0gJ0FydGlrZWwgdG9ldm9lZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuJ30gPSAnS2llcyBlZW4gY2F0ZWdvcmllLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZhbCd9ID0gJ0dvZWRrZXVyaW5nJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0ZBUSBjYXRlZ29yaWViZWhlZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGNhdGVnb3J5J30gPSAnQ2F0ZWdvcmllIHRvZXZvZWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ2F0ZWdvcnknfSA9ICdDYXRlZ29yaWUgdmVyd2lqZGVyZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICdPayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQ2F0ZWdvcnknfSA9ICdDYXRlZ29yaWUgdG9ldm9lZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQ2F0ZWdvcnknfSA9ICdDYXRlZ29yaWUgYmV3ZXJrZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ1dvcmR0IGluIHdlYmludGVyZmFjZSBnZXRvb25kLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwLid9ID0gJ1NlbGVjdGVlciB0ZW5taW5zdGUgw6nDqW4gcGVybWlzc2llZ3JvZXAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FnZW50IGdyb3VwcyB0aGF0IGNhbiBhY2Nlc3MgYXJ0aWNsZXMgaW4gdGhpcyBjYXRlZ29yeS4nfSA9ICdHZWJydWlrZXJzIG1ldCByZWNodGVuIG9wIGFydGlrZWxlbiBpbiBkZXplIGNhdGVnb3JpZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyd9ID0gJ1dpbHQgdSBkZXplIGNhdGVnb3JpZSB2ZXJ3aWpkZXJlbj8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgY2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlIGFuZC9vciBpcyBwYXJlbnQgb2YgYXQgbGVhc3Qgb25lIG90aGVyIGNhdGVnb3J5J30gPQogICAgICAgICdVIGt1bnQgZGV6ZSBjYXRlZ29yaWUgbmlldCB2ZXJ3aWpkZXJlbi4gSGlqIHdvcmR0IGdlYnJ1aWt0IGluIGVlbiBvZiBtZWVyIGFydGlrZWxlbiBlbi9vZiBoZWVmdCBvbmRlcmxpZ2dlbmRlIGNhdGVnb3Jpw6tuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgYXJ0aWNsZShzKSd9ID0gJ0RlemUgY2F0ZWdvcmllIHdvcmR0IGdlYnJ1aWt0IGRvb3IgZGUgdm9sZ2VuZGUgYXJ0aWtlbGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJ0RlemUgY2F0ZWdvcmllIGhlZWZ0IGRlIHZvbGdlbmRlIHN1YmNhdGVnb3Jpw6tuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJ1dpbHQgdSBkaXQgYXJ0aWtlbCB2ZXJ3aWpkZXJlbj8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRJ30gPSAnRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICdGQVEgdmVya2VubmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrIFNlYXJjaCd9ID0gJ1pvZWtlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxkY2FyZHMgYXJlIGFsbG93ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkdmFuY2VkIFNlYXJjaCd9ID0gJ1VpdGdlYnJlaWQgem9la2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3JpZXMnfSA9ICdTdWJjYXRlZ29yacOrbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMnfSA9ICdBcnRpa2VsZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICdHZWVuIHN1YmNhdGVnb3Jpw6tuIGdldm9uZGVuLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFIaXN0b3J5CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZC4nfSA9ICdHZWVuIGRhdGEgZ2V2b25kZW4uJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ0JlaGVlciB0YWxlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWdlcy4nfSA9CiAgICAgICAgJ0dlYnJ1aWsgZGV6ZSBmZWF0dXJlIGFscyB1IG1ldCBtZWVyZGVyZSB0YWxlbiB3aWx0IHdlcmtlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGxhbmd1YWdlJ30gPSAnVGFhbCB0b2V2b2VnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIExhbmd1YWdlJ30gPSAnVGFhbCB2ZXJ3aWpkZXJlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTGFuZ3VhZ2UnfSA9ICdUYWFsIHRvZXZvZWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IExhbmd1YWdlJ30gPSAnVGFhbCBiZXdlcmtlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAnV2lsdCB1IGRlemUgdGFhbCB2ZXJ3aWpkZXJlbj8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgbGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlISd9ID0KICAgICAgICAnVSBrdW50IGRlemUgdGFhbCBuaWV0IHZlcndpamRlcmVuLCBoaWogd29yZHQgZ2VicnVpa3QgZG9vciBlZW4gb2YgbWVlciBhcnRpa2VsZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2xlKHMpJ30gPSAnRGV6ZSB0YWFsIGlzIGdlYnJ1aWt0IHZvb3IgZGUgdm9sZ2VuZGUgYXJ0aWtlbGVuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBhcnRpY2xlcyBwZXIgcGFnZSd9ID0gJ0FhbnRhbCBhcnRpa2VsZW4gcGVyIHBhZ2luYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgZGF0YSBmb3VuZC4nfSA9ICdHZWVuIEZBUSBkYXRhIGdldm9uZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGdlbmVyaWMgRkFRIHRhYmxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyIsIjUwJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVByaW50CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEtSW5mbyd9ID0gJ0ZBUSBJbmZvcm1hdGllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGVzJ30gPSAnU3RlbW1lbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IHVwZGF0ZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSAoZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIChlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVFGdWxsdGV4dCd9ID0gJ1pvZWtlbiBpbiBGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgU2VhcmNoJ30gPSAnRkFRIHpvZWtlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2gtUHJvZmlsZSBhcyBUZW1wbGF0ZT8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHJhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgZGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIHJhbmdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWF0aWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnIiwiMTgnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnIiwiMjUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nJ30gPSAnQmVvb3JkZWxpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nICUnfSA9ICdCZW9vcmRlbGluZyAlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J291dCBvZiA1J30gPSAndmFuIDUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhJ30gPSAnR2VlbiBzdGVtbWVuIGdldm9uZGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISBCZSB0aGUgZmlyc3Qgb25lIHRvIHJhdGUgdGhpcyBGQVEgYXJ0aWNsZS4nfSA9ICdHZWVuIHN0ZW1tZW4gZ2V2b25kZW4uIFdlZXMgZGUgZWVyc3RlIG9tIGRpdCBhcnRpa2VsIHRlIGJlb29yZGVsZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rvd25sb2FkIEF0dGFjaG1lbnQnfSA9ICdTbGEgYmlqbGFnZSBvcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9CiAgICAgICAgJ0hpZWxwIGRpdCBhcnRpa2VsIGJpaiBoZXQgYmVhbnR3b29yZGVuIHZhbiB1dyB2cmFhZz8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICdoZWxlbWFhbCBuaWV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ZlcnkgaGVscGZ1bCd9ID0gJ2hlZWwgZXJnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQnfSA9ICdWb2VnIEZBUSB0ZWtzdCBpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBMaW5rJ30gPSAnVm9lZyBsaW5rIG5hYXIgRkFRIGluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCAmIExpbmsnfSA9ICdWb2VnIEZBUSB0ZWtzdCBlbiBsaW5rIGluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSAmIExpbmsnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBhcnRpY2xlcyBmb3VuZC4nfSA9ICdHZWVuIGFydGlrZWxlbiBnZXZvbmRlbi4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRUHJpbnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbHRleHQgc2VhcmNoIGluIEZBUSBhcnRpY2xlcyAoZS4gZy4gIkpvaG4qbiIgb3IgIldpbGwqIiknfSA9ICdab2VrZW4gaW4gdGVrc3QgdmFuIGFydGlrZWxlbiAoYmlqdi4gIkphbnMqZW4iIG9mICJQcmludCoiKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIHJlc3RyaWN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHZvdGVzLi4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIHJlc3RyaWN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHJhdGUuLi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsVGV4dAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaFJlc3VsdFNob3J0CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcnRpY2xlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJ1pvZWsgb3AgYXJ0aWtlbGVuIG1ldCB0cmVmd29vcmQnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUUV4cGxvcmVyCgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRUHJpbnQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2gKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyd9ID0gJ09wZW5iYWFyJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsVGV4dAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFab29tCgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZmlsdGVyIGZvciBIVE1MIG91dHB1dCB0byBhZGQgbGlua3MgYmVoaW5kIGEgZGVmaW5lZCBzdHJpbmcuIFRoZSBlbGVtZW50IEltYWdlIGFsbG93cyB0d28gaW5wdXQga2luZHMuIEZpcnN0IHRoZSBuYW1lIG9mIGFuIGltYWdlIChlLmcuIGZhcS5wbmcpLiBJbiB0aGlzIGNhc2UgdGhlIE9UUlMgaW1hZ2UgcGF0aCB3aWxsIGJlIHVzZWQuIFRoZSBzZWNvbmQgcG9zc2liaWxpdHkgaXMgdG8gaW5zZXJ0IHRoZSBsaW5rIHRvIHRoZSBpbWFnZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYWNoZSBUaW1lIFRvIExlYXZlIGZvciBGQVEgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdCZWhlZXIgY2F0ZWdvcmnDq24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgY2F0ZWdvcnkgbmFtZS4nfSA9ICdTdGFuZGFhcmQgY2F0ZWdvcmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbGFuZ3VhZ2UgZm9yIEZBUSBhcnRpY2xlcyBvbiBzaW5nbGUgbGFuZ3VhZ2UgbW9kZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBwcmlvcml0eSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHZhbHVlIGZvciB0aGUgQWN0aW9uIHBhcmFtZXRlciBmb3IgdGhlIHB1YmxpYyBmcm9udGVuZC4gVGhlIEFjdGlvbiBwYXJhbWV0ZXIgaXMgdXNlZCBpbiB0aGUgc2NyaXB0cyBvZiB0aGUgc3lzdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIGpvdXJuYWwuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoZXJlIHRoZSBcJ0luc2VydCBGQVFcJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLiBOb3RlOiBBZ2VudFRpY2tldEFjdGlvbkNvbW1vbiBpbmNsdWRlcyBBZ2VudFRpY2tldE5vdGUsIEFnZW50VGlja2V0Q2xvc2UsIEFnZW50VGlja2V0RnJlZVRleHQsIEFnZW50VGlja2V0T3duZXIsIEFnZW50VGlja2V0UGVuZGluZywgQWdlbnRUaWNrZXRQcmlvcml0eSBhbmQgQWdlbnRUaWNrZXRSZXNwb25zaWJsZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHRoaXMgRkFRJ30gPSAnVmVyd2lqZGVyIGRpdCBhcnRpa2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgdGhpcyBGQVEnfSA9ICdCZXdlcmsgZGl0IGFydGlrZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCd9ID0gJ0ZBUSBqb3VybmFhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBPdmVydmlldyAiU21hbGwiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBwYXRoIHNlcGFyYXRvci4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEtQXJlYSd9ID0gJ0tub3dsZWRnZSBCYXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJ0dlc2NoaWVkZW5pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIGludGVybmFsIGZpZWxkcyBvbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgdGhlIG5hbWUgb2YgZWFjaCBmaWVsZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVyZmFjZXMgd2hlcmUgdGhlIHF1aWNrc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJ0xvZ2JvZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ0JlaGVlciB0YWxlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIGFub3RoZXIgb2JqZWN0IHRvIHRoaXMgRkFRIGl0ZW0nfSA9ICdLb3BwZWwgZWVuIGFuZGVyIG9iamVjdCBhYW4gZGl0IGFydGlrZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBmYXEgc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgQXJ0aWNsZSd9ID0gJ05pZXV3IGFydGlrZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50IHRoaXMgRkFRJ30gPSAnQXJ0aWtlbCBhZmRydWtrZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVldWUgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGVzIGZvciB2b3RpbmcuIEtleSBtdXN0IGJlIGluIHBlcmNlbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEnfSA9ICdab2VrZW4gaW4gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgLyAiSW5zZXJ0IEZ1bGwgRkFRICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCIgLyAiSW5zZXJ0IEZ1bGwgRkFRIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgQXJ0aWNsZSB3aXRoIEhUTUwuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIHBhdGggeWVzL25vLid9ID0gJ1Rvb24gRkFRIHBhZCBqYS9uZWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY2hhbmdlIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNyZWF0ZWQgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRvcCAxMCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdm90aW5nIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdUb29uIHN0ZW0tZmVhdHVyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnJzsKCiAgICAjCiAgICAjIE9CU09MRVRFIEVOVFJJRVMgRk9SIFJFRkVSRU5DRSwgRE8gTk9UIFRSQU5TTEFURSEKICAgICMKCn0KCjE7Cg==
IyAtLQojIEtlcm5lbC9MYW5ndWFnZS9wbF9GQVEucG0gLSB0cmFuc2xhdGlvbiBmaWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Okxhbmd1YWdlOjpwbF9GQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFBQUZBUQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICd3ZXduxJl0cnpuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMnfSA9ICdwdWJsaWN6bmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICd6ZXduxJl0cnpuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAnTnVtZXIgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCB1cGRhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ29zdGF0bmlvIHptaWVuaW9uZSBhcnR5a3XFgnkgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ29zdGF0bmlvIHV0d29yem9uZSBhcnR5a3XFgnkgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvcCAxMCBGQVEgYXJ0aWNsZXMnfSA9ICcxMCBuYWpsZXBzenljaCBhcnR5a3XFgsOzdyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcnkgb2YnfSA9ICdQb2RrYXRlZ29yaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICdOaWUgd3licmHFgmXFmyBvY2VueSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwbG9yZXInfSA9ICdFa3NwbG9yZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChhbGwpJ30gPSAncHVibGljem5lICh3c3p5c2N5KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCAoY3VzdG9tZXIpJ30gPSAnemV3bsSZdHJ6bmUgKGtsaWVuY2kpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsIChhZ2VudCknfSA9ICd3ZXduxJl0cnpuZSAoYWdlbmNpKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBkYXknfSA9ICdEemllxYQgcG9jesSFdGtvd3knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgbW9udGgnfSA9ICdNaWVzacSFYyBwb2N6xIV0a293eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCB5ZWFyJ30gPSAnUm9rIHBvY3rEhXRrb3d5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBkYXknfSA9ICdEemllxYQga2/FhGNvd3knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG1vbnRoJ30gPSAnTWllc2nEhWMga2/FhGNvd3knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIHllYXInfSA9ICdSb2sga2/FhGNvd3knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAnRHppxJlrdWplbXkgemEgb2RkYW5pZSBnxYJvc3UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJ30gPSAnSnXFvCByYXogZ8WCb3Nvd2HFgmXFmyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgUHJpbnQnfSA9ICdEcnVrdWogYXJ0eWt1xYIgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAoVG9wIDEwKSd9ID0gJ0FydHlrdcWCeSBGQVEgKDEwIG5hamxlcHN6eWNoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKG5ldyBjcmVhdGVkKSd9ID0gJ0FydHlrdcWCeSBGQVEgKG5vd2UpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknfSA9ICdBcnR5a3XFgnkgRkFRIChvc3RhdG5pbyB6bWllbmlvbmUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ0thdGVnb3JpYSBGQVEgemFrdHVhbGl6b3dhbmEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSBhZGRlZCEnfSA9ICdLYXRlZ29yaWEgRkFRIGRvZGFuYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAnS2F0ZWdvcmlhIHBvd2lubmEgcG9zaWFkYcSHIG5henfEmSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyd9ID0gJ1RhIGthdGVnb3JpYSBqdcW8IGlzdG5pZWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSBhZGRlZCEnfSA9ICdKxJl6eWsgRkFRIGRvZGFueSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIHVwZGF0ZWQhJ30gPSAnSsSZenlrIEZBUSB6YWt0dWFsaXpvd2FueSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJ30gPSAnTmF6d2EgamVzdCB3eW1hZ2FuYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBhbHJlYWR5IGV4aXN0cyEnfSA9ICdUZW4gasSZenlrIGp1xbwgaXN0bmllamUhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudERhc2hib2FyZEZBUU92ZXJ2aWV3CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgQXJ0aWNsZSd9ID0gJ0RvZGFqIGFydHlrdcWCIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3Jkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IGlzIHJlcXVpcmVkLid9ID0gJ0thdGVnb3JpYSBqZXN0IHd5bWFnYW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZhbCd9ID0gJ1phdHdpZXJkemVuaWUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQ2F0ZWdvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnWmFyesSFZHphbmllIGthdGVnb3JpYW1pIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICdEb2RhaiBrYXRlZ29yacSZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDYXRlZ29yeSd9ID0gJ1VzdcWEIGthdGVnb3JpxJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICdPayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQ2F0ZWdvcnknfSA9ICdEb2RhaiBrYXRlZ29yacSZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQ2F0ZWdvcnknfSA9ICdFZHl0dWoga2F0ZWdvcmnEmSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxsIGJlIHNob3duIGFzIGNvbW1lbnQgaW4gRXhwbG9yZXIuJ30gPSAnWm9zdGFuaWUgcG9rYXphbnkgamFrbyBrb21lbnRhcnogdyBla3NwbG9yZXJ6ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICdaYXpuYWN6IHByenluYWptbmllaiBqZWRuxIUgZ3J1cMSZIHVwcmF3bmllxYQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FnZW50IGdyb3VwcyB0aGF0IGNhbiBhY2Nlc3MgYXJ0aWNsZXMgaW4gdGhpcyBjYXRlZ29yeS4nfSA9ICdHcnVweSBhZ25ldMOzdywga3TDs3JlIG1hasSFIGRvc3TEmXAgZG8gdGVqIGthdGVnb3JpaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyd9ID0gJ0N6eSBuYSBwZXdubyBjaGNlc3ogdXN1bsSFxIcgdMSZIGthdGVnb3JpxJk/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAnTmllIG1vxbxlc3ogdXN1bsSFxIcgdGVqIGthdGVnb3JpaS4gSmVzdCBvbmEgdcW8eXdhbmEgcHJ6ZXogcHJ6eW5ham1uaWVqIGplZGVuIGFydHlrdcWCIEZBUSBsdWIvaSBqZXN0IHJvZHppY2VtIHByem5ham1uaWVqIGplZG5laiBpbm5laiBrYXRlZ29yaWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocyknfSA9ICdUYSBrYXRlZ29yaWEgamVzdCB1xbx5d2FuYSB3IG5hc3TEmXB1asSFY3ljaCBhcnR5a3XFgmFjaCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJ30gPSAnVGEga2F0ZWdvcmlhIGplc3Qgcm9kemljZW0gbmFzdMSZcHVqxIVjeWNoIHBvZGthdGVnb3JpaSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFEZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGQVEgYXJ0aWNsZT8nfSA9ICdDenkgbmEgcGV3bm8gY2hjZXN6IHVzdW7EhcSHIHRlbiBhcnR5a3XFgiBGQVE/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSd9ID0gJ0ZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEV4cGxvcmVyJ30gPSAnRWtzcGxvcmVyIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWljayBTZWFyY2gnfSA9ICdTenlia2llIHd5c3p1a2l3YW5pZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxkY2FyZHMgYXJlIGFsbG93ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkdmFuY2VkIFNlYXJjaCd9ID0gJ1d5c3p1a2l3YW5pZSB6YWF3YW5zb3dhbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcmllcyd9ID0gJ1BvZGthdGVnb3JpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMnfSA9ICdBcnR5a3XFgnkgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN1YmNhdGVnb3JpZXMgZm91bmQuJ30gPSAnQnJhayBwb2RrYXRlZ29yaWkuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUhpc3RvcnkKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUpvdXJuYWxPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgSm91cm5hbCBkYXRhIGZvdW5kLid9ID0gJ0JyYWsgZGFueWNoIHcgZHppZW5uaWt1IEZBUS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRTGFuZ3VhZ2UKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnWmFyesSFZHphbmllIGrEmXp5a2FtaSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VnZXMuJ30gPQogICAgICAgICdVxbx5aiB0ZWogZnVua2NqaSBqZcWbbGkgY2hjZXN6IHByYWNvd2HEhyB6IHdpZWxvbWEgasSZenlrYW1pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICdEb2RhaiBqxJl6eWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIExhbmd1YWdlJ30gPSAnVXN1xYQgasSZenlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJ0RvZGFqIGrEmXp5ayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IExhbmd1YWdlJ30gPSAnRWR5dHVqIGrEmXp5ayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAnQ3p5IG5hIHBld25vIGNoY2VzeiB1c3VuxIXEhyB0ZW4gasSZenlrPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBsYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUhJ30gPQogICAgICAgICdOaWUgbW/FvGVzeiB1c3VuxIXEhyB0ZWdvIGrEmXp5a2EuIEplc3Qgb24gdcW8eXdhbnkgdyBwcnp5bmFqbW5pZWogamVkbnltIGFydHlrdWxlIEZBUSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknfSA9ICdUZW4gasSZenlrIGplc3QgdcW8eXdhbnkgdyBuYXN0xJlwdWrEhWN5Y2ggYXJ0dWt1xYJhY2ggRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnVXN0YXdpZW5pYSBrb250ZWtzdG93ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgYXJ0aWNsZXMgcGVyIHBhZ2UnfSA9ICdMaWN6YmEgYXJ0eWt1xYLDs3cgRkFRIG5hIHN0cm9uxJknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGRhdGEgZm91bmQuJ30gPSAnQnJhayBkYW55Y2ggRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGdlbmVyaWMgRkFRIHRhYmxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyIsIjUwJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVByaW50CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEtSW5mbyd9ID0gJ0luZm8tRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGVzJ30gPSAnR8WCb3N5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUZ1bGx0ZXh0J30gPSAnRkFRIHBlxYJub3Rla3N0b3dvJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFNlYXJjaCd9ID0gJ1d5c3p1a2l3YW5pZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoLVByb2ZpbGUgYXMgVGVtcGxhdGU/J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGUgc2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgdm90ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyByYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIGRhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSByYW5nZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hY2plIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyciLCIxOCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyciLCIyNSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcnfSA9ICdPY2VuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcgJSd9ID0gJ09jZW5hICUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3V0IG9mIDUnfSA9ICd6IDUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhJ30gPSAnQnJhayBnxYJvc8OzdyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLid9ID0gJ0JyYWsgZ8WCb3PDs3chIELEhWTFuiBwaWVyd3N6eSBpIG9jZcWEIHRlbiBhcnR5a3XFgiBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rvd25sb2FkIEF0dGFjaG1lbnQnfSA9ICdQb2JpZXJ6IHphxYLEhWN6bmlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hvdyBoZWxwZnVsIHdhcyB0aGlzIGFydGljbGU/IFBsZWFzZSBnaXZlIHVzIHlvdXIgcmF0aW5nIGFuZCBoZWxwIHRvIGltcHJvdmUgdGhlIEZBUSBEYXRhYmFzZS4gVGhhbmsgWW91ISd9ID0KICAgICAgICAnSmFrIHBvbW9jbnkgYnnFgiB0ZW4gYXJ0eWt1xYI/IFByb3NpbXkgbyB0d29qxIUgb2NlbsSZIGkgcG9tb2MgcHJ6eSB1ZG9za29uYWxhbml1IGJhenkgRkFRLiBEemnEmWt1amVteSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICduaWVwcnp5ZGF0bmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsndmVyeSBoZWxwZnVsJ30gPSAncG9tb2NuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb21TbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAnV3N0YXcgdGVrc3QgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICdXc3RhdyBvZG5vxZtuaWsgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCAmIExpbmsnfSA9ICdXc3RhdyB0ZWtzdCBpIG9kbm/Fm25payBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJ05pZSB6bmFsZXppb25vIGFydHlrdcWCw7N3IEZBUS4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRUHJpbnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbHRleHQgc2VhcmNoIGluIEZBUSBhcnRpY2xlcyAoZS4gZy4gIkpvaG4qbiIgb3IgIldpbGwqIiknfSA9ICdXeXN6dWtpd2FuaWUgcGXFgm5vdGVrc3Rvd2UgdyBhcnR5a3XFgmFjaCBGQVEgKG5wLiAiTmFqKnBzenkiIGx1YiAiS293YWxzayoiKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIHJlc3RyaWN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHZvdGVzLi4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIHJlc3RyaWN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHJhdGUuLi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsVGV4dAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaFJlc3VsdFNob3J0CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcnRpY2xlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJ1N6dWthaiBhcnR5a3XFgsOzdyB6YSBwb21vY8SFIHPFgm93YSBrbHVjem93ZWdvJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFFeHBsb3JlcgoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVByaW50CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoCgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMnfSA9ICdQb2JsaWN6bmUnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGxUZXh0CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRTaG9ydAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVpvb20KCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBmaWx0ZXIgZm9yIEhUTUwgb3V0cHV0IHRvIGFkZCBsaW5rcyBiZWhpbmQgYSBkZWZpbmVkIHN0cmluZy4gVGhlIGVsZW1lbnQgSW1hZ2UgYWxsb3dzIHR3byBpbnB1dCBraW5kcy4gRmlyc3QgdGhlIG5hbWUgb2YgYW4gaW1hZ2UgKGUuZy4gZmFxLnBuZykuIEluIHRoaXMgY2FzZSB0aGUgT1RSUyBpbWFnZSBwYXRoIHdpbGwgYmUgdXNlZC4gVGhlIHNlY29uZCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgdGhlIGxpbmsgdG8gdGhlIGltYWdlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnS29sb3IgQ1NTIGRsYSB3eW5pa8OzdyBnxYJvc293YW5pYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FjaGUgVGltZSBUbyBMZWF2ZSBmb3IgRkFRIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnWmFyesSFZHphbmllIGthdGVnb3JpYW1pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlY2ltYWwgcGxhY2VzIG9mIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ01pZWpzY2EgcG8gcG90cnplY2lua3UgdyB3eW5pa2FjaCBnxYJvc293YW5pYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJ0RvbXnFm2xuYSBuYXp3YSBrYXRlZ29yaWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbGFuZ3VhZ2UgZm9yIEZBUSBhcnRpY2xlcyBvbiBzaW5nbGUgbGFuZ3VhZ2UgbW9kZS4nfSA9ICdEb215xZtsbnkgasSZenlrIGRsYSBhcnR5a3XFgsOzdyBGQVEgdyB0cnliaWUgcG9qZWR5bmN6ZWdvIGrEmXp5a2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgcHJpb3JpdHkgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9CiAgICAgICAgJ0RvbXnFm2xueSBwcmlvcnl0ZXQgemfFgm9zemXFhCBkbGEgemF0d2llcmR6ZcWEIGFydHlrdcWCw7N3IEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJ0RvbXnFm2xueSBzdGFuIGRsYSBwb3p5Y2ppIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHZhbHVlIGZvciB0aGUgQWN0aW9uIHBhcmFtZXRlciBmb3IgdGhlIHB1YmxpYyBmcm9udGVuZC4gVGhlIEFjdGlvbiBwYXJhbWV0ZXIgaXMgdXNlZCBpbiB0aGUgc2NyaXB0cyBvZiB0aGUgc3lzdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIGpvdXJuYWwuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoZXJlIHRoZSBcJ0luc2VydCBGQVFcJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLiBOb3RlOiBBZ2VudFRpY2tldEFjdGlvbkNvbW1vbiBpbmNsdWRlcyBBZ2VudFRpY2tldE5vdGUsIEFnZW50VGlja2V0Q2xvc2UsIEFnZW50VGlja2V0RnJlZVRleHQsIEFnZW50VGlja2V0T3duZXIsIEFnZW50VGlja2V0UGVuZGluZywgQWdlbnRUaWNrZXRQcmlvcml0eSBhbmQgQWdlbnRUaWNrZXRSZXNwb25zaWJsZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC4nfSA9ICdEZWZpbmljamEgcG9sYSBmcmVlIHRleHQgcG96eWNqaSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJ1VzdcWEIHRvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHRoaXMgRkFRJ30gPSAnRWR5dHVqIHRvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAnV8WCxIVjeiB3aWVsZSBqxJl6eWvDs3cgdyBtb2R1bGUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLid9ID0gJ1fFgsSFY3ogbWVjaGFuaXptIGfFgm9zb3dhbmlhIHcgbW9kdWxlIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwnfSA9ICdEemllbm5payBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0xpbWl0IEZBUSB3IHByemVnbMSFZHppZSBkemllbm5pa2EgdyB0cnliaWUgIk1hxYJlIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0xpbWl0IEZBUSB3IHByemVnbMSFZHppZSB3IHRyeWJpZSAiTWHFgmUiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJ0xpbWl0IEZBUSBuYSBzdHJvbsSZIHcgcHJ6ZWdsxIVkemllIGR6aWVubmlrYSB3IHRyeWJpZSAiTWHFgmUiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICdMaW1pdCBGQVEgbmEgc3Ryb27EmSB3IHByemVnbMSFZHppZSB3IHRyeWJpZSAiTWHFgmUiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBwYXRoIHNlcGFyYXRvci4nfSA9ICdTZXBhcmF0b3IgxZtjaWXFvGtpIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUS1BcmVhJ30gPSAnRkFROiBjesSZc3RvIHphZGF3YW5lIHB5dGFuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyb3VwIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0dydXBhYSBkbGEgYWtjZXB0YWNqaSBhcnR5a3XFgsOzdyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgdGhpcyBGQVEnfSA9ICdIaXN0b3JpYSB0ZWdvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIGludGVybmFsIGZpZWxkcyBvbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgdGhlIG5hbWUgb2YgZWFjaCBmaWVsZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVyZmFjZXMgd2hlcmUgdGhlIHF1aWNrc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJ0R6aWVubmlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdaYXJ6xIVkemFuaWUgasSZenlrYW1pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJ1BvxYLEhWN6IGlubnkgb2JpZWt0IHogdHltIGVsZW1lbnRlbSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBmYXEgc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgQXJ0aWNsZSd9ID0gJ05vd3kgYXJ0eWt1xYIgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJ05vd2UgYXJ0eWt1xYJ5IEZBUSB3eW1hZ2FqxIUgemF0d2llcmR6ZW5pYSBwcnplZCBwdWJsaWthY2rEhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY2hhbmdlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY3JlYXRlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIHRoZSB0b3AgMTAgZmVhdHVyZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBqb3VybmFsIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgb3ZlcnZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnQgdGhpcyBGQVEnfSA9ICdXeWRydWt1aiB0byBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVldWUgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnS29sZWprYSBkbGEgemF0d2llcmR6ZcWEIGFhcnR5a3XFgsOzdyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGVzIGZvciB2b3RpbmcuIEtleSBtdXN0IGJlIGluIHBlcmNlbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEnfSA9ICdTenVrYWogRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgLyAiSW5zZXJ0IEZ1bGwgRkFRICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCIgLyAiSW5zZXJ0IEZ1bGwgRkFRIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgQXJ0aWNsZSB3aXRoIEhUTUwuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIHBhdGggeWVzL25vLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdG9wIDEwIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnJzsKCiAgICAjCiAgICAjIE9CU09MRVRFIEVOVFJJRVMgRk9SIFJFRkVSRU5DRSwgRE8gTk9UIFRSQU5TTEFURSEKICAgICMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FnZW50IGdyb3VwcyB3aGljaCBjYW4gYWNjZXNzIHRoaXMgY2F0ZWdvcnkuJ30gPSAnR3J1cHkgYWdlbnTDs3csIGt0w7NyZSBtYWrEhSBkb3N0xJlwIGRvIHRlaiBrYXRlZ29yaWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcmllcyd9ID0gJ0thdGVnb3JpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXRhaWxTZWFyY2gnfSA9ICdEb2vFgmFkbmUgd3lzenVraXdhbmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBDYXRlZ29yeSd9ID0gJ0thdGVnb3JpYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2VrZXkgd2hpY2ggaXMgZGVmaW5lZCBpbiB0aGUgbGFuZ3VhZ2UgZmlsZSAqX0ZBUS5wbS4nfSA9ICdMYW5ndWFnZWtleSwga3TDs2UgamVzdCB6ZGVmaW5pb3dhbmUgdyBwbGlrdSBqxJl6eWthICpfRkFRLnBtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjYXRlZ29yeSBhY2Nlc3NpYmxlLiBUbyBjcmVhdGUgYW4gYXJ0aWNsZSB5b3UgbmVlZCBhY2Nlc3MgdG8gYXQgbGVhc3Qgb25lIGNhdGVnb3J5LiBQbGVhc2UgY2hlY2sgeW91ciBncm91cC9jYXRlZ29yeSBwZXJtaXNzaW9uIHVuZGVyIC1jYXRlZ29yeSBtZW51LSEnfSA9CiAgICAgICAgJ0JyYWsgemRlZmluaW93YW55Y2gga2F0ZWdvcmlpLiBBYnUgdXR3b3J6ecSHIGFydHlrdcWCIG11c2kgaXN0bmllxIcgY28gbmFqbW5pZWogamVkbmEga2F0ZWdvcmlhLiBTcHJhd2TFuiBwcm9zesSZIHN3b2plIHVwcmF3bmllbmlhIHcgbWVudSBLYXRlZ29yaWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrU2VhcmNoJ30gPSAnU3p5YmtpZSB3eXN6dWtpd2FuaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViQ2F0ZWdvcmllcyd9ID0gJ1BvZGthdGVnb3JpZSc7Cgp9CgoxOwo=
IyAtLQojIEtlcm5lbC9MYW5ndWFnZS9wdF9CUl9GQVEucG0gLSB0cmFuc2xhdGlvbiBmaWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Okxhbmd1YWdlOjpwdF9CUl9GQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFBQUZBUQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICdpbnRlcm5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ3DDumJsaWNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsJ30gPSAnZXh0ZXJubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAnTsO6bWVybyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJ30gPSAnQXJ0aWdvcyBtb2RpZmljYWRvcyByZWNlbnRlbWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJ30gPSAnw5psdGltb3MgYXJ0aWdvcyBhZGljaW9uYWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3AgMTAgRkFRIGFydGljbGVzJ30gPSAnT3MgMTAgYXJ0aWdvcyBtYWlzIGFjZXNzYWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yeSBvZid9ID0gJ1N1YmNhdGVnb3JpYSBkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNlbGVjdGVkISd9ID0gJ1NlbGVjaW9uZSBhIHBvbnR1YcOnw6NvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBsb3Jlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKGFsbCknfSA9ICdww7pibGljbyAodG9kb3MpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsIChjdXN0b21lciknfSA9ICdleHRlcm5vIChjbGllbnRlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAnaW50ZXJubyAoYXRlbmRlbnRlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBkYXknfSA9ICdEaWEgZGUgaW7DrWNpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBtb250aCd9ID0gJ03DqnMgZGUgaW7DrWNpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCB5ZWFyJ30gPSAnQW5vIGRlIGluw61jaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIGRheSd9ID0gJ0RpYSBkZSB0w6lybWlubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgbW9udGgnfSA9ICdNw6pzIGRlIHTDqXJtaW5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCB5ZWFyJ30gPSAnQW5vIGRlIHTDqXJtaW5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rcyBmb3IgeW91ciB2b3RlISd9ID0gJ09icmlnYWRvIHBvciBzZXUgVm90byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISd9ID0gJ1ZvY8OqIGrDoSB2b3RvdSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgUHJpbnQnfSA9ICdJbXByaW1pciBBcnRpZ28gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAoVG9wIDEwKSd9ID0gJ0FydGlnb3MgRkFRIChUb3AgMTApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAnQXJ0aWdvcyBGQVEgKGNyaWFkbyBub3ZvKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKHJlY2VudGx5IGNoYW5nZWQpJ30gPSAnQXJ0aWdvcyBGQVEgKGFsdGVyYWRvcyByZWNlbnRlbWVudGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ0NhdGVnb3JpYSBGQVEgYXR1YWxpemFkYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IGFkZGVkISd9ID0gJ0NhdGVnb3JpYSBGQVEgYWRpY2lvbmFkYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAnVW1hIGNhdGVnb3JpYSBwcmVjaXNhIHRlciB1bSBub21lISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzJ30gPSAnRXN0YSBjYXRlZ29yaWEgasOhIGV4aXN0ZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIGFkZGVkISd9ID0gJ0lkaW9tYSBGQVEgYWRpY2lvbmFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIHVwZGF0ZWQhJ30gPSAnSWRpb21hIEZBUSAgYXR1YWxpemFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJ30gPSAnTyBub21lIMOpIG9icmlnYXTDs3JpbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBhbHJlYWR5IGV4aXN0cyEnfSA9ICdFc3NlIGlkaW9tYSBqw6EgZXhpc3RlISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnREYXNoYm9hcmRGQVFPdmVydmlldwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdBZGljaW9uYXIgQXJ0aWdvIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3Jkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IGlzIHJlcXVpcmVkLid9ID0gJ0EgY2F0ZWdvcmlhIMOpIG5lY2Vzc8OhcmlhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZhbCd9ID0gJ0Fwcm92YcOnw6NvJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0dlcmVuY2lhbWVudG8gZGUgQ2F0ZWdvcmlhIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICdBZGljaW9uYXIgY2F0ZWdvcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDYXRlZ29yeSd9ID0gJ0V4Y2x1aXIgQ2F0ZWdvcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnT2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIENhdGVnb3J5J30gPSAnQWRpY2lvbmFyIENhdGVnb3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAnQWx0ZXJhciBDYXRlZ29yaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ1NlcsOhIGV4aWJpZG8gY29tbyBjb21lbnTDoXJpbyBubyBFeHBsb3JlcmFkb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICdQb3IgZmF2b3IsIHNlbGVjaW9uZSBwZWxvIG1lbm9zIHVtIGdydXBvIGRlIHBlcm1pc3PDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FnZW50IGdyb3VwcyB0aGF0IGNhbiBhY2Nlc3MgYXJ0aWNsZXMgaW4gdGhpcyBjYXRlZ29yeS4nfSA9ICdHcnVwb3MgZGUgYXRlbmRlbnRlcyBxdWUgcG9kZW0gYWNlc3NhciBhcnRpZ29zIG5lc3RhIGNhdGVnb3JpYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyd9ID0gJ1ZvY8OqIHJlYWxtZW50ZSBxdWVyIGFwYWdhciBlc3RhIGNhdGVnb3JpYT8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgY2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlIGFuZC9vciBpcyBwYXJlbnQgb2YgYXQgbGVhc3Qgb25lIG90aGVyIGNhdGVnb3J5J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocyknfSA9ICdFc3RhIGNhdGVnb3JpYSDDqSB1dGlsaXphZGEgbm8ocykgc2VndWludGUocykgYXJ0aWdvKHMpIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHBhcmVudCBvZiB0aGUgZm9sbG93aW5nIHN1YmNhdGVnb3JpZXMnfSA9ICdFc3RhIGNhdGVnb3JpYSDDqSBwYWkgZGFzIHNlZ3VpbnRlcyBzdWJjYXRlZ29yaWFzJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJ1ZvY8OqIHJlYWxtZW50ZSBxdWVyIGV4Y2x1aXIgZXN0ZSBhcnRpZ28gRkFRPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICdGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFeHBsb3Jlcid9ID0gJ0V4cGxvcmVyYWRvciBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAnQnVzY2EgUsOhcGlkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxkY2FyZHMgYXJlIGFsbG93ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkdmFuY2VkIFNlYXJjaCd9ID0gJ1Blc3F1aXNhIEF2YW7Dp2FkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnU3ViY2F0ZWdvcmlhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMnfSA9ICdBcnRpZ29zIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdWJjYXRlZ29yaWVzIGZvdW5kLid9ID0gJ1N1YmNhdGVnb3JpYXMgbsOjbyBlbmNvbnRyYWRhcy4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSGlzdG9yeQoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAnTsOjbyBmb3JhbSBlbmNvbnRyYWRvcyBkYWRvcyBkZSBKb3JuYWwgRkFRLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFMYW5ndWFnZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdHZXJlbmNpYW1lbnRvIGRlIElkaW9tYXMgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZSB0aGlzIGZlYXR1cmUgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIG11bHRpcGxlIGxhbmd1Z2VzLid9ID0KICAgICAgICAnVXNlIGVzc2UgcmVjdXJzbyBzZSB2b2PDqiBkZXNlamEgdHJhYmFsaGFyIGNvbSBtw7psdGlwbG9zIGlkaW9tYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBsYW5ndWFnZSd9ID0gJ0FkaWNpb25hciBpZGlvbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIExhbmd1YWdlJ30gPSAnRXhjbHVpciBpZGlvbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIExhbmd1YWdlJ30gPSAnQWRpY2lvbmFyIGlkaW9tYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IExhbmd1YWdlJ30gPSAnRWRpdGFyIGlkaW9tYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAnVm9jw6ogcmVhbG1lbnRlIHF1ZXIgZXhjbHVpciBlc3RlIGlkaW9tYT8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgbGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlISd9ID0KICAgICAgICAnVm9jw6ogbsOjbyBwb2RlIGV4Y2x1aXIgZXN0ZSBpZGlvbWEuIEVsZSDDqSB1c2FkbyBlbSBwZWxvIG1lbm9zIHVtIGFydGlnbyBGQVEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2xlKHMpJ30gPSAnRXN0ZSBpZGlvbWEgw6kgdXNhZG8gbm9zIHNlZ3VpbnRlcyBhcnRpZ28ocykgRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnQ29uZmlndXJhw6fDtWVzIGRlIENvbnRleHRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBhcnRpY2xlcyBwZXIgcGFnZSd9ID0gJ0FydGlnb3MgRkFRIHBvciBww6FnaW5hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJ07Do28gZm9yYW0gZW5jb250cmFkb3MgZGFkb3MgZGUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGdlbmVyaWMgRkFRIHRhYmxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyIsIjUwJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVByaW50CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEtSW5mbyd9ID0gJ0ZBUSBJbmZvcm1hw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZXMnfSA9ICdWb3Rvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IHVwZGF0ZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSAoZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIChlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVFGdWxsdGV4dCd9ID0gJ0ZBUS1UZXh0b0NvbXBsZXRvJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFNlYXJjaCd9ID0gJ0J1c2NhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2gtUHJvZmlsZSBhcyBUZW1wbGF0ZT8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHJhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgZGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIHJhbmdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWHDp8OjbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnIiwiMTgnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnIiwiMjUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nJ30gPSAnTm90YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcgJSd9ID0gJ05vdGEgJSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJ3JlZHV6aWRvIGRlIDUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhJ30gPSAnTmVuaHVtIHZvdG8gZW5jb250cmFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLid9ID0gJ05lbmh1bSB2b3RvIGVuY29udHJhZG8hIFNlamEgbyBwcmltZWlybyBhIGF2YWxpYXIgZXN0ZSBhcnRpZ28gRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb3dubG9hZCBBdHRhY2htZW50J30gPSAnQmFpeGFyIGFuZXhvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9CiAgICAgICAgJ0VzdGUgYXJ0aWdvIHRlIGFqdWRvdT8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICduw6NvIGFqdWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ZlcnkgaGVscGZ1bCd9ID0gJ211aXRvIMO6dGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQnfSA9ICdGQVEgSW5zZXJpciBUZXh0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBMaW5rJ30gPSAnRkFRIEluc2VyaXIgTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQgJiBMaW5rJ30gPSAnRkFRIEluc2VyaXIgVGV4dG8gZSBMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSAmIExpbmsnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBhcnRpY2xlcyBmb3VuZC4nfSA9ICdOZW5odW0gYXJ0aWdvIEZBUSBlbmNvbnRyYWRvLic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFQcmludAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSd9ID0gJ1Blc3F1aXNhIGNvbXBsZXRhIGRlIHRleHRvcyBlbSBhcnRpZ29zIEZBUSAocG9yIGV4ZW1wbG8sICJKbypvIiBvciAiV2lsbCoiKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIHJlc3RyaWN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHZvdGVzLi4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIHJlc3RyaWN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHJhdGUuLi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsVGV4dAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaFJlc3VsdFNob3J0CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcnRpY2xlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJ1Byb2N1cmUgcG9yIGFydGlnb3MgY29tIHBhbGF2cmFzLWNoYXZlJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFFeHBsb3JlcgoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVByaW50CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoCgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMnfSA9ICdQw7pibGljbyc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbFRleHQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFNob3J0CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRWm9vbQoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVFJTIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPQogICAgICAgICdVbSBmaWx0cm8gZGUgc2HDrWRhIEhUTUwgcGFyYSBhZGljaW9uYXIgbGlua3MgcGFyYSB0csOhcyB1bWEgc2Vxw7zDqm5jaWEgZGVmaW5pZGEuIE8gZWxlbWVudG8gZGUgaW1hZ2VtIHBlcm1pdGUgZG9pcyB0aXBvcyBkZSBlbnRyYWRhLiBQcmltZWlybywgbyBub21lIGRlIHVtYSBpbWFnZW0gKGZhcS5wbmcsIHBvciBleGVtcGxvKS4gTmVzdGUgY2FzbywgbyBjYW1pbmhvIGRhIGltYWdlbSBPVFJTIHNlcsOhIHVzYWRvLiBBIHNlZ3VuZGEgcG9zc2liaWxpZGFkZSDDqSBpbnNlcmlyIG8gbGluayBwYXJhIGEgaW1hZ2VtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ0NTUyBjb3IgcGFyYSBvIHJlc3VsdGFkbyBkYSB2b3Rhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0dlcmVuY2lhbWVudG8gZGUgQ2F0ZWdvcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlY2ltYWwgcGxhY2VzIG9mIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ0Nhc2FzIGRlY2ltYWlzIGRvIHJlc3VsdGFkbyBkYSB2b3Rhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgY2F0ZWdvcnkgbmFtZS4nfSA9ICdOb21lIHBhZHLDo28gZGEgY2F0ZWdvcmlhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGxhbmd1YWdlIGZvciBGQVEgYXJ0aWNsZXMgb24gc2luZ2xlIGxhbmd1YWdlIG1vZGUuJ30gPSAnSWRpb21hIHBhZHLDo28gcGFyYSBvcyBhcnRpZ29zIEZBUSBubyBtb2RvIGRlIGlkaW9tYSDDum5pY28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgcHJpb3JpdHkgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9CiAgICAgICAgJ1ByaW9yaWRhZGUgcGFkcsOjbyBkZSBjaGFtYWRvcyBwYXJhIGEgYXByb3Zhw6fDo28gZG9zIGFydGlnb3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIGZvciBGQVEgZW50cnkuJ30gPSAnRXN0YWRvIHBhZHLDo28gZGUgZW50cmFkYSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdFc3RhZG8gcGFkcsOjbyBkZSBjaGFtYWRvcyBwYXJhIGEgYXByb3Zhw6fDo28gZG9zIGFydGlnb3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHZhbHVlIGZvciB0aGUgQWN0aW9uIHBhcmFtZXRlciBmb3IgdGhlIHB1YmxpYyBmcm9udGVuZC4gVGhlIEFjdGlvbiBwYXJhbWV0ZXIgaXMgdXNlZCBpbiB0aGUgc2NyaXB0cyBvZiB0aGUgc3lzdGVtLid9ID0KICAgICAgICAnVmFsb3IgcGFkcsOjbyBwYXJhIG8gcGFyw6JtZXRybyBkZSBSZWN1cnNvIHBhcmEgYSBpbnRlcmZhY2UgcMO6YmxpY2EuIE8gcGFyw6JtZXRybyBkZSBhw6fDo28gw6kgdXNhZG8gbm9zIHNjcmlwdHMgZG8gc2lzdGVtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBqb3VybmFsLid9ID0KICAgICAgICAnRGVmaW5lIHVtIG3Ds2R1bG8gZGUgcmVzdW1vIHBhcmEgbW9zdHJhciBhIHZpc3VhbGl6YcOnw6NvIHBlcXVlbmEgZGUgdW0gam9ybmFsIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5lIHVtIG3Ds2R1bG8gZGUgcmVzdW1vIHBhcmEgbW9zdHJhciBhIHZpc3VhbGl6YXIgZGUgdW1hIHBlcXVlbmEgbGlzdGEgZGUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIG8gYXRyaWJ1dG8gcGFkcsOjbyBGQVEgcGFyYSBjbGFzc2lmaWNhciBvIEZBUSBlbSB1bWEgcGVzcXVpc2EgRkFRIGRhIGludGVyZmFjZSBkbyBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyBhdHJpYnV0byBwYWRyw6NvIEZBUSBwYXJhIGNsYXNzaWZpY2FyIG8gRkFRIGVtIHVtYSBwZXNxdWlzYSBGQVEgZGEgaW50ZXJmYWNlIGRvIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIG8gYXRyaWJ1dG8gcGFkcsOjbyBGQVEgcGFyYSBjbGFzc2lmaWNhciBvIEZBUSBlbSB1bWEgcGVzcXVpc2EgRkFRIGRhIGludGVyZmFjZSBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyBhdHJpYnV0byBwYWRyw6NvIEZBUSBwYXJhIGNsYXNzaWZpY2FyIG8gRkFRIG5vIEdlcmVuY2lhZG9yIEZBUSBkYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIG8gYXRyaWJ1dG8gcGFkcsOjbyBGQVEgcGFyYSBjbGFzc2lmaWNhciBvIEZBUSBubyBHZXJlbmNpYWRvciBGQVEgZGEgaW50ZXJmYWNlIGRvIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIG8gYXRyaWJ1dG8gcGFkcsOjbyBGQVEgcGFyYSBjbGFzc2lmaWNhciBvIEZBUSBubyBHZXJlbmNpYWRvciBGQVEgZGEgaW50ZXJmYWNlIHDDumJsaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGEgb3JkZW0gcGFkcsOjbyBkZSBGQVEgbm8gcmVzdWx0YWRvIGRvIEdlcmVuY2lhZG9yIEZBUSBkYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLiBBY2ltYTogQSBtYWlzIGFudGlnYSBubyB0b3BvLiBBYmFpeG86IG1haXMgcmVjZW50ZXMgbm8gdG9wby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgYSBvcmRlbSBwYWRyw6NvIGRlIEZBUSBubyByZXN1bHRhZG8gZG8gR2VyZW5jaWFkb3IgRkFRIGRhIGludGVyZmFjZSBkbyBjbGllbnRlLiBBY2ltYTogQSBtYWlzIGFudGlnYSBubyB0b3BvLiBBYmFpeG86IG1haXMgcmVjZW50ZXMgbm8gdG9wby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGEgb3JkZW0gcGFkcsOjbyBkZSBGQVEgbm8gcmVzdWx0YWRvIGRvIEdlcmVuY2lhZG9yIEZBUSBkYSBpbnRlcmZhY2UgcMO6YmxpY2EuIEFjaW1hOiBBIG1haXMgYW50aWdhIG5vIHRvcG8uIEFiYWl4bzogbWFpcyByZWNlbnRlcyBubyB0b3BvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgYSBvcmRlbSBwYWRyw6NvIGRlIEZBUSBubyByZXN1bHRhZG8gZGEgcGVzcXVpc2EgbmEgaW50ZXJmYWNlIGRvIGF0ZW5kZW50ZS4gQWNpbWE6IEEgbWFpcyBhbnRpZ2Egbm8gdG9wby4gQWJhaXhvOiBtYWlzIHJlY2VudGVzIG5vIHRvcG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBhIG9yZGVtIHBhZHLDo28gZGUgRkFRIG5vIHJlc3VsdGFkbyBkYSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4gQWNpbWE6IEEgbWFpcyBhbnRpZ2Egbm8gdG9wby4gQWJhaXhvOiBtYWlzIHJlY2VudGVzIG5vIHRvcG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgYSBvcmRlbSBwYWRyw6NvIGRlIEZBUSBubyByZXN1bHRhZG8gZGEgcGVzcXVpc2EgbmEgaW50ZXJmYWNlIHDDumJsaWNhLiBBY2ltYTogQSBtYWlzIGFudGlnYSBubyB0b3BvLiBBYmFpeG86IG1haXMgcmVjZW50ZXMgbm8gdG9wby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaW5mb3JtYXRpb24gdG8gYmUgaW5zZXJ0ZWQgaW4gYSBGQVEgYmFzZWQgVGlja2V0LiAiRnVsbCBGQVEiIGluY2x1ZGVzIHRleHQsIGF0dGFjaG1lbnRzIGFuZCBpbmxpbmUgaW1hZ2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBFeHBsb3Jlci4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0RlZmluZSBhcyBjb2x1bmFzIG1vc3RyYWRhcyBubyBHZXJlbmNpYWRvciBGQVEuIEVzdGEgb3DDp8OjbyBuw6NvIHRlbSBlZmVpdG8gc29icmUgYSBwb3Npw6fDo28gZGEgY29sdW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0RlZmluZSBhcyBjb2x1bmFzIG1vc3RyYWRhcyBubyBqb3JuYWwgRkFRLiBFc3RhIG9ww6fDo28gbsOjbyB0ZW0gZWZlaXRvIHNvYnJlIGEgcG9zacOnw6NvIGRhIGNvbHVuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0RlZmluZSBhcyBjb2x1bmFzIG1vc3RyYWRhcyBuYSBwZXNxdWlzYSBGQVEuIEVzdGEgb3DDp8OjbyBuw6NvIHRlbSBlZmVpdG8gc29icmUgYSBwb3Npw6fDo28gZGEgY29sdW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoZXJlIHRoZSBcJ0luc2VydCBGQVFcJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLiBOb3RlOiBBZ2VudFRpY2tldEFjdGlvbkNvbW1vbiBpbmNsdWRlcyBBZ2VudFRpY2tldE5vdGUsIEFnZW50VGlja2V0Q2xvc2UsIEFnZW50VGlja2V0RnJlZVRleHQsIEFnZW50VGlja2V0T3duZXIsIEFnZW50VGlja2V0UGVuZGluZywgQWdlbnRUaWNrZXRQcmlvcml0eSBhbmQgQWdlbnRUaWNrZXRSZXNwb25zaWJsZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvbmRlIG8gbGluayBcJ0luc2VyaXIgRkFRXCcgc2Vyw6EgZXhpYmlkby4gTm90YTogT3MgUmVjdXJzbyBjb211bSBkbyBBdGVuZGVudGUgaW5jbHVpIEFicmlyIENoYW1hZG8sIEZlY2hhciBDaGFtYWRvLCBDaGFtYWRvIGRlIFRleHRvIExpdnJlLCBDaGFtYWRvIGRvIHByb3ByaWV0w6FyaW8sIENoYW1hZG8gcGVuZGVudGUsIENoYW1hZG8gcHJpb3JpdMOhcmlvIGUgUmVzcG9uc8OhdmVsIHBlbG8gQ2hhbWFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuJ30gPSAnRGVmaW5pw6fDo28gZGUgY2FtcG9zIGRlIHRleHRvIGxpdnJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgdGhpcyBGQVEnfSA9ICdFeGNsdWlyIGVzdGUgRkFRISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHRoaXMgRkFRJ30gPSAnRWRpdGFyIGVzdGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBtdWx0aXBsZSBsYW5ndWFnZXMgb24gRkFRIG1vZHVsZS4nfSA9ICdQZXJtaXRpciB2w6FyaW9zIGlkaW9tYXMgbm8gbcOzZHVsbyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAnUGVybWl0aXIgbWVjYW5pc21vIGRlIEF2YWxpYcOnw6NvIG5vIG3Ds2R1bG8gRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCd9ID0gJ0pvcm5hbCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0xpbWl0ZSBkYSBWaXPDo28gR2VyYWwgIlBlcXVlbm8iIGRvIEpvcm5hbCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdMaW1pdGUgZGEgVmlzw6NvIEdlcmFsIEZBUSAiUGVxdWVubyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiJ30gPSAnTGltaXRlIGRlIEZBUXMgcG9yIHDDoWdpbmEgZGEgVmlzw6NvIEdlcmFsICJQZXF1ZW5vIiBkbyBKb3JuYWwgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICdMaW1pdGUgZGUgRkFRcyBwb3IgcMOhZ2luYSBkYSBWaXPDo28gR2VyYWwgIlBlcXVlbm8iIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgcGF0aCBzZXBhcmF0b3IuJ30gPSAnRGVsaW1pdGFkb3IgZGUgY2FtaW5obyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdGQVEgYnVzY2Egc2Vydmlkb3Igcm90ZWFkb3IgZGEgaW50ZXJmYWNlIGRvIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRLUFyZWEnfSA9ICfDgXJlYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnRnJvbnRlbmQgZGUgcmVnaXN0byBkbyBtw7NkdWxvIHBhcmEgYSBpbnRlcmZhY2UgcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyb3VwIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0dydXBvIHBhcmEgYSBhcHJvdmHDp8OjbyBkb3MgYXJ0aWdvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgdGhpcyBGQVEnfSA9ICdIaXN0w7NyaWNvIGRlc3RlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIGludGVybmFsIGZpZWxkcyBvbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnSW5jbHVpciBjYW1wb3MgaW50ZXJub3MgZGUgdW0gQ2hhbWFkbyBiYXNlIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSB0aGUgbmFtZSBvZiBlYWNoIGZpZWxkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICdJbmNsdWlyIG8gbm9tZSBkZSBjYWRhIGNhbXBvIGVtIHVtIENoYW1hZG8gYmFzZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVyZmFjZXMgd2hlcmUgdGhlIHF1aWNrc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICdJbnRlcmZhY2VzIG9uZGUgYSBidXNjYSByw6FwaWRhIGRldmUgc2VyIGRlbW9uc3RyYWRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydKb3VybmFsJ30gPSAnSm9ybmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdHZXN0w6NvIGRlIGlkaW9tYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBhbm90aGVyIG9iamVjdCB0byB0aGlzIEZBUSBpdGVtJ30gPSAnTGluayBkZSBvdXRybyBhcnRpZ28gcGFyYSBlc3RlIGl0ZW0gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPIG7Dum1lcm8gbcOheGltbyBkZSBhcnRpZ29zIEZBUSBwYXJhIHNlciBleGliaWRvIG5vIHJlc3VsdGFkbyBkbyBHZXJlbmNpYWRvciBGQVEgZGEgaW50ZXJmYWNlIGRvIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTyBuw7ptZXJvIG3DoXhpbW8gZGUgYXJ0aWdvcyBGQVEgcGFyYSBzZXIgZXhpYmlkbyBubyByZXN1bHRhZG8gZG8gR2VyZW5jaWFkb3IgRkFRIGRhIGludGVyZmFjZSBkbyBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTyBuw7ptZXJvIG3DoXhpbW8gZGUgYXJ0aWdvcyBGQVEgcGFyYSBzZXIgZXhpYmlkbyBubyByZXN1bHRhZG8gZG8gR2VyZW5jaWFkb3IgRkFRIGRhIGludGVyZmFjZSBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ08gbsO6bWVybyBtw6F4aW1vIGRlIGFydGlnb3MgRkFRIHBhcmEgc2VyIGV4aWJpZG8gbm8gam9ybmFsIEZBUSBkYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ08gbsO6bWVybyBtw6F4aW1vIGRlIGFydGlnb3MgRkFRIHBhcmEgc2VyIGV4aWJpZG8gbm8gcmVzdWx0YWRvIGRlIHVtYSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ08gbsO6bWVybyBtw6F4aW1vIGRlIGFydGlnb3MgRkFRIHBhcmEgc2VyIGV4aWJpZG8gbm8gcmVzdWx0YWRvIGRlIHVtYSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTyBuw7ptZXJvIG3DoXhpbW8gZGUgYXJ0aWdvcyBGQVEgcGFyYSBzZXIgZXhpYmlkbyBubyByZXN1bHRhZG8gZGUgdW1hIHBlc3F1aXNhIG5hIGludGVyZmFjZSBwdWJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBmYXEgc2VhcmNoLid9ID0KICAgICAgICAnTcOzZHVsbyBwYXJhIGdlcmFyIGh0bWwgIk9wZW5TZWFyY2giIHBlcmZpbCBkZSBwZXNxdWlzYSBmYXEgY3VydGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgQXJ0aWNsZSd9ID0gJ05vdm8gYXJ0aWdvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIGFydGljbGVzIG5lZWQgYXBwcm92YWwgYmVmb3JlIHRoZXkgZ2V0IHB1Ymxpc2hlZC4nfSA9ICdOb3ZvcyBhcnRpZ29zIEZBUSBwcmVjaXNhbSBkZSBhcHJvdmHDp8OjbyBhbnRlcyBkZSBzZXIgcHVibGljYWRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSBhcnRpZ29zIEZBUSBwYXJhIHNlciBleGliaWRvIG5vIEdlcmVuY2lhZG9yIEZBUSBkbyBpbnRlcmZhY2UgZG8gY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSBhcnRpZ29zIEZBUSBwYXJhIHNlciBleGliaWRvIG5vIEdlcmVuY2lhZG9yIEZBUSBkbyBpbnRlcmZhY2UgcHVibGljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIGRlIGFydGlnb3MgRkFRIHBhcmEgc2VyIGV4aWJpZG8gZW0gY2FkYSBww6FnaW5hIGRlIHVtIHJlc3VsdGFkbyBkZSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgZG8gY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSBhcnRpZ29zIEZBUSBwYXJhIHNlciBleGliaWRvIGVtIGNhZGEgcMOhZ2luYSBkZSB1bSByZXN1bHRhZG8gZGUgcGVzcXVpc2EgbmEgaW50ZXJmYWNlIHB1YmxpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY2hhbmdlcy4nfSA9ICdOw7ptZXJvIGRlIGl0ZW5zIG1vc3RyYWRvcyBlbSDDumx0aW1hcyBhbHRlcmHDp8O1ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJ30gPSAnTsO6bWVybyBkZSBpdGVucyBtb3N0cmFkb3MgZW0gw7psdGltYXMgY3JpYcOnw7Vlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIHRoZSB0b3AgMTAgZmVhdHVyZS4nfSA9ICdOw7ptZXJvIGRlIGl0ZW5zIG1vc3RyYWRvcyBubyByZWN1cnNvIHRvcCAxMC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBqb3VybmFsIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgZGUgcMOhZ2luYXMgKG5hcyBxdWFpcyBvcyBpdGVucyBGQVEgc8OjbyBtb3N0cmFkb3MpIGRhIHZpc8OjbyBnZXJhbCBwZXF1ZW5hIGRvIGpvcm5hbCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgb3ZlcnZpZXcuJ30gPQogICAgICAgICdQYXLDom1ldHJvcyBkZSBww6FnaW5hcyAobmFzIHF1YWlzIG9zIGl0ZW5zIEZBUSBzw6NvIG1vc3RyYWRvcykgZGEgdmlzw6NvIGdlcmFsIHBlcXVlbmEgZGUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludCB0aGlzIEZBUSd9ID0gJ0ltcHJpbWlyIGVzdGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0ZpbGEgcGFyYSBhIGFwcm92YcOnw6NvIGRvcyBhcnRpZ29zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC4nfSA9ICdDb25kacOnw6NvIHBhcmEgYSBhdmFsaWHDp8Ojby4gQ2hhdmUgZGV2ZSBzZXIgZW0gcGVyY2VudHVhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSd9ID0gJ1Blc3F1aXNhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnTW9zdHJhIGJvdMOjbyAiSW5zZXJpciBMaW5rIEZBUSIgZW0gQW1wbGlhw6fDo28gcGVxdWVuYSBwYXJhIG8gYXJ0aWdvcyBGQVEgcMO6YmxpY29zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIC8gIkluc2VydCBGdWxsIEZBUSIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJ01vc3RyYXIgYXJ0aWdvIEZBUSBjb20gSFRNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgcGF0aCB5ZXMvbm8uJ30gPSAnTW9zdHJhciBjYW1pbmhvIEZBUSBzaW0gLyBuw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuJ30gPSAnTW9zdHJhciBpdGVucyBkZSBzdWJjYXRlZ29yaWFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY2hhbmdlIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdNb3N0cmFyIGFzIMO6bHRpbWFzIGFsdGVyYcOnw7VlcyBkZSBpdGVucyBlbSBpbnRlcmZhY2VzIGRlZmluaWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNyZWF0ZWQgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ01vc3RyYXIgb3Mgw7psdGltb3MgaXRlbnMgY3JpYWRvcyBlbSBpbnRlcmZhY2VzIGRlZmluaWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ01vc3RyYXIgb3MgMTAgaXRlbnMgc3VwZXJpb3IgZW0gaW50ZXJmYWNlcyBkZWZpbmlkYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdm90aW5nIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdNb3N0cmFyIHZvdGHDp8OjbyBlbSBpbnRlcmZhY2VzIGRlZmluaWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBGQVEgd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgem9vbSB2aWV3IG9mIHN1Y2ggRkFRIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW0gbGluayBubyBtZW51IHF1ZSBwZXJtaXRlIGxpZ2FyIHVtIEZBUSBjb20gb3V0cm8gb2JqZXRvIG5vIG1vZG8gZGUgZXhpYmnDp8OjbyBhbXBsaWFkYSBuYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bSBsaW5rIG5vIG1lbnUgcXVlIHBlcm1pdGUgZXhjbHVpciB1bSBGQVEgbm8gbW9kbyBkZSBleGliacOnw6NvIGFtcGxpYWRhIG5hIGludGVyZmFjZSBkbyBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIGFjZXNzYXIgbyBoaXN0w7NyaWNvIGRlIHVtIEZBUSBubyBtb2RvIGRlIGV4aWJpw6fDo28gYW1wbGlhZGEgbmEgaW50ZXJmYWNlIGRvIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bSBsaW5rIG5vIG1lbnUgcGFyYSBlZGl0YXIgdW0gRkFRIG5vIG1vZG8gZGUgZXhpYmnDp8OjbyBhbXBsaWFkYSBuYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgRkFRIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIHZvbHRhciB1bSBGQVEgbm8gbW9kbyBkZSBleGliacOnw6NvIGFtcGxpYWRhIG5hIGludGVyZmFjZSBkbyBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIGltcHJpbWlyIHVtIEZBUSBubyBtb2RvIGRlIGV4aWJpw6fDo28gYW1wbGlhZGEgbmEgaW50ZXJmYWNlIGRvIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnTyBpZGVudGlmaWNhZG9yIHBhcmEgdW0gRkFRLCBleGVtcGxvIEZBUSAjIEtCICMgIyBNeUZBUS4gTyBwYWRyw6NvIMOpIEZBUSAjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdFc3NhIGNvbmZpZ3VyYcOnw6NvIGRlZmluZSBxdWUgdW0gb2JqZXRvIFwnRkFRXCcgcG9kZSBzZXIgcmVsYWNpb25hZG8gY29tIG91dHJvcyBvYmpldG9zIFwnRkFRXCcgdXNhbmRvIG8gdGlwbyBkZSB2w61uY3VsbyBcJ05vcm1hbFwnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnRXNzYSBjb25maWd1cmHDp8OjbyBkZWZpbmUgcXVlIHVtIG9iamV0byBcJ0ZBUVwnIHBvZGUgc2VyIHJlbGFjaW9uYWRvIGNvbSBvdXRyb3Mgb2JqZXRvcyBcJ0ZBUVwnIHVzYW5kbyBvIHRpcG8gZGUgdsOtbmN1bG8gXCdQYWkgZSBmaWxob1wnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0Vzc2EgY29uZmlndXJhw6fDo28gZGVmaW5lIHF1ZSB1bSBvYmpldG8gXCdGQVFcJyBwb2RlIHNlciByZWxhY2lvbmFkbyBjb20gb3V0cm9zIG9iamV0b3MgXCdDaGFtYWRvXCcgdXNhbmRvIG8gdGlwbyBkZSB2w61uY3VsbyBcJ05vcm1hbFwnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnRXNzYSBjb25maWd1cmHDp8OjbyBkZWZpbmUgcXVlIHVtIG9iamV0byBcJ0ZBUVwnIHBvZGUgc2VyIHJlbGFjaW9uYWRvIGNvbSBvdXRyb3Mgb2JqZXRvcyBcJ0NoYW1hZG9cJyB1c2FuZG8gbyB0aXBvIGRlIHbDrW5jdWxvIFwnUGFpIGUgZmlsaG9cJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgYm9keSBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnQ29ycG8gZG8gY2hhbWFkbyBwYXJhIGFwcm92YcOnw6NvIGRlIHVtIGFydGlnbyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBzdWJqZWN0IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdPIGFzc3VudG8gZG8gY2hhbWFkbyBwYXJhIGFwcm92YcOnw6NvIGRlIHVtIGFydGlnbyBGQVEuJzsKCiAgICAjCiAgICAjIE9CU09MRVRFIEVOVFJJRVMgRk9SIFJFRkVSRU5DRSwgRE8gTk9UIFRSQU5TTEFURSEKICAgICMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdla2V5IHdoaWNoIGlzIGRlZmluZWQgaW4gdGhlIGxhbmd1YWdlIGZpbGUgKl9GQVEucG0uJ30gPSAnSWRpb21hIGNoYXZlIHF1ZSBlc3TDoSBkZWZpbmlkbyBubyBhcnF1aXZvIGRlIGlkaW9tYSAqX0ZBUS5wbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnTW9zdHJhIGJvdMOjbyAiSW5zZXJpciB0ZXh0byBlIExpbmsgRkFRIiBlbSBBbXBsaWHDp8OjbyBwZXF1ZW5hIHBhcmEgbyBhcnRpZ29zIEZBUSBww7pibGljb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPSAnTW9zdHJhciBib3TDo28gIkluc2VyaXIgRkFRIFRleHRvIiBjb20gcGVxdWVuYSBhbXBsaWHDp8OjbyBwYXJhIG8gYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IFdZU0lXWUcgZWRpdG9yIGluIGFnZW50IGludGVyZmFjZS4nfSA9ICdNb3N0cmFyIGVkaXRvciBXWVNJV1lHIG5hIGludGVyZmFjZSBkbyBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWdvIGFuZC9vciBpcyBwYXJlbnQgb2YgYXQgbGVhc3Qgb25lIG90aGVyIGNhdGVnb3J5J30gPQogICAgICAgICdWb2PDqiBuw6NvIHBvZGUgZXhjbHVpciBlc3RhIGNhdGVnb3JpYS4gRWxhIMOpIHVzYWRhIGVtIHBlbG8gbWVub3MgdW0gYXJ0aWdvIEZBUSBlL291IMOpIHBhaSBkZSBwZWxvIG1lbm9zIHVtYSBvdXRyYSBjYXRlZ29yaWEhJzsKCn0KCjE7Cg==
IyAtLQojIEtlcm5lbC9MYW5ndWFnZS9wdF9QVF9GQVEucG0gLSB0cmFuc2xhdGlvbiBmaWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIENvcHlyaWdodCAoQykgMjAxMiBGQ0NOIC0gUnVpIEZyYW5jaXNjbyA8cnVpLmZyYW5jaXNjb0BmY2NuLnB0PgojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Okxhbmd1YWdlOjpwdF9QVF9GQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFBQUZBUQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICdpbnRlcm5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ3DDumJsaWNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsJ30gPSAnZXh0ZXJubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAnTsO6bWVybyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0Q2hhbmdlZEl0ZW1zJ30gPSAnQXJ0aWdvcyBtb2RpZmljYWRvcyByZWNlbnRlbWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0Q3JlYXRlZEl0ZW1zJ30gPSAnw5psdGltb3MgYXJ0aWdvcyBhZGljaW9uYWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3AxMEl0ZW1zJ30gPSAnT3MgMTAgYXJ0aWdvcyBtYWlzIGFjZWRpZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YkNhdGVnb3J5T2YnfSA9ICdTdWJjYXRlZ29yaWEgZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICdTZWxlY2lvbmUgYSBwb250dWHDp8OjbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChhbGwpJ30gPSAncMO6YmxpY28gKHRvZG9zKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCAoY3VzdG9tZXIpJ30gPSAnZXh0ZXJubyAoY2xpZW50ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwgKGFnZW50KSd9ID0gJ2ludGVybm8gKGFnZW50ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnREYXknfSA9ICdEaWEgZGUgaW7DrWNpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydE1vbnRoJ30gPSAnTcOqcyBkZSBpbsOtY2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0WWVhcid9ID0gJ0FubyBkZSBpbsOtY2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZERheSd9ID0gJ0RpYSBkZSBmaW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kTW9udGgnfSA9ICdNw6pzIGRlIGZpbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmRZZWFyJ30gPSAnQW5vIGRlIGZpbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFua3MgZm9yIHlvdXIgdm90ZSEnfSA9ICdPYnJpZ2FkbyBwZWxhIHN1YSBjb2xhYm9yYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJ30gPSAnSsOhIHBhcnRpY2lwb3UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIFByaW50J30gPSAnSW1wcmltaXIgQXJ0aWdvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKFRvcCAxMCknfSA9ICdBcnRpZ29zIEZBUSAoVG9wIDEwKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKG5ldyBjcmVhdGVkKSd9ID0gJ0FydGlnb3MgRkFRIChjcmlhZG8gbm92byknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ0FydGlnb3MgRkFRIChhbHRlcmFkb3MgcmVjZW50ZW1lbnRlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgdXBkYXRlZCEnfSA9ICdDYXRlZ29yaWEgRkFRIGF0dWFsaXphZGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSBhZGRlZCEnfSA9ICdDYXRlZ29yaWEgRkFRIGFkaWNpb25hZGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBuYW1lISd9ID0gJ0EgY2F0ZWdvcmlhIHByZWNpc2EgdGVyIHVtIG5vbWUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICdFc3RhIGNhdGVnb3JpYSBqw6EgZXhpc3RlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnSWRpb21hIEZBUSBhZGljaW9uYWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICdJZGlvbWEgRkFRICBhdHVhbGl6YWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBpcyByZXF1aXJlZCEnfSA9ICdPIG5vbWUgw6kgb2JyaWdhdMOzcmlvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ08gaWRpb21hIGrDoSBleGlzdGUhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBBcnRpY2xlJ30gPSAnQWRpY2lvbmFyIEFydGlnbyBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICdBIGNhdGVnb3JpYSDDqSBvYnJpZ2F0w7NyaWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmFsJ30gPSAnQXByb3Zhw6fDo28nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQ2F0ZWdvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnR2VzdMOjbyBkZSBDYXRlZ29yaWEgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBjYXRlZ29yeSd9ID0gJ0FkaWNpb25hciBjYXRlZ29yaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENhdGVnb3J5J30gPSAnQXBhZ2FyIENhdGVnb3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJ09rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJ0FkaWNpb25hciBjYXRlZ29yaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBDYXRlZ29yeSd9ID0gJ0FsdGVyYXIgY2F0ZWdvcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4nfSA9ICdTZXLDoSBleGliaWRvIGNvbW8gY29tZW50w6FyaW8gbm8gYnJvd3Nlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwLid9ID0gJ1BvciBmYXZvciwgc2VsZWNpb25lIHBlbG8gbWVub3MgdW0gZ3J1cG8gZGUgcGVybWlzc8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHRoYXQgY2FuIGFjY2VzcyBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5Lid9ID0gJ0dydXBvcyBkZSBhZ2VudGVzIHF1ZSBwb2RlbSBhY2VkZXIgYW9zIGFydGlnb3MgbmVzdGEgY2F0ZWdvcmlhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAnRGVzZWphIGFwYWdhciBlc3RhIGNhdGVnb3JpYT8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgY2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpZ28gYW5kL29yIGlzIHBhcmVudCBvZiBhdCBsZWFzdCBvbmUgb3RoZXIgY2F0ZWdvcnknfSA9ICdOw6NvIHBvZGUgYXBhZ2FyIGVzdGEgY2F0ZWdvcmlhLiDDiSB1c2FkYSBlbSBwZWxvIG1lbm9zIHVtIGFydGlnbyBGQVEgZS9vdSDDqSBwYWkgZGUgcGVsbyBtZW5vcyB1bWEgb3V0cmEgY2F0ZWdvcmlhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgYXJ0aWNsZShzKSd9ID0gJ0VzdGEgY2F0ZWdvcmlhIMOpIHV0aWxpemFkYSBubyhzKSBzZWd1aW50ZShzKSBhcnRpZ28ocykgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJ0VzdGEgY2F0ZWdvcmlhIMOpIHBhaSBkYXMgc2VndWludGVzIHN1Yi1jYXRlZ29yaWFzJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJ0Rlc2VqYSBhcGFnYXIgZXN0ZSBhcnRpZ28gRkFRPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICdGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFeHBsb3Jlcid9ID0gJ0V4cGxvcmFkb3IgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrIFNlYXJjaCd9ID0gJ1Blc3F1aXNhIFLDoXBpZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWR2YW5jZWQgU2VhcmNoJ30gPSAnUGVzcXVpc2EgQXZhbsOnYWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3JpZXMnfSA9ICdTdWItY2F0ZWdvcmlhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMnfSA9ICdBcnRpZ29zIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdWJjYXRlZ29yaWVzIGZvdW5kLid9ID0gJ1N1YmNhdGVnb3JpYXMgbsOjbyBlbmNvbnRyYWRhcy4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSGlzdG9yeQoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAnTsOjbyBmb3JhbSBlbmNvbnRyYWRvcyBkYWRvcyBkZSBKb3JuYWwgRkFRLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFMYW5ndWFnZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdHZXN0w6NvIGRlIElkaW9tYXMgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZSB0aGlzIGZlYXR1cmUgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIG11bHRpcGxlIGxhbmd1Z2VzLid9ID0gJ1V0aWxpemUgZXN0YSBmdW5jaW9uYWxBbnRpZ3VpZGFkZSBjYXNlbyBkZXNlamEgdHJhYmFsaGFyIGNvbSBtw7psdGlwbG9zIGlkaW9tYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBsYW5ndWFnZSd9ID0gJ0FkaWNpb25hciBpZGlvbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIExhbmd1YWdlJ30gPSAnQXBhZ2FyIGlkaW9tYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTGFuZ3VhZ2UnfSA9ICdBZGljaW9uYXIgaWRpb21hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgTGFuZ3VhZ2UnfSA9ICdFZGl0YXIgaWRpb21hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBsYW5ndWFnZT8nfSA9ICdEZXNlamEgYXBhZ2FyIGVzdGUgaWRpb21hPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBsYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUhJ30gPSAnTsOjbyBwb2RlIGFwYWdhciBlc3RlIGlkaW9tYS4gw4kgdXNhZG8gZW0gcGVsbyBtZW5vcyB1bSBhcnRpZ28gRkFRISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJ0VzdGUgaWRpb21hIMOpIHVzYWRvIG5vcyBzZWd1aW50ZXMgYXJ0aWdvKHMpIEZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJ0NvbmZpZ3VyYcOnw7VlcyBkZSBDb250ZXh0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgYXJ0aWNsZXMgcGVyIHBhZ2UnfSA9ICdBcnRpZ29zIEZBUSBwb3IgcMOhZ2luYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgZGF0YSBmb3VuZC4nfSA9ICdOw6NvIGZvcmFtIGVuY29udHJhZG9zIGRhZG9zIGRlIEZBUS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRUHJpbnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUS1JbmZvJ30gPSAnRkFRIEluZm9ybWHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ1ZvdG9zJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRRnVsbHRleHQnfSA9ICdGQVEtVGV4dG9Db21wbGV0byc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBTZWFyY2gnfSA9ICdQZXNxdWlzYSBGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYcOnw6NvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcnfSA9ICdOb3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyAlJ30gPSAnTm90YSAlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J291dCBvZiA1J30gPSAncmVkdXppZG8gZGUgNSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICdOZW5odW0gdm90byBlbmNvbnRyYWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEgQmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgRkFRIGFydGljbGUuJ30gPSAnTmVuaHVtIHZvdG8gZW5jb250cmFkbyEgU2VqYSBvIHByaW1laXJvIGEgYXZhbGlhciBlc3RlIGFydGlnbyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rvd25sb2FkIEF0dGFjaG1lbnQnfSA9ICdEZXNjYXJyZWdhciBhbmV4b3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZVZvdGluZ1F1ZXN0aW9uJ30gPSAnRXN0ZSBhcnRpZ28gZm9pIMO6dGlsID8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICduw6NvIGFqdWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ZlcnkgaGVscGZ1bCd9ID0gJ211aXRvIMO6dGlsJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb21TbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAnRkFRIEluc2VyaXIgVGV4dG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBMaW5rJ30gPSAnRkFRIEluc2VyaXIgTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQgJiBMaW5rJ30gPSAnRkFRIEluc2VyaXIgVGV4dG8gZSBMaW5rJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgYXJ0aWNsZXMgZm91bmQuJ30gPSAnTmVuaHVtIGFydGlnbyBGQVEgZW5jb250cmFkby4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRUHJpbnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbHRleHQgc2VhcmNoIGluIEZBUSBhcnRpY2xlcyAoZS4gZy4gIkpvaG4qbiIgb3IgIldpbGwqIiknfSA9ICdQZXNxdWlzYSBjb21wbGV0YSBkZSB0ZXh0b3MgZW0gYXJ0aWdvcyBGQVEgKHBvciBleGVtcGxvLCAiSm8qbyIgb3IgIldpbGwqIiknOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uCgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoUmVzdWx0U2hvcnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldGFpbHMnfSA9ICdEZXRhbGhlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJ1Blc3F1aXNlIHBvciBhcnRpZ29zIGNvbSBwYWxhdnJhcy1jaGF2ZSc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRRXhwbG9yZXIKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFQcmludAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAnUMO6YmxpY28nOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFab29tCgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZmlsdGVyIGZvciBIVE1MIG91dHB1dCB0byBhZGQgbGlua3MgYmVoaW5kIGEgZGVmaW5lZCBzdHJpbmcuIFRoZSBlbGVtZW50IEltYWdlIGFsbG93cyB0d28gaW5wdXQga2luZHMuIEZpcnN0IHRoZSBuYW1lIG9mIGFuIGltYWdlIChlLmcuIGZhcS5wbmcpLiBJbiB0aGlzIGNhc2UgdGhlIE9UUlMgaW1hZ2UgcGF0aCB3aWxsIGJlIHVzZWQuIFRoZSBzZWNvbmQgcG9zc2liaWxpdHkgaXMgdG8gaW5zZXJ0IHRoZSBsaW5rIHRvIHRoZSBpbWFnZS4nfSA9ICdVbSBmaWx0cm8gZGUgc2HDrWRhIEhUTUwgcGFyYSBhZGljaW9uYXIgbGlua3MgcGFyYSBhdHLDoXMgdW1hIHNlccO8w6puY2lhIGRlZmluaWRhLiBPIGVsZW1lbnRvIGRlIGltYWdlbSBwZXJtaXRlIGRvaXMgdGlwb3MgZGUgZW50cmFkYS4gUHJpbWVpcm8sIG8gbm9tZSBkYSBpbWFnZW0gKGV4OmZhcS5wbmcpLiBOZXN0ZSBjYXNvLCBvIGNhbWluaG8gZGEgaW1hZ2VtIE9UUlMgc2Vyw6EgdXRpbGl6YWRvLiBBIHNlZ3VuZGEgcGVybWl0ZSBpbnNlcmlyIG8gbGluayBwYXJhIGEgaW1hZ2VtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ0PDtHIgQ1NTIHBhcmEgbyByZXN1bHRhZG8gZGEgdm90YcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnR2VzdMOjbyBkZSBDYXRlZ29yaWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlY2ltYWwgcGxhY2VzIG9mIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ0Nhc2FzIGRlY2ltYWlzIGRvIHJlc3VsdGFkbyBkYSB2b3Rhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgY2F0ZWdvcnkgbmFtZS4nfSA9ICdOb21lIHBvciBvbWlzc8OjbyBkZSBjYXRlZ29yaWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbGFuZ3VhZ2UgZm9yIEZBUSBhcnRpY2xlcyBvbiBzaW5nbGUgbGFuZ3VhZ2UgbW9kZS4nfSA9ICdJZGlvbWEgcG9yIG9taXNzw6NvIHBhcmEgb3MgYXJ0aWdvcyBGQVEgbm8gbW9kbyBkZSBpZGlvbWEgw7puaWNvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnUHJpb3JpZGFkZSBwb3Igb21pc3PDo28gZGUgdGlja2V0cyBwYXJhIGFwcm92YcOnw6NvIGRvcyBhcnRpZ29zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJ0VzdGFkbyBwb3Igb21pc3PDo28gZGUgZW50cmFkYSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdFc3RhZG8gcG9yIG9taXNzw6NvIGRlIHRpY2tldHMgcGFyYSBhcHJvdmHDp8OjbyBkb3MgYXJ0aWdvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJ30gPSAnVmFsb3IgcG9yIG9taXNzw6NvIHBhcmEgbyBwYXLDom1ldHJvIGRlIFJlY3Vyc28gbmEgaW50ZXJmYWNlIHDDumJsaWNhLiBPIHBhcsOibWV0cm8gZGUgYcOnw6NvIMOpIHV0aWxpemFkbyBub3Mgc2NyaXB0cyBkbyBzaXN0ZW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGpvdXJuYWwuJ30gPSAnRGVmaW5lIHVtIG3Ds2R1bG8gZGUgcmVzdW1vIHBhcmEgbW9zdHJhciBhIHZpc3RhIHBlcXVlbmEgZGUgdW0gam9ybmFsIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBsaXN0Lid9ID0gJ0RlZmluZSB1bSBtw7NkdWxvIGRlIHJlc3VtbyBwYXJhIG1vc3RyYXIgYSB2aXN1YWxpemFyIGRlIHVtYSBwZXF1ZW5hIGxpc3RhIGRlIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdEZWZpbmUgbyBhdHJpYnV0byBwb3Igb21pc3PDo28gRkFRIHBhcmEgY2xhc3NpZmljYXIgYSBGQVEgbnVtYSBwZXNxdWlzYSBGQVEgbm8gaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9ICdEZWZpbmUgbyBhdHJpYnV0byBwb3Igb21pc3PDo28gRkFRIHBhcmEgY2xhc3NpZmljYXIgYSBGQVEgbnVtYSBwZXNxdWlzYSBGQVEgbm8gaW50ZXJmYWNlIGRvIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJ0RlZmluZSBvIGF0cmlidXRvIHBvciBvbWlzc8OjbyBGQVEgcGFyYSBjbGFzc2lmaWNhciBhIEZBUSBlbSB1bWEgcGVzcXVpc2EgRkFRIG5hIGludGVyZmFjZSBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnRGVmaW5lIG8gYXRyaWJ1dG8gcG9yIG9taXNzw6NvIEZBUSBwYXJhIGNsYXNzaWZpY2FyIG8gRkFRIG5hIGdlc3TDo28gRkFRIGRhIGludGVyZmFjZSBkbyBhZ2VudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAnRGVmaW5lIG8gYXRyaWJ1dG8gcG9yIG9taXNzw6NvIEZBUSBwYXJhIGNsYXNzaWZpY2FyIG8gRkFRIG5vIEdlcmVuY2lhZG9yIEZBUSBkYSBpbnRlcmZhY2UgZG8gY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnRGVmaW5lIG8gYXRyaWJ1dG8gcG9yIG9taXNzw6NvIEZBUSBwYXJhIGNsYXNzaWZpY2FyIG8gRkFRIG5hIGdlc3TDo28gRkFRIGRhIGludGVyZmFjZSBww7pibGljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9ICdEZWZpbmUgYSBvcmRlbSBwb3Igb21pc3PDo28gZGUgRkFRIG5vIHJlc3VsdGFkbyBkYSBnZXN0w6NvIEZBUSBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLiBBY2ltYTogQSBtYWlzIGFudGlnYSBubyB0b3BvLiBBYmFpeG86IG1haXMgcmVjZW50ZXMgbm8gdG9wby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPSAnRGVmaW5lIGEgb3JkZW0gcG9yIG9taXNzw6NvIGRlIEZBUSBubyByZXN1bHRhZG8gbmEgZ2VzdMOjbyBGQVEgZGEgaW50ZXJmYWNlIGRvIGNsaWVudGUuIEFjaW1hOiBBIG1haXMgYW50aWdhIG5vIHRvcG8uIEFiYWl4bzogbWFpcyByZWNlbnRlcyBubyB0b3BvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPSAnRGVmaW5lIGEgb3JkZW0gcG9yIG9taXNzw6NvIGRlIEZBUSBubyByZXN1bHRhZG8gbmEgZ2VzdMOjbyBGQVEgZGEgaW50ZXJmYWNlIHDDumJsaWNhLiBBY2ltYTogQSBtYWlzIGFudGlnYSBubyB0b3BvLiBBYmFpeG86IG1haXMgcmVjZW50ZXMgbm8gdG9wby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0gJ0RlZmluZSBhIG9yZGVtIHBvciBvbWlzc8OjbyBkZSBGQVEgbm8gcmVzdWx0YWRvIGRhIHBlc3F1aXNhIG5hIGludGVyZmFjZSBkbyBhZ2VudGUuIEFjaW1hOiBBIG1haXMgYW50aWdhIG5vIHRvcG8uIEFiYWl4bzogbWFpcyByZWNlbnRlcyBubyB0b3BvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPSAnRGVmaW5lIGEgb3JkZW0gcG9yIG9taXNzw6NvIGRlIEZBUSBubyByZXN1bHRhZG8gZGEgcGVzcXVpc2EgbmEgaW50ZXJmYWNlIGRvIGNsaWVudGUuIEFjaW1hOiBBIG1haXMgYW50aWdhIG5vIHRvcG8uIEFiYWl4bzogbWFpcyByZWNlbnRlcyBubyB0b3BvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0gJ0RlZmluZSBhIG9yZGVtIHBvciBvbWlzc8OjbyBkZSBGQVEgbm8gcmVzdWx0YWRvIGRhIHBlc3F1aXNhIG5hIGludGVyZmFjZSBww7pibGljYS4gQWNpbWE6IEEgbWFpcyBhbnRpZ2Egbm8gdG9wby4gQWJhaXhvOiBtYWlzIHJlY2VudGVzIG5vIHRvcG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBFeHBsb3Jlci4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9ICdEZWZpbmUgYXMgY29sdW5hcyBtb3N0cmFkYXMgbmEgZ2VzdMOjbyBGQVEuIEVzdGEgb3DDp8OjbyBuw6NvIHRlbSBlZmVpdG8gc29icmUgYSBwb3Npw6fDo28gZGEgY29sdW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9ICdEZWZpbmUgYXMgY29sdW5hcyBtb3N0cmFkYXMgbm8gam9ybmFsIEZBUS4gRXN0YSBvcMOnw6NvIG7Do28gdGVtIGVmZWl0byBzb2JyZSBhIHBvc2nDp8OjbyBkYSBjb2x1bmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPSAnRGVmaW5lIGFzIGNvbHVuYXMgbW9zdHJhZGFzIG5hIHBlc3F1aXNhIEZBUS4gRXN0YSBvcMOnw6NvIG7Do28gdGVtIGVmZWl0byBzb2JyZSBhIHBvc2nDp8OjbyBkYSBjb2x1bmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hlcmUgdGhlIFwnSW5zZXJ0IEZBUVwnIGxpbmsgd2lsbCBiZSBkaXNwbGF5ZWQuIE5vdGU6IEFnZW50VGlja2V0QWN0aW9uQ29tbW9uIGluY2x1ZGVzIEFnZW50VGlja2V0Tm90ZSwgQWdlbnRUaWNrZXRDbG9zZSwgQWdlbnRUaWNrZXRGcmVlVGV4dCwgQWdlbnRUaWNrZXRPd25lciwgQWdlbnRUaWNrZXRQZW5kaW5nLCBBZ2VudFRpY2tldFByaW9yaXR5IGFuZCBBZ2VudFRpY2tldFJlc3BvbnNpYmxlLid9ID0gJ0RlZmluZSBvbmRlIG8gbGluayBcJ0luc2VyaXIgRkFRXCcgc2Vyw6EgZXhpYmlkby4gTm90YTogT3MgUmVjdXJzbyBjb211bXMgZG8gYWdlbnRlIGluY2x1ZW0gQWJyaXIgdGlja2V0LCBGZWNoYXIgdGlja2V0LCB0aWNrZXQgZGUgVGV4dG8gTGl2cmUsIHByb3ByaWV0w6FyaW8gZG8gdGlja2V0LCB0aWNrZXQgcGVuZGVudGUsIFByaW9yaWRhZGUgZSByZXNwb25zw6F2ZWwgZG8gdGlja2V0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC4nfSA9ICdEZWZpbmnDp8OjbyBkZSBjYW1wb3MgZGUgdGV4dG8gbGl2cmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJ0FwYWdhciBlc3RhIEZBUSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJ0VkaXRhciBlc3RhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAnUGVybWl0aXIgdsOhcmlvcyBpZGlvbWFzIG5vIG3Ds2R1bG8gRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLid9ID0gJ1Blcm1pdGlyIG1lY2FuaXNtbyBkZSBBdmFsaWHDp8OjbyBubyBtw7NkdWxvIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwnfSA9ICdKb3JuYWwgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdMaW1pdGUgZGEgdmlzdGEgIlBlcXVlbmEiIGRvIEpvcm5hbCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdMaW1pdGUgZGEgdmlzdGEgIEZBUSAiUGVxdWVubyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiJ30gPSAnTGltaXRlIGRlIEZBUXMgcG9yIHDDoWdpbmEgbmEgdmlzdGEgIlBlcXVlbm8iIGRvIEpvcm5hbCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJ0xpbWl0ZSBkZSBGQVFzIHBvciBww6FnaW5hIG5hIHZpc3RhICJQZXF1ZW5hIiBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHBhdGggc2VwYXJhdG9yLid9ID0gJ0RlbGltaXRhZG9yIGRlIGNhbWluaG8gRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnUm91dGVyIGRlIHBlc3F1aXNhIEZBUSBuYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEtQXJlYSd9ID0gJ8OBcmVhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICdGcm9udGVuZCBkZSByZWdpc3RvIGRvIG3Ds2R1bG8gcGFyYSBhIGludGVyZmFjZSBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JvdXAgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnR3J1cG8gcGFyYSBhIGFwcm92YcOnw6NvIGRvcyBhcnRpZ29zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJ0hpc3TDs3JpY28gZGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICdJbmNsdWlyIGNhbXBvcyBpbnRlcm5vcyBkZSB1bSB0aWNrZXQgYmFzZWFkbyBlbSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgdGhlIG5hbWUgb2YgZWFjaCBmaWVsZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnSW5jbHVpciBvIG5vbWUgZGUgY2FkYSBjYW1wbyBudW0gdGlja2V0IGJhc2VhZG8gZW0gRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWlja3NlYXJjaCBzaG91bGQgYmUgc2hvd24uJ30gPSAnSW50ZXJmYWNlcyBvbmRlIGEgYnVzY2EgcsOhcGlkYSBkZXZlIHNlciB2aXN1YWxpemFkYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJ0pvcm5hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnR2VzdMOjbyBkZSBpZGlvbWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdla2V5IHdoaWNoIGlzIGRlZmluZWQgaW4gdGhlIGxhbmd1YWdlIGZpbGUgKl9GQVEucG0uJ30gPSAnSWRpb21hIGNoYXZlIHF1ZSBlc3TDoSBkZWZpbmlkbyBubyBhcnF1aXZvIGRlIGlkaW9tYSAqX0ZBUS5wbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBhbm90aGVyIG9iamVjdCB0byB0aGlzIEZBUSBpdGVtJ30gPSAnTGluayBkZSBvdXRybyBhcnRpZ28gcGFyYSBlc3RhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnTyBuw7ptZXJvIG3DoXhpbW8gZGUgYXJ0aWdvcyBGQVEgdmlzdWFsaXphZG8gbmEgZ2VzdMOjbyBGQVEgZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0gJ08gbsO6bWVybyBtw6F4aW1vIGRlIGFydGlnb3MgRkFRIHZpc3VhbGl6YWRvIG5hIGdlc3TDo28gR2VyZW5jaWFkb3IgRkFRIGRhIGludGVyZmFjZSBkbyBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJ08gbsO6bWVybyBtw6F4aW1vIGRlIGFydGlnb3MgRkFRIHZpc3VhbGl6YWRvIG5hIGdlc3TDo28gRkFRIGRhIGludGVyZmFjZSBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdPIG7Dum1lcm8gbcOheGltbyBkZSBhcnRpZ29zIEZBUSB2aXN1YWxpemFkbyBubyBqb3JuYWwgRkFRIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJ08gbsO6bWVybyBtw6F4aW1vIGRlIGFydGlnb3MgRkFRIHZpc3VhbGl6YWRvIG5vIHJlc3V0bGFkbyBkZSB1bWEgcGVzcXVpc2Egbm8gaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAnTyBuw7ptZXJvIG3DoXhpbW8gZGUgYXJ0aWdvcyBGQVEgdmlzdWFsaXphZG8gbm8gcmVzdWx0YWRvIGRlIHVtYSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJ08gbsO6bWVybyBtw6F4aW1vIGRlIGFydGlnb3MgRkFRIHZpc3VhbGl6YWRvIG8gbm8gcmVzdWx0YWRvIGRlIHVtYSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgcHVibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBmYXEgc2VhcmNoLid9ID0gJ03Ds2R1bG8gcGFyYSBnZXJhciBodG1sICJPcGVuU2VhcmNoImRlIHBlc3F1aXNhIGZhcSBjdXJ0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBBcnRpY2xlJ30gPSAnTm92byBhcnRpZ28gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJ05vdm9zIGFydGlnb3MgRkFRIHByZWNpc2FtIGRlIGFwcm92YcOnw6NvIGFudGVzIGRlIHNlciBwdWJsaWNhZG9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAnTsO6bWVybyBkZSBhcnRpZ29zIEZBUSB2aXN1YWxpemFkbyBuYSBnZXN0w6NvIEZBUSBkbyBpbnRlcmZhY2UgZG8gY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJ07Dum1lcm8gZGUgYXJ0aWdvcyBGQVEgdmlzdWFsaXphZG8gbmEgZ2VzdMOjbyBGQVEgZG8gaW50ZXJmYWNlIHB1YmxpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0gJ07Dum1lcm8gZGUgYXJ0aWdvcyBGQVEgdmlzdWFsaXphZG8gcG9yIHDDoWdpbmEgZGUgcmVzdWx0YWRvcyBkZSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgZG8gY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJ07Dum1lcm8gZGUgYXJ0aWdvcyBGQVEgdmlzdWFsaXphZG8gcG9yIHDDoWdpbmEgZGUgcmVzdWx0YWRvcyBkZSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgcHVibGljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLid9ID0gJ07Dum1lcm8gZGUgaXRlbnMgdmlzdWFsaXphZG9zIG5hcyDDumx0aW1hcyBhbHRlcmHDp8O1ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJ30gPSAnTsO6bWVybyBkZSBpdGVucyB2aXN1YWxpemFkb3MgbmFzIMO6bHRpbWFzIGNyaWHDp8O1ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuJ30gPSAnTsO6bWVybyBkZSBpdGVucyB2aXN1YWxpemFkb3MgZW0gdG9wIDEwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIGpvdXJuYWwgb3ZlcnZpZXcuJ30gPSAnUGFyw6JtZXRyb3MgZGUgcMOhZ2luYXMgKG5hcyBxdWFpcyBvcyBpdGVucyBGQVEgc8OjbyB2aXN1YWxpemFkb3MpIGRhIHZpc3RhIHBlcXVlbmEgZG8gam9ybmFsIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9ICdQYXLDom1ldHJvcyBkZSBww6FnaW5hcyAobmFzIHF1YWlzIG9zIGl0ZW5zIEZBUSBzw6NvIHZpc3VhbGl6YWRvcykgZGEgdmlzdGEgcGVxdWVuYSBkZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50IHRoaXMgRkFRJ30gPSAnSW1wcmltaXIgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0ZpbGEgcGFyYSBhcHJvdmHDp8OjbyBkb3MgYXJ0aWdvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGVzIGZvciB2b3RpbmcuIEtleSBtdXN0IGJlIGluIHBlcmNlbnQuJ30gPSAnQ29uZGnDp8OjbyBwYXJhIGEgYXZhbGlhw6fDo28uIENoYXZlIGVtIHBlcmNlbnRhZ2VtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRJ30gPSAnUGVzcXVpc2FyIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9ICdNb3N0cmFyIGJvdMOjbyAiSW5zZXJpciBMaW5rIEZBUSIgbmEgdmlzdGEgcGVxdWVuYSBkZSBhcnRpZ29zIEZBUSBww7pibGljb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0gJ01vc3RyYSBib3TDo28gIkluc2VyaXIgdGV4dG8gZSBMaW5rIEZBUSIgbmEgdmlzdGEgcGVxdWVuYSBkZSBhcnRpZ29zIEZBUSBww7pibGljb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPSAnTW9zdHJhciBib3TDo28gIkluc2VyaXIgRkFRIFRleHRvIiBuYSB2aXN0YSBwYXJhIG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBBcnRpY2xlIHdpdGggSFRNTC4nfSA9ICdNb3N0cmFyIGFydGlnbyBGQVEgY29tIEhUTUwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIHBhdGggeWVzL25vLid9ID0gJ01vc3RyYXIgY2FtaW5obyBGQVEgc2ltIC8gbsOjby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBXWVNJV1lHIGVkaXRvciBpbiBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnTW9zdHJhciBlZGl0b3IgV1lTSVdZRyBuYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuJ30gPSAnTW9zdHJhciBzdWJjYXRlZ29yaWFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY2hhbmdlIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdNb3N0cmFyIGFzIMO6bHRpbWFzIGFsdGVyYcOnw7VlcyBkZSBpdGVucyBlbSBpbnRlcmZhY2VzIGRlZmluaWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNyZWF0ZWQgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ01vc3RyYXIgb3Mgw7psdGltb3MgaXRlbnMgY3JpYWRvcyBlbSBpbnRlcmZhY2VzIGRlZmluaWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ01vc3RyYXIgYXMgMTAgbWFpcyB2aXN1YWxpemFkYXMgZW0gaW50ZXJmYWNlcyBkZWZpbmlkYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdm90aW5nIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdNb3N0cmFyIHZvdGHDp8OjbyBlbSBpbnRlcmZhY2VzIGRlZmluaWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBGQVEgd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgem9vbSB2aWV3IG9mIHN1Y2ggRkFRIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBxdWUgcGVybWl0ZSBsaWdhciBhIEZBUSBjb20gb3V0cm8gb2JqZXRvIG5hIHZpc3RhIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIHRvIGRlbGV0ZSBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBxdWUgcGVybWl0ZSBleGNsdWlyIHVtIEZBUSBuYSB2aXN0YSBuYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdNb3N0cmEgdW0gbGluayBubyBtZW51IHBhcmEgYWNlZGVyIGFvIGhpc3TDs3JpY28gZGEgRkFRIG5hIHZpc3RhIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdNb3N0cmEgdW0gbGluayBubyBtZW51IHBhcmEgZWRpdGFyIHVtYSBGQVEgbmEgdmlzdGEgZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdNb3N0cmEgdW0gbGluayBubyBtZW51IHBhcmEgdm9sdGFyIHVtYSBGQVEgbmEgdmlzdGEgZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIGltcHJpbWlyIHVtYSBGQVEgbmEgdmlzdGEgZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0gJ08gaWRlbnRpZmljYWRvciBwYXJhIEZBUSwgZXhlbXBsbyBGQVEgIyBLQiAjICMgTXlGQVEuIE8gdmFsb3IgcG9yIG9taXNzw6NvIMOpIEZBUSAjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPSAnRXNzYSBjb25maWd1cmHDp8OjbyBkZWZpbmUgcXVlIHVtIG9iamV0byBcJ0ZBUVwnIHBvZGUgc2VyIHJlbGFjaW9uYWRvIGNvbSBvdXRyb3Mgb2JqZXRvcyBcJ0ZBUVwnIGNvbSBsaWdhw6fDo28gXCdOb3JtYWxcJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9ICdFc3NhIGNvbmZpZ3VyYcOnw6NvIGRlZmluZSBxdWUgdW0gb2JqZXRvIFwnRkFRXCcgcG9kZSBzZXIgcmVsYWNpb25hZG8gY29tIG91dHJvcyBvYmpldG9zIFwnRkFRXCcgY29tIGxpZ2HDp8OjbyBcJ1BhaSBlIGZpbGhvXCcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0gJ0Vzc2EgY29uZmlndXJhw6fDo28gZGVmaW5lIHF1ZSB1bSBvYmpldG8gXCdGQVFcJyBwb2RlIHNlciByZWxhY2lvbmFkbyBjb20gb3V0cm9zIG9iamV0b3MgXCdUaWNrZXRcJyBjb20gbGlnYcOnw6NvIFwnTm9ybWFsXCcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPSAnRXNzYSBjb25maWd1cmHDp8OjbyBkZWZpbmUgcXVlIHVtIG9iamV0byBcJ0ZBUVwnIHBvZGUgc2VyIHJlbGFjaW9uYWRvIGNvbSBvdXRyb3Mgb2JqZXRvcyBcJ1RpY2tldFwnIGNvbSBsaWdhw6fDo28gXCdQYWkgZSBmaWxob1wnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBib2R5IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdDb3JwbyBkbyB0aWNrZXQgcGFyYSBhcHJvdmHDp8OjbyBkZSB1bSBhcnRpZ28gRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnTyBhc3N1bnRvIGRvIHRpY2tldCBwYXJhIGFwcm92YcOnw6NvIGRlIHVtIGFydGlnbyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nfSA9ICcnOwoKICAgICMKICAgICMgT0JTT0xFVEUgRU5UUklFUyBGT1IgUkVGRVJFTkNFLCBETyBOT1QgVFJBTlNMQVRFIQogICAgIwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBleHBsb3JlciBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBleHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIEV4cGxvcmVyIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlOiAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIEV4cGxvcmVyIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBleHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IFRleHQgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBUZXh0IiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPSAnJzsKCn0KCjE7Cg==
IyAtLQojIEtlcm5lbC9MYW5ndWFnZS9ydV9GQVEucG0gLSB0cmFuc2xhdGlvbiBmaWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Okxhbmd1YWdlOjpydV9GQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFBQUZBUQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICfRgdC70YPQttC10LHQvdC+0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljJ30gPSAn0L7QsdGJ0LXQtNC+0YHRgtGD0L/QvdC+0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICfQvtGC0LrRgNGL0YLQvtC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOdW1iZXInfSA9ICfQndC+0LzQtdGAIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICfQn9C+0YHQu9C10LTQvdC40LUg0L7QsdC90L7QstC70LXQvdC40Y8g0YHRgtCw0YLQtdC5IEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICfQndC+0LLRi9C1INGB0YLQsNGC0YzQuCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9wIDEwIEZBUSBhcnRpY2xlcyd9ID0gJ1RvcCAxMCDRgdGC0LDRgtC10LkgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3J5IG9mJ30gPSAn0J/QvtC00YDQsNC30LTQtdC7JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2VsZWN0ZWQhJ30gPSAn0J7RhtC10L3QutCwINC+0YLRgdGD0YLRgdGC0LLRg9C10YIhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGxvcmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAoYWxsKSd9ID0gJ9C+0LHRidC10LTQvtGB0YLRg9C/0L3QvtC1ICjQstGB0LXQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwgKGN1c3RvbWVyKSd9ID0gJ9C+0YLQutGA0YvRgtC+0LUgKNC60LvQuNC10L3RgtCw0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsIChhZ2VudCknfSA9ICfRgdC70YPQttC10LHQvdC+0LUgKNCw0LPQtdC90YLQsNC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBkYXknfSA9ICfQndCw0YfQsNC70L4g0LTQvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IG1vbnRoJ30gPSAn0J3QsNGH0LDQu9CwINC80LXRgdGP0YbQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCB5ZWFyJ30gPSAn0J3QsNGH0LDQu9C+INCz0L7QtNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBkYXknfSA9ICfQmtC+0L3QtdGGINC00L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgbW9udGgnfSA9ICfQmtC+0L3QtdGGINC80LXRgdGP0YbQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgeWVhcid9ID0gJ9Ca0L7QvdC10YYg0LPQvtC00LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAn0KHQv9Cw0YHQuNCx0L4g0LfQsCDQstCw0YjRgyDQvtGG0LXQvdC60YMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJ30gPSAn0JLRiyDRg9C20LUg0L/QvtGB0YLQsNCy0LjQu9C4INC+0YbQtdC90LrRgyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgUHJpbnQnfSA9ICfQn9C10YfQsNGC0Ywg0YHRgtCw0YLRjNC4IEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKFRvcCAxMCknfSA9ICfQodGC0LDRgtGM0LggRkFRIChUb3AgMTApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAn0KHRgtCw0YLRjNC4IEZBUSAo0L3QvtCy0YvQtSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ9Ch0YLQsNGC0YzQuCBGQVEgKNC+0LHQvdC+0LLQu9GR0L3QvdGL0LUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ9Ca0LDRgtC10LPQvtGA0LjRjyBGQVEg0LjQt9C80LXQvdC10L3QsCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IGFkZGVkISd9ID0gJ9Ca0LDRgtC10LPQvtGA0LjRjyBGQVEg0LTQvtCx0LDQstC70LXQvdCwISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEnfSA9ICfQoyDQutCw0YLQtdCz0L7RgNC40Lgg0LTQvtC70LbQvdC+INCx0YvRgtGMINC90LDQt9Cy0LDQvdC40LUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICfQotCw0LrQsNGPINC60LDRgtC10LPQvtGA0LjRjyDRg9C20LUg0YHRg9GJ0LXRgdGC0LLRg9C10YIhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSBhZGRlZCEnfSA9ICfQr9C30YvQuiDQtNC70Y8gRkFRINC00L7QsdCw0LLQu9C10L0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSB1cGRhdGVkISd9ID0gJ9Cv0LfRi9C6INC00LvRjyBGQVEg0LjQt9C80LXQvdGR0L0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJ9Cd0LXQvtCx0YXQvtC00LjQvNC+INC30LDQtNCw0YLRjCDQvdCw0LfQstCw0L3QuNC1ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ9Ci0LDQutC+0Lkg0Y/Qt9GL0Log0YPQttC1INGB0YPRidC10YHRgtCy0YPQtdGCISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnREYXNoYm9hcmRGQVFPdmVydmlldwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICfQlNC+0LHQsNCy0LjRgtGMINGB0YLQsNGC0YzRjiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICfQndGD0LbQvdC+INCy0YvQsdGA0LDRgtGMINC60LDRgtC10LPQvtGA0LjRji4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICfQntC00L7QsdGA0LXQvdC+JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ9Cj0L/RgNCw0LLQu9C10L3QuNC1INC60LDRgtC10LPQvtGA0LjRj9C80LggRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBjYXRlZ29yeSd9ID0gJ9CU0L7QsdCw0LLQuNGC0Ywg0LrQsNGC0LXQs9C+0YDQuNGOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDYXRlZ29yeSd9ID0gJ9Cj0LTQsNC70LjRgtGMINC60LDRgtC10LPQvtGA0LjRjic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJ09rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJ9CU0L7QsdCw0LLQuNGC0Ywg0LrQsNGC0LXQs9C+0YDQuNGOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQ2F0ZWdvcnknfSA9ICfQo9C00LDQu9C40YLRjCDQutCw0YLQtdCz0L7RgNC40Y4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ9CR0YPQtNC10YIg0L/QvtC60LDQt9Cw0L3QviDQsiBFeHBsb3JlciDQutCw0Log0LrQvtC80LzQtdC90YLQsNGA0LjQuS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICfQo9C60LDQttC40YLQtSDRhdC+0YLRjyDQsdGLINC+0LTQvdGDINCz0YDRg9C/0L/Rgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHRoYXQgY2FuIGFjY2VzcyBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5Lid9ID0gJ9CT0YDRg9C/0L/RiyDQsNCz0LXQvdGC0L7Qsiwg0LjQvNC10Y7RidC40YUg0LTQvtGB0YLRg9C/INC6INGB0YLQsNGC0YzRj9C8INGN0YLQvtC5INC60LDRgtC10LPQvtGA0LjQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyd9ID0gJ9Cf0L7QtNGC0LLQtdGA0LTQuNGC0LUg0YPQtNCw0LvQtdC90LjQtSDRjdGC0L7QuSDQutCw0YLQtdCz0L7RgNC40LghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAn0K3RgtGDINC60LDRgtC10LPQvtGA0LjRjiDRg9C00LDQu9GP0YLRjCDQvdC10LvRjNC30Y8hINCSINC90LXQuSDRgdC+0LTQtdGA0LbQuNGC0YHRjyDQutCw0Log0LzQuNC90LjQvNGD0Lwg0L7QtNC90LAg0YHRgtCw0YLRjNGPIEZBUSDQuC/QuNC70Lgg0L7QvdCwINGP0LLQu9GP0LXRgtGB0Y8g0YDQvtC00LjRgtC10LvRjNGB0LrQvtC5INC00LvRjyDQtNGA0YPQs9C40YUg0LrQsNGC0LXQs9C+0YDQuNC5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAn0JIg0Y3RgtC+0Lkg0LrQsNGC0LXQs9C+0YDQuNC4INC40LzQtdGO0YLRgdGPINGB0LvQtdC00YPRjtGJ0LjQtSDRgdGC0LDRgtGM0LggRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJ9Ct0YLQsCDQutCw0YLQtdCz0L7RgNC40Y8g0Y/QstC70Y/QtdGC0YHRjyDRgNC+0LTQuNGC0LXQu9GM0YHQutC+0Lkg0LTQu9GPINGB0LvQtdC00YPRjtGJ0LjRhSDQv9C+0LTRgNCw0LfQtNC10LvQvtCyJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJ9Cf0L7QtNGC0LLQtdGA0LTQuNGC0LUg0YPQtNCw0LvQtdC90LjQtSDRjdGC0L7QuSDRgdGC0LDRgtGM0LggRkFRISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICdGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFeHBsb3Jlcid9ID0gJ0ZBUSBFeHBsb3Jlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWljayBTZWFyY2gnfSA9ICfQkdGL0YHRgtGA0YvQuSDQv9C+0LjRgdC6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkdmFuY2VkIFNlYXJjaCd9ID0gJ9Cg0LDRgdGI0LjRgNC10L3QvdGL0Lkg0L/QvtC40YHQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAn0J/QvtC00YDQsNC30LTQtdC70YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzJ30gPSAn0KHRgtCw0YLRjNC4IEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdWJjYXRlZ29yaWVzIGZvdW5kLid9ID0gJ9Cf0L7QtNGA0LDQt9C00LXQu9GLINC90LUg0L3QsNC50LTQtdC90YsuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUhpc3RvcnkKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUpvdXJuYWxPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgSm91cm5hbCBkYXRhIGZvdW5kLid9ID0gJ9CU0LDQvdC90YvRhSDQttGD0YDQvdCw0LvQsCBGQVEg0L3QtdGCLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFMYW5ndWFnZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICfQo9C/0YDQsNCy0LvQtdC90LjQtSDRj9C30YvQutCw0LzQuCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VnZXMuJ30gPQogICAgICAgICfQmNGB0L/QvtC70YzQt9GD0LnRgtC1INGN0YLRgyDRhNGD0L3QutGG0LjRjiDQv9GA0Lgg0L3QtdC+0LHRhdC+0LTQuNC80L7RgdGC0Lgg0YDQsNCx0L7RgtGLINGBINC90LXRgdC60L7Qu9GM0LrQuNC80Lgg0Y/Qt9GL0LrQsNC80LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBsYW5ndWFnZSd9ID0gJ9CU0L7QsdCw0LLQuNGC0Ywg0Y/Qt9GL0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIExhbmd1YWdlJ30gPSAn0KPQtNCw0LvQuNGC0Ywg0Y/Qt9GL0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIExhbmd1YWdlJ30gPSAn0JTQvtCx0LDQstC40YLRjCDRj9C30YvQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IExhbmd1YWdlJ30gPSAn0JjQt9C80LXQvdC40YLRjCDRj9C30YvQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAn0J/QvtC00YLQstC10YDQtNC40YLQtSDRg9C00LDQu9C10L3QuNC1INGN0YLQvtCz0L4g0Y/Qt9GL0LrQsCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgbGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlISd9ID0KICAgICAgICAn0K3RgtC+0YIg0Y/Qt9GL0Log0YPQtNCw0LvRj9GC0Ywg0L3QtdC70YzQt9GPLiDQndCwINC90ZHQvCDQvdCw0L/QuNGB0LDQvdCwINC60LDQuiDQvNC40L3QuNC80YPQvCDQvtC00L3QsCDRgdGC0LDRgtGM0Y8gRkFRISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJ9Ct0YLQvtGCINGP0LfRi9C6INC40YHQv9C+0LvRjNC30L7QstCw0L0g0LIg0YHQu9C10LTRg9GO0YnQuNGFINGB0YLQsNGC0YzRj9GFIEZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGVzIHBlciBwYWdlJ30gPSAn0JrQvtC70LjRh9C10YHRgtCy0L4g0YHRgtCw0YLQtdC5INC90LAg0YHRgtGA0LDQvdC40YbRgyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgZGF0YSBmb3VuZC4nfSA9ICfQlNCw0L3QvdGL0LUgRkFRINC90LUg0L3QsNC50LTQtdC90YsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZ2VuZXJpYyBGQVEgdGFibGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnIiwiNTAnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRUHJpbnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUS1JbmZvJ30gPSAn0JjQvdGE0L7RgNC80LDRhtC40Y8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGVzJ30gPSAn0JPQvtC70L7RgdCwJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSAoZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIChlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRRnVsbHRleHQnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgU2VhcmNoJ30gPSAn0J/QvtC40YHQuiDQsiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHJhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgZGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIHJhbmdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ9CY0L3RhNC+0YDQvNCw0YbQuNGPIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyciLCIxOCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyciLCIyNSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcnfSA9ICfQntGG0LXQvdC60LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nICUnfSA9ICfQntGG0LXQvdC60LAgJSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJ9C40LcgNSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICfQntGG0LXQvdC+0Log0L3QtSDQvdCw0LnQtNC10L3QviEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLid9ID0gJ9Ce0YbQtdC90L7QuiDQvdC1INC90LDQudC00LXQvdC+ISDQntGG0LXQvdC40YLQtSDRjdGC0YMg0YHRgtCw0YLRjNGOIEZBUSDQv9C10YDQstGL0LwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rvd25sb2FkIEF0dGFjaG1lbnQnfSA9ICfQodC60LDRh9Cw0YLRjCDQstC70L7QttC10L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hvdyBoZWxwZnVsIHdhcyB0aGlzIGFydGljbGU/IFBsZWFzZSBnaXZlIHVzIHlvdXIgcmF0aW5nIGFuZCBoZWxwIHRvIGltcHJvdmUgdGhlIEZBUSBEYXRhYmFzZS4gVGhhbmsgWW91ISd9ID0KICAgICAgICAn0J3QsNGB0LrQvtC70YzQutC+INCx0YvQu9CwINC/0L7Qu9C10LfQvdCwINGN0YLQsCDRgdGC0LDRgtGM0Y8/INCf0L7QttCw0LvRg9C50YHRgtCwLCDQvtGG0LXQvdC40YLQtSDQtdGRLCDRh9GC0L7QsdGLINC80Ysg0LzQvtCz0LvQuCDRg9C70YPRh9GI0LjRgtGMINCx0LDQt9GDIEZBUS4g0KHQv9Cw0YHQuNCx0L4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBoZWxwZnVsJ30gPSAn0LHQtdGB0L/QvtC70LXQt9C90LDRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICfQvtGH0LXQvdGMINC/0L7Qu9C10LfQvdCw0Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCd9ID0gJ9CS0YHRgtCw0LLQuNGC0Ywg0YLQtdC60YHRgiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgTGluayd9ID0gJ9CS0YHRgtCw0LLQuNGC0Ywg0YHRgdGL0LvQutGDINC90LAgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCAmIExpbmsnfSA9ICfQktGB0YLQsNCy0LjRgtGMINGC0LXQutGB0YIgRkFRINC4INGB0YHRi9C70LrRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEgJiBMaW5rJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgYXJ0aWNsZXMgZm91bmQuJ30gPSAn0KHRgtCw0YLRjNC4IEZBUSDQvdC1INC90LDQudC00LXQvdGLLic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFQcmludAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSd9ID0gJ9Cf0L7Qu9C90L7RgtC10LrRgdGC0L7QstGL0Lkg0L/QvtC40YHQuiDQsiDRgdGC0LDRgtGM0Y/RhSBGQVEgKNC90LDQv9GA0LjQvNC10YAsICLQsNCy0YLQvtC8KtC60LgiINC40LvQuCAi0JzQvtGB0LoqIiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSByZXN0cmljdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCB2b3Rlcy4uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSByZXN0cmljdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCByYXRlLi4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbFRleHQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hSZXN1bHRTaG9ydAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGZvciBhcnRpY2xlcyB3aXRoIGtleXdvcmQnfSA9ICfQn9C+0LjRgdC6INGB0YLQsNGC0LXQuSDQv9C+INC60LvRjtGH0LXQstC+0LzRgyDRgdC70L7QstGDJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFFeHBsb3JlcgoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVByaW50CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoCgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMnfSA9ICfQntCx0YnQtdC00L7RgdGC0YPQv9C90L7QtSc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbFRleHQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFNob3J0CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRWm9vbQoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVFJTIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPQogICAgICAgICdFaW4gRmlsdGVyIHp1ciBhdXRvbWF0aXNjaGVuIEdlbmVyaWVydW5nIHZvbiBGQVEtTGlua3MsIHdlbm4gZWluIEhpbndlaXMgYXVmIGVpbmVuIEZBUS1BcnRpa2VsIGlkZW50aWZpemllcnQgd2lyZC4gRGFzIEVsZW1lbnQgSW1hZ2UgZXJsYXVidCB6d2VpIEVpbmdhYmVmb3JtZW46IEVyc3RlbnMgZGVyIE5hbWUgZWluZXMgSWNvbnMgKHouIEIuIGZhcS5wbmcpLiBJbiBkaWVzZW0gRmFsbCB3aXJkIGF1ZiBkYXMgR3JhZmlrLVZlcnplaWNobmlzIGRlcyBPVFJTIHp1Z2VncmlmZmVuLiBBbHMgendlaXRlIE3RhmdsaWNoa2VpdCBrYW5uIG1hbiBhYmVyIGF1Y2ggZGVuIGRpcmVrdGVuIExpbmsgenVyIEdyYWZpayBhbmdlYmVuICh6LiBCLiBodHRwOi8vb3Rycy5vcmcvZmFxLnBuZykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnQ1NTLUZhcmJlIGbRjHIgZGFzIEJld2VydHVuZ3MtRXJnZWJuaXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ9Cj0L/RgNCw0LLQu9C10L3QuNC1INC60LDRgtC10LPQvtGA0LjRj9C80LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgY2F0ZWdvcnkgbmFtZS4nfSA9ICfQndCw0LfQstCw0L3QuNC1INC60LDRgtC10LPQvtGA0LjQuCDQv9C+LdGD0LzQvtC70YfQsNC90LjRji4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLid9ID0gJ9Cv0LfRi9C6INGB0YLQsNGC0LXQuSBGQVEg0L/Qvi3Rg9C80L7Qu9GH0LDQvdC40Y4g0LIg0L7QtNC90L7Rj9C30YvRh9C90L7QvCDRgNC10LbQuNC80LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgcHJpb3JpdHkgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9CiAgICAgICAgJ9Cf0YDQuNC+0YDQuNGC0LXRgiDQt9Cw0Y/QstC+0Log0L3QsCDQvtC00L7QsdGA0LXQvdC40LUg0YHRgtCw0YLQtdC5IEZBUSDQv9C+LdGD0LzQvtC70YfQsNC90LjRji4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJ9Ch0YLQsNGC0YPRgSDQt9Cw0L/QuNGB0LggRkFRINC/0L4t0YPQvNC+0LvRh9Cw0L3QuNGOLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAn0KHRgtCw0YLRg9GBINC30LDRj9Cy0L7QuiDQvdCwINC+0LTQvtCx0YDQtdC90LjQtSDRgdGC0LDRgtC10LkgRkFRINC/0L4t0YPQvNC+0LvRh9Cw0L3QuNGOLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHZhbHVlIGZvciB0aGUgQWN0aW9uIHBhcmFtZXRlciBmb3IgdGhlIHB1YmxpYyBmcm9udGVuZC4gVGhlIEFjdGlvbiBwYXJhbWV0ZXIgaXMgdXNlZCBpbiB0aGUgc2NyaXB0cyBvZiB0aGUgc3lzdGVtLid9ID0KICAgICAgICAn0JfQvdCw0YfQtdC90LjQtSDQv9C+INGD0LzQvtC70YfQsNC90LjRjiDQv9Cw0YDQsNC80LXRgtGA0LAgQWN0aW9uINC00LvRjyDQvtCx0YnQtdC00L7RgdGC0YPQv9C90L7Qs9C+INGE0YDQvtC90YLQtdC90LTQsC4g0J/QsNGA0LDQvNC10YLRgCBBY3Rpb24g0LjRgdC/0L7Qu9GM0LfRg9C10YLRgdGPINCyINGB0LrRgNC40L/RgtCw0YUg0YHQuNGB0YLQtdC80YsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cj0LrQsNC20LjRgtC1INGB0YLQsNC90LTQsNGA0YLQvdC+0LUg0LfQvdCw0YfQtdC90LjQtSDQsNGC0YDQuNCx0YPRgtCwIEZBUSDQtNC70Y8g0YHQvtGA0YLQuNGA0L7QstC60Lgg0YDQtdC30YPQu9GM0YLQsNGC0L7QsiDQv9C+0LjRgdC60LAg0LIgRkFRINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cj0LrQsNC20LjRgtC1INGB0YLQsNC90LTQsNGA0YLQvdC+0LUg0LfQvdCw0YfQtdC90LjQtSDQsNGC0YDQuNCx0YPRgtCwIEZBUSDQtNC70Y8g0YHQvtGA0YLQuNGA0L7QstC60Lgg0YDQtdC30YPQu9GM0YLQsNGC0L7QsiDQv9C+0LjRgdC60LAg0LIgRkFRINCyINC40L3RgtC10YDRhNC10LnRgdC1INC60LvQuNC10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cj0LrQsNC20LjRgtC1INGB0YLQsNC90LTQsNGA0YLQvdC+0LUg0LfQvdCw0YfQtdC90LjQtSDQsNGC0YDQuNCx0YPRgtCwINGB0L7RgNGC0LjRgNC+0LLQutC4INGA0LXQt9GD0LvRjNGC0LDRgtCwINC/0L7QuNGB0LrQsCDQsiDQvtCx0YnQtdC00L7RgdGC0YPQv9C90L7QvCDQuNC90YLQtdGA0YTQtdC50YHQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQo9C60LDQttC40YLQtSDRgdGC0LDQvdC00LDRgNGC0L3QvtC1INC30L3QsNGH0LXQvdC40LUg0LDRgtGA0LjQsdGD0YLQsCDRgdC+0YDRgtC40YDQvtCy0LrQuCDQsiBGQVEgRXhwbG9yZXJlINC40L3RgtC10YDRhNC10LnRgdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQo9C60LDQttC40YLQtSDRgdGC0LDQvdC00LDRgNGC0L3QvtC1INC30L3QsNGH0LXQvdC40LUg0LDRgtGA0LjQsdGD0YLQsCDRgdC+0YDRgtC40YDQvtCy0LrQuCDQsiBGQVEgRXhwbG9yZXJlINC40L3RgtC10YDRhNC10LnRgdCwINC60LvQuNC10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQo9C60LDQttC40YLQtSDRgdGC0LDQvdC00LDRgNGC0L3QvtC1INC30L3QsNGH0LXQvdC40LUg0LDRgtGA0LjQsdGD0YLQsCDRgdC+0YDRgtC40YDQvtCy0LrQuCDQsiBGQVEgRXhwbG9yZXJlINCyINC+0LHRidC10LTQvtGB0YLRg9C/0L3QvtC8ICDQuNC90YLQtdGA0YTQtdC50YHQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfQo9C60LDQttC40YLQtSDRgdGC0LDQvdC00LDRgNGC0L3Ri9C5INC/0L7RgNGP0LTQvtC6INCyINGA0LXQt9GD0LvRjNGC0LDRgtCw0YUgRkFRIEV4cGxvcmVyINC40L3RgtC10YDRhNC10LnRgdCwINCw0LPQtdC90YLQsC4gVXA6INC/0L7Qt9C00L3QtdC1INC90LDQstC10YDRhdGDLiBEb3duOiDQvdC+0LLQvtC1INC90LDQstC10YDRhdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ9Cj0LrQsNC20LjRgtC1INGB0YLQsNC90LTQsNGA0YLQvdGL0Lkg0L/QvtGA0Y/QtNC+0Log0LIg0YDQtdC30YPQu9GM0YLQsNGC0LDRhSBGQVEgRXhwbG9yZXIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0LrQu9C40LXQvdGC0LAuIFVwOiDQv9C+0LfQtNC90LXQtSDQvdCw0LLQtdGA0YXRgy4gRG93bjog0L3QvtCy0L7QtSDQvdCw0LLQtdGA0YXRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn0KPQutCw0LbQuNGC0LUg0YHRgtCw0L3QtNCw0YDRgtC90YvQuSDQv9C+0YDRj9C00L7QuiDQsiDRgNC10LfRg9C70YzRgtCw0YLQsNGFIEZBUSBFeHBsb3JlciDQsiDQvtCx0YnQtdC00L7RgdGC0YPQv9C90L7QvCDQuNC90YLQtdGA0YTQtdC50YHQtS4gVXA6INC/0L7Qt9C00L3QtdC1INC90LDQstC10YDRhdGDLiBEb3duOiDQvdC+0LLQvtC1INC90LDQstC10YDRhdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaW5mb3JtYXRpb24gdG8gYmUgaW5zZXJ0ZWQgaW4gYSBGQVEgYmFzZWQgVGlja2V0LiAiRnVsbCBGQVEiIGluY2x1ZGVzIHRleHQsIGF0dGFjaG1lbnRzIGFuZCBpbmxpbmUgaW1hZ2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBFeHBsb3Jlci4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hlcmUgdGhlIFwnSW5zZXJ0IEZBUVwnIGxpbmsgd2lsbCBiZSBkaXNwbGF5ZWQuIE5vdGU6IEFnZW50VGlja2V0QWN0aW9uQ29tbW9uIGluY2x1ZGVzIEFnZW50VGlja2V0Tm90ZSwgQWdlbnRUaWNrZXRDbG9zZSwgQWdlbnRUaWNrZXRGcmVlVGV4dCwgQWdlbnRUaWNrZXRPd25lciwgQWdlbnRUaWNrZXRQZW5kaW5nLCBBZ2VudFRpY2tldFByaW9yaXR5IGFuZCBBZ2VudFRpY2tldFJlc3BvbnNpYmxlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgdGhpcyBGQVEnfSA9ICfQo9C00LDQu9C40YLRjCDRjdGC0L7RgiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJ9CY0LfQvNC10L3QuNGC0Ywg0Y3RgtC+0YIgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBtdWx0aXBsZSBsYW5ndWFnZXMgb24gRkFRIG1vZHVsZS4nfSA9ICfQoNCw0LfRgNC10YjQuNGC0Ywg0LzQvdC+0LPQvtGP0LfRi9GH0L3QvtGB0YLRjCDQsiDQvNC+0LTRg9C70LUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLid9ID0gJ9Cg0LDQt9GA0LXRiNC40YLRjCDRhNGD0L3QutGG0LjRjiDQvtGG0LXQvdC60Lgg0LIg0LzQvtC00YPQu9C1IEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwnfSA9ICfQltGD0YDQvdCw0LsgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHBhdGggc2VwYXJhdG9yLid9ID0gJ9Cg0LDQt9C00LXQu9C40YLQtdC70Ywg0L/Rg9GC0LggRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUS1BcmVhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICfQk9GA0YPQv9C/0LAg0LTQu9GPINC+0LTQvtCx0YDQtdC90LjRjyDRgdGC0LDRgtC10LkgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIHRoaXMgRkFRJ30gPSAn0JjRgdGC0L7RgNC40Y8g0Y3RgtC+0LPQviBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWlja3NlYXJjaCBzaG91bGQgYmUgc2hvd24uJ30gPSAn0JjQvdGC0LXRgNGE0LXQudGB0YssINCyINC60L7RgtC+0YDRi9GFINC/0L7QutCw0LfRi9Cy0LDQtdGC0YHRjyDQsdGL0YHRgtGA0YvQuSDQv9C+0LjRgdC6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydKb3VybmFsJ30gPSAn0JbRg9GA0L3QsNC7JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICfQo9C/0YDQsNCy0LvQtdC90LjQtSDRj9C30YvQutCw0LzQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIGFub3RoZXIgb2JqZWN0IHRvIHRoaXMgRkFRIGl0ZW0nfSA9ICfQn9GA0LjQstGP0LfQsNGC0Ywg0LTRgNGD0LPQvtC5INC+0LHRitC10LrRgiDQuiDRjdGC0L7QvNGDINGN0LvQtdC80LXQvdGC0YMgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQnNCw0LrRgdC40LzQsNC70YzQvdC+0LUg0LrQvtC70LjRh9C10YHRgtCy0L4g0YHRgtCw0YLQtdC5LCDQstGL0LLQvtC00LjQvNC+0LUg0LIgRkFRIEV4cGxvcmVyINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JzQsNC60YHQuNC80LDQu9GM0L3QvtC1INC60L7Qu9C40YfQtdGB0YLQstC+INGB0YLQsNGC0LXQuSwg0LLRi9Cy0L7QtNC40LzQvtC1INCyIEZBUSBFeHBsb3JlciDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQutC70LjQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvRjNC90L7QtSDQutC+0LvQuNGH0LXRgdGC0LLQviDRgdGC0LDRgtC10LksINCy0YvQstC+0LTQuNC80L7QtSDQsiBGQVEgRXhwbG9yZXIg0LIg0L7QsdGJ0LXQtNC+0YHRgtGD0L/QvdC+0Lwg0LjQvdGC0LXRgNGE0LXQudGB0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQnNCw0LrRgdC40LzQsNC70YzQvdC+0LUg0LrQvtC70LjRh9C10YHRgtCy0L4g0YHRgtCw0YLQtdC5LCDQstGL0LLQvtC00LjQvNGL0YUg0LIg0LbRg9GA0L3QsNC70LUgRkFRINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQnNCw0LrRgdC40LzQsNC70YzQvdC+0LUg0LrQvtC70LjRh9C10YHRgtCy0L4g0YHRgtCw0YLQtdC5LCDQstGL0LLQvtC00LjQvNGL0YUg0LIg0YDQtdC30YPQu9GM0YLQsNGC0LUg0L/QvtC40YHQutCwINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQnNCw0LrRgdC40LzQsNC70YzQvdC+0LUg0LrQvtC70LjRh9C10YHRgtCy0L4g0YHRgtCw0YLQtdC5LCDQstGL0LLQvtC00LjQvNGL0YUg0LIg0YDQtdC30YPQu9GM0YLQsNGC0LUg0L/QvtC40YHQutCwINCyINC40L3RgtC10YDRhNC10LnRgdC1INC60LvQuNC10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQnNCw0LrRgdC40LzQsNC70YzQvdC+0LUg0LrQvtC70LjRh9C10YHRgtCy0L4g0YHRgtCw0YLQtdC5LCDQstGL0LLQvtC00LjQvNGL0YUg0LIg0YDQtdC30YPQu9GM0YLQsNGC0LUg0L/QvtC40YHQutCwINCyINC+0LHRidC10LTQvtGB0YLRg9C/0L3QvtC8INC40L3RgtC10YDRhNC10LnRgdC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBmYXEgc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgQXJ0aWNsZSd9ID0gJ9Cd0L7QstCw0Y8g0YHRgtCw0YLRjNGPINCyIEZBUSc7CiAgICAkU2VsZi0+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+0LfQuNGG0LjQuSDQsiDRhNGD0L3QutGG0LjQuCBUb3AgMTAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50IHRoaXMgRkFRJ30gPSAn0J/QtdGH0LDRgtGMINGN0YLQvtCz0L4gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ9Ce0YfQtdGA0LXQtNGMINC90LAg0L7QtNC+0LHRgNC10L3QuNC1INGB0YLQsNGC0LXQuSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGVzIGZvciB2b3RpbmcuIEtleSBtdXN0IGJlIGluIHBlcmNlbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEnfSA9ICfQn9C+0LjRgdC6INCyIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIC8gIkluc2VydCBGdWxsIEZBUSIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJ9Cf0L7QutCw0LfRi9Cy0LDRgtGMINGB0YLQsNGC0YzRjiBGQVEg0LIgSFRNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgcGF0aCB5ZXMvbm8uJ30gPSAn0J/QvtC60LDQt9GL0LLQsNGC0Ywg0L/Rg9GC0YwgRkFRINC00LAv0L3QtdGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuJ30gPSAn0J/QvtC60LDQt9GL0LLQsNGC0Ywg0YHQvtC00LXRgNC20LjQvNC+0LUg0L/QvtC00YDQsNC30LTQtdC70L7Qsi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNoYW5nZSBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAn0J/QvtC60LDQt9GL0LLQsNGC0Ywg0L/QvtGB0LvQtdC00L3QuNC1INC40LfQvNC10L3QtdC90LjRjyDQsiDRg9C60LDQt9Cw0L3Ri9GFINC40L3RgtC10YDRhNC10LnRgdCw0YUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjcmVhdGVkIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICfQn9C+0LrQsNC30YvQstCw0YLRjCDQvdC+0LLRi9C1INC/0YPQvdC60YLRiyDQsiDRg9C60LDQt9Cw0L3QvdGL0YUg0LjQvdGC0LXRgNGE0LXQudGB0LDRhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ9Cf0L7QutCw0LfRi9Cy0LDRgtGMIFRvcCAxMCDQsiDRg9C60LDQt9Cw0L3QvdGL0YUg0LjQvdGC0LXRgNGE0LXQudGB0LDRhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ9Cf0L7QutCw0LfRi9Cy0LDRgtGMINC+0YbQtdC90LrRgyDQsiDRg9C60LDQt9Cw0L3QvdGL0YUg0LjQvdGC0LXRgNGE0LXQudGB0LDRhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBGQVEgd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgem9vbSB2aWV3IG9mIHN1Y2ggRkFRIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIHRvIGRlbGV0ZSBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgRkFRIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIEZBUSwgZS5nLiBGQVEjLCBLQiMsIE15RkFRIy4gVGhlIGRlZmF1bHQgaXMgRkFRIy4nfSA9CiAgICAgICAgJ9CY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAIEZBUSwg0L3QsNC/0YDQuNC80LXRgCwgRkFRIywgS0IjLCBNeUZBUSMuINCf0L4g0YPQvNC+0LvRh9Cw0L3QuNGOIC0gRkFRIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgYm9keSBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAn0KLQtdC70L4g0LfQsNGP0LLQutC4INC90LAg0L7QtNC+0LHRgNC10L3QuNC1INGB0YLQsNGC0YzQuCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBzdWJqZWN0IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICfQotC10LzQsCDQt9Cw0Y/QstC60Lgg0L3QsCDQvtC00L7QsdGA0LXQvdC40LUg0YHRgtCw0YLRjNC4IEZBUS4nOwoKICAgICMKICAgICMgT0JTT0xFVEUgRU5UUklFUyBGT1IgUkVGRVJFTkNFLCBETyBOT1QgVFJBTlNMQVRFIQogICAgIwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2VrZXkgd2hpY2ggaXMgZGVmaW5lZCBpbiB0aGUgbGFuZ3VhZ2UgZmlsZSAqX0ZBUS5wbS4nfSA9ICfQmtC70Y7RhyDRj9C30YvQutCwLCDRg9C60LDQt9Cw0L3QvdGL0Lkg0LIg0Y/Qt9GL0LrQvtCy0L7QvCDRhNCw0LnQu9C1ICpfRkFRLnBtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IFdZU0lXWUcgZWRpdG9yIGluIGFnZW50IGludGVyZmFjZS4nfSA9ICfQn9C+0LrQsNC30YvQstCw0YLRjCBXWVNJV1lHINGA0LXQtNCw0LrRgtC+0YAg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7Cgp9CgoxOwo=
IyAtLQojIEtlcm5lbC9MYW5ndWFnZS91a19GQVEucG0gLSB0cmFuc2xhdGlvbiBmaWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Okxhbmd1YWdlOjp1a19GQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFBQUZBUQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJ30gPSAn0J7RgdGC0LDQvdC90Y8g0LfQvNGW0L3QtdC90LAg0YHRgtCw0YLRgtGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ9Ce0YHRgtCw0L3QvdGPINGB0YLQstC+0YDQtdC90LAg0YHRgtCw0YLRgtGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvcCAxMCBGQVEgYXJ0aWNsZXMnfSA9ICfQotC+0L8gMTAg0YHRgtCw0YLRgtC10LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcnkgb2YnfSA9ICfQn9GW0LTQutCw0YLQtdCz0L7RgNGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICfQndC10LzQsNGUINC+0LHRgNCw0L3QvtGXINC60LDRgtC10LPQvtGA0ZbRlyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwbG9yZXInfSA9ICfQn9GA0L7QstGW0LTQvdC40LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChhbGwpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsIChjdXN0b21lciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwgKGFnZW50KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBkYXknfSA9ICfQn9C+0YfQsNGC0L7QuiDQtNC+0LHQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBtb250aCd9ID0gJ9Cf0L7Rh9Cw0YLQvtC6INC80ZbRgdGP0YbRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCB5ZWFyJ30gPSAn0J/QvtGH0LDRgtC+0Log0YDQvtC60YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIGRheSd9ID0gJ9Ca0ZbQvdC10YbRjCDQtNC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG1vbnRoJ30gPSAn0JrRltC90LXRhtGMINC80ZbRgdGP0YbRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgeWVhcid9ID0gJ9Ca0ZbQvdC10YbRjCDRgNC+0LrRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFua3MgZm9yIHlvdXIgdm90ZSEnfSA9ICfQlNGP0LrRg9GU0LzQviwg0LfQsCDRgtC1LCDRidC+INC/0YDQvtCz0L7Qu9C+0YHRg9Cy0LDQu9C4ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISd9ID0gJ9CS0Lgg0LLQttC1INCz0L7Qu9C+0YHRg9Cy0LDQu9C4ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBQcmludCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKFRvcCAxMCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgdXBkYXRlZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IGFkZGVkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSB1cGRhdGVkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBpcyByZXF1aXJlZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBhbHJlYWR5IGV4aXN0cyEnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RGFzaGJvYXJkRkFRT3ZlcnZpZXcKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBBcnRpY2xlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmFsJ30gPSAn0KPRgtC+0YfQvdC40YLRjCDRgdC80YvRgdC7INC4INC40LfQvNC10L3QuNGC0YwoQXBwcm92YWwpJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4nfSA9ICfQkdGD0LTQtSDQv9C+0LrQsNC30LDQvdC+LCDRj9C6INC60L7QvNC10L3RgtCw0YAg0YMg0J/RgNC+0LLRltC00L3QuNC60YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHRoYXQgY2FuIGFjY2VzcyBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFEZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGQVEgYXJ0aWNsZT8nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRJ30gPSAn0JHQsNC30LAg0LfQvdCw0L3RjCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEV4cGxvcmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrIFNlYXJjaCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxkY2FyZHMgYXJlIGFsbG93ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkdmFuY2VkIFNlYXJjaCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdWJjYXRlZ29yaWVzIGZvdW5kLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFIaXN0b3J5CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZC4nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRTGFuZ3VhZ2UKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZSB0aGlzIGZlYXR1cmUgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIG11bHRpcGxlIGxhbmd1Z2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBsYW5ndWFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgTGFuZ3VhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIExhbmd1YWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgTGFuZ3VhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxhbmd1YWdlPyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBsYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUhJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGVzIHBlciBwYWdlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGdlbmVyaWMgRkFRIHRhYmxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyIsIjUwJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVByaW50CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEtSW5mbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ9CT0L7Qu9C+0YHRltCyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUZ1bGx0ZXh0J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFNlYXJjaCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2gtUHJvZmlsZSBhcyBUZW1wbGF0ZT8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHJhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgZGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIHJhbmdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyciLCIxOCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyciLCIyNSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nICUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3V0IG9mIDUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISBCZSB0aGUgZmlyc3Qgb25lIHRvIHJhdGUgdGhpcyBGQVEgYXJ0aWNsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG93bmxvYWQgQXR0YWNobWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgaGVscGZ1bCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBMaW5rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCAmIExpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFQcmludAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIHJlc3RyaWN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHZvdGVzLi4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIHJlc3RyaWN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHJhdGUuLi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsVGV4dAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaFJlc3VsdFNob3J0CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcnRpY2xlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRRXhwbG9yZXIKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFQcmludAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsVGV4dAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFab29tCgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZmlsdGVyIGZvciBIVE1MIG91dHB1dCB0byBhZGQgbGlua3MgYmVoaW5kIGEgZGVmaW5lZCBzdHJpbmcuIFRoZSBlbGVtZW50IEltYWdlIGFsbG93cyB0d28gaW5wdXQga2luZHMuIEZpcnN0IHRoZSBuYW1lIG9mIGFuIGltYWdlIChlLmcuIGZhcS5wbmcpLiBJbiB0aGlzIGNhc2UgdGhlIE9UUlMgaW1hZ2UgcGF0aCB3aWxsIGJlIHVzZWQuIFRoZSBzZWNvbmQgcG9zc2liaWxpdHkgaXMgdG8gaW5zZXJ0IHRoZSBsaW5rIHRvIHRoZSBpbWFnZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYWNoZSBUaW1lIFRvIExlYXZlIGZvciBGQVEgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgY2F0ZWdvcnkgbmFtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBqb3VybmFsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgbGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaW5mb3JtYXRpb24gdG8gYmUgaW5zZXJ0ZWQgaW4gYSBGQVEgYmFzZWQgVGlja2V0LiAiRnVsbCBGQVEiIGluY2x1ZGVzIHRleHQsIGF0dGFjaG1lbnRzIGFuZCBpbmxpbmUgaW1hZ2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBFeHBsb3Jlci4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hlcmUgdGhlIFwnSW5zZXJ0IEZBUVwnIGxpbmsgd2lsbCBiZSBkaXNwbGF5ZWQuIE5vdGU6IEFnZW50VGlja2V0QWN0aW9uQ29tbW9uIGluY2x1ZGVzIEFnZW50VGlja2V0Tm90ZSwgQWdlbnRUaWNrZXRDbG9zZSwgQWdlbnRUaWNrZXRGcmVlVGV4dCwgQWdlbnRUaWNrZXRPd25lciwgQWdlbnRUaWNrZXRQZW5kaW5nLCBBZ2VudFRpY2tldFByaW9yaXR5IGFuZCBBZ2VudFRpY2tldFJlc3BvbnNpYmxlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgdGhpcyBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHBhdGggc2VwYXJhdG9yLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUS1BcmVhJ30gPSAn0JHQsNC30LAg0LfQvdCw0L3RjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JvdXAgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgdGhpcyBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWlja3NlYXJjaCBzaG91bGQgYmUgc2hvd24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0pvdXJuYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIGFub3RoZXIgb2JqZWN0IHRvIHRoaXMgRkFRIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBmYXEgc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgQXJ0aWNsZSd9ID0gJ9C90L7QstCwINGB0YLQsNGC0YLRjyDQkdCXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gdGhlIHRvcCAxMCBmZWF0dXJlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIGpvdXJuYWwgb3ZlcnZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludCB0aGlzIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWV1ZSBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIC8gIkluc2VydCBGdWxsIEZBUSIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY2hhbmdlIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNyZWF0ZWQgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRvcCAxMCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdm90aW5nIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBGQVEgd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgem9vbSB2aWV3IG9mIHN1Y2ggRkFRIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIHRvIGRlbGV0ZSBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgRkFRIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIEZBUSwgZS5nLiBGQVEjLCBLQiMsIE15RkFRIy4gVGhlIGRlZmF1bHQgaXMgRkFRIy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBib2R5IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IHN1YmplY3QgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJyc7CgogICAgIwogICAgIyBPQlNPTEVURSBFTlRSSUVTIEZPUiBSRUZFUkVOQ0UsIERPIE5PVCBUUkFOU0xBVEUhCiAgICAjCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgd2hpY2ggY2FuIGFjY2VzcyB0aGlzIGNhdGVnb3J5Lid9ID0gJ9CS0LjQtNGW0LvRltGC0Ywg0LPRgNGD0L/QuCwg0Y/QutC40ZYg0LzQvtC20YPRgtGMINC+0YLRgNC40LzQsNGC0Lgg0LTQvtGB0YLRg9C/INC00L4g0LrQsNGC0LXQs9C+0YDRltGXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3JpZXMnfSA9ICfQmtCw0YLQtdCz0L7RgNGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV0YWlsU2VhcmNoJ30gPSAn0JTQtdGC0LDQu9GW0LfQvtCy0LDQvdC40Lkg0L/QvtGI0YPQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnknfSA9ICfQmtCw0YLQtdCz0L7RgNGW0Zcg0JHQlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTmV3cyAoVG9wIDEwKSd9ID0gJ9Cd0L7QstC40L3QuCDQkdCXKNCi0J7QnyAxMCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE5ld3MgKG5ldyBjcmVhdGVkKSd9ID0gJ9Cd0L7QstC40L3QuCDQkdCXKNC90L7QstGWINGB0YLQsNGC0YLRliknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE5ld3MgKHJlY2VudGx5IGNoYW5nZWQpJ30gPSAn0J3QvtCy0LjQvdC4INCR0Jco0L3QtdC00LDQstC90L4g0LfQvNGW0L3QtdC90ZYpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNhdGVnb3J5IGFjY2Vzc2libGUuIFRvIGNyZWF0ZSBhbiBhcnRpY2xlIHlvdSBuZWVkIGFjY2VzcyB0byBhdCBsZWFzdCBvbmUgY2F0ZWdvcnkuIFBsZWFzZSBjaGVjayB5b3VyIGdyb3VwL2NhdGVnb3J5IHBlcm1pc3Npb24gdW5kZXIgLWNhdGVnb3J5IG1lbnUtISd9ID0KICAgICAgICAn0J3QtdC80LDRlCDQtNC+0YHRgtGD0L/QvdC40YUg0LrQsNGC0LXQs9C+0YDRltC5LiDQqdC+0LEg0YHRgtCy0L7RgNC40YLQuCDRgdGC0LDRgtGC0Y4g0LLQsNC8INC90LXQvtCx0YXRltC00L3QviDQvtC00LXRgNC20LDRgtC4INC00L7RgdGC0YPQvywg0L/RgNC40L3QsNC50LzQvdGWINC00L4g0L7QtNC90ZbQuSDQutCw0YLQtdCz0L7RgNGW0ZcuINCR0YPQtNGMINC70LDRgdC60LAsINC/0LXRgNC10LLRltGA0YLQtSDQstCw0YjRgyDQs9GA0YPQv9GDL9C60LDRgtC10LPQvtGA0ZbRjiDQtNC+0YHRgtGD0L/RgyDQtNC70Y8gLdC60LDRgtC10LPQvtGA0ZbRlyDQvNC10L3Rji0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrU2VhcmNoJ30gPSAn0KjQstC40LTQutC40Lkg0L/QvtGI0YPQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJDYXRlZ29yaWVzJ30gPSAn0J/RltC00LrQsNGC0LXQs9C+0YDRltGXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J9CX0LTRgNCw0YHRgtGD0LnRgtC1J30gPSAn0JLRltGC0LDRlNC80L4nOwoKfQoKMTsK
IyAtLQojIEtlcm5lbC9MYW5ndWFnZS96aF9DTl9GQVEucG0gLSB0cmFuc2xhdGlvbiBmaWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Okxhbmd1YWdlOjp6aF9DTl9GQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFBQUZBUQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICflhoXpg6gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljJ30gPSAn5YWs5byAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsJ30gPSAn5aSW6YOoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJ30gPSAn5pyA6L+R5L+u5pS555qE5paH56ugJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ+acgOaWsOWIm+W7uueahOaWh+eroCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3AgMTAgRkFRIGFydGljbGVzJ30gPSAn5pyA5bi455So55qE5paH56ugJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3J5IG9mJ30gPSAn5a2Q55uu5b2V5LqOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2VsZWN0ZWQhJ30gPSAn5rKh5pyJ6YCJ5oup6K+E5YiGISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBsb3Jlcid9ID0gJ+a1j+iniCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKGFsbCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwgKGN1c3RvbWVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IGRheSd9ID0gJ+W8gOWni+aXpeacnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBtb250aCd9ID0gJ+W8gOWni+aciOS7vSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCB5ZWFyJ30gPSAn5byA5aeL5bm05Lu9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBkYXknfSA9ICfnu5PmnZ/ml6XmnJ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG1vbnRoJ30gPSAn5byA5aeL5pyI5Lu9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCB5ZWFyJ30gPSAn57uT5p2f5bm05Lu9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rcyBmb3IgeW91ciB2b3RlISd9ID0gJ+aEn+iwouaCqOeahOivhOWIhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISd9ID0gJ+aCqOW3sue7j+ivhOWIhiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgUHJpbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAnRkFRIOabtOaWsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKG5ldyBjcmVhdGVkKSd9ID0gJ0ZBUSDmm7TmlrAo5paw5Yib5bu6KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKHJlY2VudGx5IGNoYW5nZWQpJ30gPSAnRkFRIOabtOaWsCjmnIDov5Hmm7TmlLkpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ0ZBUSDnm67lvZXlt7Lmm7TmlrAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSBhZGRlZCEnfSA9ICdGQVEg55uu5b2V5bey5aKe5YqgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEnfSA9ICfnm67lvZXlupTor6XopoHmnInkuIDkuKrlkI3np7AhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIGFkZGVkISd9ID0gJ0ZBUSDor63oqIDlt7Lnu4/lop7liqAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSB1cGRhdGVkISd9ID0gJ0ZBUSDor63oqIDlt7Lnu4/mm7TmlrAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJ+W/hemhu+imgeacieS4gOS4quivreiogOWQjeensCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBhbHJlYWR5IGV4aXN0cyEnfSA9ICfor6Xor63oqIDlt7Lnu4/lrZjlnKghJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudERhc2hib2FyZEZBUU92ZXJ2aWV3CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgQXJ0aWNsZSd9ID0gJ+WinuWKoCBGQVEg5paH56ugJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuJ30gPSAn55uu5b2V5piv5b+F6aG755qELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZhbCd9ID0gJ+iupOWPr+W6pic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFDYXRlZ29yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIENhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdGQVEg55uu5b2V566h55CGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBjYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ2F0ZWdvcnknfSA9ICfliKDpmaTnm67lvZUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIENhdGVnb3J5J30gPSAn5aKe5Yqg55uu5b2VJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQ2F0ZWdvcnknfSA9ICfnvJbovpHnm67lvZUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ+azqOmHiuWwhua1j+iniOaXtuaYvuekui4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHRoYXQgY2FuIGFjY2VzcyBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFEZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGQVEgYXJ0aWNsZT8nfSA9ICfnnJ/nmoTopoHliKDpmaTor6UgRkFRIOaWh+eroOWQlz8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICdGQVEg5rWP6KeI5ZmoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrIFNlYXJjaCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxkY2FyZHMgYXJlIGFsbG93ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkdmFuY2VkIFNlYXJjaCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAn5a2Q55uu5b2VJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdWJjYXRlZ29yaWVzIGZvdW5kLid9ID0gJ+ayoeacieaJvuWIsOWtkOebruW9lS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSGlzdG9yeQoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ0ZBUSDor63oqIDnrqHnkIYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGxhbmd1YWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBMYW5ndWFnZSd9ID0gJ+WIoOmZpOivreiogCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTGFuZ3VhZ2UnfSA9ICflop7liqDor63oqIAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJ+e8lui+keivreiogCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgYXJ0aWNsZXMgcGVyIHBhZ2UnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGRhdGEgZm91bmQuJ30gPSAn5rKh5pyJ5om+5YiwIEZBUSDmlbDmja4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZ2VuZXJpYyBGQVEgdGFibGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnIiwiNTAnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRUHJpbnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUS1JbmZvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGVzJ30gPSAn6K+E5YiGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUZ1bGx0ZXh0J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFNlYXJjaCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2gtUHJvZmlsZSBhcyBUZW1wbGF0ZT8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHJhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgZGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIHJhbmdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ0ZBUSDor6bnu4bkv6Hmga8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnIiwiMTgnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnIiwiMjUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nJ30gPSAn6K+E5YiGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyAlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J291dCBvZiA1J30gPSAn6LaF6L+H5LqU5pifJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISd9ID0gJ+ayoeacieaJvuWIsOivhOWIhiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLid9ID0gJ+ayoeacieaJvuWIsOivhOWIhiEg6L+Z5bCG5piv6K+lIEZBUSDmlofnq6DnmoTnrKzkuIDkuKror4TliIYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rvd25sb2FkIEF0dGFjaG1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSG93IGhlbHBmdWwgd2FzIHRoaXMgYXJ0aWNsZT8gUGxlYXNlIGdpdmUgdXMgeW91ciByYXRpbmcgYW5kIGhlbHAgdG8gaW1wcm92ZSB0aGUgRkFRIERhdGFiYXNlLiBUaGFuayBZb3UhJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICfmsqHmnInluK7liqknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsndmVyeSBoZWxwZnVsJ30gPSAn5b6I5pyJ5biu5YqpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgTGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQgJiBMaW5rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSAmIExpbmsnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBhcnRpY2xlcyBmb3VuZC4nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRUHJpbnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbHRleHQgc2VhcmNoIGluIEZBUSBhcnRpY2xlcyAoZS4gZy4gIkpvaG4qbiIgb3IgIldpbGwqIiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSByZXN0cmljdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCB2b3Rlcy4uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSByZXN0cmljdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCByYXRlLi4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbFRleHQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hSZXN1bHRTaG9ydAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGZvciBhcnRpY2xlcyB3aXRoIGtleXdvcmQnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUUV4cGxvcmVyCgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRUHJpbnQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2gKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbFRleHQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFNob3J0CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRWm9vbQoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVFJTIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1NTIGNvbG9yIGZvciB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FjaGUgVGltZSBUbyBMZWF2ZSBmb3IgRkFRIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlY2ltYWwgcGxhY2VzIG9mIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ+S7peWNgeWIhuWItuaYvuekuuivhOWIhue7k+aenC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJ+m7mOiupOeahOebruW9leWQjS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPQogICAgICAgICdGQVEg5paH56ug5om55YeG6K+35rGC55qEIFRpY2tldCDnmoTkvJjlhYjnuqcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS4nfSA9ICfpu5jorqTnmoQgRkFRIOe7n+iuoeadoeebri4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0ZBUSDmlofnq6Dmibnlh4bor7fmsYLnmoQgVGlja2V0IOeahOm7mOiupOeKtuaAgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIEFjdGlvbiBwYXJhbWV0ZXIgZm9yIHRoZSBwdWJsaWMgZnJvbnRlbmQuIFRoZSBBY3Rpb24gcGFyYW1ldGVyIGlzIHVzZWQgaW4gdGhlIHNjcmlwdHMgb2YgdGhlIHN5c3RlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGpvdXJuYWwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBsaXN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBpbmZvcm1hdGlvbiB0byBiZSBpbnNlcnRlZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuICJGdWxsIEZBUSIgaW5jbHVkZXMgdGV4dCwgYXR0YWNobWVudHMgYW5kIGlubGluZSBpbWFnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4gTm90ZTogQWdlbnRUaWNrZXRBY3Rpb25Db21tb24gaW5jbHVkZXMgQWdlbnRUaWNrZXROb3RlLCBBZ2VudFRpY2tldENsb3NlLCBBZ2VudFRpY2tldEZyZWVUZXh0LCBBZ2VudFRpY2tldE93bmVyLCBBZ2VudFRpY2tldFBlbmRpbmcsIEFnZW50VGlja2V0UHJpb3JpdHkgYW5kIEFnZW50VGlja2V0UmVzcG9uc2libGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuJ30gPSAn5a6a5LmJIEZBUSDpobnnm67nmoTkuI3lj5fpmZDmloflrZflrZfmrrUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJ+WIoOmZpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHRoaXMgRkFRJ30gPSAn57yW6L6RJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBtdWx0aXBsZSBsYW5ndWFnZXMgb24gRkFRIG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHZvdGluZyBtZWNoYW5pc20gb24gRkFRIG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwnfSA9ICdGQVEg5pel5b+XJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHBhdGggc2VwYXJhdG9yLid9ID0gJ0ZBUSDot6/lvoTliIbpmpTnrKYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRLUFyZWEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyb3VwIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ+aJueWHhiBGQVEg5paH56ug6K+35rGC55qE576k57uELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIHRoaXMgRkFRJ30gPSAn5Y6G5Y+yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSB0aGUgbmFtZSBvZiBlYWNoIGZpZWxkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2tzZWFyY2ggc2hvdWxkIGJlIHNob3duLid9ID0gJ+WcqOS7i+mdoueahOmCo+mHjOaYvuekuuW/q+mAn+aQnOe0oi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJ+mTvuaOpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgZmFxIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgZmFxIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2guJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBBcnRpY2xlJ30gPSAn5re75Yqg5paw5paH56ugJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJ+aWsOeahCBGQVEg5paH56ug5Zyo5Y+R5biD5YmN6ZyA6KaB5om55YeGLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLid9ID0gJ+aYvuekuuacgOi/keabtOaUuemhueebrueahOaVsOmHjy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY3JlYXRlZC4nfSA9ICfmmL7npLrmnIDmlrDliJvlu7rpobnnm67nmoTmlbDph48uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuJ30gPSAn5pi+56S654K55Ye76YeP5YmN5Y2B5L2N6aG555uu55qE5pWw6YePLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIGpvdXJuYWwgb3ZlcnZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludCB0aGlzIEZBUSd9ID0gJ+aJk+WNsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWV1ZSBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICfmibnlh4YgRkFRIOaWh+eroOivt+axgueahOmYn+WIly4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC4nfSA9ICflpb3or4TnjocsIOmUruWAvOW/hemhu+WcqOeZvuWIhuavlOS7peWGhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIC8gIkluc2VydCBGdWxsIEZBUSIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICfmmK8v5ZCm5pi+56S6IEZBUSDot6/lvoQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaXRlbXMgb2Ygc3ViY2F0ZWdvcmllcy4nfSA9ICfmmL7npLrlrZDnm67lvZXnmoTmlbDph48uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ+WcqOS7i+mdouS4iuaYvuekuuacgOi/keabtOaUueeahOmhueebri4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNyZWF0ZWQgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ+WcqOS7i+mdouS4iuaYvuekuuacgOaWsOWIm+W7uueahOmhueebri4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ+WcqOS7i+mdouS4iuaYvuekuueCueWHu+mHj+WJjeWNgeS9jS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ+WumuS5ieaYvuekuuivhOWIhueahOS7i+mdoi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBGQVEgd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgem9vbSB2aWV3IG9mIHN1Y2ggRkFRIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIHRvIGRlbGV0ZSBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgRkFRIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIEZBUSwgZS5nLiBGQVEjLCBLQiMsIE15RkFRIy4gVGhlIGRlZmF1bHQgaXMgRkFRIy4nfSA9CiAgICAgICAgJ0ZBUSDnmoTmoIfor4bnrKYsIOS+i+WmgiAo5bi46KeB6Zeu6aKYKUZBUSMsICjnn6Xor4blupMpS0IjLCDpu5jorqTkuLogRkFRIyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBib2R5IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdGQVEg5paH56ug5om55YeG6K+35rGC55qEIFRpY2tldCDlhoXlrrkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBzdWJqZWN0IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdGQVEg5paH56ug5om55YeG6K+35rGC55qEIFRpY2tldCDkuLvpopguJzsKCiAgICAjCiAgICAjIE9CU09MRVRFIEVOVFJJRVMgRk9SIFJFRkVSRU5DRSwgRE8gTk9UIFRSQU5TTEFURSEKICAgICMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgbmVlZHMgYXQgbGVhc3Qgb25lIHBlcm1pc3Npb24gZ3JvdXAhJ30gPSAn6Iez5bCR6KaB5oyH5a6a5LiA5Liq576k57uE5a+56K+l55uu5b2V5oul5pyJ5p2D6ZmQISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgY29tbWVudCEnfSA9ICfnm67lvZXlupTor6XopoHmnInkuIDkuKrms6jph4ohJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FnZW50IGdyb3VwcyB3aGljaCBjYW4gYWNjZXNzIHRoaXMgY2F0ZWdvcnkuJ30gPSAn5ZOq5LiA5Liq576k57uE5Y+v5Lul6K6/6Zeu5q2k55uu5b2VLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcnRpY2xlcyd9ID0gJ+aWh+eroCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgZmxhZy4nfSA9ICfor4TliIbmoIforrDnmoQgQ1NTIOminOiJsi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcmllcyd9ID0gJ+ebruW9lSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXRhaWxTZWFyY2gnfSA9ICfpq5jnuqfmkJzntKInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIENhdGVnb3J5Pyd9ID0gJ+ecn+eahOimgeWIoOmZpOivpeebruW9leWQlz8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIExhbmd1YWdlPyd9ID0gJ+ecn+eahOimgeWIoOmZpOivpeivreiogOWQlz8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIENhdGVnb3J5J30gPSAnRkFRIOebruW9lSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjYXRlZ29yeSBhY2Nlc3NpYmxlLiBUbyBjcmVhdGUgYW4gYXJ0aWNsZSB5b3UgbmVlZCBhY2Nlc3MgdG8gYXQgbGVhc3Qgb25lIGNhdGVnb3J5LiBQbGVhc2UgY2hlY2sgeW91ciBncm91cC9jYXRlZ29yeSBwZXJtaXNzaW9uIHVuZGVyIC1jYXRlZ29yeSBtZW51LSEnfSA9CiAgICAgICAgJ+ayoeacieW9kuexu+WIsOebruW9lS4g6KaB5Yib5bu65LiA56+H5paH56ug6ZyA6KaB5b2S57G75Yiw55uu5b2V6YeMLCDor7flnKggLeebruW9leiPnOWNlS0g6YeM6YCJ5oup5oKo5pyJ5p2D6ZmQ5Yib5bu65paH56ug55qE55uu5b2VJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgV1lTSVdZRyBlZGl0b3IgaW4gYWdlbnQgaW50ZXJmYWNlLid9ID0gJ+WcqOacjeWKoeS6uuWRmOS7i+mdouaYvuekuiBXWVNJV1lHKOaJgOingeWNs+aJgOW+lynnvJbovpHlmaguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YkNhdGVnb3JpZXMnfSA9ICflrZDnm67lvZUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHRpdGxlIGlzIHJlcXVpcmVkLid9ID0gJ+agh+mimOaYr+W/hemhu+eahC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBDYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBTdWJDYXRlZ29yaWVzJ30gPSAn6K+l55uu5b2V5piv5Lul5LiL5a2Q55uu5b2V55qE54i255uu5b2VJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgQ2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2UocyknfSA9ICfor6Xnm67lvZXmraPooqvku6XkuIvnmoQgRkFRIOaWh+eroOaJgOS9v+eUqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIExhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJ+ivpeivreiogOato+iiq+S7peS4i+eahCBGQVEg5paH56ug5omA5L2/55SoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMhJ30gPSAn6K+l55uu5b2V5bey57uP5Zyo5a2Y5ZyoISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGVkJ30gPSAn5pu05pawJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIENhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgQXJ0aWNsZSEgYW5kL29yIGlzIHBhcmVudCBvZiBhdCBsZWFzdCBhbm90aGVyIENhdGVnb3J5J30gPQogICAgICAgICfkuI3og73liKDpmaTor6Xnm67lvZUuIOWug+iHs+Wwkei/mOiiq+S4gOevhyBGQVEg5paH56ug5omA5L2/55SoIOW5ti/miJYg5a6D5piv5YW25Lit55uu5b2V55qE54i255uu5b2VISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBMYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIEFydGljbGUhJ30gPQogICAgICAgICfkuI3og73liKDpmaTor6Xor63oqIAuIOWug+iHs+Wwkei/mOiiq+S4gOevhyBGQVEg5paH56ug5omA5L2/55SoISc7Cgp9CgoxOwo=
IyAtLQojIEFBQUZBUS5kdGwgLSAkVGV4dCB2YXJpYWJsZSBmaWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKIyBDb21tb24KJFRleHR7ImludGVybmFsIn0KJFRleHR7InB1YmxpYyJ9CiRUZXh0eyJleHRlcm5hbCJ9CiRUZXh0eyJGQVEgTnVtYmVyIn0KJFRleHR7IkxhdGVzdCB1cGRhdGVkIEZBUSBhcnRpY2xlcyJ9CiRUZXh0eyJMYXRlc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXMifQokVGV4dHsiVG9wIDEwIEZBUSBhcnRpY2xlcyJ9CiRUZXh0eyJTdWJjYXRlZ29yeSBvZiJ9CiRUZXh0eyJObyByYXRlIHNlbGVjdGVkISJ9CiRUZXh0eyJFeHBsb3JlciJ9CgojIEZBUSAnc3RhdGVzJwokVGV4dHsicHVibGljIChhbGwpIn0KJFRleHR7ImV4dGVybmFsIChjdXN0b21lcikifQokVGV4dHsiaW50ZXJuYWwgKGFnZW50KSJ9CgojIFN0YXRzCiRUZXh0eyJTdGFydCBkYXkifQokVGV4dHsiU3RhcnQgbW9udGgifQokVGV4dHsiU3RhcnQgeWVhciJ9CiRUZXh0eyJFbmQgZGF5In0KJFRleHR7IkVuZCBtb250aCJ9CiRUZXh0eyJFbmQgeWVhciJ9CgojIEFnZW50RkFRWm9vbSBNZW51LU1vZHVsZXMKJFRleHR7IlRoYW5rcyBmb3IgeW91ciB2b3RlISJ9CiRUZXh0eyJObyByYXRlIHNlbGVjdGVkISJ9CiRUZXh0eyJZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISJ9CgojIEZBUSBQcmludCBzY3JlZW5zCiRUZXh0eyJGQVEgQXJ0aWNsZSBQcmludCJ9CgojIFJTUyBGZWVkcwokVGV4dHsiRkFRIEFydGljbGVzIChUb3AgMTApIn0KJFRleHR7IkZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpIn0KJFRleHR7IkZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCkifQoKIyBBZ2VudEZBUUNhdGVnb3J5LnBtCiRUZXh0eyJGQVEgY2F0ZWdvcnkgdXBkYXRlZCEifQokVGV4dHsiRkFRIGNhdGVnb3J5IGFkZGVkISJ9CiRUZXh0eyJBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEifQokVGV4dHsiVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyJ9CgojIEFnZW50RkFRTGFuZ3VhZ2UucG0KJFRleHR7IkZBUSBsYW5ndWFnZSBhZGRlZCEifQokVGV4dHsiRkFRIGxhbmd1YWdlIHVwZGF0ZWQhIn0KJFRleHR7IlRoZSBuYW1lIGlzIHJlcXVpcmVkISJ9CiRUZXh0eyJUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISJ9CiRUZXh0eyJUaGUgbmFtZSBpcyByZXF1aXJlZCEifQo=
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQWRkLnBtIC0gYWdlbnQgZnJvbnRlbmQgdG8gYWRkIGZhcSBhcnRpY2xlcwojIENvcHlyaWdodCAoQykgMjAwMS0yMDEzIE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpBZ2VudEZBUUFkZDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6RkFROwp1c2UgS2VybmVsOjpTeXN0ZW06OlF1ZXVlOwp1c2UgS2VybmVsOjpTeXN0ZW06OldlYjo6VXBsb2FkQ2FjaGU7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFsaWQ7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgY2hlY2sgYWxsIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE9iamVjdCAocXcoUGFyYW1PYmplY3QgREJPYmplY3QgTGF5b3V0T2JqZWN0IENvbmZpZ09iamVjdCBMb2dPYmplY3QpKSB7CiAgICAgICAgaWYgKCAhJFNlbGYtPnskT2JqZWN0fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GYXRhbEVycm9yKCBNZXNzYWdlID0+ICJHb3Qgbm8gJE9iamVjdCEiICk7CiAgICAgICAgfQogICAgfQoKICAgICMgY3JlYXRlIG5lZWRlZCBvYmplY3RzCiAgICAkU2VsZi0+e0ZBUU9iamVjdH0gICAgICAgICA9IEtlcm5lbDo6U3lzdGVtOjpGQVEtPm5ldyglUGFyYW0pOwogICAgJFNlbGYtPntVcGxvYWRDYWNoZU9iamVjdH0gPSBLZXJuZWw6OlN5c3RlbTo6V2ViOjpVcGxvYWRDYWNoZS0+bmV3KCVQYXJhbSk7CiAgICAkU2VsZi0+e1ZhbGlkT2JqZWN0fSAgICAgICA9IEtlcm5lbDo6U3lzdGVtOjpWYWxpZC0+bmV3KCVQYXJhbSk7CiAgICAkU2VsZi0+e1F1ZXVlT2JqZWN0fSAgICAgICA9IEtlcm5lbDo6U3lzdGVtOjpRdWV1ZS0+bmV3KCVQYXJhbSk7CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgJFNlbGYtPntDb25maWd9ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoIkZBUTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpIHx8ICcnOwoKICAgICMgZ2V0IGZvcm0gaWQKICAgICRTZWxmLT57Rm9ybUlEfSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0Zvcm1JRCcgKTsKCiAgICAjIGNyZWF0ZSBmb3JtIGlkCiAgICBpZiAoICEkU2VsZi0+e0Zvcm1JRH0gKSB7CiAgICAgICAgJFNlbGYtPntGb3JtSUR9ID0gJFNlbGYtPntVcGxvYWRDYWNoZU9iamVjdH0tPkZvcm1JRENyZWF0ZSgpOwogICAgfQoKICAgICMgc2V0IGRlZmF1bHQgaW50ZXJmYWNlIHNldHRpbmdzCiAgICAkU2VsZi0+e0ludGVyZmFjZX0gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUdldCgKICAgICAgICBOYW1lICAgPT4gJ2ludGVybmFsJywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVUeXBlTGlzdCgKICAgICAgICBUeXBlcyAgPT4gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6QWdlbnQ6OlN0YXRlVHlwZXMnKSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6TXVsdGlMYW5ndWFnZScpOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgcGVybWlzc2lvbiBjaGVjawogICAgaWYgKCAhJFNlbGYtPntBY2Nlc3NSd30gKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICBNZXNzYWdlICAgID0+ICdZb3UgbmVlZCBydyBwZXJtaXNzaW9uIScsCiAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBwYXJhbWV0ZXJzCiAgICBteSAlR2V0UGFyYW07CiAgICBmb3IgbXkgJFBhcmFtTmFtZSAoCiAgICAgICAgcXcoVGl0bGUgQ2F0ZWdvcnlJRCBTdGF0ZUlEIExhbmd1YWdlSUQgVmFsaWRJRCBLZXl3b3JkcyBBcHByb3ZlZCBGaWVsZDEgRmllbGQyIEZpZWxkMyBGaWVsZDQgRmllbGQ1IEZpZWxkNiApCiAgICAgICAgKQogICAgewogICAgICAgICRHZXRQYXJhbXskUGFyYW1OYW1lfSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFtTmFtZSApOwogICAgfQoKICAgICMgZ2V0IGNhdGVnb3JpZXMgKHdpdGggY2F0ZWdvcnkgbG9uZyBuYW1lcykgd2hlcmUgdXNlciBoYXMgcmlnaHRzCiAgICBteSAkVXNlckNhdGVnb3JpZXNMb25nTmFtZXMgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkdldFVzZXJDYXRlZ29yaWVzTG9uZ05hbWVzKAogICAgICAgIFR5cGUgICA9PiAncncnLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgY2hlY2sgdGhhdCB0aGVyZSBhcmUgY2F0ZWdvcmllcyBhdmFpbGFibGUgZm9yIHRoaXMgdXNlcgogICAgaWYgKAogICAgICAgICEkVXNlckNhdGVnb3JpZXNMb25nTmFtZXMKICAgICAgICB8fCByZWYgJFVzZXJDYXRlZ29yaWVzTG9uZ05hbWVzIG5lICdIQVNIJwogICAgICAgIHx8ICEleyRVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lc30KICAgICAgICApCiAgICB7CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gJ05vIGNhdGVnb3JpZXMgZm91bmQgd2hlcmUgdXNlciBoYXMgcmVhZC93cml0ZSBwZXJtaXNzaW9ucyEnLAogICAgICAgICAgICBDb21tZW50ID0+ICdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW4uJywKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgc2hvdyB0aGUgZmFxIGFkZCBzY3JlZW4KICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggISRTZWxmLT57U3ViYWN0aW9ufSApIHsKCiAgICAgICAgIyBoZWFkZXIKICAgICAgICBteSAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5IZWFkZXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TmF2aWdhdGlvbkJhcigpOwoKICAgICAgICBpZiAoICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkFwcHJvdmFsUmVxdWlyZWQnKSApIHsKCiAgICAgICAgICAgICMgZ2V0IEFwcHJvdmFsIHF1ZXVlIG5hbWUKICAgICAgICAgICAgbXkgJEFwcHJvdmFsUXVldWUgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpBcHByb3ZhbFF1ZXVlJykgfHwgJyc7CgogICAgICAgICAgICAjIGNoZWNrIGlmIEFwcHJvdmFsIHF1ZXVlIGV4aXN0cwogICAgICAgICAgICBteSAkQXBwcm92YWxRdWV1ZUlEID0gJFNlbGYtPntRdWV1ZU9iamVjdH0tPlF1ZXVlTG9va3VwKCBRdWV1ZSA9PiAkQXBwcm92YWxRdWV1ZSApOwoKICAgICAgICAgICAgIyBzaG93IG5vdGlmaWNhdGlvbiBpZiBBcHByb3ZhbCBxdWV1ZSBkb2VzIG5vdCBleGlzdHMKICAgICAgICAgICAgaWYgKCAhJEFwcHJvdmFsUXVldWVJRCApIHsKICAgICAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Ob3RpZnkoCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ0Vycm9yJywKICAgICAgICAgICAgICAgICAgICBJbmZvID0+ICJGQVEgQXBwcm92YWwgaXMgZW5hYmxlZCBidXQgcXVldWUgJyRBcHByb3ZhbFF1ZXVlJyBkb2VzIG5vdCBleGlzdHMiLAogICAgICAgICAgICAgICAgICAgIExpbmsgPT4gJyRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249QWRtaW5TeXNDb25maWc7U3ViYWN0aW9uPUVkaXQ7JwogICAgICAgICAgICAgICAgICAgICAgICAuICdTeXNDb25maWdTdWJHcm91cD1Db3JlJTNBJTNBQXBwcm92YWw7U3lzQ29uZmlnR3JvdXA9RkFRJywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgaHRtbCBvdXRwdXQKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT5fTWFza05ldygKICAgICAgICAgICAgRm9ybUlEICAgICAgICAgICAgICAgICAgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICBVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lcyA9PiAkVXNlckNhdGVnb3JpZXNMb25nTmFtZXMsCgogICAgICAgICAgICAjIGxhc3Qgdmlld2VkIGNhdGVnb3J5IGZyb20gc2Vzc2lvbiAod3JpdHRlbiBieSBmYXEgZXhwbG9yZXIpCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJFNlbGYtPntMYXN0Vmlld2VkQ2F0ZWdvcnl9LAogICAgICAgICk7CgogICAgICAgICMgZm9vdGVyCiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZvb3RlcigpOwoKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHNhdmUgdGhlIGZhcQogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1NhdmUnICkgewoKICAgICAgICAjIGNoYWxsZW5nZSB0b2tlbiBjaGVjayBmb3Igd3JpdGUgYWN0aW9uCiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DaGFsbGVuZ2VUb2tlbkNoZWNrKCk7CgogICAgICAgICMgaGVhZGVyCiAgICAgICAgbXkgJE91dHB1dCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+SGVhZGVyKCk7CiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk5hdmlnYXRpb25CYXIoKTsKCiAgICAgICAgIyBjaGVjayByZXF1aXJlZCBwYXJhbWV0ZXJzCiAgICAgICAgbXkgJUVycm9yOwogICAgICAgIGZvciBteSAkUGFyYW1OYW1lIChxdyhUaXRsZSBDYXRlZ29yeUlEKSkgewoKICAgICAgICAgICAgIyBpZiByZXF1aXJlZCBmaWVsZCBpcyBub3QgZ2l2ZW4sIGFkZCBzZXJ2ZXIgZXJyb3IgY2xhc3MKICAgICAgICAgICAgaWYgKCAhJEdldFBhcmFteyRQYXJhbU5hbWV9ICkgewogICAgICAgICAgICAgICAgJEVycm9yeyAkUGFyYW1OYW1lIC4gJ1NlcnZlckVycm9yJyB9ID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBpZiBhbiBhdHRhY2htZW50IG11c3QgYmUgZGVsZXRlZAogICAgICAgIEFUVEFDSE1FTlQ6CiAgICAgICAgZm9yIG15ICROdW1iZXIgKCAxIC4uIDMyICkgewoKICAgICAgICAgICAgIyBjaGVjayBpZiB0aGUgZGVsZXRlIGJ1dHRvbiB3YXMgcHJlc3NlZCBmb3IgdGhpcyBhdHRhY2htZW50CiAgICAgICAgICAgIG15ICREZWxldGUgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICJBdHRhY2htZW50RGVsZXRlJE51bWJlciIgKTsKCiAgICAgICAgICAgICMgY2hlY2sgbmV4dCBhdHRhY2htZW50IGlmIGl0IHdhcyBub3QgcHJlc3NlZAogICAgICAgICAgICBuZXh0IEFUVEFDSE1FTlQgaWYgISREZWxldGU7CgogICAgICAgICAgICAjIHJlbWVtYmVyIHRoYXQgd2UgbmVlZCB0byBzaG93IHRoZSBwYWdlIGFnYWluCiAgICAgICAgICAgICRFcnJvcntBdHRhY2htZW50fSA9IDE7CgogICAgICAgICAgICAjIHJlbW92ZSB0aGUgYXR0YWNobWVudCBmcm9tIHRoZSB1cGxvYWQgY2FjaGUKICAgICAgICAgICAgJFNlbGYtPntVcGxvYWRDYWNoZU9iamVjdH0tPkZvcm1JRFJlbW92ZUZpbGUoCiAgICAgICAgICAgICAgICBGb3JtSUQgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICAgICAgRmlsZUlEID0+ICROdW1iZXIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGlmIHRoZXJlIHdhcyBhbiBhdHRhY2htZW50IHVwbG9hZAogICAgICAgIGlmICggJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnQXR0YWNobWVudFVwbG9hZCcgKSApIHsKCiAgICAgICAgICAgICMgcmVtZW1iZXIgdGhhdCB3ZSBuZWVkIHRvIHNob3cgdGhlIHBhZ2UgYWdhaW4KICAgICAgICAgICAgJEVycm9ye0F0dGFjaG1lbnR9ID0gMTsKCiAgICAgICAgICAgICMgZ2V0IHRoZSB1cGxvYWRlZCBhdHRhY2htZW50CiAgICAgICAgICAgIG15ICVVcGxvYWRTdHVmZiA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRVcGxvYWRBbGwoCiAgICAgICAgICAgICAgICBQYXJhbSAgPT4gJ0ZpbGVVcGxvYWQnLAogICAgICAgICAgICAgICAgU291cmNlID0+ICdzdHJpbmcnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBhZGQgYXR0YWNobWVudCB0byB0aGUgdXBsb2FkIGNhY2hlCiAgICAgICAgICAgICRTZWxmLT57VXBsb2FkQ2FjaGVPYmplY3R9LT5Gb3JtSURBZGRGaWxlKAogICAgICAgICAgICAgICAgRm9ybUlEID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICAgICAgICAgICVVcGxvYWRTdHVmZiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgc2VuZCBzZXJ2ZXIgZXJyb3IgaWYgYW55IHJlcXVpcmVkIHBhcmFtZXRlciBpcyBtaXNzaW5nCiAgICAgICAgIyBvciBhbiBhdHRhY2htZW50IHdhcyBkZWxldGVkIG9yIHVwbG9hZGVkCiAgICAgICAgaWYgKCVFcnJvcikgewoKICAgICAgICAgICAgIyBpZiB0aGVyZSB3YXMgYW4gYXR0YWNobWVudCBkZWxldGUgb3IgdXBsb2FkCiAgICAgICAgICAgICMgd2UgZG8gbm90IHdhbnQgdG8gc2hvdyB2YWxpZGF0aW9uIGVycm9ycyBmb3Igb3RoZXIgZmllbGRzCiAgICAgICAgICAgIGlmICggJEVycm9ye0F0dGFjaG1lbnR9ICkgewogICAgICAgICAgICAgICAgJUVycm9yID0gKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZ2V0IGFsbCBhdHRhY2htZW50cyBtZXRhIGRhdGEKICAgICAgICAgICAgbXkgQEF0dGFjaG1lbnRzID0gJFNlbGYtPntVcGxvYWRDYWNoZU9iamVjdH0tPkZvcm1JREdldEFsbEZpbGVzTWV0YSgKICAgICAgICAgICAgICAgIEZvcm1JRCA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkFwcHJvdmFsUmVxdWlyZWQnKSApIHsKCiAgICAgICAgICAgICAgICAjIGdldCBBcHByb3ZhbCBxdWV1ZSBuYW1lCiAgICAgICAgICAgICAgICBteSAkQXBwcm92YWxRdWV1ZSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkFwcHJvdmFsUXVldWUnKSB8fCAnJzsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIEFwcHJvdmFsIHF1ZXVlIGV4aXN0cwogICAgICAgICAgICAgICAgbXkgJEFwcHJvdmFsUXVldWVJRCA9ICRTZWxmLT57UXVldWVPYmplY3R9LT5RdWV1ZUxvb2t1cCggUXVldWUgPT4gJEFwcHJvdmFsUXVldWUgKTsKCiAgICAgICAgICAgICAgICAjIHNob3cgbm90aWZpY2F0aW9uIGlmIEFwcHJvdmFsIHF1ZXVlIGRvZXMgbm90IGV4aXN0cwogICAgICAgICAgICAgICAgaWYgKCAhJEFwcHJvdmFsUXVldWVJRCApIHsKICAgICAgICAgICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Tm90aWZ5KAogICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnRXJyb3InLAogICAgICAgICAgICAgICAgICAgICAgICBJbmZvID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRkFRIEFwcHJvdmFsIGlzIGVuYWJsZWQgYnV0IHF1ZXVlICckQXBwcm92YWxRdWV1ZScgZG9lcyBub3QgZXhpc3RzIiwKICAgICAgICAgICAgICAgICAgICAgICAgTGluayA9PiAnJEVudnsiQmFzZWxpbmsifUFjdGlvbj1BZG1pblN5c0NvbmZpZztTdWJhY3Rpb249RWRpdDsnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICdTeXNDb25maWdTdWJHcm91cD1Db3JlJTNBJTNBQXBwcm92YWw7U3lzQ29uZmlnR3JvdXA9RkFRJywKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGh0bWwgb3V0cHV0CiAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPl9NYXNrTmV3KAogICAgICAgICAgICAgICAgVXNlckNhdGVnb3JpZXNMb25nTmFtZXMgPT4gJFVzZXJDYXRlZ29yaWVzTG9uZ05hbWVzLAogICAgICAgICAgICAgICAgQXR0YWNobWVudHMgICAgICAgICAgICAgPT4gXEBBdHRhY2htZW50cywKICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICVFcnJvciwKICAgICAgICAgICAgICAgIEZvcm1JRCA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGZvb3RlcgogICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Rm9vdGVyKCk7CgogICAgICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgICAgICB9CgogICAgICAgICMgYWRkIHRoZSBuZXcgZmFxIGFydGljbGUKICAgICAgICBteSAkRkFRSUQgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUUFkZCgKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgc2hvdyBlcnJvciBpZiBmYXEgY291bGQgbm90IGJlIGFkZGVkCiAgICAgICAgaWYgKCAhJEZBUUlEICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgYWxsIGF0dGFjaG1lbnRzIGZyb20gdXBsb2FkIGNhY2hlCiAgICAgICAgbXkgQEF0dGFjaG1lbnRzID0gJFNlbGYtPntVcGxvYWRDYWNoZU9iamVjdH0tPkZvcm1JREdldEFsbEZpbGVzRGF0YSgKICAgICAgICAgICAgRm9ybUlEID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICApOwoKICAgICAgICAjIHdyaXRlIGF0dGFjaG1lbnRzCiAgICAgICAgQVRUQUNITUVOVDoKICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKEBBdHRhY2htZW50cykgewoKICAgICAgICAgICAgIyBjaGVjayBpZiBhdHRhY2htZW50IGlzIGFuIGlubGluZSBhdHRhY2htZW50CiAgICAgICAgICAgIG15ICRJbmxpbmUgPSAwOwogICAgICAgICAgICBpZiAoICRBdHRhY2htZW50LT57Q29udGVudElEfSApIHsKCiAgICAgICAgICAgICAgICAjIHJlbWVtYmVyIHRoYXQgaXQgaXMgaW5saW5lCiAgICAgICAgICAgICAgICAkSW5saW5lID0gMTsKCiAgICAgICAgICAgICAgICAjIHJlbWVtYmVyIGlmIHRoaXMgaW5saW5lIGF0dGFjaG1lbnQgaXMgdXNlZCBpbiBhbnkgZmFxIGFydGljbGUKICAgICAgICAgICAgICAgIG15ICRDb250ZW50SURGb3VuZDsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGFsbCBmaWVsZHMgZm9yIGNvbnRlbnQgaWQKICAgICAgICAgICAgICAgIEZJRUxEOgogICAgICAgICAgICAgICAgZm9yIG15ICROdW1iZXIgKCAxIC4uIDYgKSB7CgogICAgICAgICAgICAgICAgICAgICMgZ2V0IGZhcSBmaWVsZAogICAgICAgICAgICAgICAgICAgIG15ICRGaWVsZCA9ICRHZXRQYXJhbXsgJ0ZpZWxkJyAuICROdW1iZXIgfTsKCiAgICAgICAgICAgICAgICAgICAgIyBza2lwIGVtcHR5IGZpZWxkcwogICAgICAgICAgICAgICAgICAgIG5leHQgRklFTEQgaWYgISRGaWVsZDsKCiAgICAgICAgICAgICAgICAgICAgIyBza2lwIGZpZWxkcyB0aGF0IGRvIG5vdCBjb250YWluIHRoZSBjb250ZW50IGlkCiAgICAgICAgICAgICAgICAgICAgbmV4dCBGSUVMRCBpZiAkRmllbGQgIX4gbXsgJEF0dGFjaG1lbnQtPntDb250ZW50SUR9IH14bXM7CgogICAgICAgICAgICAgICAgICAgICMgZm91bmQgdGhlIGNvbnRlbnQgaWQKICAgICAgICAgICAgICAgICAgICAkQ29udGVudElERm91bmQgPSAxOwoKICAgICAgICAgICAgICAgICAgICAjIHdlIGRvIG5vdCBuZWVkIHRvIHNlYXJjaCBmdXJ0aGVyCiAgICAgICAgICAgICAgICAgICAgbGFzdCBGSUVMRDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHdlIGRvIG5vdCB3YW50IHRvIGtlZXAgdGhpcyBhdHRhY2htZW50LAogICAgICAgICAgICAgICAgIyBiZWNhdXNlIGl0IHdhcyBkZWxldGVkIGluIHRoZSByaWNodCB0ZXh0IGVkaXRvcgogICAgICAgICAgICAgICAgbmV4dCBBVFRBQ0hNRU5UIGlmICEkQ29udGVudElERm91bmQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgYWRkIGF0dGFjaG1lbnQKICAgICAgICAgICAgbXkgJEZpbGVJRCA9ICRTZWxmLT57RkFRT2JqZWN0fS0+QXR0YWNobWVudEFkZCgKICAgICAgICAgICAgICAgICV7JEF0dGFjaG1lbnR9LAogICAgICAgICAgICAgICAgSXRlbUlEID0+ICRGQVFJRCwKICAgICAgICAgICAgICAgIElubGluZSA9PiAkSW5saW5lLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgY2hlY2sgZXJyb3IKICAgICAgICAgICAgaWYgKCAhJEZpbGVJRCApIHsKICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZhdGFsRXJyb3IoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbmV4dCBBVFRBQ0hNRU5UIGlmICEkSW5saW5lOwogICAgICAgICAgICBuZXh0IEFUVEFDSE1FTlQgaWYgISRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0Jyb3dzZXJSaWNoVGV4dH07CgogICAgICAgICAgICAjIHJld3JpdGUgdGhlIFVSTHMgb2YgdGhlIGlubGluZSBpbWFnZXMgZm9yIHRoZSB1cGxvYWRlZCBwaWN0dXJlcwogICAgICAgICAgICBteSAkT2sgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUUlubGluZUF0dGFjaG1lbnRVUkxVcGRhdGUoCiAgICAgICAgICAgICAgICBBdHRhY2htZW50ID0+ICRBdHRhY2htZW50LAogICAgICAgICAgICAgICAgRm9ybUlEICAgICA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgICAgICBJdGVtSUQgICAgID0+ICRGQVFJRCwKICAgICAgICAgICAgICAgIEZpbGVJRCAgICAgPT4gJEZpbGVJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBjaGVjayBlcnJvcgogICAgICAgICAgICBpZiAoICEkT2sgKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb3VsZCBub3QgdXBkYXRlIHRoZSBpbmxpbmUgaW1hZ2UgVVJMcyAiCiAgICAgICAgICAgICAgICAgICAgICAgIC4gImZvciBGQVEgSXRlbSMgJyRGQVFJRCchIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgZGVsZXRlIHRoZSB1cGxvYWQgY2FjaGUKICAgICAgICAkU2VsZi0+e1VwbG9hZENhY2hlT2JqZWN0fS0+Rm9ybUlEUmVtb3ZlKCBGb3JtSUQgPT4gJFNlbGYtPntGb3JtSUR9ICk7CgogICAgICAgICMgcmVkaXJlY3QgdG8gRkFRIHpvb20KICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5SZWRpcmVjdCggT1AgPT4gJ0FjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPScgLiAkRkFRSUQgKTsKICAgIH0KfQoKc3ViIF9NYXNrTmV3IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbGlzdCB0eXBlCiAgICBteSAkVHJlZVZpZXcgPSAwOwogICAgaWYgKCAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnVGlja2V0OjpGcm9udGVuZDo6TGlzdFR5cGUnKSBlcSAndHJlZScgKSB7CiAgICAgICAgJFRyZWVWaWV3ID0gMTsKICAgIH0KCiAgICAjIGdldCB2YWxpZCBsaXN0CiAgICBteSAlVmFsaWRMaXN0ICAgICAgICA9ICRTZWxmLT57VmFsaWRPYmplY3R9LT5WYWxpZExpc3QoKTsKICAgIG15ICVWYWxpZExpc3RSZXZlcnNlID0gcmV2ZXJzZSAlVmFsaWRMaXN0OwoKICAgIG15ICVEYXRhOwoKICAgICMgYnVpbGQgdmFsaWQgc2VsZWN0aW9uCiAgICAkRGF0YXtWYWxpZE9wdGlvbn0gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4gXCVWYWxpZExpc3QsCiAgICAgICAgTmFtZSAgICAgICA9PiAnVmFsaWRJRCcsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17VmFsaWRJRH0gfHwgJFZhbGlkTGlzdFJldmVyc2V7dmFsaWR9LAogICAgKTsKCiAgICAjIHNldCBubyBzZXJ2ZXIgZXJyb3IgY2xhc3MgYXMgZGVmYXVsdAogICAgJFBhcmFte0NhdGVnb3J5SURTZXJ2ZXJFcnJvcn0gfHw9ICcnOwoKICAgICMgYnVpbGQgY2F0ZWdvcnkgc2VsZWN0aW9uCiAgICAkRGF0YXtDYXRlZ29yeU9wdGlvbn0gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiAkUGFyYW17VXNlckNhdGVnb3JpZXNMb25nTmFtZXN9LAogICAgICAgIE5hbWUgICAgICAgICA9PiAnQ2F0ZWdvcnlJRCcsCiAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRQYXJhbXtDYXRlZ29yeUlEfSwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ1ZhbGlkYXRlX1JlcXVpcmVkICcgLiAkUGFyYW17Q2F0ZWdvcnlJRFNlcnZlckVycm9yfSwKICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICBUcmVlVmlldyAgICAgPT4gMSwKICAgICk7CgogICAgIyBnZXQgdGhlIGxhbmd1YWdlIGxpc3QKICAgIG15ICVMYW5ndWFnZXMgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkxhbmd1YWdlTGlzdCgKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGdldCB0aGUgc2VsZWN0ZWQgbGFuZ3VhZ2UKICAgIG15ICRTZWxlY3RlZExhbmd1YWdlOwogICAgaWYgKCAkUGFyYW17TGFuZ3VhZ2VJRH0gJiYgJExhbmd1YWdlc3sgJFBhcmFte0xhbmd1YWdlSUR9IH0gKSB7CgogICAgICAgICMgZ2V0IGxhbmd1YWdlIGZyb20gZ2l2ZW4gbGFuZ3VhZ2UgaWQKICAgICAgICAkU2VsZWN0ZWRMYW5ndWFnZSA9ICRMYW5ndWFnZXN7ICRQYXJhbXtMYW5ndWFnZUlEfSB9OwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgdXNlIHRoZSB1c2VyIGxhbmd1YWdlLCBvciBpZiBub3QgZm91bmQgJ2VuJwogICAgICAgICRTZWxlY3RlZExhbmd1YWdlID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57VXNlckxhbmd1YWdlfSB8fCAnZW4nOwoKICAgICAgICAjIGdldCB1c2VyIGxhbmd1YWdlIElECiAgICAgICAgbXkgJFNlbGVjdGVkTGFuZ3VhZ2VJRCA9ICRTZWxmLT57RkFRT2JqZWN0fS0+TGFuZ3VhZ2VMb29rdXAoIE5hbWUgPT4gJFNlbGVjdGVkTGFuZ3VhZ2UgKTsKCiAgICAgICAgIyBjaGVjayBpZiBMYW5kdWFnZUlEIGRvZXMgbm90IGV4c2l0cwogICAgICAgIGlmICggISRTZWxlY3RlZExhbmd1YWdlSUQgKSB7CgogICAgICAgICAgICAjIGdldCB0aGUgbG93ZXN0IGxhbmd1YWdlIElECiAgICAgICAgICAgIG15IEBMYW5ndWFnZUlEcyA9IHNvcnQga2V5cyAlTGFuZ3VhZ2VzOwogICAgICAgICAgICAkU2VsZWN0ZWRMYW5ndWFnZUlEID0gJExhbmd1YWdlSURzWzBdOwoKICAgICAgICAgICAgIyBzZXQgdGhlIGxhbmd1YWdlIHdpdGggbG93ZXN0IGxhbmd1YWdlIElEIGFzIHNlbGVjdGVkIGxhbmd1YWdlCiAgICAgICAgICAgICRTZWxlY3RlZExhbmd1YWdlID0gJExhbmd1YWdlc3skU2VsZWN0ZWRMYW5ndWFnZUlEfTsKICAgICAgICB9CiAgICB9CgogICAgIyBidWlsZCB0aGUgbGFuZ3VhZ2Ugc2VsZWN0aW9uCiAgICAkRGF0YXtMYW5ndWFnZU9wdGlvbn0gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICAgPT4gXCVMYW5ndWFnZXMsCiAgICAgICAgTmFtZSAgICAgICAgICA9PiAnTGFuZ3VhZ2VJRCcsCiAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiAkU2VsZWN0ZWRMYW5ndWFnZSwKICAgICAgICBUcmFuc2xhdGlvbiAgID0+IDAsCiAgICApOwoKICAgICMgZ2V0IHRoZSBzdGF0ZXMgbGlzdAogICAgbXkgJVN0YXRlcyA9ICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVMaXN0KAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IHRoZSBzZWxlY3RlZCBzdGF0ZQogICAgbXkgJFNlbGVjdGVkU3RhdGU7CiAgICBpZiAoICRQYXJhbXtTdGF0ZUlEfSAmJiAkU3RhdGVzeyAkUGFyYW17U3RhdGVJRH0gfSApIHsKCiAgICAgICAgIyBnZXQgc3RhdGUgZnJvbSBnaXZlbiBzdGF0ZSBpZAogICAgICAgICRTZWxlY3RlZFN0YXRlID0gJFN0YXRlc3sgJFBhcmFte1N0YXRlSUR9IH07CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBnZXQgZGVmYXVsdCBzdGF0ZQogICAgICAgICRTZWxlY3RlZFN0YXRlID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6RGVmYXVsdDo6U3RhdGUnKSB8fCAnaW50ZXJuYWwgKGFnZW50KSc7CiAgICB9CgogICAgIyBidWlsZCB0aGUgc3RhdGUgc2VsZWN0aW9uCiAgICAkRGF0YXtTdGF0ZU9wdGlvbn0gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICAgPT4gXCVTdGF0ZXMsCiAgICAgICAgTmFtZSAgICAgICAgICA9PiAnU3RhdGVJRCcsCiAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiAkU2VsZWN0ZWRTdGF0ZSwKICAgICAgICBUcmFuc2xhdGlvbiAgID0+IDEsCiAgICApOwoKICAgICMgc2hvdyBmYXEgYWRkIHNjcmVlbgogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdGQVFBZGQnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICVEYXRhLAogICAgICAgIH0sCiAgICApOwoKICAgICMgc2hvdyBsYW5ndWFnZXMgZmllbGQKICAgIGlmICggJFNlbGYtPntNdWx0aUxhbmd1YWdlfSApIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdMYW5ndWFnZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgJURhdGEsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjIGdldCBkZWZhdWx0IGxhbmd1YWdlCiAgICAgICAgbXkgJERlZmF1bHRMYW5ndWFnZQogICAgICAgICAgICA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkRlZmF1bHQ6Okxhbmd1YWdlJykgfHwgJ2VuJzsKCiAgICAgICAgIyBnZXQgZGVmYXVsdCBsYW5ndWFnZSBJRAogICAgICAgIG15ICRMYW5ndWFnZUlEID0gJFNlbGYtPntGQVFPYmplY3R9LT5MYW5ndWFnZUxvb2t1cCgKICAgICAgICAgICAgTmFtZSA9PiAkRGVmYXVsdExhbmd1YWdlLAogICAgICAgICk7CgogICAgICAgICMgY3JlYXRlIGRlZmF1bHQgbGFuZ3VhZ2UgaWYgaXQgd2FzIGRlbGV0ZWQgb3IgZG9lcyBub3QgZXhpc3RzCiAgICAgICAgaWYgKCAhJExhbmd1YWdlSUQgKSB7CiAgICAgICAgICAgIG15ICRJbnNlcnRMYW5ndWFnZSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+TGFuZ3VhZ2VBZGQoCiAgICAgICAgICAgICAgICBOYW1lICAgPT4gJERlZmF1bHRMYW5ndWFnZSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAhJEluc2VydExhbmd1YWdlICkgewoKICAgICAgICAgICAgICAgICMgcmV0dXJuIHdpdGggZXJyb3Igc2NyZWVuCiAgICAgICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICJObyBkZWZhdWx0IGxhbmd1YWdlIGZvdW5kIGFuZCBjYW4ndCBjcmVhdGUgYSBuZXcgb25lLiIsCiAgICAgICAgICAgICAgICAgICAgQ29tbWVudCA9PiAnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluLicsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGdldCBkZWZhdWx0IGxhbmd1YWdlIElECiAgICAgICAgICAgICRMYW5ndWFnZUlEID0gJFNlbGYtPntGQVFPYmplY3R9LT5MYW5ndWFnZUxvb2t1cCgKICAgICAgICAgICAgICAgIE5hbWUgPT4gJERlZmF1bHRMYW5ndWFnZSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICRQYXJhbXtMYW5ndWFnZUlEfSA9ICRMYW5ndWFnZUlEOwoKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdOb0xhbmd1YWdlJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAlRGF0YSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgICMgc2hvdyBhcHByb3ZhbCBmaWVsZAogICAgaWYgKCAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpBcHByb3ZhbFJlcXVpcmVkJykgKSB7CgogICAgICAgICMgY2hlY2sgcGVybWlzc2lvbgogICAgICAgIG15ICVHcm91cHMgPSByZXZlcnNlICRTZWxmLT57R3JvdXBPYmplY3R9LT5Hcm91cE1lbWJlckxpc3QoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIFR5cGUgICA9PiAncm8nLAogICAgICAgICAgICBSZXN1bHQgPT4gJ0hBU0gnLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHRoZSBmYXEgYXBwcm92YWwgZ3JvdXAgZnJvbSBjb25maWcKICAgICAgICBteSAkQXBwcm92YWxHcm91cCA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkFwcHJvdmFsR3JvdXAnKSB8fCAnJzsKCiAgICAgICAgIyBidWlsZCB0aGUgYXBwcm92YWwgc2VsZWN0aW9uIGlmIHVzZXIgaXMgaW4gdGhlIGFwcHJvdmFsIGdyb3VwCiAgICAgICAgaWYgKCAkR3JvdXBzeyRBcHByb3ZhbEdyb3VwfSApIHsKCiAgICAgICAgICAgICREYXRhe0FwcHJvdmFsT3B0aW9ufSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgICAgICBOYW1lID0+ICdBcHByb3ZlZCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAwID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgMSA9PiAnWWVzJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtBcHByb3ZlZH0gfHwgMCwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0FwcHJvdmFsJywKICAgICAgICAgICAgICAgIERhdGEgPT4geyVEYXRhfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBzaG93IHRoZSBhdHRhY2htZW50IHVwbG9hZCBidXR0b24KICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnQXR0YWNobWVudFVwbG9hZCcsCiAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICk7CgogICAgIyBzaG93IGF0dGFjaG1lbnRzCiAgICBBVFRBQ0hNRU5UOgogICAgZm9yIG15ICRBdHRhY2htZW50ICggQHsgJFBhcmFte0F0dGFjaG1lbnRzfSB9ICkgewoKICAgICAgICAjIGRvIG5vdCBzaG93IGlubGluZSBpbWFnZXMgYXMgYXR0YWNobWVudHMKICAgICAgICAjICh0aGV5IGhhdmUgYSBjb250ZW50IGlkKQogICAgICAgIGlmICggJEF0dGFjaG1lbnQtPntDb250ZW50SUR9ICYmICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0Jyb3dzZXJSaWNoVGV4dH0gKSB7CiAgICAgICAgICAgIG5leHQgQVRUQUNITUVOVDsKICAgICAgICB9CgogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0F0dGFjaG1lbnQnLAogICAgICAgICAgICBEYXRhID0+ICRBdHRhY2htZW50LAogICAgICAgICk7CiAgICB9CgogICAgIyBhZGQgcmljaCB0ZXh0IGVkaXRvciBqYXZhc2NyaXB0CiAgICAjIG9ubHkgaWYgYWN0aXZhdGVkIGFuZCB0aGUgYnJvd3NlciBjYW4gaGFuZGxlIGl0CiAgICAjIG90aGVyd2lzZSBqdXN0IGEgdGV4dGFyZWEgaXMgc2hvd24KICAgIGlmICggJFNlbGYtPntMYXlvdXRPYmplY3R9LT57QnJvd3NlclJpY2hUZXh0fSApIHsKCiAgICAgICAgIyB1c2UgaGVpZ2h0L3dpZHRoIGRlZmluZWQgZm9yIHRoaXMgc2NyZWVuCiAgICAgICAgJFBhcmFte1JpY2hUZXh0SGVpZ2h0fSA9ICRTZWxmLT57Q29uZmlnfS0+e1JpY2hUZXh0SGVpZ2h0fSB8fCAwOwogICAgICAgICRQYXJhbXtSaWNoVGV4dFdpZHRofSAgPSAkU2VsZi0+e0NvbmZpZ30tPntSaWNoVGV4dFdpZHRofSAgfHwgMDsKCiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUmljaFRleHQnLAogICAgICAgICAgICBEYXRhID0+IHslUGFyYW19LAogICAgICAgICk7CiAgICB9CgogICAgIyBzaG93IEZBUSBDb250ZW50CiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZBUUNvbnRlbnRTaG93KAogICAgICAgIEZBUU9iamVjdCAgICAgICA9PiAkU2VsZi0+e0ZBUU9iamVjdH0sCiAgICAgICAgSW50ZXJmYWNlU3RhdGVzID0+ICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSwKICAgICAgICBGQVFEYXRhICAgICAgICAgPT4geyVQYXJhbX0sCiAgICAgICAgVXNlcklEICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBnZW5lcmF0ZSBvdXRwdXQKICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRQWRkJywKICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICk7Cn0KCjE7Cg==
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQ2F0ZWdvcnkucG0gLSB0aGUgZmFxIGxhbmd1YWdlIG1hbmFnZW1lbnQgbW9kdWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OkFnZW50RkFRQ2F0ZWdvcnk7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OkZBUTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYWxpZDsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBjaGVjayBuZWVkZWQgb2JqZWN0cwogICAgZm9yIG15ICRPYmplY3QgKHF3KFBhcmFtT2JqZWN0IERCT2JqZWN0IExheW91dE9iamVjdCBMb2dPYmplY3QgQ29uZmlnT2JqZWN0KSkgewogICAgICAgIGlmICggISRTZWxmLT57JE9iamVjdH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RmF0YWxFcnJvciggTWVzc2FnZSA9PiAiR290IG5vICRPYmplY3QhIiApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNyZWF0ZSBhZGRpdGlvbmFsIG9iamVjdHMKICAgICRTZWxmLT57RkFRT2JqZWN0fSAgID0gS2VybmVsOjpTeXN0ZW06OkZBUS0+bmV3KCVQYXJhbSk7CiAgICAkU2VsZi0+e1ZhbGlkT2JqZWN0fSA9IEtlcm5lbDo6U3lzdGVtOjpWYWxpZC0+bmV3KCVQYXJhbSk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBwZXJtaXNzaW9uIGNoZWNrCiAgICBpZiAoICEkU2VsZi0+e0FjY2Vzc1J3fSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gJ1lvdSBuZWVkIHJ3IHBlcm1pc3Npb24hJywKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHBhcmFtZXRlcnMKICAgIG15ICVHZXRQYXJhbTsKICAgIGZvciBteSAkUGFyYW1OYW1lIChxdyhDYXRlZ29yeUlEIE5hbWUgUGFyZW50SUQgQ29tbWVudCBWYWxpZElEKSkgewogICAgICAgICRHZXRQYXJhbXskUGFyYW1OYW1lfSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFtTmFtZSApOwogICAgfQoKICAgICMgc2V0IGRlZmF1bHQgY2F0ZWdvcnkgaWQKICAgICRHZXRQYXJhbXtDYXRlZ29yeUlEfSB8fD0gMDsKCiAgICAjIHNldCBkZWZhdWx0IHBhcmVudCBpZAogICAgJEdldFBhcmFte1BhcmVudElEfSB8fD0gMDsKCiAgICAjIGdldCBhcnJheSBwYXJhbWV0ZXJzCiAgICBAeyAkR2V0UGFyYW17UGVybWlzc2lvbkdyb3Vwc30gfQogICAgICAgID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldEFycmF5KCBQYXJhbSA9PiAnUGVybWlzc2lvbkdyb3VwcycgKTsKCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIGNoYW5nZQogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0NoYW5nZScgKSB7CgogICAgICAgICMgY2hlY2sgcmVxdWlyZWQgcGFyYW1ldGVycwogICAgICAgIGlmICggISRHZXRQYXJhbXtDYXRlZ29yeUlEfSApIHsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GYXRhbEVycm9yKCBNZXNzYWdlID0+ICdOZWVkIENhdGVnb3J5SUQhJyApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgY2F0ZWdvcnkgZGF0YQogICAgICAgIG15ICVDYXRlZ29yeURhdGEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkNhdGVnb3J5R2V0KAogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRHZXRQYXJhbXtDYXRlZ29yeUlEfSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgcGVybWlzc2lvbiBncm91cHMKICAgICAgICAkQ2F0ZWdvcnlEYXRhe1Blcm1pc3Npb25Hcm91cHN9ID0gJFNlbGYtPntGQVFPYmplY3R9LT5DYXRlZ29yeUdyb3VwR2V0KAogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRHZXRQYXJhbXtDYXRlZ29yeUlEfSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBoZWFkZXIKICAgICAgICBteSAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5IZWFkZXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TmF2aWdhdGlvbkJhcigpOwoKICAgICAgICAjIGh0bWwgb3V0cHV0CiAgICAgICAgJFNlbGYtPl9FZGl0KAogICAgICAgICAgICBBY3Rpb24gPT4gJ0NoYW5nZScsCiAgICAgICAgICAgICVDYXRlZ29yeURhdGEsCiAgICAgICAgKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRQ2F0ZWdvcnknLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICApOwoKICAgICAgICAjIGZvb3RlcgogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Gb290ZXIoKTsKCiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBjaGFuZ2UgYWN0aW9uCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQ2hhbmdlQWN0aW9uJyApIHsKCiAgICAgICAgIyBjaGFsbGVuZ2UgdG9rZW4gY2hlY2sgZm9yIHdyaXRlIGFjdGlvbgogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwoKICAgICAgICAjIGhlYWRlcgogICAgICAgIG15ICRPdXRwdXQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkhlYWRlcigpOwogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5OYXZpZ2F0aW9uQmFyKCk7CgogICAgICAgICMgY2hlY2sgcmVxdWlyZWQgcGFyYW1ldGVycwogICAgICAgIGZvciBteSAkUGFyYW1OYW1lIChxdyhQYXJlbnRJRCBWYWxpZElEKSkgewogICAgICAgICAgICBpZiAoICFkZWZpbmVkICRHZXRQYXJhbXskUGFyYW1OYW1lfSApIHsKICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZhdGFsRXJyb3IoIE1lc3NhZ2UgPT4gIk5lZWQgJFBhcmFtTmFtZSEiICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgY2hlY2sgcmVxdWlyZWQgcGFyYW1ldGVycwogICAgICAgIG15ICVFcnJvcjsKICAgICAgICBmb3IgbXkgJFBhcmFtTmFtZSAocXcoTmFtZSBDb21tZW50IFBlcm1pc3Npb25Hcm91cHMpKSB7CgogICAgICAgICAgICAjIGlmIHJlcXVpcmVkIGZpZWxkIGlzIG5vdCBnaXZlbgogICAgICAgICAgICBpZiAoICEkR2V0UGFyYW17JFBhcmFtTmFtZX0gKSB7CgogICAgICAgICAgICAgICAgIyBhZGQgc2VydmVyIGVycm9yIGVycm9yIGNsYXNzCiAgICAgICAgICAgICAgICAkRXJyb3J7ICRQYXJhbU5hbWUgLiAnU2VydmVyRXJyb3InIH0gPSAnU2VydmVyRXJyb3InOwoKICAgICAgICAgICAgICAgICMgYWRkIHNlcnZlciBlcnJvciBzdHJpbmcgZm9yIGNhdGVnb3J5IG5hbWUgZmllbGQKICAgICAgICAgICAgICAgIGlmICggJFBhcmFtTmFtZSBlcSAnTmFtZScgKSB7CiAgICAgICAgICAgICAgICAgICAgJEVycm9ye05hbWVTZXJ2ZXJFcnJvck1lc3NhZ2V9ID0gJ0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBuYW1lISc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgc2VuZCBzZXJ2ZXIgZXJyb3IgaWYgYW55IHJlcXVpcmVkIHBhcmFtZXRlciBpcyBtaXNzaW5nCiAgICAgICAgaWYgKCVFcnJvcikgewoKICAgICAgICAgICAgIyBodG1sIG91dHB1dAogICAgICAgICAgICAkU2VsZi0+X0VkaXQoCiAgICAgICAgICAgICAgICBBY3Rpb24gPT4gJ0NoYW5nZScsCiAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAlRXJyb3IsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRQ2F0ZWdvcnknLAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGZvb3RlcgogICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Rm9vdGVyKCk7CgogICAgICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgZm9yIGR1cGxpY2F0ZSBjYXRlZ29yeSBuYW1lIHdpdGggdGhlIHNhbWUgcGFyZW50IGNhdGVnb3J5CiAgICAgICAgbXkgJENhdGVnb3J5RXhpc3RzQWxyZWFkeSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Q2F0ZWdvcnlEdXBsaWNhdGVDaGVjaygKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkR2V0UGFyYW17Q2F0ZWdvcnlJRH0sCiAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJEdldFBhcmFte05hbWV9LAogICAgICAgICAgICBQYXJlbnRJRCAgID0+ICRHZXRQYXJhbXtQYXJlbnRJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgc2hvdyB0aGUgZWRpdCBzY3JlZW4gYWdhaW4KICAgICAgICBpZiAoJENhdGVnb3J5RXhpc3RzQWxyZWFkeSkgewoKICAgICAgICAgICAgIyBzZXQgc2VydmVyIGVycm9ycwogICAgICAgICAgICAkR2V0UGFyYW17TmFtZVNlcnZlckVycm9yfSAgICAgICAgPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICAkR2V0UGFyYW17TmFtZVNlcnZlckVycm9yTWVzc2FnZX0gPSAnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyc7CgogICAgICAgICAgICAjIGh0bWwgb3V0cHV0CiAgICAgICAgICAgICRTZWxmLT5fRWRpdCgKICAgICAgICAgICAgICAgIEFjdGlvbiA9PiAnQ2hhbmdlJywKICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFDYXRlZ29yeScsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZm9vdGVyCiAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Gb290ZXIoKTsKCiAgICAgICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgICAgIH0KCiAgICAgICAgIyB1cGRhdGUgY2F0ZWdvcnkKICAgICAgICBteSAkQ2F0ZWdvcnlVcGRhdGVTdWNjZXNzZnVsID0gJFNlbGYtPntGQVFPYmplY3R9LT5DYXRlZ29yeVVwZGF0ZSgKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgZXJyb3IKICAgICAgICBpZiAoICEkQ2F0ZWdvcnlVcGRhdGVTdWNjZXNzZnVsICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgY2F0ZWdvcnkgZ3JvdXAKICAgICAgICAkU2VsZi0+e0ZBUU9iamVjdH0tPlNldENhdGVnb3J5R3JvdXAoCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJEdldFBhcmFte0NhdGVnb3J5SUR9LAogICAgICAgICAgICBHcm91cElEcyAgID0+ICRHZXRQYXJhbXtQZXJtaXNzaW9uR3JvdXBzfSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBzaG93IG5vdGlmaWNhdGlvbgogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Ob3RpZnkoIEluZm8gPT4gJ0ZBUSBjYXRlZ29yeSB1cGRhdGVkIScgKTsKCiAgICAgICAgIyBzaG93IG92ZXJ2aWV3CiAgICAgICAgJFNlbGYtPl9PdmVydmlldygpOwogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFDYXRlZ29yeScsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICk7CgogICAgICAgICMgZm9vdGVyCiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZvb3RlcigpOwoKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIGFkZAogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0FkZCcgKSB7CgogICAgICAgICMgaGVhZGVyCiAgICAgICAgbXkgJE91dHB1dCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+SGVhZGVyKCk7CiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk5hdmlnYXRpb25CYXIoKTsKCiAgICAgICAgIyBodG1sIG91dHB1dAogICAgICAgICRTZWxmLT5fRWRpdCgKICAgICAgICAgICAgQWN0aW9uID0+ICdBZGQnLAogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRQ2F0ZWdvcnknLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICApOwoKICAgICAgICAjIGZvb3RlcgogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Gb290ZXIoKTsKCiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBhZGQgYWN0aW9uCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQWRkQWN0aW9uJyApIHsKCiAgICAgICAgIyBjaGFsbGVuZ2UgdG9rZW4gY2hlY2sgZm9yIHdyaXRlIGFjdGlvbgogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwoKICAgICAgICAjIGhlYWRlcgogICAgICAgIG15ICRPdXRwdXQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkhlYWRlcigpOwogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5OYXZpZ2F0aW9uQmFyKCk7CgogICAgICAgICMgY2hlY2sgcmVxdWlyZWQgcGFyYW1ldGVycwogICAgICAgIGZvciBteSAkUGFyYW1OYW1lIChxdyhQYXJlbnRJRCBWYWxpZElEKSkgewogICAgICAgICAgICBpZiAoICFkZWZpbmVkICRHZXRQYXJhbXskUGFyYW1OYW1lfSApIHsKICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZhdGFsRXJyb3IoIE1lc3NhZ2UgPT4gIk5lZWQgJFBhcmFtTmFtZSEiICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgY2hlY2sgcmVxdWlyZWQgcGFyYW1ldGVycwogICAgICAgIG15ICVFcnJvcjsKICAgICAgICBmb3IgbXkgJFBhcmFtTmFtZSAocXcoTmFtZSBDb21tZW50IFBlcm1pc3Npb25Hcm91cHMpKSB7CgogICAgICAgICAgICAjIGlmIHJlcXVpcmVkIGZpZWxkIGlzIG5vdCBnaXZlbgogICAgICAgICAgICBpZiAoICEkR2V0UGFyYW17JFBhcmFtTmFtZX0gKSB7CgogICAgICAgICAgICAgICAgIyBhZGQgdmFsaWRhdGlvbiBjbGFzcyBhbmQgc2VydmVyIGVycm9yIGVycm9yIGNsYXNzCiAgICAgICAgICAgICAgICBpZiAoICRQYXJhbU5hbWUgZXEgJ1Blcm1pc3Npb25Hcm91cHMnICkgewogICAgICAgICAgICAgICAgICAgICRFcnJvcnsgJFBhcmFtTmFtZSAuICdTZXJ2ZXJFcnJvcicgfSA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBhZGQgc2VydmVyIGVycm9yIHN0cmluZyBmb3IgY2F0ZWdvcnkgbmFtZSBmaWVsZAogICAgICAgICAgICAgICAgaWYgKCAkUGFyYW1OYW1lIGVxICdOYW1lJyApIHsKICAgICAgICAgICAgICAgICAgICAkRXJyb3J7TmFtZVNlcnZlckVycm9yTWVzc2FnZX0gPSAnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBzZW5kIHNlcnZlciBlcnJvciBpZiBhbnkgcmVxdWlyZWQgcGFyYW1ldGVycyBhcmUgbWlzc2luZwogICAgICAgIGlmICglRXJyb3IpIHsKCiAgICAgICAgICAgICMgaHRtbCBvdXRwdXQKICAgICAgICAgICAgJFNlbGYtPl9FZGl0KAogICAgICAgICAgICAgICAgQWN0aW9uID0+ICdBZGQnLAogICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgJUVycm9yLAogICAgICAgICAgICApOwogICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUUNhdGVnb3J5JywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBmb290ZXIKICAgICAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZvb3RlcigpOwoKICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGZvciBkdXBsaWNhdGUgY2F0ZWdvcnkgbmFtZSB3aXRoIHRoZSBzYW1lIHBhcmVudCBjYXRlZ29yeQogICAgICAgIG15ICRDYXRlZ29yeUV4aXN0c0FscmVhZHkgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkNhdGVnb3J5RHVwbGljYXRlQ2hlY2soCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJEdldFBhcmFte0NhdGVnb3J5SUR9LAogICAgICAgICAgICBOYW1lICAgICAgID0+ICRHZXRQYXJhbXtOYW1lfSwKICAgICAgICAgICAgUGFyZW50SUQgICA9PiAkR2V0UGFyYW17UGFyZW50SUR9LAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIHNob3cgdGhlIGVkaXQgc2NyZWVuIGFnYWluCiAgICAgICAgaWYgKCRDYXRlZ29yeUV4aXN0c0FscmVhZHkpIHsKCiAgICAgICAgICAgICMgc2V0IHNlcnZlciBlcnJvcnMKICAgICAgICAgICAgJEdldFBhcmFte05hbWVTZXJ2ZXJFcnJvcn0gICAgICAgID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgJEdldFBhcmFte05hbWVTZXJ2ZXJFcnJvck1lc3NhZ2V9ID0gJ1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMhJzsKCiAgICAgICAgICAgICMgaHRtbCBvdXRwdXQKICAgICAgICAgICAgJFNlbGYtPl9FZGl0KAogICAgICAgICAgICAgICAgQWN0aW9uID0+ICdBZGQnLAogICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICApOwogICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUUNhdGVnb3J5JywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBmb290ZXIKICAgICAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZvb3RlcigpOwoKICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgfQoKICAgICAgICAjIGFkZCBuZXcgY2F0ZWdvcnkKICAgICAgICBteSAkQ2F0ZWdvcnlJRCA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Q2F0ZWdvcnlBZGQoCiAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGVycm9yCiAgICAgICAgaWYgKCAhJENhdGVnb3J5SUQgKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKCk7CiAgICAgICAgfQoKICAgICAgICAjIHNldCBjYXRlZ29yeSBncm91cAogICAgICAgICRTZWxmLT57RkFRT2JqZWN0fS0+U2V0Q2F0ZWdvcnlHcm91cCgKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgR3JvdXBJRHMgICA9PiAkR2V0UGFyYW17UGVybWlzc2lvbkdyb3Vwc30sCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgc2hvdyBub3RpZmljYXRpb24KICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Tm90aWZ5KCBJbmZvID0+ICdGQVEgY2F0ZWdvcnkgYWRkZWQhJyApOwoKICAgICAgICAjIHNob3cgb3ZlcnZpZXcKICAgICAgICAkU2VsZi0+X092ZXJ2aWV3KCk7CiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUUNhdGVnb3J5JywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgKTsKCiAgICAgICAgIyBmb290ZXIKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Rm9vdGVyKCk7CgogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgZGVsZXRlCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnRGVsZXRlJyApIHsKCiAgICAgICAgIyBnZXQgdGhlIENhdGVnb3J5SUQKICAgICAgICBteSAkQ2F0ZWdvcnlJRCA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NhdGVnb3J5SUQnICkgfHwgJyc7CgogICAgICAgICMgY2hlY2sgcmVxdWlyZWQgcGFyYW1ldGVycwogICAgICAgIGlmICggISRDYXRlZ29yeUlEICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJ05vIENhdGVnb3J5SUQgaXMgZ2l2ZW4hJywKICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBjYXRlZ29yeSBkYXRhCiAgICAgICAgbXkgJUNhdGVnb3J5RGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Q2F0ZWdvcnlHZXQoCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIGlmICggISVDYXRlZ29yeURhdGEgKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKCk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBhbGwgYWZmZWN0ZWQgRkFRIGFydGljbGVzCiAgICAgICAgbXkgQEFmZmVjdGVkSXRlbXMgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUVNlYXJjaCgKICAgICAgICAgICAgQ2F0ZWdvcnlJRHMgPT4gWyRDYXRlZ29yeUlEXSwKICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGdldCBhbGwgYWZmZWN0ZWQgU3ViQ2NhdGVnb3JpZXMKICAgICAgICBteSAkQWZmZWN0ZWRTdWJDYXRlZ29yaWVzID0gJFNlbGYtPntGQVFPYmplY3R9LT5DYXRlZ29yeVN1YkNhdGVnb3J5SURMaXN0KAogICAgICAgICAgICBQYXJlbnRJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgTW9kZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGNhbGwgRGVsZXRlIGJsb2NrCiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRGVsZXRlJywKICAgICAgICAgICAgRGF0YSA9PiB7JUNhdGVnb3J5RGF0YX0sCiAgICAgICAgKTsKCiAgICAgICAgIyBzZXQgdGhlIGRpYWxvZyB0eXBlLiBBcyBkZWZhdWx0LCB0aGUgZGlhbG9nIHdpbGwgaGF2ZSAyIGJ1dHRvbnM6IFllcyBhbmQgTm8KICAgICAgICBteSAkRGlhbG9nVHlwZSA9ICdDb25maXJtYXRpb24nOwoKICAgICAgICAjIGRpc3BsYXkgbGlzdCBvZiBhZmZlY3RlZCBGQVEgYXJ0aWNsZXMgb3IgU3ViQ2F0ZWdvcmllcwogICAgICAgIGlmICggQEFmZmVjdGVkSXRlbXMgfHwgQHskQWZmZWN0ZWRTdWJDYXRlZ29yaWVzfSApIHsKCiAgICAgICAgICAgICMgc2V0IHRoZSBkaWFsb2cgdHlwZSB0byBoYXZlIG9ubHkgMSBidXR0b246IE9rCiAgICAgICAgICAgICREaWFsb2dUeXBlID0gJ01lc3NhZ2UnOwoKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0FmZmVjdGVkJywKICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGRpc3BsYXkgQWZmZWN0ZWQgRkFRIGFydGljbGVzCiAgICAgICAgICAgIGlmIChAQWZmZWN0ZWRJdGVtcykgewoKICAgICAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQWZmZWN0ZWRJdGVtcycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgSVRFTUlEOgogICAgICAgICAgICAgICAgZm9yIG15ICRJdGVtSUQgKEBBZmZlY3RlZEl0ZW1zKSB7CgogICAgICAgICAgICAgICAgICAgICMgZ2V0IGZhcSBhcnRpY2xlCiAgICAgICAgICAgICAgICAgICAgbXkgJUZBUURhdGEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUUdldCgKICAgICAgICAgICAgICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkSXRlbUlELAogICAgICAgICAgICAgICAgICAgICAgICBJdGVtRmllbGRzID0+IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgY2hlY2sgZmFxIGFydGljbGUKICAgICAgICAgICAgICAgICAgICBuZXh0IElURU1JRCBpZiAhJUZBUURhdGE7CgogICAgICAgICAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0FmZmVjdGVkSXRlbXNSb3cnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZGlzcGxheSBBZmZlY3RlZCBTdWJjYXRlZ29yaWVzCiAgICAgICAgICAgIGlmICggQHskQWZmZWN0ZWRTdWJDYXRlZ29yaWVzfSApIHsKCiAgICAgICAgICAgICAgICAjIGdldCBjYXRlZ29pZXMgbG9uZyBuYW1lcwogICAgICAgICAgICAgICAgbXkgJENhdGVnb3J5TG9uZ05hbWVzID0gJFNlbGYtPntGQVFPYmplY3R9LT5HZXRVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lcygKICAgICAgICAgICAgICAgICAgICBUeXBlICAgPT4gJ3JvJywKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0FmZmVjdGVkU3ViQ2F0ZWdvcmllcycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBDQVRFR09SWUlEOgogICAgICAgICAgICAgICAgZm9yIG15ICRDYXRlZ29yeUlEICggQHskQWZmZWN0ZWRTdWJDYXRlZ29yaWVzfSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBnZXQgY2F0ZWdvcnkKICAgICAgICAgICAgICAgICAgICBteSAlQ2F0ZWdvcnlEYXRhID0gJFNlbGYtPntGQVFPYmplY3R9LT5DYXRlZ29yeUdldCgKICAgICAgICAgICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBzZXQgY2F0ZWdvcnkgbG9uZyBuYW1lCiAgICAgICAgICAgICAgICAgICAgJENhdGVnb3J5RGF0YXtMb25nTmFtZX0gPSAkQ2F0ZWdvcnlMb25nTmFtZXMtPnskQ2F0ZWdvcnlJRH07CgogICAgICAgICAgICAgICAgICAgICMgY2hlY2sgY2F0ZWdvcnkKICAgICAgICAgICAgICAgICAgICBuZXh0IENBVEVHT1JZSUQgaWYgISVDYXRlZ29yeURhdGE7CgogICAgICAgICAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0FmZmVjdGVkU3ViQ2F0ZWdvcmllc1JvdycsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJUNhdGVnb3J5RGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ05vQWZmZWN0ZWQnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7JUNhdGVnb3J5RGF0YX0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIG91dHB1dCBjb250ZW50CiAgICAgICAgbXkgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUUNhdGVnb3J5JywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHt9LAogICAgICAgICk7CgogICAgICAgICMgYnVpbGQgdGhlIHJldHVybmVkIGRhdGEgc3RydWN0dXJlCiAgICAgICAgbXkgJURhdGEgPSAoCiAgICAgICAgICAgIEhUTUwgICAgICAgPT4gJE91dHB1dCwKICAgICAgICAgICAgRGlhbG9nVHlwZSA9PiAkRGlhbG9nVHlwZSwKICAgICAgICApOwoKICAgICAgICAjIHJldHVybiBKU09OLVN0cmluZyBiZWNhdXNlIG9mIEFKQVgtTW9kZQogICAgICAgIG15ICRPdXRwdXRKU09OID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5KU09ORW5jb2RlKCBEYXRhID0+IFwlRGF0YSApOwoKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5BdHRhY2htZW50KAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD0nIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57Q2hhcnNldH0sCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRPdXRwdXRKU09OLAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICAgICAgTm9DYWNoZSAgICAgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgZGVsZXRlIGFjdGlvbgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0RlbGV0ZUFjdGlvbicgKSB7CgogICAgICAgICMgZ2V0IHRoZSBDYXRlZ29yeUlECiAgICAgICAgbXkgJENhdGVnb3J5SUQgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdDYXRlZ29yeUlEJyApIHx8ICcnOwoKICAgICAgICAjIGNoZWNrIHJlcXVpcmVkIHBhcmFtZXRlcnMKICAgICAgICBpZiAoICEkQ2F0ZWdvcnlJRCApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICdObyBDYXRlZ29yeUlEIGlzIGdpdmVuIScsCiAgICAgICAgICAgICAgICBDb21tZW50ID0+ICdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgY2F0ZWdvcnkgZGF0YQogICAgICAgIG15ICVDYXRlZ29yeURhdGEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkNhdGVnb3J5R2V0KAogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoICElQ2F0ZWdvcnlEYXRhICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KCiAgICAgICAgIyBkZWxldGUgdGhlIGNhdGVnb3J5CiAgICAgICAgbXkgJENvdWxkRGVsZXRlQ2F0ZWdvcnkgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkNhdGVnb3J5RGVsZXRlKAogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoJENvdWxkRGVsZXRlQ2F0ZWdvcnkpIHsKCiAgICAgICAgICAgICMgcmVkaXJlY3QgdG8gZXhwbG9yZXIsIHdoZW4gdGhlIGRlbGV0aW9uIHdhcyBzdWNjZXNzZnVsCiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPlJlZGlyZWN0KAogICAgICAgICAgICAgICAgT1AgPT4gIkFjdGlvbj1BZ2VudEZBUUNhdGVnb3J5IiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAjIHNob3cgZXJyb3IgbWVzc2FnZSwgd2hlbiBkZWxldGUgZmFpbGVkCiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiAiV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY2F0ZWdvcnkgJENhdGVnb3J5SUQhIiwKICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIG92ZXJ2aWV3CiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzZSB7CgogICAgICAgICMgaGVhZGVyCiAgICAgICAgbXkgJE91dHB1dCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+SGVhZGVyKCk7CiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk5hdmlnYXRpb25CYXIoKTsKCiAgICAgICAgIyBodG1sIG91dHB1dAogICAgICAgICRTZWxmLT5fT3ZlcnZpZXcoKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRQ2F0ZWdvcnknLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgZm9vdGVyCiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZvb3RlcigpOwoKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KfQoKc3ViIF9FZGl0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBzaG93IG92ZXJ2aWV3CiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3JywKICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICApOwoKICAgICMgb3V0cHV0IG92ZXJ2aWV3IGJsb2NrcwogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jayggTmFtZSA9PiAnQWN0aW9uTGlzdCcgKTsKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soIE5hbWUgPT4gJ0FjdGlvbk92ZXJ2aWV3JyApOwoKICAgICMgZ2V0IHRoZSB2YWxpZCBsaXN0CiAgICBteSAlVmFsaWRMaXN0ICAgICAgICA9ICRTZWxmLT57VmFsaWRPYmplY3R9LT5WYWxpZExpc3QoKTsKICAgIG15ICVWYWxpZExpc3RSZXZlcnNlID0gcmV2ZXJzZSAlVmFsaWRMaXN0OwoKICAgIG15ICVEYXRhOwoKICAgICMgYnVpbGQgdGhlIHZhbGlkIHNlbGVjdGlvbgogICAgJERhdGF7VmFsaWRPcHRpb259ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgID0+IFwlVmFsaWRMaXN0LAogICAgICAgIE5hbWUgICAgICAgPT4gJ1ZhbGlkSUQnLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte1ZhbGlkSUR9IHx8ICRWYWxpZExpc3RSZXZlcnNle3ZhbGlkfSwKICAgICk7CgogICAgIyBnZXQgYWxsIHZhbGlkIGdyb3VwcwogICAgbXkgJUdyb3VwcyA9ICRTZWxmLT57R3JvdXBPYmplY3R9LT5Hcm91cExpc3QoIFZhbGlkID0+IDEgKTsKCiAgICAjIHNldCBubyBzZXJ2ZXIgZXJyb3IgY2xhc3MgYXMgZGVmYXVsdAogICAgJFBhcmFte1Blcm1pc3Npb25Hcm91cHNTZXJ2ZXJFcnJvcn0gfHw9ICcnOwoKICAgICMgYnVpbGQgdGhlIGdyb3VwIHNlbGVjdGlvbgogICAgJERhdGF7R3JvdXBPcHRpb259ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgID0+IFwlR3JvdXBzLAogICAgICAgIE5hbWUgICAgICAgPT4gJ1Blcm1pc3Npb25Hcm91cHMnLAogICAgICAgIE11bHRpcGxlICAgPT4gMSwKICAgICAgICBDbGFzcyAgICAgID0+ICdWYWxpZGF0ZV9SZXF1aXJlZCAnIC4gJFBhcmFte1Blcm1pc3Npb25Hcm91cHNTZXJ2ZXJFcnJvcn0sCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17UGVybWlzc2lvbkdyb3Vwc30sCiAgICApOwoKICAgICMgZ2V0IGFsbCBjYXRlZ29yaWVzIHdpdGggdGhlaXIgbG9uZyBuYW1lcwogICAgbXkgJENhdGVnb3J5VHJlZSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Q2F0ZWdvcnlUcmVlTGlzdCgKICAgICAgICBWYWxpZCAgPT4gMCwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGJ1aWxkIHRoZSBjYXRvZ29yeSBzZWxlY3Rpb24KICAgICREYXRhe0NhdGVnb3J5T3B0aW9ufSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgICAgPT4gJENhdGVnb3J5VHJlZSwKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnUGFyZW50SUQnLAogICAgICAgIFNlbGVjdGVkSUQgICAgID0+ICRQYXJhbXtQYXJlbnRJRH0sCiAgICAgICAgUG9zc2libGVOb25lICAgPT4gMSwKICAgICAgICBEaXNhYmxlZEJyYW5jaCA9PiAkQ2F0ZWdvcnlUcmVlLT57ICRQYXJhbXtDYXRlZ29yeUlEfSB9IHx8ICcnLAogICAgICAgIFRyYW5zbGF0aW9uICAgID0+IDAsCiAgICApOwoKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdVcGRhdGUnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICVEYXRhLAogICAgICAgIH0sCiAgICApOwoKICAgICMgc2hvdyBoZWFkZXIKICAgIGlmICggJFBhcmFte0FjdGlvbn0gZXEgJ0NoYW5nZScgKSB7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jayggTmFtZSA9PiAnSGVhZGVyRWRpdCcgKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soIE5hbWUgPT4gJ0hlYWRlckFkZCcgKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKc3ViIF9PdmVydmlldyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRPdXRwdXQgPSAnJzsKCiAgICAjIG91dHB1dCBvdmVydmlldyBibG9ja3MKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soIE5hbWUgPT4gJ092ZXJ2aWV3JyApOwogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jayggTmFtZSA9PiAnQWN0aW9uTGlzdCcgKTsKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soIE5hbWUgPT4gJ0FjdGlvbkFkZCcgKTsKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soIE5hbWUgPT4gJ092ZXJ2aWV3UmVzdWx0JyApOwoKICAgICMgZ2V0IGFsbCBjYXRlZ29yaWVzIHdpdGggdGhlaXIgbG9uZyBuYW1lcwogICAgbXkgJENhdGVnb3J5VHJlZSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Q2F0ZWdvcnlUcmVlTGlzdCgKICAgICAgICBWYWxpZCAgPT4gMCwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGlmIHRoZXJlIGFyZSBhbnkgY2F0ZWdvcmllcywgdGhleSBhcmUgc2hvd24KICAgIGlmICggJENhdGVnb3J5VHJlZSAmJiByZWYgJENhdGVnb3J5VHJlZSBlcSAnSEFTSCcgJiYgJXskQ2F0ZWdvcnlUcmVlfSApIHsKCiAgICAgICAgIyBnZXQgdGhlIHZhbGlkIGxpc3QKICAgICAgICBteSAlVmFsaWRMaXN0ID0gJFNlbGYtPntWYWxpZE9iamVjdH0tPlZhbGlkTGlzdCgpOwoKICAgICAgICAjIHNvcnQgdGhlIGNhdGVnb3J5IGlkcyBieSB0aGUgbG9uZyBjYXRlZ29yeSBuYW1lCiAgICAgICAgbXkgQENhdGVnb3J5SURzU29ydGVkCiAgICAgICAgICAgID0gc29ydCB7ICRDYXRlZ29yeVRyZWUtPnskYX0gY21wICRDYXRlZ29yeVRyZWUtPnskYn0gfSBrZXlzICV7JENhdGVnb3J5VHJlZX07CgogICAgICAgICMgc2hvdyBhbGwgY2F0ZWdvcmllcwogICAgICAgIGZvciBteSAkQ2F0ZWdvcnlJRCAoQENhdGVnb3J5SURzU29ydGVkKSB7CgogICAgICAgICAgICAjIGdldCBjYXRlZ29yeSBkYXRhCiAgICAgICAgICAgIG15ICVDYXRlZ29yeURhdGEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkNhdGVnb3J5R2V0KAogICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBnZXQgdmFsaWQgc3RyaW5nIGJhc2VkIG9uIFZhbGlkSUQKICAgICAgICAgICAgJENhdGVnb3J5RGF0YXtWYWxpZH0gPSAkVmFsaWRMaXN0eyAkQ2F0ZWdvcnlEYXRhe1ZhbGlkSUR9IH07CgogICAgICAgICAgICAjIG92ZXJ3cml0ZSB0aGUgbmFtZSB3aXRoIHRoZSBsb25nIG5hbWUKICAgICAgICAgICAgJENhdGVnb3J5RGF0YXtOYW1lfSA9ICRDYXRlZ29yeVRyZWUtPnskQ2F0ZWdvcnlJRH07CgogICAgICAgICAgICAjIG91dHB1dCB0aGUgY2F0ZWdvcnkgZGF0YQogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdSZXN1bHRSb3cnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7JUNhdGVnb3J5RGF0YX0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgb3RoZXJ3aXNlIGEgbm8gZGF0YSBmb3VuZCBtZXNzYWdlIGlzIGRpc3BsYXllZAogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnTm9EYXRhRm91bmRNc2cnLAogICAgICAgICk7CiAgICB9Cn0KCjE7Cg==
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRGVsZXRlLnBtIC0gdGhlICBkZWxldGUgbW9kdWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OkFnZW50RkFRRGVsZXRlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpGQVE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgY2hlY2sgbmVlZGVkIG9iamVjdHMKICAgIGZvciBteSAkT2JqZWN0ICgKICAgICAgICBxdyhQYXJhbU9iamVjdCBEQk9iamVjdCBMYXlvdXRPYmplY3QgTG9nT2JqZWN0IENvbmZpZ09iamVjdCBVc2VyT2JqZWN0IEdyb3VwT2JqZWN0KQogICAgICAgICkKICAgIHsKICAgICAgICBpZiAoICEkU2VsZi0+eyRPYmplY3R9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZhdGFsRXJyb3IoIE1lc3NhZ2UgPT4gIkdvdCBubyAkT2JqZWN0ISIgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBjcmVhdGUgYWRkaXRpb25hbCBvYmplY3RzCiAgICAkU2VsZi0+e0ZBUU9iamVjdH0gPSBLZXJuZWw6OlN5c3RlbTo6RkFRLT5uZXcoJVBhcmFtKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHBlcm1pc3Npb24gY2hlY2sKICAgIGlmICggISRTZWxmLT57QWNjZXNzUm99ICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgTWVzc2FnZSAgICA9PiAnWW91IG5lZWQgcm8gcGVybWlzc2lvbiEnLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgcGFyYW1zCiAgICBteSAlR2V0UGFyYW07CgogICAgIyBnZXQgbmVlZGVkIEl0ZW0gaWQKICAgICRHZXRQYXJhbXtJdGVtSUR9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnSXRlbUlEJyApOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkR2V0UGFyYW17SXRlbUlEfSApIHsKCiAgICAgICAgIyBlcnJvciBwYWdlCiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gIk5vIEl0ZW1JRCBpcyBnaXZlbiEiLAogICAgICAgICAgICBDb21tZW50ID0+ICdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgRkFRIGl0ZW0gZGF0YQogICAgbXkgJUZBUURhdGEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUUdldCgKICAgICAgICBJdGVtSUQgICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgIEl0ZW1GaWVsZHMgPT4gMCwKICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICBpZiAoICElRkFRRGF0YSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigpOwogICAgfQoKICAgICMgY2hlY2sgdXNlciBwZXJtaXNzaW9uCiAgICBteSAkUGVybWlzc2lvbiA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Q2hlY2tDYXRlZ29yeVVzZXJQZXJtaXNzaW9uKAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgIENhdGVnb3J5SUQgPT4gJEZBUURhdGF7Q2F0ZWdvcnlJRH0sCiAgICApOwoKICAgICMgc2hvdyBlcnJvciBtZXNzYWdlCiAgICBpZiAoICEkUGVybWlzc2lvbiApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gJ1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJywKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdEZWxldGUnICkgewoKICAgICAgICAjIGRlbGV0ZSB0aGUgRkFRIGFydGljbGUKICAgICAgICBteSAkQ291bGREZWxldGVJdGVtID0gJFNlbGYtPntGQVFPYmplY3R9LT5GQVFEZWxldGUoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkRkFRRGF0YXtJdGVtSUR9LAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIGlmICgkQ291bGREZWxldGVJdGVtKSB7CgogICAgICAgICAgICAjIHJlZGlyZWN0IHRvIGV4cGxvcmVyLCB3aGVuIHRoZSBkZWxldGlvbiB3YXMgc3VjY2Vzc2Z1bAogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5SZWRpcmVjdCgKICAgICAgICAgICAgICAgIE9QID0+ICJBY3Rpb249QWdlbnRGQVFFeHBsb3JlcjtDYXRlZ29yeUlEPSRGQVFEYXRhe0NhdGVnb3J5SUR9IiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAjIHNob3cgZXJyb3IgbWVzc2FnZSwgd2hlbiBkZWxldGUgZmFpbGVkCiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiAiV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgRkFRIGFydGljbGUgJEZBUURhdGF7SXRlbUlEfSEiLAogICAgICAgICAgICAgICAgQ29tbWVudCA9PiAnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJywKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBzZXQgdGhlIGRpYWxvZyB0eXBlLiBBcyBkZWZhdWx0LCB0aGUgZGlhbG9nIHdpbGwgaGF2ZSAyIGJ1dHRvbnM6IFllcyBhbmQgTm8KICAgIG15ICREaWFsb2dUeXBlID0gJ0NvbmZpcm1hdGlvbic7CgogICAgIyBvdXRwdXQgY29udGVudAogICAgbXkgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRRGVsZXRlJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgIH0sCiAgICApOwoKICAgICMgYnVpbGQgdGhlIHJldHVybmVkIGRhdGEgc3RydWN0dXJlCiAgICBteSAlRGF0YSA9ICgKICAgICAgICBIVE1MICAgICAgID0+ICRPdXRwdXQsCiAgICAgICAgRGlhbG9nVHlwZSA9PiAkRGlhbG9nVHlwZSwKICAgICk7CgogICAgIyByZXR1cm4gSlNPTi1TdHJpbmcgYmVjYXVzZSBvZiBBSkFYLU1vZGUKICAgIG15ICRPdXRwdXRKU09OID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5KU09ORW5jb2RlKCBEYXRhID0+IFwlRGF0YSApOwoKICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkF0dGFjaG1lbnQoCiAgICAgICAgQ29udGVudFR5cGUgPT4gJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9JyAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0NoYXJzZXR9LAogICAgICAgIENvbnRlbnQgICAgID0+ICRPdXRwdXRKU09OLAogICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICApOwp9CgoxOwo=
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRWRpdC5wbSAtIGFnZW50IGZyb250ZW5kIHRvIGVkaXQgZmFxIGFydGljbGVzCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OkFnZW50RkFRRWRpdDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6RkFROwp1c2UgS2VybmVsOjpTeXN0ZW06OlF1ZXVlOwp1c2UgS2VybmVsOjpTeXN0ZW06OldlYjo6VXBsb2FkQ2FjaGU7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFsaWQ7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgY2hlY2sgYWxsIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE9iamVjdCAocXcoUGFyYW1PYmplY3QgREJPYmplY3QgTGF5b3V0T2JqZWN0IENvbmZpZ09iamVjdCBMb2dPYmplY3QpKSB7CiAgICAgICAgaWYgKCAhJFNlbGYtPnskT2JqZWN0fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GYXRhbEVycm9yKCBNZXNzYWdlID0+ICJHb3Qgbm8gJE9iamVjdCEiICk7CiAgICAgICAgfQogICAgfQoKICAgICMgY3JlYXRlIG5lZWRlZCBvYmplY3RzCiAgICAkU2VsZi0+e0ZBUU9iamVjdH0gICAgICAgICA9IEtlcm5lbDo6U3lzdGVtOjpGQVEtPm5ldyglUGFyYW0pOwogICAgJFNlbGYtPntVcGxvYWRDYWNoZU9iamVjdH0gPSBLZXJuZWw6OlN5c3RlbTo6V2ViOjpVcGxvYWRDYWNoZS0+bmV3KCVQYXJhbSk7CiAgICAkU2VsZi0+e1ZhbGlkT2JqZWN0fSAgICAgICA9IEtlcm5lbDo6U3lzdGVtOjpWYWxpZC0+bmV3KCVQYXJhbSk7CiAgICAkU2VsZi0+e1F1ZXVlT2JqZWN0fSAgICAgICA9IEtlcm5lbDo6U3lzdGVtOjpRdWV1ZS0+bmV3KCVQYXJhbSk7CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgJFNlbGYtPntDb25maWd9ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoIkZBUTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpIHx8ICcnOwoKICAgICMgZ2V0IGZvcm0gaWQKICAgICRTZWxmLT57Rm9ybUlEfSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0Zvcm1JRCcgKTsKCiAgICAjIGNyZWF0ZSBmb3JtIGlkCiAgICBpZiAoICEkU2VsZi0+e0Zvcm1JRH0gKSB7CiAgICAgICAgJFNlbGYtPntGb3JtSUR9ID0gJFNlbGYtPntVcGxvYWRDYWNoZU9iamVjdH0tPkZvcm1JRENyZWF0ZSgpOwogICAgfQoKICAgICMgZ2V0IHNjcmVlbiB0eXBlCiAgICAkU2VsZi0+e1NjcmVlblR5cGV9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnU2NyZWVuVHlwZScgKSB8fCAnJzsKCiAgICAjIHNldCBkZWZhdWx0IGludGVyZmFjZSBzZXR0aW5ncwogICAgJFNlbGYtPntJbnRlcmZhY2V9ID0gJFNlbGYtPntGQVFPYmplY3R9LT5TdGF0ZVR5cGVHZXQoCiAgICAgICAgTmFtZSAgID0+ICdpbnRlcm5hbCcsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUxpc3QoCiAgICAgICAgVHlwZXMgID0+ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkFnZW50OjpTdGF0ZVR5cGVzJyksCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgJFNlbGYtPntNdWx0aUxhbmd1YWdlfSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6Ok11bHRpTGFuZ3VhZ2UnKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHBlcm1pc3Npb24gY2hlY2sKICAgIGlmICggISRTZWxmLT57QWNjZXNzUnd9ICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgTWVzc2FnZSAgICA9PiAnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgcGFyYW1ldGVycwogICAgbXkgJUdldFBhcmFtOwogICAgZm9yIG15ICRQYXJhbU5hbWUgKAogICAgICAgIHF3KEl0ZW1JRCBUaXRsZSBDYXRlZ29yeUlEIFN0YXRlSUQgTGFuZ3VhZ2VJRCBWYWxpZElEIEtleXdvcmRzIEFwcHJvdmVkIEZpZWxkMSBGaWVsZDIgRmllbGQzIEZpZWxkNCBGaWVsZDUgRmllbGQ2ICkKICAgICAgICApCiAgICB7CiAgICAgICAgJEdldFBhcmFteyRQYXJhbU5hbWV9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW1OYW1lICk7CiAgICB9CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRHZXRQYXJhbXtJdGVtSUR9ICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+ICdObyBJdGVtSUQgaXMgZ2l2ZW4hJywKICAgICAgICAgICAgQ29tbWVudCA9PiAnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluLicsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBGQVEgaXRlbSBkYXRhCiAgICBteSAlRkFRRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRR2V0KAogICAgICAgIEl0ZW1JRCAgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgSXRlbUZpZWxkcyA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGNoZWNrIGVycm9yCiAgICBpZiAoICElRkFRRGF0YSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigpOwogICAgfQoKICAgICMgY2hlY2sgdXNlciBwZXJtaXNzaW9uCiAgICBteSAkUGVybWlzc2lvbiA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Q2hlY2tDYXRlZ29yeVVzZXJQZXJtaXNzaW9uKAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgIENhdGVnb3J5SUQgPT4gJEZBUURhdGF7Q2F0ZWdvcnlJRH0sCiAgICApOwoKICAgICMgc2hvdyBlcnJvciBtZXNzYWdlCiAgICBpZiAoICEkUGVybWlzc2lvbiApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gJ1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJywKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgc2hvdyB0aGUgZmFxIGVkaXQgc2NyZWVuCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICEkU2VsZi0+e1N1YmFjdGlvbn0gKSB7CgogICAgICAgIG15ICRPdXRwdXQ7CgogICAgICAgICMgc2hvdyBhIHBvcHVwIHNjcmVlbgogICAgICAgIGlmICggJFNlbGYtPntTY3JlZW5UeXBlfSBlcSAnUG9wdXAnICkgewoKICAgICAgICAgICAgIyBzaG93IHRoZSBzbWFsbCBwb3B1cCBzY3JlZW4gaGVhZGVyCiAgICAgICAgICAgICRPdXRwdXQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkhlYWRlcigKICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnU21hbGwnLAogICAgICAgICAgICAgICAgQm9keUNsYXNzID0+ICdQb3B1cCcsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnU3RhcnRTbWFsbCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlRkFRRGF0YSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHNob3cgYSBub3JtYWwgd2luZG93CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAjIHNob3cgdGhlIG5vcm1hbCBzY3JlZW4gaGVhZGVyIHdpdGggbmF2aWdhdGlvbiBiYXIKICAgICAgICAgICAgJE91dHB1dCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+SGVhZGVyKCk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5OYXZpZ2F0aW9uQmFyKCk7CgogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnU3RhcnROb3JtYWwnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJUZBUURhdGEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgYWxsIGV4aXN0aW5nIGF0dGFjaG1lbnRzICh3aXRob3V0IGlubGluZSBhdHRhY2htZW50cykKICAgICAgICBteSBARXhpc3RpbmdBdHRhY2htZW50cyA9ICRTZWxmLT57RkFRT2JqZWN0fS0+QXR0YWNobWVudEluZGV4KAogICAgICAgICAgICBJdGVtSUQgICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICBTaG93SW5saW5lID0+IDAsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgY29weSBhbGwgZXhpc3RpbmcgYXR0YWNobWVudHMgdG8gdXBsb2FkIGNhY2hlCiAgICAgICAgZm9yIG15ICRBdHRhY2htZW50IChARXhpc3RpbmdBdHRhY2htZW50cykgewoKICAgICAgICAgICAgIyBnZXQgdGhlIGV4aXN0aW5nIGF0dGFjaG1lbnQgZGF0YQogICAgICAgICAgICBteSAlRmlsZSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+QXR0YWNobWVudEdldCgKICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICAgICAgICAgIEZpbGVJRCA9PiAkQXR0YWNobWVudC0+e0ZpbGVJRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBnZXQgY29udGVudCBkaXNwb3NpdGlvbiAoaWYgaXRzIGFuIGlubGluZSBhdHRhY2htZW50KQogICAgICAgICAgICBteSAkRGlzcG9zaXRpb24gPSAkQXR0YWNobWVudC0+e0lubGluZX0gPyAnaW5saW5lJyA6ICcnOwoKICAgICAgICAgICAgIyBhZGQgYXR0YWNobWVudCB0byB0aGUgdXBsb2FkIGNhY2hlCiAgICAgICAgICAgICRTZWxmLT57VXBsb2FkQ2FjaGVPYmplY3R9LT5Gb3JtSURBZGRGaWxlKAogICAgICAgICAgICAgICAgRm9ybUlEICAgICAgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJEZpbGV7RmlsZW5hbWV9LAogICAgICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJEZpbGV7Q29udGVudH0sCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAkRmlsZXtDb250ZW50VHlwZX0sCiAgICAgICAgICAgICAgICBEaXNwb3NpdGlvbiA9PiAkRGlzcG9zaXRpb24sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBhbGwgYXR0YWNobWVudHMgbWV0YSBkYXRhIGZyb20gdXBsb2FkIGNhY2hlCiAgICAgICAgbXkgQEF0dGFjaG1lbnRzID0gJFNlbGYtPntVcGxvYWRDYWNoZU9iamVjdH0tPkZvcm1JREdldEFsbEZpbGVzTWV0YSgKICAgICAgICAgICAgRm9ybUlEID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICApOwoKICAgICAgICAjIHJld3JpdGUgb2xkIHN0eWxlIGlubGluZSBpbWFnZSBVUkxzCiAgICAgICAgRklFTEQ6CiAgICAgICAgZm9yIG15ICRGaWVsZCAocXcoRmllbGQxIEZpZWxkMiBGaWVsZDMgRmllbGQ0IEZpZWxkNSBGaWVsZDYpKSB7CgogICAgICAgICAgICBuZXh0IEZJRUxEIGlmICEkRkFRRGF0YXskRmllbGR9OwoKICAgICAgICAgICAgIyByZXdyaXRlIGhhbmRsZSBhbmQgYWN0aW9uLCB0YWtlIGNhcmUgb2Ygb2xkIHN0eWxlIGJlZm9yZSBGQVEgMi4wLngKICAgICAgICAgICAgJEZBUURhdGF7JEZpZWxkfSA9fiBzewogICAgICAgICAgICAgICAgQWN0aW9uPUFnZW50RkFRIFsmXShhbXA7KT8gU3ViYWN0aW9uPURvd25sb2FkIFsmXShhbXA7KT8KICAgICAgICAgICAgfXtBY3Rpb249QWdlbnRGQVFab29tO1N1YmFjdGlvbj1Eb3dubG9hZEF0dGFjaG1lbnQ7fWd4bXM7CiAgICAgICAgfQoKICAgICAgICBpZiAoICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkFwcHJvdmFsUmVxdWlyZWQnKSApIHsKCiAgICAgICAgICAgICMgZ2V0IEFwcHJvdmFsIHF1ZXVlIG5hbWUKICAgICAgICAgICAgbXkgJEFwcHJvdmFsUXVldWUgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpBcHByb3ZhbFF1ZXVlJykgfHwgJyc7CgogICAgICAgICAgICAjIGNoZWNrIGlmIEFwcHJvdmFsIHF1ZXVlIGV4aXN0cwogICAgICAgICAgICBteSAkQXBwcm92YWxRdWV1ZUlEID0gJFNlbGYtPntRdWV1ZU9iamVjdH0tPlF1ZXVlTG9va3VwKCBRdWV1ZSA9PiAkQXBwcm92YWxRdWV1ZSApOwoKICAgICAgICAgICAgIyBzaG93IG5vdGlmaWNhdGlvbiBpZiBBcHByb3ZhbCBxdWV1ZSBkb2VzIG5vdCBleGlzdHMKICAgICAgICAgICAgaWYgKCAhJEFwcHJvdmFsUXVldWVJRCApIHsKICAgICAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Ob3RpZnkoCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ0Vycm9yJywKICAgICAgICAgICAgICAgICAgICBJbmZvID0+ICJGQVEgQXBwcm92YWwgaXMgZW5hYmxlZCBidXQgcXVldWUgJyRBcHByb3ZhbFF1ZXVlJyBkb2VzIG5vdCBleGlzdHMiLAogICAgICAgICAgICAgICAgICAgIExpbmsgPT4gJyRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249QWRtaW5TeXNDb25maWc7U3ViYWN0aW9uPUVkaXQ7JwogICAgICAgICAgICAgICAgICAgICAgICAuICdTeXNDb25maWdTdWJHcm91cD1Db3JlJTNBJTNBQXBwcm92YWw7U3lzQ29uZmlnR3JvdXA9RkFRJywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgaHRtbCBvdXRwdXQKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT5fTWFza05ldygKICAgICAgICAgICAgJUZBUURhdGEsCiAgICAgICAgICAgIEF0dGFjaG1lbnRzID0+IFxAQXR0YWNobWVudHMsCiAgICAgICAgICAgIFNjcmVlblR5cGUgID0+ICRTZWxmLT57U2NyZWVuVHlwZX0sCiAgICAgICAgICAgIEZvcm1JRCAgICAgID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICApOwoKICAgICAgICAjIHNob3cgYSBwb3B1cCBzY3JlZW4gZm9vdGVyCiAgICAgICAgaWYgKCAkU2VsZi0+e1NjcmVlblR5cGV9IGVxICdQb3B1cCcgKSB7CgogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnRW5kU21hbGwnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Gb290ZXIoIFR5cGUgPT4gJ1NtYWxsJyApOwoKICAgICAgICB9CgogICAgICAgICMgc2hvdyBhIG5vcm1hbCBmb290ZXIKICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdFbmROb3JtYWwnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Gb290ZXIoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgc2F2ZSB0aGUgZmFxCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnU2F2ZScgKSB7CgogICAgICAgICMgY2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24KICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgbXkgJE91dHB1dDsKCiAgICAgICAgIyBzaG93IGEgcG9wdXAgc2NyZWVuCiAgICAgICAgaWYgKCAkU2VsZi0+e1NjcmVlblR5cGV9IGVxICdQb3B1cCcgKSB7CgogICAgICAgICAgICAjIHNob3cgdGhlIHNtYWxsIHBvcHVwIHNjcmVlbiBoZWFkZXIKICAgICAgICAgICAgJE91dHB1dCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+SGVhZGVyKAogICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdTbWFsbCcsCiAgICAgICAgICAgICAgICBCb2R5Q2xhc3MgPT4gJ1BvcHVwJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdTdGFydFNtYWxsJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgc2hvdyBhIG5vcm1hbCB3aW5kb3cKICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICMgc2hvdyB0aGUgbm9ybWFsIHNjcmVlbiBoZWFkZXIgd2l0aCBuYXZpZ2F0aW9uIGJhcgogICAgICAgICAgICAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5IZWFkZXIoKTsKICAgICAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk5hdmlnYXRpb25CYXIoKTsKCiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdTdGFydE5vcm1hbCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlRkFRRGF0YSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIHJlcXVpcmVkIHBhcmFtZXRlcnMKICAgICAgICBteSAlRXJyb3I7CiAgICAgICAgZm9yIG15ICRQYXJhbU5hbWUgKHF3KFRpdGxlIENhdGVnb3J5SUQpKSB7CgogICAgICAgICAgICAjIGlmIHJlcXVpcmVkIGZpZWxkIGlzIG5vdCBnaXZlbiwgYWRkIHNlcnZlciBlcnJvciBjbGFzcwogICAgICAgICAgICBpZiAoICEkR2V0UGFyYW17JFBhcmFtTmFtZX0gKSB7CiAgICAgICAgICAgICAgICAkRXJyb3J7ICRQYXJhbU5hbWUgLiAnU2VydmVyRXJyb3InIH0gPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGlmIGFuIGF0dGFjaG1lbnQgbXVzdCBiZSBkZWxldGVkCiAgICAgICAgQVRUQUNITUVOVDoKICAgICAgICBmb3IgbXkgJE51bWJlciAoIDEgLi4gMzIgKSB7CgogICAgICAgICAgICAjIGNoZWNrIGlmIHRoZSBkZWxldGUgYnV0dG9uIHdhcyBwcmVzc2VkIGZvciB0aGlzIGF0dGFjaG1lbnQKICAgICAgICAgICAgbXkgJERlbGV0ZSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gIkF0dGFjaG1lbnREZWxldGUkTnVtYmVyIiApOwoKICAgICAgICAgICAgIyBjaGVjayBuZXh0IGF0dGFjaG1lbnQgaWYgaXQgd2FzIG5vdCBwcmVzc2VkCiAgICAgICAgICAgIG5leHQgQVRUQUNITUVOVCBpZiAhJERlbGV0ZTsKCiAgICAgICAgICAgICMgcmVtZW1iZXIgdGhhdCB3ZSBuZWVkIHRvIHNob3cgdGhlIHBhZ2UgYWdhaW4KICAgICAgICAgICAgJEVycm9ye0F0dGFjaG1lbnR9ID0gMTsKCiAgICAgICAgICAgICMgcmVtb3ZlIHRoZSBhdHRhY2htZW50IGZyb20gdGhlIHVwbG9hZCBjYWNoZQogICAgICAgICAgICAkU2VsZi0+e1VwbG9hZENhY2hlT2JqZWN0fS0+Rm9ybUlEUmVtb3ZlRmlsZSgKICAgICAgICAgICAgICAgIEZvcm1JRCA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgICAgICBGaWxlSUQgPT4gJE51bWJlciwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgaWYgdGhlcmUgd2FzIGFuIGF0dGFjaG1lbnQgdXBsb2FkCiAgICAgICAgaWYgKCAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdBdHRhY2htZW50VXBsb2FkJyApICkgewoKICAgICAgICAgICAgIyByZW1lbWJlciB0aGF0IHdlIG5lZWQgdG8gc2hvdyB0aGUgcGFnZSBhZ2FpbgogICAgICAgICAgICAkRXJyb3J7QXR0YWNobWVudH0gPSAxOwoKICAgICAgICAgICAgIyBnZXQgdGhlIHVwbG9hZGVkIGF0dGFjaG1lbnQKICAgICAgICAgICAgbXkgJVVwbG9hZFN0dWZmID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFVwbG9hZEFsbCgKICAgICAgICAgICAgICAgIFBhcmFtICA9PiAnRmlsZVVwbG9hZCcsCiAgICAgICAgICAgICAgICBTb3VyY2UgPT4gJ3N0cmluZycsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGFkZCBhdHRhY2htZW50IHRvIHRoZSB1cGxvYWQgY2FjaGUKICAgICAgICAgICAgJFNlbGYtPntVcGxvYWRDYWNoZU9iamVjdH0tPkZvcm1JREFkZEZpbGUoCiAgICAgICAgICAgICAgICBGb3JtSUQgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICAgICAgJVVwbG9hZFN0dWZmLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBzZW5kIHNlcnZlciBlcnJvciBpZiBhbnkgcmVxdWlyZWQgcGFyYW1ldGVyIGlzIG1pc3NpbmcKICAgICAgICAjIG9yIGFuIGF0dGFjaG1lbnQgd2FzIGRlbGV0ZWQgb3IgdXBsb2FkZWQKICAgICAgICBpZiAoJUVycm9yKSB7CgogICAgICAgICAgICAjIGlmIHRoZXJlIHdhcyBhbiBhdHRhY2htZW50IGRlbGV0ZSBvciB1cGxvYWQKICAgICAgICAgICAgIyB3ZSBkbyBub3Qgd2FudCB0byBzaG93IHZhbGlkYXRpb24gZXJyb3JzIGZvciBvdGhlciBmaWVsZHMKICAgICAgICAgICAgaWYgKCAkRXJyb3J7QXR0YWNobWVudH0gKSB7CiAgICAgICAgICAgICAgICAlRXJyb3IgPSAoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBnZXQgYWxsIGF0dGFjaG1lbnRzIG1ldGEgZGF0YQogICAgICAgICAgICBteSBAQXR0YWNobWVudHMgPSAkU2VsZi0+e1VwbG9hZENhY2hlT2JqZWN0fS0+Rm9ybUlER2V0QWxsRmlsZXNNZXRhKAogICAgICAgICAgICAgICAgRm9ybUlEID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6QXBwcm92YWxSZXF1aXJlZCcpICkgewoKICAgICAgICAgICAgICAgICMgZ2V0IEFwcHJvdmFsIHF1ZXVlIG5hbWUKICAgICAgICAgICAgICAgIG15ICRBcHByb3ZhbFF1ZXVlID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6QXBwcm92YWxRdWV1ZScpIHx8ICcnOwoKICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgQXBwcm92YWwgcXVldWUgZXhpc3RzCiAgICAgICAgICAgICAgICBteSAkQXBwcm92YWxRdWV1ZUlEID0gJFNlbGYtPntRdWV1ZU9iamVjdH0tPlF1ZXVlTG9va3VwKCBRdWV1ZSA9PiAkQXBwcm92YWxRdWV1ZSApOwoKICAgICAgICAgICAgICAgICMgc2hvdyBub3RpZmljYXRpb24gaWYgQXBwcm92YWwgcXVldWUgZG9lcyBub3QgZXhpc3RzCiAgICAgICAgICAgICAgICBpZiAoICEkQXBwcm92YWxRdWV1ZUlEICkgewogICAgICAgICAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Ob3RpZnkoCiAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdFcnJvcicsCiAgICAgICAgICAgICAgICAgICAgICAgIEluZm8gPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGQVEgQXBwcm92YWwgaXMgZW5hYmxlZCBidXQgcXVldWUgJyRBcHByb3ZhbFF1ZXVlJyBkb2VzIG5vdCBleGlzdHMiLAogICAgICAgICAgICAgICAgICAgICAgICBMaW5rID0+ICckRW52eyJCYXNlbGluayJ9QWN0aW9uPUFkbWluU3lzQ29uZmlnO1N1YmFjdGlvbj1FZGl0OycKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJ1N5c0NvbmZpZ1N1Ykdyb3VwPUNvcmUlM0ElM0FBcHByb3ZhbDtTeXNDb25maWdHcm91cD1GQVEnLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgaHRtbCBvdXRwdXQKICAgICAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+X01hc2tOZXcoCiAgICAgICAgICAgICAgICBBdHRhY2htZW50cyA9PiBcQEF0dGFjaG1lbnRzLAogICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgJUVycm9yLAogICAgICAgICAgICAgICAgU2NyZWVuVHlwZSA9PiAkU2VsZi0+e1NjcmVlblR5cGV9LAogICAgICAgICAgICAgICAgRm9ybUlEICAgICA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHNob3cgYSBwb3B1cCBzY3JlZW4gZm9vdGVyCiAgICAgICAgICAgIGlmICggJFNlbGYtPntTY3JlZW5UeXBlfSBlcSAnUG9wdXAnICkgewoKICAgICAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnRW5kU21hbGwnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Gb290ZXIoIFR5cGUgPT4gJ1NtYWxsJyApOwoKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzaG93IGEgbm9ybWFsIGZvb3RlcgogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0VuZE5vcm1hbCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZvb3RlcigpOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgICAgICB9CgogICAgICAgICMgdXBkYXRlIHRoZSBuZXcgZmFxIGFydGljbGUKICAgICAgICBteSAkVXBkYXRlU3VjY2VzcyA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRVXBkYXRlKAogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBzaG93IGVycm9yIGlmIGZhcSBjb3VsZCBub3QgYmUgdXBkYXRlZAogICAgICAgIGlmICggISRVcGRhdGVTdWNjZXNzICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgYWxsIGF0dGFjaG1lbnRzIGZyb20gdXBsb2FkIGNhY2hlCiAgICAgICAgbXkgQEF0dGFjaG1lbnRzID0gJFNlbGYtPntVcGxvYWRDYWNoZU9iamVjdH0tPkZvcm1JREdldEFsbEZpbGVzRGF0YSgKICAgICAgICAgICAgRm9ybUlEID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICApOwoKICAgICAgICAjIGJ1aWxkIGEgbG9va3VwIGxvb2t1cCBoYXNoIG9mIHRoZSBuZXcgYXR0YWNobWVudHMKICAgICAgICBteSAlTmV3QXR0YWNobWVudDsKICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKEBBdHRhY2htZW50cykgewoKICAgICAgICAgICAgIyB0aGUga2V5IGlzIHRoZSBmaWxlbmFtZSArIGZpbGVzaXplICsgY29udGVudCB0eXBlCiAgICAgICAgICAgIG15ICRLZXkgPSAkQXR0YWNobWVudC0+e0ZpbGVuYW1lfQogICAgICAgICAgICAgICAgLiAkQXR0YWNobWVudC0+e0ZpbGVzaXplfQogICAgICAgICAgICAgICAgLiAkQXR0YWNobWVudC0+e0NvbnRlbnRUeXBlfTsKCiAgICAgICAgICAgICMgYXBwZW5kIGNvbnRlbnQgaWQgaWYgYXZhaWxhYmxlIChmb3IgbmV3IGlubGluZSBpbWFnZXMpCiAgICAgICAgICAgIGlmICggJEF0dGFjaG1lbnQtPntDb250ZW50SUR9ICkgewogICAgICAgICAgICAgICAgJEtleSAuPSAkQXR0YWNobWVudC0+e0NvbnRlbnRJRH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc3RvcmUgYWxsIG9mIHRoZSBuZXcgYXR0YWNobWVudCBkYXRhCiAgICAgICAgICAgICROZXdBdHRhY2htZW50eyRLZXl9ID0gJEF0dGFjaG1lbnQ7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBhbGwgZXhpc3RpbmcgYXR0YWNobWVudHMsIHdpdGhvdXQgaW5saW5lIGF0dGFjaG1lbnRzCiAgICAgICAgbXkgQEV4aXN0aW5nQXR0YWNobWVudHMgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkF0dGFjaG1lbnRJbmRleCgKICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICAgICAgU2hvd0lubGluZSA9PiAwLAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIHRoZSBleGlzdGluZyBhdHRhY2htZW50cwogICAgICAgIEFUVEFDSE1FTlQ6CiAgICAgICAgZm9yIG15ICRBdHRhY2htZW50IChARXhpc3RpbmdBdHRhY2htZW50cykgewoKICAgICAgICAgICAgIyB0aGUga2V5IGlzIHRoZSBmaWxlbmFtZSArIGZpbGVzaXplICsgY29udGVudCB0eXBlCiAgICAgICAgICAgICMgKG5vIGNvbnRlbnQgaWQsIGFzIGV4aXN0aW5nIGF0dGFjaG1lbnRzIGRvbid0IGhhdmUgaXQpCiAgICAgICAgICAgIG15ICRLZXkgPSAkQXR0YWNobWVudC0+e0ZpbGVuYW1lfQogICAgICAgICAgICAgICAgLiAkQXR0YWNobWVudC0+e0ZpbGVzaXplfQogICAgICAgICAgICAgICAgLiAkQXR0YWNobWVudC0+e0NvbnRlbnRUeXBlfTsKCiAgICAgICAgICAgICMgYXR0YWNobWVudCBpcyBhbHJlYWR5IGV4aXN0aW5nLCB3ZSBjYW4gZGVsZXRlIGl0IGZyb20gdGhlIG5ldyBhdHRhY2htZW50IGhhc2gKICAgICAgICAgICAgaWYgKCAkTmV3QXR0YWNobWVudHskS2V5fSApIHsKICAgICAgICAgICAgICAgIGRlbGV0ZSAkTmV3QXR0YWNobWVudHskS2V5fTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBleGlzdGluZyBhdHRhY2htZW50IGlzIG5vIGxvbmdlciBpbiBuZXcgYXR0YWNobWVudHMgaGFzaAogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIGRlbGV0ZSB0aGUgZXhpc3RpbmcgYXR0YWNobWVudAogICAgICAgICAgICAgICAgbXkgJERlbGV0ZVN1Y2Nlc3NmdWwgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkF0dGFjaG1lbnREZWxldGUoCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgIEZpbGVJRCA9PiAkQXR0YWNobWVudC0+e0ZpbGVJRH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjaGVjayBlcnJvcgogICAgICAgICAgICAgICAgaWYgKCAhJERlbGV0ZVN1Y2Nlc3NmdWwgKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RmF0YWxFcnJvcigpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHdyaXRlIHRoZSBuZXcgYXR0YWNobWVudHMKICAgICAgICBBVFRBQ0hNRU5UOgogICAgICAgIGZvciBteSAkQXR0YWNobWVudCAoIHZhbHVlcyAlTmV3QXR0YWNobWVudCApIHsKCiAgICAgICAgICAgICMgY2hlY2sgaWYgYXR0YWNobWVudCBpcyBhbiBpbmxpbmUgYXR0YWNobWVudAogICAgICAgICAgICBteSAkSW5saW5lID0gMDsKICAgICAgICAgICAgaWYgKCAkQXR0YWNobWVudC0+e0NvbnRlbnRJRH0gKSB7CgogICAgICAgICAgICAgICAgIyByZW1lbWJlciB0aGF0IGl0IGlzIGlubGluZQogICAgICAgICAgICAgICAgJElubGluZSA9IDE7CgogICAgICAgICAgICAgICAgIyByZW1lbWJlciBpZiB0aGlzIGlubGluZSBhdHRhY2htZW50IGlzIHVzZWQgaW4gYW55IGZhcSBhcnRpY2xlCiAgICAgICAgICAgICAgICBteSAkQ29udGVudElERm91bmQ7CgogICAgICAgICAgICAgICAgIyBjaGVjayBhbGwgZmllbGRzIGZvciBjb250ZW50IGlkCiAgICAgICAgICAgICAgICBGSUVMRDoKICAgICAgICAgICAgICAgIGZvciBteSAkTnVtYmVyICggMSAuLiA2ICkgewoKICAgICAgICAgICAgICAgICAgICAjIGdldCBmYXEgZmllbGQKICAgICAgICAgICAgICAgICAgICBteSAkRmllbGQgPSAkR2V0UGFyYW17ICdGaWVsZCcgLiAkTnVtYmVyIH07CgogICAgICAgICAgICAgICAgICAgICMgc2tpcCBlbXB0eSBmaWVsZHMKICAgICAgICAgICAgICAgICAgICBuZXh0IEZJRUxEIGlmICEkRmllbGQ7CgogICAgICAgICAgICAgICAgICAgICMgc2tpcCBmaWVsZHMgdGhhdCBkbyBub3QgY29udGFpbiB0aGUgY29udGVudCBpZAogICAgICAgICAgICAgICAgICAgIG5leHQgRklFTEQgaWYgJEZpZWxkICF+IG17ICRBdHRhY2htZW50LT57Q29udGVudElEfSB9eG1zOwoKICAgICAgICAgICAgICAgICAgICAjIGZvdW5kIHRoZSBjb250ZW50IGlkCiAgICAgICAgICAgICAgICAgICAgJENvbnRlbnRJREZvdW5kID0gMTsKCiAgICAgICAgICAgICAgICAgICAgIyB3ZSBkbyBub3QgbmVlZCB0byBzZWFyY2ggZnVydGhlcgogICAgICAgICAgICAgICAgICAgIGxhc3QgRklFTEQ7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyB3ZSBkbyBub3Qgd2FudCB0byBrZWVwIHRoaXMgYXR0YWNobWVudCwKICAgICAgICAgICAgICAgICMgYmVjYXVzZSBpdCB3YXMgZGVsZXRlZCBpbiB0aGUgcmljaHQgdGV4dCBlZGl0b3IKICAgICAgICAgICAgICAgIG5leHQgQVRUQUNITUVOVCBpZiAhJENvbnRlbnRJREZvdW5kOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGFkZCBhdHRhY2htZW50CiAgICAgICAgICAgIG15ICRGaWxlSUQgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkF0dGFjaG1lbnRBZGQoCiAgICAgICAgICAgICAgICAleyRBdHRhY2htZW50fSwKICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICAgICAgICAgIElubGluZSA9PiAkSW5saW5lLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgY2hlY2sgZXJyb3IKICAgICAgICAgICAgaWYgKCAhJEZpbGVJRCApIHsKICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZhdGFsRXJyb3IoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbmV4dCBBVFRBQ0hNRU5UIGlmICEkSW5saW5lOwogICAgICAgICAgICBuZXh0IEFUVEFDSE1FTlQgaWYgISRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0Jyb3dzZXJSaWNoVGV4dH07CgogICAgICAgICAgICAjIHJld3JpdGUgdGhlIFVSTHMgb2YgdGhlIGlubGluZSBpbWFnZXMgZm9yIHRoZSB1cGxvYWRlZCBwaWN0dXJlcwogICAgICAgICAgICBteSAkT2sgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUUlubGluZUF0dGFjaG1lbnRVUkxVcGRhdGUoCiAgICAgICAgICAgICAgICBBdHRhY2htZW50ID0+ICRBdHRhY2htZW50LAogICAgICAgICAgICAgICAgRm9ybUlEICAgICA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgICAgICBJdGVtSUQgICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICAgICAgRmlsZUlEICAgICA9PiAkRmlsZUlELAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGNoZWNrIGVycm9yCiAgICAgICAgICAgIGlmICggISRPayApIHsKICAgICAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIG5vdCB1cGRhdGUgdGhlIGlubGluZSBpbWFnZSBVUkxzICIKICAgICAgICAgICAgICAgICAgICAgICAgLiAiZm9yIEZBUSBJdGVtIyAnJEdldFBhcmFte0l0ZW1JRH0nISIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGRlbGV0ZSB0aGUgdXBsb2FkIGNhY2hlCiAgICAgICAgJFNlbGYtPntVcGxvYWRDYWNoZU9iamVjdH0tPkZvcm1JRFJlbW92ZSggRm9ybUlEID0+ICRTZWxmLT57Rm9ybUlEfSApOwoKICAgICAgICAjIGNoZWNrIGlmIHRoZXJlIGlmIHdlIG5lZWQgdG8gY2xvc2UgYSBwb3B1cCBzY3JlZW4gb3Igbm90CiAgICAgICAgaWYgKCAkU2VsZi0+e1NjcmVlblR5cGV9IGVxICdQb3B1cCcgKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPlBvcHVwQ2xvc2UoCiAgICAgICAgICAgICAgICBVUkwgPT4gIkFjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPSRHZXRQYXJhbXtJdGVtSUR9IiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPlJlZGlyZWN0KAogICAgICAgICAgICAgICAgT1AgPT4gIkFjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPSRHZXRQYXJhbXtJdGVtSUR9IiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9Cn0KCnN1YiBfTWFza05ldyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGxpc3QgdHlwZQogICAgbXkgJFRyZWVWaWV3ID0gMDsKICAgIGlmICggJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6Okxpc3RUeXBlJykgZXEgJ3RyZWUnICkgewogICAgICAgICRUcmVlVmlldyA9IDE7CiAgICB9CgogICAgIyBnZXQgdmFsaWQgbGlzdAogICAgbXkgJVZhbGlkTGlzdCAgICAgICAgPSAkU2VsZi0+e1ZhbGlkT2JqZWN0fS0+VmFsaWRMaXN0KCk7CiAgICBteSAlVmFsaWRMaXN0UmV2ZXJzZSA9IHJldmVyc2UgJVZhbGlkTGlzdDsKCiAgICBteSAlRGF0YTsKCiAgICAjIGJ1aWxkIHZhbGlkIHNlbGVjdGlvbgogICAgJERhdGF7VmFsaWRPcHRpb259ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgID0+IFwlVmFsaWRMaXN0LAogICAgICAgIE5hbWUgICAgICAgPT4gJ1ZhbGlkSUQnLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte1ZhbGlkSUR9IHx8ICRWYWxpZExpc3RSZXZlcnNle3ZhbGlkfSwKICAgICk7CgogICAgIyBnZXQgY2F0ZWdvcmllcyAod2l0aCBjYXRlZ29yeSBsb25nIG5hbWVzKSB3aGVyZSB1c2VyIGhhcyByaWdodHMKICAgIG15ICRVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lcyA9ICRTZWxmLT57RkFRT2JqZWN0fS0+R2V0VXNlckNhdGVnb3JpZXNMb25nTmFtZXMoCiAgICAgICAgVHlwZSAgID0+ICdydycsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBzZXQgbm8gc2VydmVyIGVycm9yIGNsYXNzIGFzIGRlZmF1bHQKICAgICRQYXJhbXtDYXRlZ29yeUlEU2VydmVyRXJyb3J9IHx8PSAnJzsKCiAgICAjIGJ1aWxkIGNhdGVnb3J5IHNlbGVjdGlvbgogICAgJERhdGF7Q2F0ZWdvcnlPcHRpb259ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICAgPT4gJFVzZXJDYXRlZ29yaWVzTG9uZ05hbWVzLAogICAgICAgIE5hbWUgICAgICAgICA9PiAnQ2F0ZWdvcnlJRCcsCiAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRQYXJhbXtDYXRlZ29yeUlEfSwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ1ZhbGlkYXRlX1JlcXVpcmVkICcgLiAkUGFyYW17Q2F0ZWdvcnlJRFNlcnZlckVycm9yfSwKICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICBUcmVlVmlldyAgICAgPT4gJFRyZWVWaWV3LAogICAgKTsKCiAgICAjIGdldCB0aGUgbGFuZ3VhZ2UgbGlzdAogICAgbXkgJUxhbmd1YWdlcyA9ICRTZWxmLT57RkFRT2JqZWN0fS0+TGFuZ3VhZ2VMaXN0KAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IHRoZSBzZWxlY3RlZCBsYW5ndWFnZQogICAgbXkgJFNlbGVjdGVkTGFuZ3VhZ2U7CiAgICBpZiAoICRQYXJhbXtMYW5ndWFnZUlEfSAmJiAkTGFuZ3VhZ2VzeyAkUGFyYW17TGFuZ3VhZ2VJRH0gfSApIHsKCiAgICAgICAgIyBnZXQgbGFuZ3VhZ2UgZnJvbSBnaXZlbiBsYW5ndWFnZSBpZAogICAgICAgICRTZWxlY3RlZExhbmd1YWdlID0gJExhbmd1YWdlc3sgJFBhcmFte0xhbmd1YWdlSUR9IH07CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyB1c2UgdGhlIHVzZXIgbGFuZ3VhZ2UsIG9yIGlmIG5vdCBmb3VuZCAnZW4nCiAgICAgICAgJFNlbGVjdGVkTGFuZ3VhZ2UgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPntVc2VyTGFuZ3VhZ2V9IHx8ICdlbic7CgogICAgICAgICMgZ2V0IHVzZXIgbGFuZ3VhZ2UgSUQKICAgICAgICBteSAkU2VsZWN0ZWRMYW5ndWFnZUlEID0gJFNlbGYtPntGQVFPYmplY3R9LT5MYW5ndWFnZUxvb2t1cCggTmFtZSA9PiAkU2VsZWN0ZWRMYW5ndWFnZSApOwoKICAgICAgICAjIGNoZWNrIGlmIExhbmR1YWdlSUQgZG9lcyBub3QgZXhzaXRzCiAgICAgICAgaWYgKCAhJFNlbGVjdGVkTGFuZ3VhZ2VJRCApIHsKCiAgICAgICAgICAgICMgZ2V0IHRoZSBsb3dlc3QgbGFuZ3VhZ2UgSUQKICAgICAgICAgICAgbXkgQExhbmd1YWdlSURzID0gc29ydCBrZXlzICVMYW5ndWFnZXM7CiAgICAgICAgICAgICRTZWxlY3RlZExhbmd1YWdlSUQgPSAkTGFuZ3VhZ2VJRHNbMF07CgogICAgICAgICAgICAjIHNldCB0aGUgbGFuZ3VhZ2Ugd2l0aCBsb3dlc3QgbGFuZ3VhZ2UgSUQgYXMgc2VsZWN0ZWQgbGFuZ3VhZ2UKICAgICAgICAgICAgJFNlbGVjdGVkTGFuZ3VhZ2UgPSAkTGFuZ3VhZ2VzeyRTZWxlY3RlZExhbmd1YWdlSUR9OwogICAgICAgIH0KICAgIH0KCiAgICAjIGJ1aWxkIHRoZSBsYW5ndWFnZSBzZWxlY3Rpb24KICAgICREYXRhe0xhbmd1YWdlT3B0aW9ufSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgICA9PiBcJUxhbmd1YWdlcywKICAgICAgICBOYW1lICAgICAgICAgID0+ICdMYW5ndWFnZUlEJywKICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRTZWxlY3RlZExhbmd1YWdlLAogICAgICAgIFRyYW5zbGF0aW9uICAgPT4gMCwKICAgICk7CgogICAgIyBnZXQgdGhlIHN0YXRlcyBsaXN0CiAgICBteSAlU3RhdGVzID0gJFNlbGYtPntGQVFPYmplY3R9LT5TdGF0ZUxpc3QoCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBnZXQgdGhlIHNlbGVjdGVkIHN0YXRlCiAgICBteSAkU2VsZWN0ZWRTdGF0ZTsKICAgIGlmICggJFBhcmFte1N0YXRlSUR9ICYmICRTdGF0ZXN7ICRQYXJhbXtTdGF0ZUlEfSB9ICkgewoKICAgICAgICAjIGdldCBzdGF0ZSBmcm9tIGdpdmVuIHN0YXRlIGlkCiAgICAgICAgJFNlbGVjdGVkU3RhdGUgPSAkU3RhdGVzeyAkUGFyYW17U3RhdGVJRH0gfTsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjIGdldCBkZWZhdWx0IHN0YXRlCiAgICAgICAgJFNlbGVjdGVkU3RhdGUgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpEZWZhdWx0OjpTdGF0ZScpIHx8ICdpbnRlcm5hbCAoYWdlbnQpJzsKICAgIH0KCiAgICAjIGJ1aWxkIHRoZSBzdGF0ZSBzZWxlY3Rpb24KICAgICREYXRhe1N0YXRlT3B0aW9ufSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgICA9PiBcJVN0YXRlcywKICAgICAgICBOYW1lICAgICAgICAgID0+ICdTdGF0ZUlEJywKICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRTZWxlY3RlZFN0YXRlLAogICAgICAgIFRyYW5zbGF0aW9uICAgPT4gMSwKICAgICk7CgogICAgbXkgJEZpZWxkc2V0Q2xhc3MgPSAnJzsKICAgIGlmICggJFNlbGYtPntTY3JlZW5UeXBlfSBlcSAnUG9wdXAnICkgewogICAgICAgICRGaWVsZHNldENsYXNzID0gJ0ZpeGVkTGFiZWwnOwogICAgfQoKICAgICMgc2hvdyBmYXEgZWRpdCBzY3JlZW4KICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnRkFRRWRpdCcsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgJURhdGEsCiAgICAgICAgICAgIEZpZWxkc2V0Q2xhc3MgPT4gJEZpZWxkc2V0Q2xhc3MsCiAgICAgICAgfSwKICAgICk7CgogICAgIyBzaG93IGxhbmd1YWdlcyBmaWVsZAogICAgaWYgKCAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ICkgewogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0xhbmd1YWdlJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAlRGF0YSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnTm9MYW5ndWFnZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgJURhdGEsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNob3cgYXBwcm92YWwgZmllbGQKICAgIGlmICggJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6QXBwcm92YWxSZXF1aXJlZCcpICkgewoKICAgICAgICAjIGNoZWNrIHBlcm1pc3Npb24KICAgICAgICBteSAlR3JvdXBzID0gcmV2ZXJzZSAkU2VsZi0+e0dyb3VwT2JqZWN0fS0+R3JvdXBNZW1iZXJMaXN0KAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICBUeXBlICAgPT4gJ3JvJywKICAgICAgICAgICAgUmVzdWx0ID0+ICdIQVNIJywKICAgICAgICApOwoKICAgICAgICAjIGdldCB0aGUgZmFxIGFwcHJvdmFsIGdyb3VwIGZyb20gY29uZmlnCiAgICAgICAgbXkgJEFwcHJvdmFsR3JvdXAgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpBcHByb3ZhbEdyb3VwJykgfHwgJyc7CgogICAgICAgICMgYnVpbGQgdGhlIGFwcHJvdmFsIHNlbGVjdGlvbiBpZiB1c2VyIGlzIGluIHRoZSBhcHByb3ZhbCBncm91cAogICAgICAgIGlmICggJEdyb3Vwc3skQXBwcm92YWxHcm91cH0gKSB7CgogICAgICAgICAgICAkRGF0YXtBcHByb3ZhbE9wdGlvbn0gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQXBwcm92ZWQnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgMCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgIDEgPT4gJ1llcycsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17QXBwcm92ZWR9IHx8IDAsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdBcHByb3ZhbCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHslRGF0YX0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgc2hvdyB0aGUgYXR0YWNobWVudCB1cGxvYWQgYnV0dG9uCiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0F0dGFjaG1lbnRVcGxvYWQnLAogICAgICAgIERhdGEgPT4geyVQYXJhbX0sCiAgICApOwoKICAgICMgc2hvdyBhdHRhY2htZW50cwogICAgQVRUQUNITUVOVDoKICAgIGZvciBteSAkQXR0YWNobWVudCAoIEB7ICRQYXJhbXtBdHRhY2htZW50c30gfSApIHsKCiAgICAgICAgIyBkbyBub3Qgc2hvdyBpbmxpbmUgaW1hZ2VzIGFzIGF0dGFjaG1lbnRzCiAgICAgICAgIyAodGhleSBoYXZlIGEgY29udGVudCBpZCkKICAgICAgICBpZiAoICRBdHRhY2htZW50LT57Q29udGVudElEfSAmJiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntCcm93c2VyUmljaFRleHR9ICkgewogICAgICAgICAgICBuZXh0IEFUVEFDSE1FTlQ7CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdBdHRhY2htZW50JywKICAgICAgICAgICAgRGF0YSA9PiAkQXR0YWNobWVudCwKICAgICAgICApOwogICAgfQoKICAgICMgYWRkIHJpY2ggdGV4dCBlZGl0b3IgamF2YXNjcmlwdAogICAgIyBvbmx5IGlmIGFjdGl2YXRlZCBhbmQgdGhlIGJyb3dzZXIgY2FuIGhhbmRsZSBpdAogICAgIyBvdGhlcndpc2UganVzdCBhIHRleHRhcmVhIGlzIHNob3duCiAgICBpZiAoICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0Jyb3dzZXJSaWNoVGV4dH0gKSB7CgogICAgICAgICMgdXNlIGhlaWdodC93aWR0aCBkZWZpbmVkIGZvciB0aGlzIHNjcmVlbgogICAgICAgICRQYXJhbXtSaWNoVGV4dEhlaWdodH0gPSAkU2VsZi0+e0NvbmZpZ30tPntSaWNoVGV4dEhlaWdodH0gfHwgMDsKICAgICAgICAkUGFyYW17UmljaFRleHRXaWR0aH0gID0gJFNlbGYtPntDb25maWd9LT57UmljaFRleHRXaWR0aH0gIHx8IDA7CgogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1JpY2hUZXh0JywKICAgICAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICAgICApOwogICAgfQoKICAgICMgc2hvdyBGQVEgQ29udGVudAogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GQVFDb250ZW50U2hvdygKICAgICAgICBGQVFPYmplY3QgICAgICAgPT4gJFNlbGYtPntGQVFPYmplY3R9LAogICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30sCiAgICAgICAgRkFRRGF0YSAgICAgICAgID0+IHslUGFyYW19LAogICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgIGlmICggJFNlbGYtPntTY3JlZW5UeXBlfSBuZSAnUG9wdXAnICkgewogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0VuZE5vcm1hbCcsCiAgICAgICAgKTsKICAgIH0KCiAgICBpZiAoICRTZWxmLT57U2NyZWVuVHlwZX0gZXEgJ1BvcHVwJyApIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdFbmRTbWFsbCcsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdlbmVyYXRlIG91dHB1dAogICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFFZGl0JywKICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICk7Cn0KCjE7Cg==
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRXhwbG9yZXIucG0gLSBzaG93IHRoZSBmYXEgZXhwbG9yZXIKIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxMyBPVFJTIEFHLCBodHRwOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFFeHBsb3JlcjsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6RkFROwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE9iamVjdCAoCiAgICAgICAgcXcoUGFyYW1PYmplY3QgREJPYmplY3QgTGF5b3V0T2JqZWN0IExvZ09iamVjdCBDb25maWdPYmplY3QgVXNlck9iamVjdCBHcm91cE9iamVjdCkKICAgICAgICApCiAgICB7CiAgICAgICAgaWYgKCAhJFNlbGYtPnskT2JqZWN0fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GYXRhbEVycm9yKCBNZXNzYWdlID0+ICJHb3Qgbm8gJE9iamVjdCEiICk7CiAgICAgICAgfQogICAgfQoKICAgICMgY3JlYXRlIGFkZGl0aW9uYWwgb2JqZWN0cwogICAgJFNlbGYtPntGQVFPYmplY3R9ID0gS2VybmVsOjpTeXN0ZW06OkZBUS0+bmV3KCVQYXJhbSk7CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgJFNlbGYtPntDb25maWd9ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoIkZBUTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgICMgc2V0IGRlZmF1bHQgaW50ZXJmYWNlIHNldHRpbmdzCiAgICAkU2VsZi0+e0ludGVyZmFjZX0gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUdldCgKICAgICAgICBOYW1lICAgPT4gJ2ludGVybmFsJywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVUeXBlTGlzdCgKICAgICAgICBUeXBlcyAgPT4gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6QWdlbnQ6OlN0YXRlVHlwZXMnKSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHBlcm1pc3Npb24gY2hlY2sKICAgIGlmICggISRTZWxmLT57QWNjZXNzUm99ICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgTWVzc2FnZSAgICA9PiAnWW91IG5lZWQgcm8gcGVybWlzc2lvbiEnLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgY29uZmlnIGRhdGEKICAgICRTZWxmLT57U3RhcnRIaXR9ID0gaW50KCAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdTdGFydEhpdCcgKSB8fCAxICk7CiAgICAkU2VsZi0+e1NlYXJjaExpbWl0fSA9ICRTZWxmLT57Q29uZmlnfS0+e1NlYXJjaExpbWl0fSB8fCA1MDA7CiAgICAkU2VsZi0+e0ZpbHRlcn0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdGaWx0ZXInICkgfHwgJyc7CiAgICAkU2VsZi0+e1ZpZXd9ICAgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdWaWV3JyApICAgfHwgJyc7CiAgICAkU2VsZi0+e1NvcnRCeX0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdTb3J0QnknICkKICAgICAgICB8fCAkU2VsZi0+e0NvbmZpZ30tPnsnU29ydEJ5OjpEZWZhdWx0J30KICAgICAgICB8fCAnRkFRSUQnOwogICAgJFNlbGYtPntPcmRlckJ5fSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ09yZGVyQnknICkKICAgICAgICB8fCAkU2VsZi0+e0NvbmZpZ30tPnsnT3JkZXI6OkRlZmF1bHQnfQogICAgICAgIHx8ICdEb3duJzsKCiAgICAjIGdldCBjYXRlZ29yeSBpZAogICAgbXkgJENhdGVnb3J5SUQgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdDYXRlZ29yeUlEJyApIHx8IDA7CgogICAgIyBjaGVjayBmb3Igbm9uIG51bWVyaWMgQ2F0ZWdvcnlJRAogICAgaWYgKCAkQ2F0ZWdvcnlJRCAhfiAvXGQrLyApIHsKICAgICAgICAkQ2F0ZWdvcnlJRCA9IDA7CiAgICB9CgogICAgIyBnZXQgY2F0ZWdvcnkgYnkgbmFtZQogICAgbXkgJENhdGVnb3J5ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnQ2F0ZWdvcnknICkgfHwgJyc7CgogICAgIyB0cnkgdG8gZ2V0IHRoZSBDYXRlZ29yeSBJRCBmcm9tIGNhdGVnb3J5IG5hbWUgaWYgbm8gQ2F0ZWdvcnkgSUQKICAgIGlmICggJENhdGVnb3J5ICYmICEkQ2F0ZWdvcnlJRCApIHsKCiAgICAgICAgIyBnZXQgdGhlIGNhdGVnb3J5IHRyZWUKICAgICAgICBteSAkQ2F0ZWdvcnlUcmVlID0gJFNlbGYtPntGQVFPYmplY3R9LT5DYXRlZ29yeVRyZWVMaXN0KAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgcmV2ZXJzZSB0aGUgaGFzIGZvciBlYXN5IGxvb2t1cAogICAgICAgIG15ICVSZXZlcnNlQ2F0ZWdvcnlUcmVlID0gcmV2ZXJzZSAleyRDYXRlZ29yeVRyZWV9OwoKICAgICAgICAkQ2F0ZWdvcnlJRCA9ICRSZXZlcnNlQ2F0ZWdvcnlUcmVleyRDYXRlZ29yeX0gfHwgMDsKICAgIH0KCiAgICAjIGdldCBuYXZpZ2F0aW9uIGJhciBvcHRpb24KICAgIG15ICROYXYgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdOYXYnICkgfHwgJyc7CgogICAgIyBzYXZlIGNhdGVnb3J5IGlkIHRvIHNlc3Npb24sIHRvIGJlIHVzZWQgaW4gRkFRIGFkZCBzY3JlZW4KICAgICRTZWxmLT57U2Vzc2lvbk9iamVjdH0tPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgIEtleSAgICAgICA9PiAnTGFzdFZpZXdlZENhdGVnb3J5JywKICAgICAgICBWYWx1ZSAgICAgPT4gJENhdGVnb3J5SUQsCiAgICApOwoKICAgICMgc3RvcmUgbGFzdCBvdmVydmlldyBzY3JlZW4gKGZvciBiYWNrIG1lbnUgYWN0aW9uKQogICAgIyBidXQgb25seSBpZiB0aGUgRkFRIGV4cGxvcmVyIGlzIG5vdCBzaG93biBhcyBvdmVybGF5CiAgICBpZiAoICEkTmF2IHx8ICROYXYgbmUgJ05vbmUnICkgewoKICAgICAgICBteSAkVVJMCiAgICAgICAgICAgID0gIkFjdGlvbj1BZ2VudEZBUUV4cGxvcmVyO1NvcnRCeT0kU2VsZi0+e1NvcnRCeX0iCiAgICAgICAgICAgIC4gIjtDYXRlZ29yeUlEPSRDYXRlZ29yeUlEO05hdj0kTmF2IgogICAgICAgICAgICAuICI7T3JkZXJCeT0kU2VsZi0+e09yZGVyQnl9O1N0YXJ0SGl0PSRTZWxmLT57U3RhcnRIaXR9IjsKICAgICAgICAkU2VsZi0+e1Nlc3Npb25PYmplY3R9LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlbk92ZXJ2aWV3JywKICAgICAgICAgICAgVmFsdWUgICAgID0+ICRVUkwsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+e1Nlc3Npb25PYmplY3R9LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlblZpZXcnLAogICAgICAgICAgICBWYWx1ZSAgICAgPT4gJFVSTCwKICAgICAgICApOwogICAgfQoKICAgICMgdHJ5IHRvIGdldCB0aGUgY2F0ZWdvcnkgZGF0YQogICAgbXkgJUNhdGVnb3J5RGF0YTsKICAgIGlmICgkQ2F0ZWdvcnlJRCkgewoKICAgICAgICAjIGdldCBjYXRlZ29yeSBkYXRhCiAgICAgICAgJUNhdGVnb3J5RGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Q2F0ZWdvcnlHZXQoCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgaWYgKCAhJUNhdGVnb3J5RGF0YSApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICJUaGUgQ2F0ZWdvcnlJRCAkQ2F0ZWdvcnlJRCBpcyBpbnZhbGlkLiIsCiAgICAgICAgICAgICAgICBDb21tZW50ID0+ICdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW4uJywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgdXNlciBwZXJtaXNzaW9uCiAgICAgICAgbXkgJFBlcm1pc3Npb24gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkNoZWNrQ2F0ZWdvcnlVc2VyUGVybWlzc2lvbigKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBzaG93IGVycm9yIG1lc3NhZ2UKICAgICAgICBpZiAoICEkUGVybWlzc2lvbiApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgICA9PiAnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBjYXRlZ29yeSEnLAogICAgICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgbXkgJE91dHB1dDsKICAgIGlmICggJE5hdiAmJiAkTmF2IGVxICdOb25lJyApIHsKCiAgICAgICAgIyBvdXRwdXQgaGVhZGVyIHNtYWxsIGFuZCBubyBOYXZiYXIKICAgICAgICAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5IZWFkZXIoIFR5cGUgPT4gJ1NtYWxsJyApOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgb3V0cHV0IGhlYWRlciBhbmQgbmF2aWdhdGlvbiBiYXIKICAgICAgICAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5IZWFkZXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TmF2aWdhdGlvbkJhcigpOwogICAgfQoKICAgICMgc2hvdyBGQVEgcGF0aAogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GQVFQYXRoU2hvdygKICAgICAgICBGQVFPYmplY3QgID0+ICRTZWxmLT57RkFRT2JqZWN0fSwKICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgIE5hdiAgICAgICAgPT4gJE5hdiwKICAgICk7CgogICAgIyBnZXQgYWxsIGRpcmVjdCBzdWJjYXRlZ29yaWVzIG9mIHRoZSBzZWxlY3RlZCBjYXRlZ29yeQogICAgbXkgJENhdGVnb3J5SURzUmVmID0gJFNlbGYtPntGQVFPYmplY3R9LT5BZ2VudENhdGVnb3J5U2VhcmNoKAogICAgICAgIFBhcmVudElEID0+ICRDYXRlZ29yeUlELAogICAgICAgIFVzZXJJRCAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBzaG93IHN1YmNhdGVnb3JpZXMgbGlzdAogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jayggTmFtZSA9PiAnU3ViY2F0ZWdvcmllcycgKTsKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soIE5hbWUgPT4gJ092ZXJ2aWV3UmVzdWx0JyApOwoKICAgICMgY2hlY2sgaWYgdGhlcmUgYXJlIHN1YmNhdGVnb3JpZXMKICAgIGlmICggJENhdGVnb3J5SURzUmVmICYmIHJlZiAkQ2F0ZWdvcnlJRHNSZWYgZXEgJ0FSUkFZJyAmJiBAeyRDYXRlZ29yeUlEc1JlZn0gKSB7CgogICAgICAgICMgc2hvdyBkYXRhIGZvciBlYWNoIHN1YmNhdGVnb3J5CiAgICAgICAgZm9yIG15ICRTdWJDYXRlZ29yeUlEICggQHskQ2F0ZWdvcnlJRHNSZWZ9ICkgewoKICAgICAgICAgICAgIyBnZXQgdGhlIGNhdGVnb3J5IGRhdGEKICAgICAgICAgICAgbXkgJVN1YkNhdGVnb3J5RGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Q2F0ZWdvcnlHZXQoCiAgICAgICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRTdWJDYXRlZ29yeUlELAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGdldCB0aGUgbnVtYmVyIG9mIHN1YmNhdGVnb3JpZXMgb2YgdGhpcyBzdWJjYXRlZ29yeQogICAgICAgICAgICAkU3ViQ2F0ZWdvcnlEYXRhe1N1YkNhdGVnb3J5Q291bnR9ID0gJFNlbGYtPntGQVFPYmplY3R9LT5DYXRlZ29yeUNvdW50KAogICAgICAgICAgICAgICAgUGFyZW50SURzID0+IFskU3ViQ2F0ZWdvcnlJRF0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBnZXQgdGhlIG51bWJlciBvZiBmYXEgYXJ0aWNsZXMgaW4gdGhpcyBjYXRlZ29yeQogICAgICAgICAgICAkU3ViQ2F0ZWdvcnlEYXRhe0FydGljbGVDb3VudH0gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUUNvdW50KAogICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRHMgID0+IFskU3ViQ2F0ZWdvcnlJRF0sCiAgICAgICAgICAgICAgICBJdGVtU3RhdGVzICAgPT4gJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9LAogICAgICAgICAgICAgICAgT25seUFwcHJvdmVkID0+IDAsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBvdXRwdXQgdGhlIGNhdGVnb3J5IGRhdGEKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3UmVzdWx0Um93JywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIE5hdiA9PiAkTmF2LAogICAgICAgICAgICAgICAgICAgICVTdWJDYXRlZ29yeURhdGEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIG90aGVyd2lzZSBhIG5vIGRhdGEgZm91bmQgbWVzc2FnZSBpcyBkaXNwbGF5ZWQKICAgIGVsc2UgewogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ05vRGF0YUZvdW5kTXNnJywKICAgICAgICApOwogICAgfQoKICAgICMgc2VhcmNoIGFsbCBGQVEgYXJ0aWNsZXMgd2l0aGluIHRoZSBnaXZlbiBjYXRlZ29yeQogICAgbXkgQFZpZXdhYmxlRkFRSURzID0gJFNlbGYtPntGQVFPYmplY3R9LT5GQVFTZWFyY2goCiAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiBbICRTZWxmLT57U29ydEJ5fSBdLAogICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gPT4gWyAkU2VsZi0+e09yZGVyQnl9IF0sCiAgICAgICAgTGltaXQgICAgICAgICAgICA9PiAkU2VsZi0+e1NlYXJjaExpbWl0fSwKICAgICAgICBVc2VySUQgICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICBTdGF0ZXMgICAgICAgICAgID0+ICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSwKICAgICAgICBJbnRlcmZhY2UgICAgICAgID0+ICRTZWxmLT57SW50ZXJmYWNlfSwKICAgICAgICBDYXRlZ29yeUlEcyAgICAgID0+IFskQ2F0ZWdvcnlJRF0sCiAgICApOwoKICAgICMgYnVpbGQgbmVjY2Vzc2FyeSBzdHVmZiBmb3IgdGhlIEZBUSBhcnRpY2xlIGxpc3QKICAgIG15ICRMaW5rUGFnZSA9ICdGaWx0ZXI9JwogICAgICAgIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5MaW5rRW5jb2RlKCAkU2VsZi0+e0ZpbHRlcn0gKQogICAgICAgIC4gJztWaWV3PScgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkxpbmtFbmNvZGUoICRTZWxmLT57Vmlld30gKQogICAgICAgIC4gJztOYXY9JyAuICROYXYKICAgICAgICAuICc7U29ydEJ5PScgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkxpbmtFbmNvZGUoICRTZWxmLT57U29ydEJ5fSApCiAgICAgICAgLiAnO09yZGVyQnk9JyAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua0VuY29kZSggJFNlbGYtPntPcmRlckJ5fSApCiAgICAgICAgLiAnO0NhdGVnb3J5SUQ9JyAuICRDYXRlZ29yeUlECiAgICAgICAgLiAnOyc7CiAgICBteSAkTGlua1NvcnQgPSAnRmlsdGVyPScKICAgICAgICAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua0VuY29kZSggJFNlbGYtPntGaWx0ZXJ9ICkKICAgICAgICAuICc7Vmlldz0nIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5MaW5rRW5jb2RlKCAkU2VsZi0+e1ZpZXd9ICkKICAgICAgICAuICc7TmF2PScgLiAkTmF2CiAgICAgICAgLiAnO0NhdGVnb3J5SUQ9JyAuICRDYXRlZ29yeUlECiAgICAgICAgLiAnOyc7CiAgICBteSAkRmlsdGVyTGluawogICAgICAgID0gJ1NvcnRCeT0nIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5MaW5rRW5jb2RlKCAkU2VsZi0+e1NvcnRCeX0gKQogICAgICAgIC4gJztPcmRlckJ5PScgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkxpbmtFbmNvZGUoICRTZWxmLT57T3JkZXJCeX0gKQogICAgICAgIC4gJztWaWV3PScgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkxpbmtFbmNvZGUoICRTZWxmLT57Vmlld30gKQogICAgICAgIC4gJztOYXY9JyAuICROYXYKICAgICAgICAuICc7Q2F0ZWdvcnlJRD0nIC4gJENhdGVnb3J5SUQKICAgICAgICAuICc7JzsKCiAgICAjIGZpbmQgb3V0IHdoaWNoIGNvbHVtbnMgc2hvdWxkIGJlIHNob3duCiAgICBteSBAU2hvd0NvbHVtbnM7CiAgICBpZiAoICRTZWxmLT57Q29uZmlnfS0+e1Nob3dDb2x1bW5zfSApIHsKCiAgICAgICAgIyBnZXQgYWxsIHBvc3NpYmxlIGNvbHVtbnMgZnJvbSBjb25maWcKICAgICAgICBteSAlUG9zc2libGVDb2x1bW4gPSAleyAkU2VsZi0+e0NvbmZpZ30tPntTaG93Q29sdW1uc30gfTsKCiAgICAgICAgIyBnZXQgdGhlIGNvbHVtbiBuYW1lcyB0aGF0IHNob3VsZCBiZSBzaG93bgogICAgICAgIENPTFVNTk5BTUU6CiAgICAgICAgZm9yIG15ICROYW1lICggc29ydCBrZXlzICVQb3NzaWJsZUNvbHVtbiApIHsKICAgICAgICAgICAgbmV4dCBDT0xVTU5OQU1FIGlmICEkUG9zc2libGVDb2x1bW57JE5hbWV9OwogICAgICAgICAgICBwdXNoIEBTaG93Q29sdW1ucywgJE5hbWU7CiAgICAgICAgfQoKICAgICAgICAjIGVuZm9yY2UgRkFRIG51bWJlciBjb2x1bW4gc2luY2UgaXMgdGhlIGxpbmsgTWFzdGVyQWN0aW9uIGhvb2sKICAgICAgICBpZiAoICEkUG9zc2libGVDb2x1bW57J051bWJlcid9ICkgewogICAgICAgICAgICBwdXNoIEBTaG93Q29sdW1ucywgJ051bWJlcic7CiAgICAgICAgfQogICAgfQoKICAgICMgYnVpbGQgdGhlIHRpdGxlIHZhbHVlIChvbiB0b3Agb2YgdGhlIGFydGljbGUgbGlzdCkKICAgIG15ICRUaXRsZQogICAgICAgID0gJENhdGVnb3J5RGF0YXtOYW1lfQogICAgICAgIHx8ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkRlZmF1bHQ6OlJvb3RDYXRlZ29yeU5hbWUnKQogICAgICAgIHx8ICcnOwoKICAgICMgYnVpbGQgdGhlIGh0bWwgZm9yIHRoZSBsaXN0IG9mIEZBUSBhcnRpY2xlcyBpbiB0aGUgZ2l2ZW4gY2F0ZWdvcnkKICAgIG15ICRGQVFJdGVtTGlzdEhUTUwgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZBUUxpc3RTaG93KAogICAgICAgIEZBUUlEcyAgICAgPT4gXEBWaWV3YWJsZUZBUUlEcywKICAgICAgICBUb3RhbCAgICAgID0+IHNjYWxhciBAVmlld2FibGVGQVFJRHMsCiAgICAgICAgVmlldyAgICAgICA9PiAkU2VsZi0+e1ZpZXd9LAogICAgICAgIEVudiAgICAgICAgPT4gJFNlbGYsCiAgICAgICAgTGlua1BhZ2UgICA9PiAkTGlua1BhZ2UsCiAgICAgICAgTGlua1NvcnQgICA9PiAkTGlua1NvcnQsCiAgICAgICAgTGlua0ZpbHRlciA9PiAkRmlsdGVyTGluaywKCiAgICAgICAgVGl0bGVOYW1lICA9PiAnRkFRIEFydGljbGVzJywKICAgICAgICBUaXRsZVZhbHVlID0+ICRUaXRsZSwKCiAgICAgICAgTGltaXQgICAgICAgPT4gJFNlbGYtPntTZWFyY2hMaW1pdH0sCiAgICAgICAgRmlsdGVyICAgICAgPT4gJFNlbGYtPntGaWx0ZXJ9LAogICAgICAgIEZpbHRlckxpbmsgID0+ICRGaWx0ZXJMaW5rLAogICAgICAgIE9yZGVyQnkgICAgID0+ICRTZWxmLT57T3JkZXJCeX0sCiAgICAgICAgU29ydEJ5ICAgICAgPT4gJFNlbGYtPntTb3J0Qnl9LAogICAgICAgIFNob3dDb2x1bW5zID0+IFxAU2hvd0NvbHVtbnMsCiAgICAgICAgT3V0cHV0ICAgICAgPT4gMSwKICAgICAgICBOYXYgICAgICAgICA9PiAkTmF2LAogICAgKTsKCiAgICAjIHNob3cgdGhlIEZBUSBhcnRpY2xlIGxpc3QKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnRkFRSXRlbUxpc3QnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBGQVFJdGVtTGlzdEhUTUwgPT4gJEZBUUl0ZW1MaXN0SFRNTCwKICAgICAgICB9LAogICAgKTsKCiAgICAjIHNldCBRdWlja1NlYXJjaCBtb2RlCiAgICBteSAkTW9kZSA9ICdBZ2VudCc7CiAgICBpZiAoICROYXYgZXEgJ05vbmUnICkgewogICAgICAgICRNb2RlID0gJ0FnZW50U21hbGwnOwogICAgfQoKICAgICMgc2hvdyBRdWlja1NlYXJjaAogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GQVFTaG93UXVpY2tTZWFyY2goCiAgICAgICAgTW9kZSAgICAgICAgICAgID0+ICRNb2RlLAogICAgICAgIEludGVyZmFjZSAgICAgICA9PiAkU2VsZi0+e0ludGVyZmFjZX0sCiAgICAgICAgSW50ZXJmYWNlU3RhdGVzID0+ICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSwKICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgIE5hdiAgICAgICAgICAgICA9PiAkTmF2LAogICAgKTsKCiAgICBteSAlSW5mb0JveFJlc3VsdHM7CgogICAgIyBzaG93IGxhc3QgYWRkZWQgYW5kIGxhc3QgdXBkYXRlZCBhcnRpY2xlcwogICAgZm9yIG15ICRUeXBlIChxdyhMYXN0Q3JlYXRlIExhc3RDaGFuZ2UpKSB7CgogICAgICAgIG15ICRTaG93T2sgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZBUVNob3dMYXRlc3ROZXdzQm94KAogICAgICAgICAgICBGQVFPYmplY3QgICAgICAgPT4gJFNlbGYtPntGQVFPYmplY3R9LAogICAgICAgICAgICBUeXBlICAgICAgICAgICAgPT4gJFR5cGUsCiAgICAgICAgICAgIE1vZGUgICAgICAgICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBDYXRlZ29yeUlEICAgICAgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIEludGVyZmFjZSAgICAgICA9PiAkU2VsZi0+e0ludGVyZmFjZX0sCiAgICAgICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIE5hdiAgICAgICAgICAgICA9PiAkTmF2LAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgZXJyb3IKICAgICAgICBpZiAoICEkU2hvd09rICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KCiAgICAgICAgIyBzdG9yZSB0aGUgTmV3c0JveFJlc3VsdAogICAgICAgICRJbmZvQm94UmVzdWx0c3skVHlwZX0gPSAkU2hvd09rOwoKICAgIH0KCiAgICAjIHNob3cgdG9wIHRlbiBhcnRpY2xlcwogICAgbXkgJFNob3dPayA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RkFRU2hvd1RvcDEwKAogICAgICAgIEZBUU9iamVjdCAgICAgICA9PiAkU2VsZi0+e0ZBUU9iamVjdH0sCiAgICAgICAgTW9kZSAgICAgICAgICAgID0+ICdBZ2VudCcsCiAgICAgICAgQ2F0ZWdvcnlJRCAgICAgID0+ICRDYXRlZ29yeUlELAogICAgICAgIEludGVyZmFjZSAgICAgICA9PiAkU2VsZi0+e0ludGVyZmFjZX0sCiAgICAgICAgSW50ZXJmYWNlU3RhdGVzID0+ICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSwKICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgIE5hdiAgICAgICAgICAgICA9PiAkTmF2LAogICAgKTsKCiAgICAjIGNoZWNrIGVycm9yCiAgICBpZiAoICEkU2hvd09rICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKCk7CiAgICB9CgogICAgIyBzdG9yZSB0aGUgTmV3c0JveFJlc3VsdAogICAgJEluZm9Cb3hSZXN1bHRze1RvcDEwfSA9ICRTaG93T2s7CgogICAgIyBzZXQgdGhlIFNpZGViYXIgd2lkdGgKICAgIG15ICRTaWRlYmFyQ2xhc3MgPSAnTGFyZ2UnOwoKICAgICMgY2hlY2sgaWYgYWxsIEluZm9Cb3hlcyBhcmUgZW1wdHkgYW5kIGhpZGUgdGhlIFNpZGViYXIKICAgIGlmICgKICAgICAgICAkSW5mb0JveFJlc3VsdHN7TGFzdENyZWF0ZX0gICAgZXEgLTEKICAgICAgICAmJiAkSW5mb0JveFJlc3VsdHN7TGFzdENoYW5nZX0gZXEgLTEKICAgICAgICAmJiAkSW5mb0JveFJlc3VsdHN7VG9wMTB9ICAgICAgZXEgLTEKICAgICAgICApCiAgICB7CiAgICAgICAgJFNpZGViYXJDbGFzcyA9ICdIaWRkZW4nOwogICAgfQoKICAgIGlmICggJE5hdiAmJiAkTmF2IGVxICdOb25lJyApIHsKICAgICAgICAkU2lkZWJhckNsYXNzID0gJ01lZGl1bSc7CiAgICB9CgogICAgIyBzdGFydCB0ZW1wbGF0ZSBvdXRwdXQKICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUUV4cGxvcmVyJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIENhdGVnb3J5SUQgICA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgU2lkZWJhckNsYXNzID0+ICRTaWRlYmFyQ2xhc3MsCiAgICAgICAgICAgICVDYXRlZ29yeURhdGEsCiAgICAgICAgfSwKICAgICk7CgogICAgIyBhZGQgZm9vdGVyCiAgICBpZiAoICROYXYgJiYgJE5hdiBlcSAnTm9uZScgKSB7CiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZvb3RlciggVHlwZSA9PiAnU21hbGwnICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Rm9vdGVyKCk7CiAgICB9CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCjE7Cg==
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSGlzdG9yeS5wbSAtIHRoZSBGQVEgaGlzdG9yeSBtb2R1bGUKIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxMyBPVFJTIEFHLCBodHRwOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFIaXN0b3J5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpGQVE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgY2hlY2sgbmVlZGVkIG9iamVjdHMKICAgIGZvciBteSAkT2JqZWN0ICgKICAgICAgICBxdyhQYXJhbU9iamVjdCBEQk9iamVjdCBMYXlvdXRPYmplY3QgTG9nT2JqZWN0IFVzZXJPYmplY3QgR3JvdXBPYmplY3QgQ29uZmlnT2JqZWN0KQogICAgICAgICkKICAgIHsKICAgICAgICBpZiAoICEkU2VsZi0+eyRPYmplY3R9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZhdGFsRXJyb3IoIE1lc3NhZ2UgPT4gIkdvdCBubyAkT2JqZWN0ISIgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBjcmVhdGUgYWRkaXRpb25hbCBvYmplY3RzCiAgICAkU2VsZi0+e0ZBUU9iamVjdH0gPSBLZXJuZWw6OlN5c3RlbTo6RkFRLT5uZXcoJVBhcmFtKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHBlcm1pc3Npb24gY2hlY2sKICAgIGlmICggISRTZWxmLT57QWNjZXNzUm99ICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgTWVzc2FnZSAgICA9PiAnWW91IG5lZWQgcm8gcGVybWlzc2lvbiEnLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgcGFyYW1zCiAgICBteSAlR2V0UGFyYW07CgogICAgIyBnZXQgbmVlZGVkIEl0ZW0gaWQKICAgICRHZXRQYXJhbXtJdGVtSUR9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnSXRlbUlEJyApOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkR2V0UGFyYW17SXRlbUlEfSApIHsKCiAgICAgICAgIyBlcnJvciBwYWdlCiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gIkNhbid0IHNob3cgaGlzdG9yeSwgYXMgbm8gSXRlbUlEIGlzIGdpdmVuISIsCiAgICAgICAgICAgIENvbW1lbnQgPT4gJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBGQVEgaXRlbSBkYXRhCiAgICBteSAlRkFRRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRR2V0KAogICAgICAgIEl0ZW1JRCAgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgSXRlbUZpZWxkcyA9PiAwLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICggISVGQVFEYXRhICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKCk7CiAgICB9CgogICAgIyBjaGVjayB1c2VyIHBlcm1pc3Npb24KICAgIG15ICRQZXJtaXNzaW9uID0gJFNlbGYtPntGQVFPYmplY3R9LT5DaGVja0NhdGVnb3J5VXNlclBlcm1pc3Npb24oCiAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkRkFRRGF0YXtDYXRlZ29yeUlEfSwKICAgICk7CgogICAgIyBzaG93IGVycm9yIG1lc3NhZ2UKICAgIGlmICggISRQZXJtaXNzaW9uICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgTWVzc2FnZSAgICA9PiAnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBjYXRlZ29yeSEnLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgRkFRIGFydGljbGUgaGlzdG9yeQogICAgbXkgJEhpc3RvcnkgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUUhpc3RvcnlHZXQoCiAgICAgICAgSXRlbUlEID0+ICRGQVFEYXRhe0l0ZW1JRH0sCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgZm9yIG15ICRIaXN0b3J5RW50cnkgKCBAeyRIaXN0b3J5fSApIHsKCiAgICAgICAgIyByZXBsYWNlIElEIHRvIGZ1bGwgdXNlciBuYW1lIG9uIENyZWF0ZWRCeSBrZXkKICAgICAgICBteSAlVXNlciA9ICRTZWxmLT57VXNlck9iamVjdH0tPkdldFVzZXJEYXRhKAogICAgICAgICAgICBVc2VySUQgPT4gJEhpc3RvcnlFbnRyeS0+e0NyZWF0ZWRCeX0sCiAgICAgICAgICAgIENhY2hlZCA9PiAxLAogICAgICAgICk7CiAgICAgICAgJEhpc3RvcnlFbnRyeS0+e0NyZWF0ZWRCeX0gPSAiJFVzZXJ7VXNlckxvZ2lufSAoJFVzZXJ7VXNlckZpcnN0bmFtZX0gJFVzZXJ7VXNlckxhc3RuYW1lfSkiOwoKICAgICAgICAjIGNhbGwgUm93IGJsb2NrCiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUm93JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAleyRIaXN0b3J5RW50cnl9LAogICAgICAgICAgICAgICAgfQogICAgICAgICk7CiAgICB9CgogICAgIyBvdXRwdXQgaGVhZGVyCiAgICBteSAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5IZWFkZXIoCiAgICAgICAgVHlwZSAgPT4gJ1NtYWxsJywKICAgICAgICBUaXRsZSA9PiAnRkFRSGlzdG9yeScsCiAgICApOwoKICAgICMgc3RhcnQgdGVtcGxhdGUgb3V0cHV0CiAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFIaXN0b3J5JywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgIH0sCiAgICApOwoKICAgICMgYWRkIGZvb3RlcgogICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZvb3RlcigKICAgICAgICBUeXBlID0+ICdTbWFsbCcsCiAgICApOwoKICAgIHJldHVybiAkT3V0cHV0Owp9CgoxOwo=
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSm91cm5hbC5wbSAtIG1vZHVsZSBmb3IgRkFRIGpvdXJuYWwKIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxMyBPVFJTIEFHLCBodHRwOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFKb3VybmFsOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpGQVE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgY2hlY2sgbmVlZGVkIG9iamVjdHMKICAgIGZvciBteSAkT2JqZWN0ICgKICAgICAgICBxdyhQYXJhbU9iamVjdCBEQk9iamVjdCBMYXlvdXRPYmplY3QgTG9nT2JqZWN0IENvbmZpZ09iamVjdCBNYWluT2JqZWN0IEVuY29kZU9iamVjdCkKICAgICAgICApCiAgICB7CiAgICAgICAgaWYgKCAhJFNlbGYtPnskT2JqZWN0fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GYXRhbEVycm9yKCBNZXNzYWdlID0+ICJHb3Qgbm8gJE9iamVjdCEiICk7CiAgICAgICAgfQogICAgfQoKICAgICMgY3JlYXRlIGFkZGl0aW9uYWwgb2JqZWN0cwogICAgJFNlbGYtPntGQVFPYmplY3R9ID0gS2VybmVsOjpTeXN0ZW06OkZBUS0+bmV3KCVQYXJhbSk7CgogICAgIyBnZXQgY29uZmlnIGZvciBmcm9udGVuZAogICAgJFNlbGYtPntDb25maWd9ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoIkZBUTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGNvbmZpZyBkYXRhCiAgICAkU2VsZi0+e1N0YXJ0SGl0fSA9IGludCggJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnU3RhcnRIaXQnICkgfHwgMSApOwogICAgJFNlbGYtPntKb3VybmFsTGltaXR9ID0gJFNlbGYtPntDb25maWd9LT57Sm91cm5hbExpbWl0fSB8fCA1MDA7CgogICAgIyBwZXJtaXNzaW9uIGNoZWNrCiAgICBpZiAoICEkU2VsZi0+e0FjY2Vzc1JvfSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gJ1lvdSBuZWVkIHJvIHBlcm1pc3Npb24hJywKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IEpvdXJuYWwgZW50cmllcwogICAgbXkgJEpvdXJuYWwgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkhpc3RvcnlHZXQoIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0gKTsKCiAgICAjIGZpbmQgb3V0IHdoaWNoIGNvbHVtbnMgc2hvdWxkIGJlIHNob3duCiAgICBteSBAU2hvd0NvbHVtbnM7CiAgICBpZiAoICRTZWxmLT57Q29uZmlnfS0+e1Nob3dDb2x1bW5zfSApIHsKCiAgICAgICAgIyBnZXQgYWxsIHBvc3NpYmxlIGNvbHVtbnMgZnJvbSBjb25maWcKICAgICAgICBteSAlUG9zc2libGVDb2x1bW4gPSAleyAkU2VsZi0+e0NvbmZpZ30tPntTaG93Q29sdW1uc30gfTsKCiAgICAgICAgIyBnZXQgdGhlIGNvbHVtbiBuYW1lcyB0aGF0IHNob3VsZCBiZSBzaG93bgogICAgICAgIENPTFVNTk5BTUU6CiAgICAgICAgZm9yIG15ICROYW1lICggc29ydCBrZXlzICVQb3NzaWJsZUNvbHVtbiApIHsKICAgICAgICAgICAgbmV4dCBDT0xVTU5OQU1FIGlmICEkUG9zc2libGVDb2x1bW57JE5hbWV9OwogICAgICAgICAgICBwdXNoIEBTaG93Q29sdW1ucywgJE5hbWU7CiAgICAgICAgfQoKICAgICAgICAjIGVuZm9yY2UgRkFRIG51bWJlciBjb2x1bW4gc2luY2UgaXMgdGhlIGxpbmsgTWFzdGVyQWN0aW9uIGhvb2sKICAgICAgICBpZiAoICEkUG9zc2libGVDb2x1bW57J051bWJlcid9ICkgewogICAgICAgICAgICBwdXNoIEBTaG93Q29sdW1ucywgJ051bWJlcic7CiAgICAgICAgfQogICAgfQoKICAgICMgb3V0cHV0IGhlYWRlcgogICAgbXkgJE91dHB1dCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+SGVhZGVyKAogICAgICAgIFZhbHVlID0+ICdGQVEgSm91cm5hbCcsCiAgICApOwogICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk5hdmlnYXRpb25CYXIoKTsKCiAgICAjIG91dG91dCBKb3VybmFsCiAgICAkT3V0cHV0IC49ICRTZWxmLT5fRkFRSm91cm5hbFNob3coCiAgICAgICAgSm91cm5hbCAgICAgPT4gJEpvdXJuYWwsCiAgICAgICAgVG90YWwgICAgICAgPT4gc2NhbGFyIEB7JEpvdXJuYWx9LAogICAgICAgIFRpdGxlTmFtZSAgID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdGQVEgSm91cm5hbCcpLAogICAgICAgIExpbWl0ICAgICAgID0+ICRTZWxmLT57Sm91cm5hbExpbWl0fSwKICAgICAgICBTaG93Q29sdW1ucyA9PiBcQFNob3dDb2x1bW5zLAogICAgKTsKCiAgICAjIGJ1aWxkIGZvb3RlcgogICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZvb3RlcigpOwoKICAgIHJldHVybiAkT3V0cHV0Owp9CgpzdWIgX0ZBUUpvdXJuYWxTaG93IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBsb29rdXAgbGF0ZXN0IHVzZWQgdmlldyBtb2RlCiAgICBpZiAoICEkUGFyYW17Vmlld30gJiYgJFNlbGYtPnsgJ1VzZXJGQVFKb3VybmFsT3ZlcnZpZXcnIC4gJFNlbGYtPntBY3Rpb259IH0gKSB7CiAgICAgICAgJFBhcmFte1ZpZXd9ID0gJFNlbGYtPnsgJ1VzZXJGQVFKb3VybmFsT3ZlcnZpZXcnIC4gJFNlbGYtPntBY3Rpb259IH07CiAgICB9CgogICAgIyBzZXQgZnJvbnRlbmQKICAgIG15ICRGcm9udGVuZCA9ICdBZ2VudCc7CgogICAgIyBzZXQgZGVmYXV0IHZpZXcgbW9kZSB0byAnc21hbGwnCiAgICBteSAkVmlldyA9ICRQYXJhbXtWaWV3fSB8fCAnU21hbGwnOwoKICAgICMgc3RvcmUgbGF0ZXN0IHZpZXcgbW9kZQogICAgJFNlbGYtPntTZXNzaW9uT2JqZWN0fS0+VXBkYXRlU2Vzc2lvbklEKAogICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgS2V5ICAgICAgID0+ICdVc2VyRkFRSm91cm5hbE92ZXJ2aWV3JyAuICRTZWxmLT57QWN0aW9ufSwKICAgICAgICBWYWx1ZSAgICAgPT4gJFZpZXcsCiAgICApOwoKICAgICMgZ2V0IGJhY2tlbmQgZnJvbSBjb25maWcKICAgIG15ICRCYWNrZW5kcyA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkZyb250ZW5kOjpKb3VybmFsT3ZlcnZpZXcnKTsKICAgIGlmICggISRCYWNrZW5kcyApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GYXRhbEVycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+ICdOZWVkIGNvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcnLAogICAgICAgICk7CiAgICB9CgogICAgIyBjaGVjayBmb3IgaGFzaC1yZWYKICAgIGlmICggcmVmICRCYWNrZW5kcyBuZSAnSEFTSCcgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RmF0YWxFcnJvcigKICAgICAgICAgICAgTWVzc2FnZSA9PiAnQ29uZmlnIG9wdGlvbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyBuZWVkcyB0byBiZSBhIEhBU0ggcmVmIScsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGZvciBjb25maWcga2V5CiAgICBpZiAoICEkQmFja2VuZHMtPnskVmlld30gKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RmF0YWxFcnJvcigKICAgICAgICAgICAgTWVzc2FnZSA9PiAiTm8gY29uZmlnIG9wdGlvbiBmb3VuZCBmb3IgdGhlIHZpZXcgJyRWaWV3JyEiLAogICAgICAgICk7CiAgICB9CgogICAgIyBuYXYgYmFyCiAgICBteSAkU3RhcnRIaXQgPSBpbnQoICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1N0YXJ0SGl0JyApIHx8IDEgKTsKCiAgICAjIGdldCBwZXJzb25hbCBwYWdlIHNob3duIGNvdW50CiAgICBteSAkUGFnZVNob3duUHJlZmVyZW5jZXNLZXkgPSAnVXNlckZBUUpvdXJuYWxPdmVydmlldycgLiAkVmlldyAuICdQYWdlU2hvd24nOwogICAgbXkgJFBhZ2VTaG93biAgICAgICAgICAgICAgID0gJFNlbGYtPnskUGFnZVNob3duUHJlZmVyZW5jZXNLZXl9IHx8IDEwOwogICAgbXkgJEdyb3VwICAgICAgICAgICAgICAgICAgID0gJ0ZBUUpvdXJuYWxPdmVydmlldycgLiAkVmlldyAuICdQYWdlU2hvd24nOwoKICAgICMgY2hlY2sgc3RhcnQgb3B0aW9uLCBpZiBoaWdoZXIgdGhlbiBlbGVtZW50cyBhdmFpbGFibGUsIHNldAogICAgIyBpdCB0byB0aGUgbGFzdCBvdmVydmlldyBwYWdlIChUaGFua3MgdG8gU3RlZmFuIFNjaG1pZHQhKQogICAgaWYgKCAkU3RhcnRIaXQgPiAkUGFyYW17VG90YWx9ICkgewogICAgICAgIG15ICRQYWdlcyA9IGludCggKCAkUGFyYW17VG90YWx9IC8gJFBhZ2VTaG93biApICsgMC45OTk5OSApOwogICAgICAgICRTdGFydEhpdCA9ICggKCAkUGFnZXMgLSAxICkgKiAkUGFnZVNob3duICkgKyAxOwogICAgfQoKICAgICMgZ2V0IGRhdGEgc2VsZWN0aW9uCiAgICBteSAlRGF0YTsKICAgIG15ICRDb25maWcgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnUHJlZmVyZW5jZXNHcm91cHMnKTsKICAgIGlmICggJENvbmZpZyAmJiAkQ29uZmlnLT57JEdyb3VwfSAmJiAkQ29uZmlnLT57JEdyb3VwfS0+e0RhdGF9ICkgewogICAgICAgICVEYXRhID0gJXsgJENvbmZpZy0+eyRHcm91cH0tPntEYXRhfSB9OwogICAgfQoKICAgICMgc2V0IHBhZ2UgbGltaXQgYW5kIGJ1aWxkIHBhZ2UgbmF2CiAgICBteSAkTGltaXQgPSAkUGFyYW17TGltaXR9IHx8IDIwXzAwMDsKICAgIG15ICVQYWdlTmF2ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5QYWdlTmF2QmFyKAogICAgICAgIExpbWl0ICAgICA9PiAkTGltaXQsCiAgICAgICAgU3RhcnRIaXQgID0+ICRTdGFydEhpdCwKICAgICAgICBQYWdlU2hvd24gPT4gJFBhZ2VTaG93biwKICAgICAgICBBbGxIaXRzICAgPT4gJFBhcmFte1RvdGFsfSB8fCAwLAogICAgICAgIEFjdGlvbiAgICA9PiAnQWN0aW9uPScgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntBY3Rpb259LAogICAgICAgIExpbmsgICAgICA9PiAkUGFyYW17TGlua1BhZ2V9LAogICAgKTsKCiAgICAjIGJ1aWxkIHNob3duIGZhcSBhcnRpY2xlcyBvbiBhIHBhZ2UKICAgICRQYXJhbXtSZXF1ZXN0ZWRVUkx9ICAgID0gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn0iOwogICAgJFBhcmFte0dyb3VwfSAgICAgICAgICAgPSAkR3JvdXA7CiAgICAkUGFyYW17UHJlZmVyZW5jZXNLZXl9ICA9ICRQYWdlU2hvd25QcmVmZXJlbmNlc0tleTsKICAgICRQYXJhbXtQYWdlU2hvd25TdHJpbmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBOYW1lICAgICAgID0+ICRQYWdlU2hvd25QcmVmZXJlbmNlc0tleSwKICAgICAgICBTZWxlY3RlZElEID0+ICRQYWdlU2hvd24sCiAgICAgICAgRGF0YSAgICAgICA9PiBcJURhdGEsCiAgICApOwoKICAgICMgc3RvcmUgbGFzdCBvdmVydmlldyBzY3JlZW4gKGZvciBiYWNrIG1lbnUgYWN0aW9uKQogICAgJFNlbGYtPntTZXNzaW9uT2JqZWN0fS0+VXBkYXRlU2Vzc2lvbklEKAogICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgS2V5ICAgICAgID0+ICdMYXN0U2NyZWVuT3ZlcnZpZXcnLAogICAgICAgIFZhbHVlICAgICA9PiAkUGFyYW17UmVxdWVzdGVkVVJMfSwKICAgICk7CiAgICAkU2VsZi0+e1Nlc3Npb25PYmplY3R9LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICBLZXkgICAgICAgPT4gJ0xhc3RTY3JlZW5WaWV3JywKICAgICAgICBWYWx1ZSAgICAgPT4gJFBhcmFte1JlcXVlc3RlZFVSTH0sCiAgICApOwoKICAgICMgYnVpbGQgbmF2YmFyIGNvbnRlbnQKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXInLAogICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICk7CgogICAgIyBsb29wIG92ZXIgY29uZmlndXJlZCBiYWNrZW5kcwogICAgZm9yIG15ICRCYWNrZW5kICggc29ydCBrZXlzICV7JEJhY2tlbmRzfSApIHsKCiAgICAgICAgIyBidWlsZCBuYXZiYXIgdmlldyBtb2RlCiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgJXsgJEJhY2tlbmRzLT57JEJhY2tlbmR9IH0sCiAgICAgICAgICAgICAgICBGaWx0ZXIgPT4gJFBhcmFte0ZpbHRlcn0sCiAgICAgICAgICAgICAgICBWaWV3ICAgPT4gJEJhY2tlbmQsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjdXJyZW50IHZpZXcgaXMgY29uZmlndXJlZCBpbiBiYWNrZW5kCiAgICAgICAgaWYgKCAkVmlldyBlcSAkQmFja2VuZCApIHsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyVmlld01vZGVTZWxlY3RlZCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgJXsgJEJhY2tlbmRzLT57JEJhY2tlbmR9IH0sCiAgICAgICAgICAgICAgICAgICAgRmlsdGVyID0+ICRQYXJhbXtGaWx0ZXJ9LAogICAgICAgICAgICAgICAgICAgIFZpZXcgICA9PiAkQmFja2VuZCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZU5vdFNlbGVjdGVkJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAleyAkQmFja2VuZHMtPnskQmFja2VuZH0gfSwKICAgICAgICAgICAgICAgICAgICBGaWx0ZXIgPT4gJFBhcmFte0ZpbHRlcn0sCiAgICAgICAgICAgICAgICAgICAgVmlldyAgID0+ICRCYWNrZW5kLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBpZiBwYWdlIG5hdiBpcyBhdmFpbGFibGUKICAgIGlmICglUGFnZU5hdikgewogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZU5hdkJhcicsCiAgICAgICAgICAgIERhdGEgPT4gXCVQYWdlTmF2LAogICAgICAgICk7CgogICAgICAgICMgZG9uJ3Qgc2hvdyBjb250ZXh0IHNldHRpbmdzIGluIEFKQVggY2FzZSAoZS4gZy4gaW4gY3VzdG9tZXIgRkFRIGhpc3RvcnkpLAogICAgICAgICMgYmVjYXVzZSB0aGUgc3VibWl0IHdpdGggcGFnZSByZWxvYWQgd2lsbCBub3Qgd29yayB0aGVyZQogICAgICAgIGlmICggISRQYXJhbXtBSkFYfSApIHsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRleHRTZXR0aW5ncycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlUGFnZU5hdiwKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGJ1aWxkIGh0bWwgY29udGVudAogICAgbXkgJE91dHB1dE5hdkJhciA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFPdmVydmlld05hdkJhcicsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgVmlldyA9PiAkVmlldywKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgIH0sCiAgICApOwoKICAgICMgY3JlYXRlIG91dHB1dAogICAgbXkgJE91dHB1dFJhdyAuPSAkT3V0cHV0TmF2QmFyOwoKICAgICMgbG9hZCBtb2R1bGUKICAgIGlmICggISRTZWxmLT57TWFpbk9iamVjdH0tPlJlcXVpcmUoICRCYWNrZW5kcy0+eyRWaWV3fS0+e01vZHVsZX0gKSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GYXRhbEVycm9yKCk7CiAgICB9CgogICAgIyBjaGVjayBmb3IgYmFja2VuZCBvYmplY3QKICAgIG15ICRPYmplY3QgPSAkQmFja2VuZHMtPnskVmlld30tPntNb2R1bGV9LT5uZXcoICV7JFNlbGZ9ICk7CiAgICByZXR1cm4gaWYgISRPYmplY3Q7CgogICAgIyBydW4gbW9kdWxlCiAgICBteSAkT3V0cHV0ID0gJE9iamVjdC0+UnVuKAogICAgICAgICVQYXJhbSwKICAgICAgICBMaW1pdCAgICAgPT4gJExpbWl0LAogICAgICAgIFN0YXJ0SGl0ICA9PiAkU3RhcnRIaXQsCiAgICAgICAgUGFnZVNob3duID0+ICRQYWdlU2hvd24sCiAgICAgICAgQWxsSGl0cyAgID0+ICRQYXJhbXtUb3RhbH0gfHwgMCwKICAgICAgICBGcm9udGVuZCAgPT4gJEZyb250ZW5kLAogICAgKTsKCiAgICAkT3V0cHV0UmF3IC49ICRPdXRwdXQ7CgogICAgIyBjcmVhdGUgb3ZlcnZpZXcgbmF2IGJhcgogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhcicsCiAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICk7CgogICAgIyByZXR1cm4gY29udGVudCBpZiBhdmFpbGFibGUKICAgIHJldHVybiAkT3V0cHV0UmF3Owp9CgoxOwo=
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRTGFuZ3VhZ2UucG0gLSB0aGUgZmFxIGxhbmd1YWdlIG1hbmFnZW1lbnQgbW9kdWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OkFnZW50RkFRTGFuZ3VhZ2U7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OkZBUTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBjaGVjayBuZWVkZWQgb2JqZWN0cwogICAgZm9yIG15ICRPYmplY3QgKHF3KFBhcmFtT2JqZWN0IERCT2JqZWN0IExheW91dE9iamVjdCBMb2dPYmplY3QgQ29uZmlnT2JqZWN0KSkgewogICAgICAgIGlmICggISRTZWxmLT57JE9iamVjdH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RmF0YWxFcnJvciggTWVzc2FnZSA9PiAiR290IG5vICRPYmplY3QhIiApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNyZWF0ZSBhZGRpdGlvbmFsIG9iamVjdHMKICAgICRTZWxmLT57RkFRT2JqZWN0fSA9IEtlcm5lbDo6U3lzdGVtOjpGQVEtPm5ldyglUGFyYW0pOwoKICAgICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpNdWx0aUxhbmd1YWdlJyk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBwZXJtaXNzaW9uIGNoZWNrCiAgICBpZiAoICEkU2VsZi0+e0FjY2Vzc1J3fSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gJ1lvdSBuZWVkIHJ3IHBlcm1pc3Npb24hJywKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKICAgIG15ICVHZXRQYXJhbTsKCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIGNoYW5nZQogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0NoYW5nZScgJiYgJFNlbGYtPntNdWx0aUxhbmd1YWdlfSApIHsKCiAgICAgICAgIyBnZXQgdGhlIExhbmd1YWdlSUQKICAgICAgICBteSAkTGFuZ3VhZ2VJRCA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0xhbmd1YWdlSUQnICkgfHwgJyc7CgogICAgICAgICMgY2hlY2sgcmVxdWlyZWQgcGFyYW1ldGVycwogICAgICAgIGlmICggISRMYW5ndWFnZUlEICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJ05vIExhbmd1YWdlSUQgaXMgZ2l2ZW4hJywKICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBsYW5ndWFnZSBkYXRhCiAgICAgICAgbXkgJUxhbmd1YWdlRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+TGFuZ3VhZ2VHZXQoCiAgICAgICAgICAgIExhbmd1YWdlSUQgPT4gJExhbmd1YWdlSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgaGVhZGVyCiAgICAgICAgbXkgJE91dHB1dCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+SGVhZGVyKCk7CiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk5hdmlnYXRpb25CYXIoKTsKCiAgICAgICAgIyBvdXRwdXQgY2hhbmdlIGxhbmd1YWdlIHNjcmVlbgogICAgICAgICRTZWxmLT5fRWRpdCgKICAgICAgICAgICAgQWN0aW9uID0+ICdDaGFuZ2UnLAogICAgICAgICAgICAlTGFuZ3VhZ2VEYXRhLAogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRTGFuZ3VhZ2UnLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgZm9vdGVyCiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZvb3RlcigpOwoKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIGNoYW5nZSBhY3Rpb24KICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdDaGFuZ2VBY3Rpb24nICYmICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gKSB7CgogICAgICAgICMgY2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24KICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgIyBoZWFkZXIKICAgICAgICBteSAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5IZWFkZXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TmF2aWdhdGlvbkJhcigpOwoKICAgICAgICAjIGNoZWNrIGZvciBuYW1lIGFuZCBsYW5ndWFnZSBpZAogICAgICAgIGZvciBteSAkUGFyYW1OYW1lIChxdyhMYW5ndWFnZUlEIE5hbWUpKSB7CgogICAgICAgICAgICAjIHN0b3JlIG5lZWRlZCBwYXJhbWV0ZXJzIGluICVHZXRQYXJhbSB0byBtYWtlIGl0IHJlbG9hZGFibGUKICAgICAgICAgICAgJEdldFBhcmFteyRQYXJhbU5hbWV9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW1OYW1lICk7CgogICAgICAgICAgICBpZiAoICEkR2V0UGFyYW17JFBhcmFtTmFtZX0gKSB7CgogICAgICAgICAgICAgICAgIyBodG1sIG91dHB1dAogICAgICAgICAgICAgICAgJFNlbGYtPl9FZGl0KAogICAgICAgICAgICAgICAgICAgIEFjdGlvbiAgICAgICAgICAgICAgICAgPT4gJ0NoYW5nZScsCiAgICAgICAgICAgICAgICAgICAgTmFtZVNlcnZlckVycm9yICAgICAgICA9PiAnU2VydmVyRXJyb3InLAogICAgICAgICAgICAgICAgICAgIE5hbWVTZXJ2ZXJFcnJvck1lc3NhZ2UgPT4gJ1RoZSBuYW1lIGlzIHJlcXVpcmVkIScsCiAgICAgICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUUxhbmd1YWdlJywKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBmb290ZXIKICAgICAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Gb290ZXIoKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBmb3IgZHVwbGljYXRlIGxhbmd1YWdlIG5hbWUKICAgICAgICBteSAkTGFuZ3VhZ2VFeGlzdHNBbHJlYWR5ID0gJFNlbGYtPntGQVFPYmplY3R9LT5MYW5ndWFnZUR1cGxpY2F0ZUNoZWNrKAogICAgICAgICAgICBOYW1lICAgICAgID0+ICRHZXRQYXJhbXtOYW1lfSwKICAgICAgICAgICAgTGFuZ3VhZ2VJRCA9PiAkR2V0UGFyYW17TGFuZ3VhZ2VJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgc2hvdyB0aGUgZWRpdCBzY3JlZW4gYWdhaW4KICAgICAgICBpZiAoJExhbmd1YWdlRXhpc3RzQWxyZWFkeSkgewoKICAgICAgICAgICAgIyBodG1sIG91dHB1dAogICAgICAgICAgICAkU2VsZi0+X0VkaXQoCiAgICAgICAgICAgICAgICBBY3Rpb24gICAgICAgICAgICAgICAgID0+ICdDaGFuZ2UnLAogICAgICAgICAgICAgICAgTmFtZVNlcnZlckVycm9yICAgICAgICA9PiAnU2VydmVyRXJyb3InLAogICAgICAgICAgICAgICAgTmFtZVNlcnZlckVycm9yTWVzc2FnZSA9PiAnVGhpcyBsYW5ndWFnZSBhbHJlYWR5IGV4aXN0cyEnLAogICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICApOwogICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUUxhbmd1YWdlJywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBmb290ZXIKICAgICAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZvb3RlcigpOwoKICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgfQoKICAgICAgICAjIHVwZGF0ZSB0aGUgbGFuZ3VhZ2UKICAgICAgICBteSAkTGFuZ3VhZ2VVcGRhdGVTdWNjZXNzZnVsID0gJFNlbGYtPntGQVFPYmplY3R9LT5MYW5ndWFnZVVwZGF0ZSgKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgZXJyb3IKICAgICAgICBpZiAoICEkTGFuZ3VhZ2VVcGRhdGVTdWNjZXNzZnVsICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KCiAgICAgICAgIyBzaG93IG92ZXJ2aWV3CiAgICAgICAgJFNlbGYtPl9PdmVydmlldygpOwogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Ob3RpZnkoCiAgICAgICAgICAgIEluZm8gPT4gJ0ZBUSBsYW5ndWFnZSB1cGRhdGVkIScsCiAgICAgICAgKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRTGFuZ3VhZ2UnLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICApOwoKICAgICAgICAjIGZvb3RlcgogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Gb290ZXIoKTsKCiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBhZGQKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBZGQnICYmICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gKSB7CgogICAgICAgICMgZ2V0IHRoZSBuZXcgbmFtZQogICAgICAgICRHZXRQYXJhbXtOYW1lfSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ05hbWUnICk7CgogICAgICAgICMgaGVhZGVyCiAgICAgICAgbXkgJE91dHB1dCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+SGVhZGVyKCk7CiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk5hdmlnYXRpb25CYXIoKTsKCiAgICAgICAgIyBodG1sIG91dHB1dAogICAgICAgICRTZWxmLT5fRWRpdCgKICAgICAgICAgICAgQWN0aW9uID0+ICdBZGQnLAogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRTGFuZ3VhZ2UnLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgZm9vdGVyCiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZvb3RlcigpOwoKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIGFkZCBhY3Rpb24KICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBZGRBY3Rpb24nICYmICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gKSB7CgogICAgICAgICMgY2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24KICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgIyBoZWFkZXIKICAgICAgICBteSAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5IZWFkZXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TmF2aWdhdGlvbkJhcigpOwoKICAgICAgICAjIGdldCB0aGUgbmFtZQogICAgICAgICRHZXRQYXJhbXtOYW1lfSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ05hbWUnICk7CgogICAgICAgICMgY2hlY2sgZm9yIG5hbWUKICAgICAgICBpZiAoICEkR2V0UGFyYW17TmFtZX0gKSB7CgogICAgICAgICAgICAjIGh0bWwgb3V0cHV0CiAgICAgICAgICAgICRTZWxmLT5fRWRpdCgKICAgICAgICAgICAgICAgIEFjdGlvbiAgICAgICAgICAgICAgICAgPT4gJ0FkZCcsCiAgICAgICAgICAgICAgICBOYW1lU2VydmVyRXJyb3IgICAgICAgID0+ICdTZXJ2ZXJFcnJvcicsCiAgICAgICAgICAgICAgICBOYW1lU2VydmVyRXJyb3JNZXNzYWdlID0+ICdUaGUgbmFtZSBpcyByZXF1aXJlZCEnLAogICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICApOwogICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUUxhbmd1YWdlJywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBmb290ZXIKICAgICAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZvb3RlcigpOwoKICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGZvciBkdXBsaWNhdGUgbGFuZ3VhZ2UgbmFtZQogICAgICAgIG15ICRMYW5ndWFnZUV4aXN0c0FscmVhZHkgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkxhbmd1YWdlRHVwbGljYXRlQ2hlY2soCiAgICAgICAgICAgIE5hbWUgICA9PiAkR2V0UGFyYW17TmFtZX0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBzaG93IHRoZSBlZGl0IHNjcmVlbiBhZ2FpbgogICAgICAgIGlmICgkTGFuZ3VhZ2VFeGlzdHNBbHJlYWR5KSB7CiAgICAgICAgICAgICRTZWxmLT5fRWRpdCgKICAgICAgICAgICAgICAgIEFjdGlvbiAgICAgICAgICAgICAgICAgPT4gJ0FkZCcsCiAgICAgICAgICAgICAgICBOYW1lU2VydmVyRXJyb3IgICAgICAgID0+ICdTZXJ2ZXJFcnJvcicsCiAgICAgICAgICAgICAgICBOYW1lU2VydmVyRXJyb3JNZXNzYWdlID0+ICJUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISIsCiAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRTGFuZ3VhZ2UnLAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGZvb3RlcgogICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Rm9vdGVyKCk7CgogICAgICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgICAgICB9CgogICAgICAgICMgYWRkIHRoZSBuZXcgbGFuZ3VhZ2UKICAgICAgICBteSAkTGFuZ3VhZ2VBZGRTdWNjZXNzZnVsID0gJFNlbGYtPntGQVFPYmplY3R9LT5MYW5ndWFnZUFkZCgKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgZXJyb3IKICAgICAgICBpZiAoICEkTGFuZ3VhZ2VBZGRTdWNjZXNzZnVsICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KCiAgICAgICAgIyBzaG93IG92ZXJ2aWV3CiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk5vdGlmeSgKICAgICAgICAgICAgSW5mbyA9PiAnRkFRIGxhbmd1YWdlIGFkZGVkIScsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+X092ZXJ2aWV3KCk7CiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUUxhbmd1YWdlJywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGZvb3RlcgogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Gb290ZXIoKTsKCiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBkZWxldGUKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdEZWxldGUnICYmICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gKSB7CgogICAgICAgICMgZ2V0IHRoZSBMYW5ndWFnZUlECiAgICAgICAgbXkgJExhbmd1YWdlSUQgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdMYW5ndWFnZUlEJyApIHx8ICcnOwoKICAgICAgICAjIGNoZWNrIHJlcXVpcmVkIHBhcmFtZXRlcnMKICAgICAgICBpZiAoICEkTGFuZ3VhZ2VJRCApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICdObyBMYW5ndWFnZUlEIGlzIGdpdmVuIScsCiAgICAgICAgICAgICAgICBDb21tZW50ID0+ICdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgbGFuZ3VhZ2UgZGF0YQogICAgICAgIG15ICVMYW5ndWFnZURhdGEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkxhbmd1YWdlR2V0KAogICAgICAgICAgICBMYW5ndWFnZUlEID0+ICRMYW5ndWFnZUlELAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoICElTGFuZ3VhZ2VEYXRhICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KCiAgICAgICAgbXkgQEFmZmVjdGVkSXRlbXMgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUVNlYXJjaCgKICAgICAgICAgICAgTGFuZ3VhZ2VJRHMgPT4gWyRMYW5ndWFnZUlEXSwKICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGNhbGwgRGVsZXRlIGJsb2NrCiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRGVsZXRlJywKICAgICAgICAgICAgRGF0YSA9PiB7JUxhbmd1YWdlRGF0YX0sCiAgICAgICAgKTsKCiAgICAgICAgIyBzZXQgdGhlIGRpYWxvZyB0eXBlLiBBcyBkZWZhdWx0LCB0aGUgZGlhbG9nIHdpbGwgaGF2ZSAyIGJ1dHRvbnM6IFllcyBhbmQgTm8KICAgICAgICBteSAkRGlhbG9nVHlwZSA9ICdDb25maXJtYXRpb24nOwoKICAgICAgICAjIGRpc3BsYXkgbGlzdCBvZiBhZmZlY3RlZCBGQVEgYXJ0aWNsZXMKICAgICAgICBpZiAoQEFmZmVjdGVkSXRlbXMpIHsKCiAgICAgICAgICAgICMgc2V0IHRoZSBkaWFsb2cgdHlwZSB0byBoYXZlIG9ubHkgMSBidXR0b246IE9rCiAgICAgICAgICAgICREaWFsb2dUeXBlID0gJ01lc3NhZ2UnOwoKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0FmZmVjdGVkSXRlbXMnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIElURU1JRDoKICAgICAgICAgICAgZm9yIG15ICRJdGVtSUQgKEBBZmZlY3RlZEl0ZW1zKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgZmFxIGFydGljbGUKICAgICAgICAgICAgICAgIG15ICVGQVFEYXRhID0gJFNlbGYtPntGQVFPYmplY3R9LT5GQVFHZXQoCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkSXRlbUlELAogICAgICAgICAgICAgICAgICAgIEl0ZW1GaWVsZHMgPT4gMCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjaGVjayBmYXEgYXJ0aWNsZQogICAgICAgICAgICAgICAgbmV4dCBJVEVNSUQgaWYgISVGQVFEYXRhOwoKICAgICAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQWZmZWN0ZWRJdGVtc1JvdycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdOb0FmZmVjdGVkSXRlbXMnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7JUxhbmd1YWdlRGF0YX0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIG91dHB1dCBjb250ZW50CiAgICAgICAgbXkgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUUxhbmd1YWdlJywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHt9LAogICAgICAgICk7CgogICAgICAgICMgYnVpbGQgdGhlIHJldHVybmVkIGRhdGEgc3RydWN0dXJlCiAgICAgICAgbXkgJURhdGEgPSAoCiAgICAgICAgICAgIEhUTUwgICAgICAgPT4gJE91dHB1dCwKICAgICAgICAgICAgRGlhbG9nVHlwZSA9PiAkRGlhbG9nVHlwZSwKICAgICAgICApOwoKICAgICAgICAjIHJldHVybiBKU09OLVN0cmluZyBiZWNhdXNlIG9mIEFKQVgtTW9kZQogICAgICAgIG15ICRPdXRwdXRKU09OID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5KU09ORW5jb2RlKCBEYXRhID0+IFwlRGF0YSApOwoKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5BdHRhY2htZW50KAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD0nIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57Q2hhcnNldH0sCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRPdXRwdXRKU09OLAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICAgICAgTm9DYWNoZSAgICAgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgZGVsZXRlIGFjdGlvbgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0RlbGV0ZUFjdGlvbicgJiYgJFNlbGYtPntNdWx0aUxhbmd1YWdlfSApIHsKCiAgICAgICAgIyBnZXQgdGhlIExhbmd1YWdlSUQKICAgICAgICBteSAkTGFuZ3VhZ2VJRCA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0xhbmd1YWdlSUQnICkgfHwgJyc7CgogICAgICAgICMgY2hlY2sgcmVxdWlyZWQgcGFyYW1ldGVycwogICAgICAgIGlmICggISRMYW5ndWFnZUlEICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJ05vIExhbmd1YWdlSUQgaXMgZ2l2ZW4hJywKICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBsYW5ndWFnZSBkYXRhCiAgICAgICAgbXkgJUxhbmd1YWdlRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+TGFuZ3VhZ2VHZXQoCiAgICAgICAgICAgIExhbmd1YWdlSUQgPT4gJExhbmd1YWdlSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIGlmICggISVMYW5ndWFnZURhdGEgKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKCk7CiAgICAgICAgfQoKICAgICAgICAjIGRlbGV0ZSB0aGUgbGFuZ3VhZ2UKICAgICAgICBteSAkQ291bGREZWxldGVMYW5ndWFnZSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+TGFuZ3VhZ2VEZWxldGUoCiAgICAgICAgICAgIExhbmd1YWdlSUQgPT4gJExhbmd1YWdlSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIGlmICgkQ291bGREZWxldGVMYW5ndWFnZSkgewoKICAgICAgICAgICAgIyByZWRpcmVjdCB0byBleHBsb3Jlciwgd2hlbiB0aGUgZGVsZXRpb24gd2FzIHN1Y2Nlc3NmdWwKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+UmVkaXJlY3QoCiAgICAgICAgICAgICAgICBPUCA9PiAiQWN0aW9uPUFnZW50RkFRTGFuZ3VhZ2UiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICMgc2hvdyBlcnJvciBtZXNzYWdlLCB3aGVuIGRlbGV0ZSBmYWlsZWQKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICJXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBsYW5ndWFnZSAkTGFuZ3VhZ2VJRCEiLAogICAgICAgICAgICAgICAgQ29tbWVudCA9PiAnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJywKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgb3ZlcnZpZXcKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNlIHsKCiAgICAgICAgIyBoZWFkZXIKICAgICAgICBteSAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5IZWFkZXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TmF2aWdhdGlvbkJhcigpOwoKICAgICAgICAjIGh0bWwgb3V0cHV0CiAgICAgICAgJFNlbGYtPl9PdmVydmlldygpOwogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFMYW5ndWFnZScsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBmb290ZXIKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Rm9vdGVyKCk7CgogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQp9CgpzdWIgX0VkaXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3JywKICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICApOwoKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soIE5hbWUgPT4gJ0FjdGlvbkxpc3QnICk7CiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKCBOYW1lID0+ICdBY3Rpb25PdmVydmlldycgKTsKCiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3VXBkYXRlJywKICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICApOwoKICAgICMgc2hvd3MgaGVhZGVyCiAgICBpZiAoICRQYXJhbXtBY3Rpb259IGVxICdDaGFuZ2UnICkgewogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soIE5hbWUgPT4gJ0hlYWRlckVkaXQnICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKCBOYW1lID0+ICdIZWFkZXJBZGQnICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBfT3ZlcnZpZXcgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkT3V0cHV0ID0gJyc7CgogICAgIyBvdXRwdXQgb3ZlcnZpZXcgYmxvY2tzCiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKCBOYW1lID0+ICdPdmVydmlldycgKTsKCiAgICBpZiAoICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gKSB7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jayggTmFtZSA9PiAnQWN0aW9uTGlzdCcgKTsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKCBOYW1lID0+ICdBY3Rpb25BZGQnICk7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jayggTmFtZSA9PiAnT3ZlcnZpZXdSZXN1bHQnICk7CgogICAgICAgICMgZ2V0IGxhbmd1YWdlcyBsaXN0CiAgICAgICAgbXkgJUxhbmd1YWdlcyA9ICRTZWxmLT57RkFRT2JqZWN0fS0+TGFuZ3VhZ2VMaXN0KAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgaWYgdGhlcmUgYXJlIGFueSBsYW5ndWFnZXMsIHRoZXkgYXJlIHNob3duCiAgICAgICAgaWYgKCVMYW5ndWFnZXMpIHsKICAgICAgICAgICAgZm9yIG15ICRMYW5ndWFnZUlEICggc29ydCB7ICRMYW5ndWFnZXN7JGF9IGNtcCAkTGFuZ3VhZ2VzeyRifSB9IGtleXMgJUxhbmd1YWdlcyApIHsKCiAgICAgICAgICAgICAgICAjIGdldCBsYW5ndWFnZXMgcmVzdWx0CiAgICAgICAgICAgICAgICBteSAlTGFuZ3VhZ2VEYXRhID0gJFNlbGYtPntGQVFPYmplY3R9LT5MYW5ndWFnZUdldCgKICAgICAgICAgICAgICAgICAgICBMYW5ndWFnZUlEID0+ICRMYW5ndWFnZUlELAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjb3V0cHV0IHJlc3VsdHMKICAgICAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdSZXN1bHRSb3cnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4geyVMYW5ndWFnZURhdGF9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBvdGhlcndpc2UgYSBubyBkYXRhIGZvdW5kIG1zZyBpcyBkaXNwbGF5ZWQKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jayggTmFtZSA9PiAnTm9EYXRhRm91bmRNc2cnICk7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jayggTmFtZSA9PiAnRGlzYWJsZWQnICk7CiAgICB9Cn0KCjE7Cg==
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUHJpbnQucG0gLSBwcmludCBsYXlvdXQgZm9yIGFnZW50IGludGVyZmFjZQojIENvcHlyaWdodCAoQykgMjAwMS0yMDEzIE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpBZ2VudEZBUVByaW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHM7CnVzZSBLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdDsKdXNlIEtlcm5lbDo6U3lzdGVtOjpQREY7CnVzZSBLZXJuZWw6OlN5c3RlbTo6RkFROwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE5lZWRlZCAoCiAgICAgICAgcXcoUGFyYW1PYmplY3QgREJPYmplY3QgTGF5b3V0T2JqZWN0IExvZ09iamVjdCBRdWV1ZU9iamVjdCBDb25maWdPYmplY3QgVXNlck9iamVjdCBNYWluT2JqZWN0KQogICAgICAgICkKICAgIHsKICAgICAgICBpZiAoICEkU2VsZi0+eyROZWVkZWR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZhdGFsRXJyb3IoIE1lc3NhZ2UgPT4gIkdvdCBubyAkTmVlZGVkISIgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBjcmVhdGUgYWRpdGlvbmFsIG9iamVjdHMKICAgICRTZWxmLT57SFRNTFV0aWxzT2JqZWN0fSA9IEtlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMtPm5ldyglUGFyYW0pOwogICAgJFNlbGYtPntMaW5rT2JqZWN0fSAgICAgID0gS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QtPm5ldyglUGFyYW0pOwogICAgJFNlbGYtPntQREZPYmplY3R9ICAgICAgID0gS2VybmVsOjpTeXN0ZW06OlBERi0+bmV3KCVQYXJhbSk7CiAgICAkU2VsZi0+e0ZBUU9iamVjdH0gICAgICAgPSBLZXJuZWw6OlN5c3RlbTo6RkFRLT5uZXcoJVBhcmFtKTsKCiAgICAjIHNldCBkZWZhdWx0IGludGVyZmFjZSBzZXR0aW5ncwogICAgJFNlbGYtPntJbnRlcmZhY2V9ID0gJFNlbGYtPntGQVFPYmplY3R9LT5TdGF0ZVR5cGVHZXQoCiAgICAgICAgTmFtZSAgID0+ICdpbnRlcm5hbCcsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUxpc3QoCiAgICAgICAgVHlwZXMgID0+ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkFnZW50OjpTdGF0ZVR5cGVzJyksCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBnZXQgZGVmYXVsdCBvcHRpb25zCiAgICAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6TXVsdGlMYW5ndWFnZScpOwogICAgJFNlbGYtPntWb3Rpbmd9ICAgICAgICA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OlZvdGluZycpOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgcGVybWlzc2lvbiBjaGVjawogICAgaWYgKCAhJFNlbGYtPntBY2Nlc3NSb30gKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICBNZXNzYWdlICAgID0+ICdZb3UgbmVlZCBybyBwZXJtaXNzaW9uIScsCiAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkT3V0cHV0OwoKICAgICMgZ2V0IHBhcmFtcwogICAgbXkgJUdldFBhcmFtOwogICAgJEdldFBhcmFte0l0ZW1JRH0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdJdGVtSUQnICk7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRHZXRQYXJhbXtJdGVtSUR9ICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+ICdObyBJdGVtSUQgaXMgZ2l2ZW4hJywKICAgICAgICAgICAgQ29tbWVudCA9PiAnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluLicsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBGQVEgaXRlbSBkYXRhCiAgICBteSAlRkFRRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRR2V0KAogICAgICAgIEl0ZW1JRCAgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgSXRlbUZpZWxkcyA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICggISVGQVFEYXRhICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKCk7CiAgICB9CgogICAgIyBjaGVjayB1c2VyIHBlcm1pc3Npb24KICAgIG15ICRQZXJtaXNzaW9uID0gJFNlbGYtPntGQVFPYmplY3R9LT5DaGVja0NhdGVnb3J5VXNlclBlcm1pc3Npb24oCiAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkRkFRRGF0YXtDYXRlZ29yeUlEfSwKICAgICk7CgogICAgIyBzaG93IGVycm9yIG1lc3NhZ2UKICAgIGlmICggISRQZXJtaXNzaW9uICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgTWVzc2FnZSAgICA9PiAnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBjYXRlZ29yeSEnLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgbGlua2VkIG9iamVjdHMKICAgIG15ICRMaW5rTGlzdFdpdGhEYXRhID0gJFNlbGYtPntMaW5rT2JqZWN0fS0+TGlua0xpc3RXaXRoRGF0YSgKICAgICAgICBPYmplY3QgPT4gJ0ZBUScsCiAgICAgICAgS2V5ICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgIFN0YXRlICA9PiAnVmFsaWQnLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IGxpbmsgdHlwZSBsaXN0CiAgICBteSAlTGlua1R5cGVMaXN0ID0gJFNlbGYtPntMaW5rT2JqZWN0fS0+VHlwZUxpc3QoCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBnZXQgdGhlIGxpbmsgZGF0YQogICAgbXkgJUxpbmtEYXRhOwogICAgaWYgKCAkTGlua0xpc3RXaXRoRGF0YSAmJiByZWYgJExpbmtMaXN0V2l0aERhdGEgZXEgJ0hBU0gnICYmICV7JExpbmtMaXN0V2l0aERhdGF9ICkgewogICAgICAgICVMaW5rRGF0YSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua09iamVjdFRhYmxlQ3JlYXRlKAogICAgICAgICAgICBMaW5rTGlzdFdpdGhEYXRhID0+ICRMaW5rTGlzdFdpdGhEYXRhLAogICAgICAgICAgICBWaWV3TW9kZSAgICAgICAgID0+ICdTaW1wbGVSYXcnLAogICAgICAgICk7CiAgICB9CgogICAgIyBwcmVwYXJlIGZpZWxkcyBkYXRhCiAgICBGSUVMRDoKICAgIGZvciBteSAkRmllbGQgKHF3KEZpZWxkMSBGaWVsZDIgRmllbGQzIEZpZWxkNCBGaWVsZDUgRmllbGQ2KSkgewogICAgICAgIG5leHQgRklFTEQgaWYgISRGQVFEYXRheyRGaWVsZH07CgogICAgICAgICMgbm8gcXVvdGluZyBpZiBodG1sIHZpZXcgaXMgZW5hYmxlZAogICAgICAgIG5leHQgRklFTEQgaWYgJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6SXRlbTo6SFRNTCcpOwoKICAgICAgICAjIGh0bWwgcXVvdGluZwogICAgICAgICRGQVFEYXRheyRGaWVsZH0gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkFzY2lpMkh0bWwoCiAgICAgICAgICAgIE5ld0xpbmUgICAgICAgID0+IDAsCiAgICAgICAgICAgIFRleHQgICAgICAgICAgID0+ICRGQVFEYXRheyRGaWVsZH0sCiAgICAgICAgICAgIFZNYXggICAgICAgICAgID0+IDUwMDAsCiAgICAgICAgICAgIEhUTUxSZXN1bHRNb2RlID0+IDEsCiAgICAgICAgICAgIExpbmtGZWF0dXJlICAgID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCB1c2VyIGluZm8gKENyZWF0ZWRCeSkKICAgIG15ICVVc2VySW5mbyA9ICRTZWxmLT57VXNlck9iamVjdH0tPkdldFVzZXJEYXRhKAogICAgICAgIFVzZXJJRCA9PiAkRkFRRGF0YXtDcmVhdGVkQnl9CiAgICApOwogICAgJFBhcmFte0NyZWF0ZWRCeUxvZ2lufSA9ICRVc2VySW5mb3tVc2VyTG9naW59OwoKICAgICMgZ2V0IHVzZXIgaW5mbyAoQ2hhbmdlZEJ5KQogICAgJVVzZXJJbmZvID0gJFNlbGYtPntVc2VyT2JqZWN0fS0+R2V0VXNlckRhdGEoCiAgICAgICAgVXNlcklEID0+ICRGQVFEYXRhe0NoYW5nZWRCeX0KICAgICk7CiAgICAkUGFyYW17Q2hhbmdlZEJ5TG9naW59ID0gJFVzZXJJbmZve1VzZXJMb2dpbn07CgogICAgIyBnZW5lcmF0ZSBwZGYgb3V0cHV0CiAgICBpZiAoICRTZWxmLT57UERGT2JqZWN0fSApIHsKICAgICAgICBteSAkUHJpbnRlZEJ5ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ3ByaW50ZWQgYnknKTsKICAgICAgICBteSAkVGltZSAgICAgID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoIFRlbXBsYXRlID0+ICckRW52eyJUaW1lIn0nICk7CiAgICAgICAgbXkgJFVybCAgICAgICA9ICcgJzsKICAgICAgICBpZiAoICRFTlZ7UkVRVUVTVF9VUkl9ICkgewogICAgICAgICAgICAkVXJsID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0h0dHBUeXBlJykgLiAnOi8vJwogICAgICAgICAgICAgICAgLiAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRlFETicpCiAgICAgICAgICAgICAgICAuICRFTlZ7UkVRVUVTVF9VUkl9OwogICAgICAgIH0KICAgICAgICBteSAlUGFnZTsKCiAgICAgICAgIyBnZXQgbWF4aW11bSBudW1iZXIgb2YgcGFnZXMKICAgICAgICAkUGFnZXtNYXhQYWdlc30gPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnUERGOjpNYXhQYWdlcycpOwogICAgICAgIGlmICggISRQYWdle01heFBhZ2VzfSB8fCAkUGFnZXtNYXhQYWdlc30gPCAxIHx8ICRQYWdle01heFBhZ2VzfSA+IDEwMDAgKSB7CiAgICAgICAgICAgICRQYWdle01heFBhZ2VzfSA9IDEwMDsKICAgICAgICB9CiAgICAgICAgbXkgJEhlYWRlclJpZ2h0ICA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkZBUUhvb2snKSAuICRGQVFEYXRhe051bWJlcn07CiAgICAgICAgbXkgJEhlYWRsaW5lTGVmdCA9ICRIZWFkZXJSaWdodDsKICAgICAgICBteSAkVGl0bGUgICAgICAgID0gJEhlYWRlclJpZ2h0OwogICAgICAgIGlmICggJEZBUURhdGF7VGl0bGV9ICkgewogICAgICAgICAgICAkSGVhZGxpbmVMZWZ0ID0gJEZBUURhdGF7VGl0bGV9OwogICAgICAgICAgICAkVGl0bGUgLj0gJyAvICcgLiAkRkFRRGF0YXtUaXRsZX07CiAgICAgICAgfQoKICAgICAgICAkUGFnZXtNYXJnaW5Ub3B9ICAgID0gMzA7CiAgICAgICAgJFBhZ2V7TWFyZ2luUmlnaHR9ICA9IDQwOwogICAgICAgICRQYWdle01hcmdpbkJvdHRvbX0gPSA0MDsKICAgICAgICAkUGFnZXtNYXJnaW5MZWZ0fSAgID0gNDA7CiAgICAgICAgJFBhZ2V7SGVhZGVyUmlnaHR9ICA9ICRIZWFkZXJSaWdodDsKICAgICAgICAkUGFnZXtIZWFkbGluZUxlZnR9ID0gJEhlYWRsaW5lTGVmdDsKICAgICAgICAkUGFnZXtIZWFkbGluZVJpZ2h0fQogICAgICAgICAgICA9ICRQcmludGVkQnkgLiAnICcKICAgICAgICAgICAgLiAkU2VsZi0+e1VzZXJGaXJzdG5hbWV9IC4gJyAnCiAgICAgICAgICAgIC4gJFNlbGYtPntVc2VyTGFzdG5hbWV9IC4gJyAoJwogICAgICAgICAgICAuICRTZWxmLT57VXNlckVtYWlsfSAuICcpICcKICAgICAgICAgICAgLiAkVGltZTsKICAgICAgICAkUGFnZXtGb290ZXJMZWZ0fSA9ICRVcmw7CiAgICAgICAgJFBhZ2V7UGFnZVRleHR9ICAgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCgnUGFnZScpOwogICAgICAgICRQYWdle1BhZ2VDb3VudH0gID0gMTsKCiAgICAgICAgIyBjcmVhdGUgbmV3IHBkZiBkb2N1bWVudAogICAgICAgICRTZWxmLT57UERGT2JqZWN0fS0+RG9jdW1lbnROZXcoCiAgICAgICAgICAgIFRpdGxlICA9PiAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnUHJvZHVjdCcpIC4gJzogJyAuICRUaXRsZSwKICAgICAgICAgICAgRW5jb2RlID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e1VzZXJDaGFyc2V0fSwKICAgICAgICApOwoKICAgICAgICAjIGNyZWF0ZSBmaXJzdCBwZGYgcGFnZQogICAgICAgICRTZWxmLT57UERGT2JqZWN0fS0+UGFnZU5ldygKICAgICAgICAgICAgJVBhZ2UsIEZvb3RlclJpZ2h0ID0+ICRQYWdle1BhZ2VUZXh0fSAuICcgJyAuICRQYWdle1BhZ2VDb3VudH0sCiAgICAgICAgKTsKICAgICAgICAkUGFnZXtQYWdlQ291bnR9Kys7CgogICAgICAgICMgdHlwZSBvZiBwcmludCB0YWcKICAgICAgICBteSAkUHJpbnRUYWcgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCgnRkFRIEFydGljbGUgUHJpbnQnKTsKCiAgICAgICAgIyBvdXRwdXQgaGVhZGxpbmUKICAgICAgICAkU2VsZi0+e1BERk9iamVjdH0tPlRleHQoCiAgICAgICAgICAgIFRleHQgICAgID0+ICRQcmludFRhZywKICAgICAgICAgICAgSGVpZ2h0ICAgPT4gOSwKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0N1dCcsCiAgICAgICAgICAgIEZvbnQgICAgID0+ICdQcm9wb3J0aW9uYWxCb2xkJywKICAgICAgICAgICAgQWxpZ24gICAgPT4gJ3JpZ2h0JywKICAgICAgICAgICAgRm9udFNpemUgPT4gOSwKICAgICAgICAgICAgQ29sb3IgICAgPT4gJyM2NjY2NjYnLAogICAgICAgICk7CgogICAgICAgICRTZWxmLT57UERGT2JqZWN0fS0+UG9zaXRpb25TZXQoCiAgICAgICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgICAgICBZICAgID0+IC02LAogICAgICAgICk7CgogICAgICAgICMgb3V0cHV0IGZhcSBpbmZvcm1hdGlvbgogICAgICAgICRTZWxmLT5fUERGT3V0cHV0RkFRSGVhZGVySW5mbygKICAgICAgICAgICAgUGFnZURhdGEgPT4gXCVQYWdlLAogICAgICAgICAgICBGQVFEYXRhICA9PiBcJUZBUURhdGEsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAkRkFRRGF0YXtLZXl3b3Jkc30gKSB7CiAgICAgICAgICAgICRTZWxmLT5fUERGT3V0cHV0S2V5d29yZHMoCiAgICAgICAgICAgICAgICBQYWdlRGF0YSA9PiBcJVBhZ2UsCiAgICAgICAgICAgICAgICBGQVFEYXRhICA9PiBcJUZBUURhdGEsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+X1BERk91cHV0RkFRQ29udGVudCgKICAgICAgICAgICAgUGFnZURhdGEgPT4gXCVQYWdlLAogICAgICAgICAgICBGQVFEYXRhICA9PiBcJUZBUURhdGEsCiAgICAgICAgKTsKCiAgICAgICAgIyBvdXRwdXQgbGlua2VkIG9iamVjdHMKICAgICAgICBpZiAoJUxpbmtEYXRhKSB7CiAgICAgICAgICAgICRTZWxmLT5fUERGT3V0cHV0TGlua2VkT2JqZWN0cygKICAgICAgICAgICAgICAgIFBhZ2VEYXRhICAgICA9PiBcJVBhZ2UsCiAgICAgICAgICAgICAgICBMaW5rRGF0YSAgICAgPT4gXCVMaW5rRGF0YSwKICAgICAgICAgICAgICAgIExpbmtUeXBlTGlzdCA9PiBcJUxpbmtUeXBlTGlzdCwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgcmV0dXJuIHRoZSBwZGYgZG9jdW1lbnQKICAgICAgICBteSAkRmlsZW5hbWUgPSAnRkFRXycgLiAkRkFRRGF0YXtOdW1iZXJ9OwogICAgICAgIG15ICggJHMsICRtLCAkaCwgJEQsICRNLCAkWSApID0gJFNlbGYtPntUaW1lT2JqZWN0fS0+U3lzdGVtVGltZTJEYXRlKAogICAgICAgICAgICBTeXN0ZW1UaW1lID0+ICRTZWxmLT57VGltZU9iamVjdH0tPlN5c3RlbVRpbWUoKSwKICAgICAgICApOwogICAgICAgICRNID0gc3ByaW50ZiggIiUwMmQiLCAkTSApOwogICAgICAgICREID0gc3ByaW50ZiggIiUwMmQiLCAkRCApOwogICAgICAgICRoID0gc3ByaW50ZiggIiUwMmQiLCAkaCApOwogICAgICAgICRtID0gc3ByaW50ZiggIiUwMmQiLCAkbSApOwogICAgICAgIG15ICRQREZTdHJpbmcgPSAkU2VsZi0+e1BERk9iamVjdH0tPkRvY3VtZW50T3V0cHV0KCk7CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QXR0YWNobWVudCgKICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJEZpbGVuYW1lIC4gIl8iIC4gIiRZLSRNLSREIiAuICJfIiAuICIkaC0kbS5wZGYiLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAiYXBwbGljYXRpb24vcGRmIiwKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJFBERlN0cmluZywKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2F0dGFjaG1lbnQnLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZW5lcmF0ZSBodG1sIG91dHB1dAogICAgZWxzZSB7CgogICAgICAgICMgb3V0cHV0IGhlYWRlcgogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5QcmludEhlYWRlciggVmFsdWUgPT4gJEZBUURhdGF7TnVtYmVyfSApOwoKICAgICAgICAjIHNob3cgRkFRIENvbnRlbnQKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZBUUNvbnRlbnRTaG93KAogICAgICAgICAgICBGQVFPYmplY3QgICAgICAgPT4gJFNlbGYtPntGQVFPYmplY3R9LAogICAgICAgICAgICBJbnRlcmZhY2VTdGF0ZXMgPT4gJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9LAogICAgICAgICAgICBGQVFEYXRhICAgICAgICAgPT4geyVGQVFEYXRhfSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoJUxpbmtEYXRhKSB7CgogICAgICAgICAgICAjIG91dHB1dCBsaW5rIGRhdGEKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0xpbmsnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgZm9yIG15ICRMaW5rVHlwZUxpbmtEaXJlY3Rpb24gKCBzb3J0IHsgbGMgJGEgY21wIGxjICRiIH0ga2V5cyAlTGlua0RhdGEgKSB7CgogICAgICAgICAgICAgICAgIyBpbnZlc3RpZ2F0ZSBsaW5rIHR5cGUgbmFtZQogICAgICAgICAgICAgICAgbXkgQExpbmtEYXRhID0gc3BsaXQgcXs6On0sICRMaW5rVHlwZUxpbmtEaXJlY3Rpb247CgogICAgICAgICAgICAgICAgIyBvdXRwdXQgbGluayB0eXBlIGRhdGEKICAgICAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnTGlua1R5cGUnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBMaW5rVHlwZU5hbWUgPT4gJExpbmtUeXBlTGlzdHsgJExpbmtEYXRhWzBdIH0tPnsgJExpbmtEYXRhWzFdIC4gJ05hbWUnIH0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBleHRyYWN0IG9iamVjdCBsaXN0CiAgICAgICAgICAgICAgICBteSAkT2JqZWN0TGlzdCA9ICRMaW5rRGF0YXskTGlua1R5cGVMaW5rRGlyZWN0aW9ufTsKCiAgICAgICAgICAgICAgICBmb3IgbXkgJE9iamVjdCAoIHNvcnQgeyBsYyAkYSBjbXAgbGMgJGIgfSBrZXlzICV7JE9iamVjdExpc3R9ICkgewoKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJEl0ZW0gKCBAeyAkT2JqZWN0TGlzdC0+eyRPYmplY3R9IH0gKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIG91dHB1dCBsaW5rIHR5cGUgZGF0YQogICAgICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnTGlua1R5cGVSb3cnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlua1N0cmcgPT4gJEl0ZW0tPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBzaG93IGZhcQogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPl9IVE1MTWFzaygKICAgICAgICAgICAgRkFRSUQgPT4gJEdldFBhcmFte0ZBUUlEfSwKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAlVXNlckluZm8sCiAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICk7CgogICAgICAgICMgYWRkIGZvb3RlcgogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5QcmludEZvb3RlcigpOwoKICAgICAgICAjIHJldHVybiBvdXRwdXQKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KfQoKc3ViIF9QREZPdXRwdXRGQVFIZWFkZXJJbmZvIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhQYWdlRGF0YSBGQVFEYXRhKSkgewogICAgICAgIGlmICggIWRlZmluZWQoICRQYXJhbXskTmVlZGVkfSApICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZyggUHJpb3JpdHkgPT4gJ2Vycm9yJywgTWVzc2FnZSA9PiAiTmVlZCAkTmVlZGVkISIgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KICAgIG15ICVGQVFEYXRhID0gJXsgJFBhcmFte0ZBUURhdGF9IH07CiAgICBteSAlUGFnZSAgICA9ICV7ICRQYXJhbXtQYWdlRGF0YX0gfTsKCiAgICAjIGNyZWF0ZSBsZWZ0IHRhYmxlCiAgICBteSAkVGFibGVMZWZ0ID0gWwogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ0NhdGVnb3J5JykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCAkRkFRRGF0YXtDYXRlZ29yeU5hbWV9ICksCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdTdGF0ZScpIC4gJzonLAogICAgICAgICAgICBWYWx1ZSA9PiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCggJEZBUURhdGF7U3RhdGV9ICksCiAgICAgICAgfSwKICAgIF07CgogICAgIyBsYW5ndWFnZSByb3csIGZlYXR1cmUgaXMgZW5hYmxlZAogICAgaWYgKCAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ICkgewogICAgICAgIG15ICRSb3cgPSB7CiAgICAgICAgICAgIEtleSAgID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdMYW5ndWFnZScpIC4gJzonLAogICAgICAgICAgICBWYWx1ZSA9PiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCggJEZBUURhdGF7TGFuZ3VhZ2V9ICksCiAgICAgICAgfTsKICAgICAgICBwdXNoIEB7JFRhYmxlTGVmdH0sICRSb3c7CiAgICB9CgogICAgIyBhcHByb3ZhbCBzdGF0ZSByb3csIGZlYXR1cmUgaXMgZW5hYmxlZAogICAgaWYgKCAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpBcHByb3ZhbFJlcXVpcmVkJykgKSB7CiAgICAgICAgJEZBUURhdGF7QXBwcm92YWx9ID0gJEZBUURhdGF7QXBwcm92ZWR9ID8gJ1llcycgOiAnTm8nOwogICAgICAgIG15ICRSb3cgPSB7CiAgICAgICAgICAgIEtleSAgID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdBcHByb3ZhbCcpIC4gJzonLAogICAgICAgICAgICBWYWx1ZSA9PiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCggJEZBUURhdGF7QXBwcm92YWx9ICksCiAgICAgICAgfTsKICAgICAgICBwdXNoIEB7JFRhYmxlTGVmdH0sICRSb3c7CiAgICB9CgogICAgIyBjcmVhdGUgcmlnaHQgdGFibGUKICAgIG15ICRUYWJsZVJpZ2h0OwoKICAgICMgdm90aW5nIHJvd3MsIGZlYXRyZSBpcyBlbmFibGVkCiAgICBpZiAoICRTZWxmLT57Vm90aW5nfSApIHsKICAgICAgICAkVGFibGVSaWdodCA9IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ1ZvdGVzJykgLiAnOicsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkRkFRRGF0YXtWb3Rlc30sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdSZXN1bHQnKSAuICc6JywKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRGQVFEYXRhe1ZvdGVSZXN1bHR9IC4gIiAlIiwKICAgICAgICAgICAgfSwKICAgICAgICBdOwogICAgfQoKICAgICMgbGFzdCB1cGRhdGUgcm93CiAgICBwdXNoIEB7JFRhYmxlUmlnaHR9LCB7CiAgICAgICAgS2V5ICAgPT4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ0xhc3QgdXBkYXRlJykgLiAnOicsCiAgICAgICAgVmFsdWUgPT4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlID0+ICckVGltZUxvbmd7IiREYXRheyJDaGFuZ2VkIn0ifScsCiAgICAgICAgICAgIERhdGEgICAgID0+IFwlRkFRRGF0YSwKICAgICAgICApLAogICAgfTsKCiAgICBteSAkUm93cyA9IEB7JFRhYmxlTGVmdH07CiAgICBpZiAoIEB7JFRhYmxlUmlnaHR9ID4gJFJvd3MgKSB7CiAgICAgICAgJFJvd3MgPSBAeyRUYWJsZVJpZ2h0fTsKICAgIH0KCiAgICBteSAlVGFibGVQYXJhbTsKICAgIGZvciBteSAkUm93ICggMSAuLiAkUm93cyApIHsKICAgICAgICAkUm93LS07CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0NvbnRlbnR9ICAgICAgICAgPSAkVGFibGVMZWZ0LT5bJFJvd10tPntLZXl9OwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVswXXtGb250fSAgICAgICAgICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsxXXtDb250ZW50fSAgICAgICAgID0gJFRhYmxlTGVmdC0+WyRSb3ddLT57VmFsdWV9OwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsyXXtDb250ZW50fSAgICAgICAgID0gJyAnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsyXXtCYWNrZ3JvdW5kQ29sb3J9ID0gJyNGRkZGRkYnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVszXXtDb250ZW50fSAgICAgICAgID0gJFRhYmxlUmlnaHQtPlskUm93XS0+e0tleX07CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzNde0ZvbnR9ICAgICAgICAgICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzRde0NvbnRlbnR9ICAgICAgICAgPSAkVGFibGVSaWdodC0+WyRSb3ddLT57VmFsdWV9OwogICAgfQoKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzBde1dpZHRofSA9IDgwOwogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMV17V2lkdGh9ID0gMTcwLjU7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVsyXXtXaWR0aH0gPSA0OwogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bM117V2lkdGh9ID0gODA7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVs0XXtXaWR0aH0gPSAxNzAuNTsKCiAgICAkVGFibGVQYXJhbXtUeXBlfSAgICAgICAgICAgICAgICA9ICdDdXQnOwogICAgJFRhYmxlUGFyYW17Qm9yZGVyfSAgICAgICAgICAgICAgPSAwOwogICAgJFRhYmxlUGFyYW17Rm9udFNpemV9ICAgICAgICAgICAgPSA2OwogICAgJFRhYmxlUGFyYW17QmFja2dyb3VuZENvbG9yRXZlbn0gPSAnI0FBQUFBQSc7CiAgICAkVGFibGVQYXJhbXtCYWNrZ3JvdW5kQ29sb3JPZGR9ICA9ICcjREREREREJzsKICAgICRUYWJsZVBhcmFte1BhZGRpbmd9ICAgICAgICAgICAgID0gMTsKICAgICRUYWJsZVBhcmFte1BhZGRpbmdUb3B9ICAgICAgICAgID0gMzsKICAgICRUYWJsZVBhcmFte1BhZGRpbmdCb3R0b219ICAgICAgID0gMzsKCiAgICAjIG91dHB1dCB0YWJsZQogICAgZm9yICggJFBhZ2V7UGFnZUNvdW50fSAuLiAkUGFnZXtNYXhQYWdlc30gKSB7CgogICAgICAgICMgb3V0cHV0IHRhYmxlIChvciBhIGZyYWdtZW50IG9mIGl0KQogICAgICAgICVUYWJsZVBhcmFtID0gJFNlbGYtPntQREZPYmplY3R9LT5UYWJsZSggJVRhYmxlUGFyYW0sICk7CgogICAgICAgICMgc3RvcCBvdXRwdXQgb3Igb3V0cHV0IG5leHQgcGFnZQogICAgICAgIGlmICggJFRhYmxlUGFyYW17U3RhdGV9ICkgewogICAgICAgICAgICBsYXN0OwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlbGYtPntQREZPYmplY3R9LT5QYWdlTmV3KAogICAgICAgICAgICAgICAgJVBhZ2UsIEZvb3RlclJpZ2h0ID0+ICRQYWdle1BhZ2VUZXh0fSAuICcgJyAuICRQYWdle1BhZ2VDb3VudH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRQYWdle1BhZ2VDb3VudH0rKzsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMTsKfQoKc3ViIF9QREZPdXRwdXRMaW5rZWRPYmplY3RzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhQYWdlRGF0YSBMaW5rRGF0YSBMaW5rVHlwZUxpc3QpKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCggJFBhcmFteyROZWVkZWR9ICkgKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKCBQcmlvcml0eSA9PiAnZXJyb3InLCBNZXNzYWdlID0+ICJOZWVkICROZWVkZWQhIiApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICVQYWdlICAgICA9ICV7ICRQYXJhbXtQYWdlRGF0YX0gfTsKICAgIG15ICVUeXBlTGlzdCA9ICV7ICRQYXJhbXtMaW5rVHlwZUxpc3R9IH07CiAgICBteSAlVGFibGVQYXJhbTsKICAgIG15ICRSb3cgPSAwOwoKICAgIGZvciBteSAkTGlua1R5cGVMaW5rRGlyZWN0aW9uICggc29ydCB7IGxjICRhIGNtcCBsYyAkYiB9IGtleXMgJXsgJFBhcmFte0xpbmtEYXRhfSB9ICkgewoKICAgICAgICAjIGludmVzdGlnYXRlIGxpbmsgdHlwZSBuYW1lCiAgICAgICAgbXkgQExpbmtEYXRhID0gc3BsaXQgcXs6On0sICRMaW5rVHlwZUxpbmtEaXJlY3Rpb247CiAgICAgICAgbXkgJExpbmtUeXBlTmFtZSA9ICRUeXBlTGlzdHsgJExpbmtEYXRhWzBdIH0tPnsgJExpbmtEYXRhWzFdIC4gJ05hbWUnIH07CiAgICAgICAgJExpbmtUeXBlTmFtZSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCRMaW5rVHlwZU5hbWUpOwoKICAgICAgICAjIGRlZmluZSBoZWFkbGluZQogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVswXXtDb250ZW50fSA9ICRMaW5rVHlwZU5hbWUgLiAnOic7CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsxXXtDb250ZW50fSA9ICcnOwoKICAgICAgICAjIGV4dHJhY3Qgb2JqZWN0IGxpc3QKICAgICAgICBteSAkT2JqZWN0TGlzdCA9ICRQYXJhbXtMaW5rRGF0YX0tPnskTGlua1R5cGVMaW5rRGlyZWN0aW9ufTsKCiAgICAgICAgZm9yIG15ICRPYmplY3QgKCBzb3J0IHsgbGMgJGEgY21wIGxjICRiIH0ga2V5cyAleyRPYmplY3RMaXN0fSApIHsKCiAgICAgICAgICAgIGZvciBteSAkSXRlbSAoIEB7ICRPYmplY3RMaXN0LT57JE9iamVjdH0gfSApIHsKCiAgICAgICAgICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMF17Q29udGVudH0gfHw9ICcnOwogICAgICAgICAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzFde0NvbnRlbnR9ID0gJEl0ZW0tPntUaXRsZX0gfHwgJyc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29udGludWUgewogICAgICAgICAgICAgICAgJFJvdysrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzBde1dpZHRofSA9IDgwOwogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMV17V2lkdGh9ID0gNDMxOwoKICAgICMgc2V0IG5ldyBwb3NpdGlvbgogICAgJFNlbGYtPntQREZPYmplY3R9LT5Qb3NpdGlvblNldCgKICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICBZICAgID0+IC0xNSwKICAgICk7CgogICAgIyBvdXRwdXQgaGVhZGxpbmUKICAgICRTZWxmLT57UERGT2JqZWN0fS0+VGV4dCgKICAgICAgICBUZXh0ICAgICA9PiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCgnTGlua2VkIE9iamVjdHMnKSwKICAgICAgICBIZWlnaHQgICA9PiA3LAogICAgICAgIFR5cGUgICAgID0+ICdDdXQnLAogICAgICAgIEZvbnQgICAgID0+ICdQcm9wb3J0aW9uYWxCb2xkSXRhbGljJywKICAgICAgICBGb250U2l6ZSA9PiA3LAogICAgICAgIENvbG9yICAgID0+ICcjNjY2NjY2JywKICAgICk7CgogICAgIyBzZXQgbmV3IHBvc2l0aW9uCiAgICAkU2VsZi0+e1BERk9iamVjdH0tPlBvc2l0aW9uU2V0KAogICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgIFkgICAgPT4gLTQsCiAgICApOwoKICAgICMgdGFibGUgcGFyYW1zCiAgICAkVGFibGVQYXJhbXtUeXBlfSAgICAgICAgICAgID0gJ0N1dCc7CiAgICAkVGFibGVQYXJhbXtCb3JkZXJ9ICAgICAgICAgID0gMDsKICAgICRUYWJsZVBhcmFte0ZvbnRTaXplfSAgICAgICAgPSA2OwogICAgJFRhYmxlUGFyYW17QmFja2dyb3VuZENvbG9yfSA9ICcjREREREREJzsKICAgICRUYWJsZVBhcmFte1BhZGRpbmd9ICAgICAgICAgPSAxOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ1RvcH0gICAgICA9IDM7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nQm90dG9tfSAgID0gMzsKCiAgICAjIG91dHB1dCB0YWJsZQogICAgZm9yICggJFBhZ2V7UGFnZUNvdW50fSAuLiAkUGFnZXtNYXhQYWdlc30gKSB7CgogICAgICAgICMgb3V0cHV0IHRhYmxlIChvciBhIGZyYWdtZW50IG9mIGl0KQogICAgICAgICVUYWJsZVBhcmFtID0gJFNlbGYtPntQREZPYmplY3R9LT5UYWJsZSggJVRhYmxlUGFyYW0sICk7CgogICAgICAgICMgc3RvcCBvdXRwdXQgb3Igb3V0cHV0IG5leHQgcGFnZQogICAgICAgIGlmICggJFRhYmxlUGFyYW17U3RhdGV9ICkgewogICAgICAgICAgICBsYXN0OwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlbGYtPntQREZPYmplY3R9LT5QYWdlTmV3KAogICAgICAgICAgICAgICAgJVBhZ2UsIEZvb3RlclJpZ2h0ID0+ICRQYWdle1BhZ2VUZXh0fSAuICcgJyAuICRQYWdle1BhZ2VDb3VudH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRQYWdle1BhZ2VDb3VudH0rKzsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMTsKfQoKc3ViIF9QREZPdXRwdXRLZXl3b3JkcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoUGFnZURhdGEgRkFRRGF0YSkpIHsKICAgICAgICBpZiAoICFkZWZpbmVkKCAkUGFyYW17JE5lZWRlZH0gKSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coIFByaW9yaXR5ID0+ICdlcnJvcicsIE1lc3NhZ2UgPT4gIk5lZWQgJE5lZWRlZCEiICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CiAgICBteSAlRkFRRGF0YSA9ICV7ICRQYXJhbXtGQVFEYXRhfSB9OwogICAgbXkgJVBhZ2UgICAgPSAleyAkUGFyYW17UGFnZURhdGF9IH07CiAgICBteSAlVGFibGVQYXJhbTsKCiAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bMF1bMF17Q29udGVudH0gPSAkRkFRRGF0YXtLZXl3b3Jkc30gfHwgJyc7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVswXXtXaWR0aH0gPSA1MTE7CgogICAgIyBzZXQgbmV3IHBvc2l0aW9uCiAgICAkU2VsZi0+e1BERk9iamVjdH0tPlBvc2l0aW9uU2V0KAogICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgIFkgICAgPT4gLTE1LAogICAgKTsKCiAgICAjIG91dHB1dCBoZWFkbGluZQogICAgJFNlbGYtPntQREZPYmplY3R9LT5UZXh0KAogICAgICAgIFRleHQgICAgID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdLZXl3b3JkcycpLAogICAgICAgIEhlaWdodCAgID0+IDcsCiAgICAgICAgVHlwZSAgICAgPT4gJ0N1dCcsCiAgICAgICAgRm9udCAgICAgPT4gJ1Byb3BvcnRpb25hbEJvbGRJdGFsaWMnLAogICAgICAgIEZvbnRTaXplID0+IDcsCiAgICAgICAgQ29sb3IgICAgPT4gJyM2NjY2NjYnLAogICAgKTsKCiAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICRTZWxmLT57UERGT2JqZWN0fS0+UG9zaXRpb25TZXQoCiAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgWSAgICA9PiAtNCwKICAgICk7CgogICAgIyB0YWJsZSBwYXJhbXMKICAgICRUYWJsZVBhcmFte1R5cGV9ICAgICAgICAgICAgPSAnQ3V0JzsKICAgICRUYWJsZVBhcmFte0JvcmRlcn0gICAgICAgICAgPSAwOwogICAgJFRhYmxlUGFyYW17Rm9udFNpemV9ICAgICAgICA9IDY7CiAgICAkVGFibGVQYXJhbXtCYWNrZ3JvdW5kQ29sb3J9ID0gJyNEREREREQnOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ30gICAgICAgICA9IDE7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nVG9wfSAgICAgID0gMzsKICAgICRUYWJsZVBhcmFte1BhZGRpbmdCb3R0b219ICAgPSAzOwoKICAgICMgb3V0cHV0IHRhYmxlCiAgICBmb3IgKCAkUGFnZXtQYWdlQ291bnR9IC4uICRQYWdle01heFBhZ2VzfSApIHsKCiAgICAgICAgIyBvdXRwdXQgdGFibGUgKG9yIGEgZnJhZ21lbnQgb2YgaXQpCiAgICAgICAgJVRhYmxlUGFyYW0gPSAkU2VsZi0+e1BERk9iamVjdH0tPlRhYmxlKCAlVGFibGVQYXJhbSwgKTsKCiAgICAgICAgIyBzdG9wIG91dHB1dCBvciBvdXRwdXQgbmV4dCBwYWdlCiAgICAgICAgaWYgKCAkVGFibGVQYXJhbXtTdGF0ZX0gKSB7CiAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VsZi0+e1BERk9iamVjdH0tPlBhZ2VOZXcoCiAgICAgICAgICAgICAgICAlUGFnZSwgRm9vdGVyUmlnaHQgPT4gJFBhZ2V7UGFnZVRleHR9IC4gJyAnIC4gJFBhZ2V7UGFnZUNvdW50fSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFBhZ2V7UGFnZUNvdW50fSsrOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAxOwp9CgpzdWIgX1BERk91cHV0RkFRQ29udGVudCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgcGFyYW1ldGVycwogICAgZm9yIG15ICRQYXJhbU5hbWUgKHF3KFBhZ2VEYXRhIEZBUURhdGEpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRQYXJhbU5hbWV9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkUGFyYW1OYW1lISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJUZBUURhdGEgPSAleyAkUGFyYW17RkFRRGF0YX0gfTsKICAgIG15ICVQYWdlICAgID0gJXsgJFBhcmFte1BhZ2VEYXRhfSB9OwoKICAgICMgZ2V0IHRoZSBjb25maWcgb2YgRkFRIGZpZWxkcyB0aGF0IHNob3VsZCBiZSBzaG93bgogICAgbXkgJUZpZWxkczsKICAgIEZJRUxEOgogICAgZm9yIG15ICROdW1iZXIgKCAxIC4uIDYgKSB7CgogICAgICAgICMgZ2V0IGNvbmZpZyBvZiBGQVEgZmllbGQKICAgICAgICBteSAkQ29uZmlnID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoICdGQVE6Okl0ZW06OkZpZWxkJyAuICROdW1iZXIgKTsKCiAgICAgICAgIyBza2lwIG92ZXIgbm90IHNob3duIGZpZWxkcwogICAgICAgIG5leHQgRklFTEQgaWYgISRDb25maWctPntTaG93fTsKCiAgICAgICAgIyBzdG9yZSBvbmx5IHRoZSBjb25maWcgb2YgZmllbGRzIHRoYXQgc2hvdWxkIGJlIHNob3duCiAgICAgICAgJEZpZWxkc3sgIkZpZWxkIiAuICROdW1iZXIgfSA9ICRDb25maWc7CiAgICB9CgogICAgIyBzb3J0IHNob3duIGZpZWxkcyBieSBwcmlvcml0eQogICAgRklFTEQ6CiAgICBmb3IgbXkgJEZpZWxkICggc29ydCB7ICRGaWVsZHN7JGF9LT57UHJpb30gPD0+ICRGaWVsZHN7JGJ9LT57UHJpb30gfSBrZXlzICVGaWVsZHMgKSB7CgogICAgICAgICMgZ2V0IHRoZSBzdGF0ZSB0eXBlIGRhdGEgb2YgdGhpcyBmaWVsZAogICAgICAgIG15ICRTdGF0ZVR5cGVEYXRhID0gJFNlbGYtPntGQVFPYmplY3R9LT5TdGF0ZVR5cGVHZXQoCiAgICAgICAgICAgIE5hbWUgICA9PiAkRmllbGRzeyRGaWVsZH0tPntTaG93fSwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBteSAlVGFibGVQYXJhbTsKCiAgICAgICAgIyBjb252ZXJ0IEhUTUwgdG8gYXNjaWkKICAgICAgICBteSAkQXNjaWlGaWVsZCA9ICRTZWxmLT57SFRNTFV0aWxzT2JqZWN0fS0+VG9Bc2NpaSggU3RyaW5nID0+ICRGQVFEYXRheyRGaWVsZH0gKTsKCiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WzBdWzBde0NvbnRlbnR9ID0gJEFzY2lpRmllbGQgfHwgJyc7CiAgICAgICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMF17V2lkdGh9ID0gNTExOwoKICAgICAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICAgICAkU2VsZi0+e1BERk9iamVjdH0tPlBvc2l0aW9uU2V0KAogICAgICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICAgICAgWSAgICA9PiAtMTUsCiAgICAgICAgKTsKCiAgICAgICAgIyB0cmFuc2xhdGUgdGhlIGZpZWxkIG5hbWUgYW5kIHN0YXRlCiAgICAgICAgbXkgJEZpZWxkTmFtZSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCAkRmllbGRzeyRGaWVsZH0tPnsnQ2FwdGlvbid9ICkKICAgICAgICAgICAgLiAnICgnCiAgICAgICAgICAgIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoICRTdGF0ZVR5cGVEYXRhLT57TmFtZX0gKQogICAgICAgICAgICAuICcpJzsKCiAgICAgICAgIyBvdXRwdXQgaGVhZGxpbmUKICAgICAgICAkU2VsZi0+e1BERk9iamVjdH0tPlRleHQoCiAgICAgICAgICAgIFRleHQgICAgID0+ICRGaWVsZE5hbWUsCiAgICAgICAgICAgIEhlaWdodCAgID0+IDcsCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdDdXQnLAogICAgICAgICAgICBGb250ICAgICA9PiAnUHJvcG9ydGlvbmFsQm9sZEl0YWxpYycsCiAgICAgICAgICAgIEZvbnRTaXplID0+IDcsCiAgICAgICAgICAgIENvbG9yICAgID0+ICcjNjY2NjY2JywKICAgICAgICApOwoKICAgICAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICAgICAkU2VsZi0+e1BERk9iamVjdH0tPlBvc2l0aW9uU2V0KAogICAgICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICAgICAgWSAgICA9PiAtNCwKICAgICAgICApOwoKICAgICAgICAjIHRhYmxlIHBhcmFtcwogICAgICAgICRUYWJsZVBhcmFte1R5cGV9ICAgICAgICAgICAgPSAnQ3V0JzsKICAgICAgICAkVGFibGVQYXJhbXtCb3JkZXJ9ICAgICAgICAgID0gMDsKICAgICAgICAkVGFibGVQYXJhbXtGb250U2l6ZX0gICAgICAgID0gNjsKICAgICAgICAkVGFibGVQYXJhbXtCYWNrZ3JvdW5kQ29sb3J9ID0gJyNEREREREQnOwogICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmd9ICAgICAgICAgPSAxOwogICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmdUb3B9ICAgICAgPSAzOwogICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmdCb3R0b219ICAgPSAzOwoKICAgICAgICAjIG91dHB1dCB0YWJsZQogICAgICAgIGZvciAoICRQYWdle1BhZ2VDb3VudH0gLi4gJFBhZ2V7TWF4UGFnZXN9ICkgewoKICAgICAgICAgICAgIyBvdXRwdXQgdGFibGUgKG9yIGEgZnJhZ21lbnQgb2YgaXQpCiAgICAgICAgICAgICVUYWJsZVBhcmFtID0gJFNlbGYtPntQREZPYmplY3R9LT5UYWJsZSggJVRhYmxlUGFyYW0sICk7CgogICAgICAgICAgICAjIHN0b3Agb3V0cHV0IG9yIG91dHB1dCBuZXh0IHBhZ2UKICAgICAgICAgICAgaWYgKCAkVGFibGVQYXJhbXtTdGF0ZX0gKSB7CiAgICAgICAgICAgICAgICBsYXN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFNlbGYtPntQREZPYmplY3R9LT5QYWdlTmV3KAogICAgICAgICAgICAgICAgICAgICVQYWdlLCBGb290ZXJSaWdodCA9PiAkUGFnZXtQYWdlVGV4dH0gLiAnICcgLiAkUGFnZXtQYWdlQ291bnR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRQYWdle1BhZ2VDb3VudH0rKzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAxOwp9CgpzdWIgX0hUTUxNYXNrIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBzaG93IExhbmd1YWdlCiAgICBpZiAoICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gKSB7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnTGFuZ3VhZ2UnLAogICAgICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGFwcHJvdmFsIHN0YXRlCiAgICBpZiAoICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkFwcHJvdmFsUmVxdWlyZWQnKSApIHsKICAgICAgICAkUGFyYW17QXBwcm92YWx9ID0gJFBhcmFte0FwcHJvdmVkfSA/ICdZZXMnIDogJ05vJzsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdQcmludEFwcHJvdmFsJywKICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICB9CgogICAgIyBzaG93IHJhdGluZwogICAgaWYgKCAkU2VsZi0+e1ZvdGluZ30gKSB7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUmF0aW5nJywKICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFQcmludCcsCiAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICApOwp9CgoxOwo=
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUmljaFRleHQucG0gLSB0byBoYW5kbGUgQUpBWCByZXF1ZXN0cyBmb3IgaW5zZXJ0aW5nIHRoZSByaWNodGV4dCBvZiBhbiBGQVEKIyBhcnRpY2xlIGludG8gYSB0aWNrZXQgYXJ0aWNsZQojIENvcHlyaWdodCAoQykgMjAwMS0yMDEzIE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpBZ2VudEZBUVJpY2hUZXh0OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIE1JTUU6OkJhc2U2NCBxdygpOwp1c2UgS2VybmVsOjpTeXN0ZW06OkZBUTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpDdXN0b21lclVzZXI7CnVzZSBLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzOwp1c2UgS2VybmVsOjpTeXN0ZW06OkpTT047CnVzZSBLZXJuZWw6OlN5c3RlbTo6V2ViOjpVcGxvYWRDYWNoZTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBjaGVjayBuZWVkZWQgb2JqZWN0cwogICAgZm9yIG15ICROZWVkZWQgKHF3KFBhcmFtT2JqZWN0IERCT2JqZWN0IExheW91dE9iamVjdCBMb2dPYmplY3QgQ29uZmlnT2JqZWN0KSkKICAgIHsKICAgICAgICBpZiAoICEkU2VsZi0+eyROZWVkZWR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZhdGFsRXJyb3IoIE1lc3NhZ2UgPT4gIkdvdCBubyAkTmVlZGVkISIgKTsKICAgICAgICB9CiAgICB9CgogICAgJFNlbGYtPntGQVFPYmplY3R9ICAgICAgICAgID0gS2VybmVsOjpTeXN0ZW06OkZBUS0+bmV3KCVQYXJhbSk7CiAgICAkU2VsZi0+e0N1c3RvbWVyVXNlck9iamVjdH0gPSBLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJVc2VyLT5uZXcoJVBhcmFtKTsKICAgICRTZWxmLT57SFRNTFV0aWxzT2JqZWN0fSAgICA9IEtlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMtPm5ldyglUGFyYW0pOwogICAgJFNlbGYtPntKU09OT2JqZWN0fSAgICAgICAgID0gS2VybmVsOjpTeXN0ZW06OkpTT04tPm5ldyglUGFyYW0pOwogICAgJFNlbGYtPntVcGxvYWRDYWNoZU9iamVjdH0gID0gS2VybmVsOjpTeXN0ZW06OldlYjo6VXBsb2FkQ2FjaGUtPm5ldyglUGFyYW0pOwoKICAgICMgZ2V0IGZvcm0gaWQKICAgICRTZWxmLT57Rm9ybUlEfSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0Zvcm1JRCcgKTsKCiAgICAjIGNyZWF0ZSBmb3JtIGlkCiAgICBpZiAoICEkU2VsZi0+e0Zvcm1JRH0gKSB7CiAgICAgICAgJFNlbGYtPntGb3JtSUR9ID0gJFNlbGYtPntVcGxvYWRDYWNoZU9iamVjdH0tPkZvcm1JRENyZWF0ZSgpOwogICAgfQoKICAgICRTZWxmLT57Q29uZmlnfSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCJUaWNrZXQ6OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBwYXJhbXMKICAgIG15ICVHZXRQYXJhbTsKICAgIGZvciBteSAkS2V5IChxdyhJdGVtSUQpKSB7CiAgICAgICAgJEdldFBhcmFteyRLZXl9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAkS2V5ICk7CiAgICAgICAgaWYgKCAhJEdldFBhcmFteyRLZXl9ICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gIk5vICRLZXkgaXMgZ2l2ZW4hIiwKICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbi4nLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCB0aGUgcmVxdWVzdGVkIEZBUSBpdGVtCiAgICBteSAlRkFRSXRlbSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRR2V0KAogICAgICAgIEl0ZW1JRCAgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgSXRlbUZpZWxkcyA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICBteSAkU2NyaXB0QWxpYXMgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnU2NyaXB0QWxpYXMnKSB8fCAnb3Rycy8nOwogICAgbXkgJFVSTFJlZ2V4ID0gJy8nIC4gJFNjcmlwdEFsaWFzIC4gJ2luZGV4LnBsXD9BY3Rpb249QWdlbnRGQVFab29tOycKICAgICAgICAuICdTdWJhY3Rpb249RG93bmxvYWRBdHRhY2htZW50O0l0ZW1JRD0nIC4gJEdldFBhcmFte0l0ZW1JRH0gLiAnO0ZpbGVJRD1bMC05XSsnOwogICAgbXkgJEVsZW1SZWdleCA9ICdzcmM9IignIC4gJFVSTFJlZ2V4IC4gJykiJzsKCiAgICBteSBARmllbGRzOwoKICAgIG15ICRMb2FkZWQgPSAkU2VsZi0+e01haW5PYmplY3R9LT5SZXF1aXJlKAogICAgICAgICdLZXJuZWw6Okxhbmd1YWdlJywKICAgICk7CgogICAgaWYgKCAhJExvYWRlZCApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiAnQ2FuIG5vdCBsb2FkIExhbmd1YWdlT2JqZWN0IScsCiAgICAgICAgICAgIENvbW1lbnQgPT4gJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbi4nLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJEZBUUxhbmd1YWdlT2JqZWN0ID0gS2VybmVsOjpMYW5ndWFnZS0+bmV3KAogICAgICAgICV7JFNlbGZ9LAogICAgICAgIFVzZXJMYW5ndWFnZSA9PiAkRkFRSXRlbXtMYW5ndWFnZX0sCiAgICApOwoKICAgICMgZ2V0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgVGlja2V0IENvbXBvc2UKICAgIG15ICRUaWNrZXRDb21wb3NlQ29uZmlnID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6VGlja2V0Q29tcG9zZScpOwoKICAgICMgZ2V0IHRoZSBpbnRlcm5hbCBzdGF0ZSB0eXBlCiAgICBteSAkSW50ZXJuYWxTdGF0ZVR5cGUgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUdldCgKICAgICAgICBOYW1lICAgPT4gJ2ludGVybmFsJywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGdldCB0aGUgaW50ZXJuYWwgc3RhdGUgdHlwZSBJRAogICAgbXkgJEludGVybmFsU3RhdGVJRCA9ICRJbnRlcm5hbFN0YXRlVHlwZS0+e1N0YXRlSUR9OwoKICAgIEZJRUxEOgogICAgZm9yIG15ICRGaWVsZCAoIDEgLi4gNiApIHsKCiAgICAgICAgIyBkb24ndCB3YXN0ZSBhbnkgZnVydGhlciBwcm9jZXNzaW5nIHBvd2VyLCBpZiB0aGUgY3VycmVudCBmaWVsZCBkb2Vzbid0IGhhdmUgYW55IGNvbnRlbnQKICAgICAgICBuZXh0IEZJRUxEIGlmICEkRkFRSXRlbXsgJ0ZpZWxkJyAuICRGaWVsZCB9OwoKICAgICAgICBteSAkRmllbGRDb250ZW50ID0gJEZBUUl0ZW17ICdGaWVsZCcgLiAkRmllbGQgfTsKCiAgICAgICAgIyBnZXQgY29uZmlnIG9mIGN1cnJlbnQgRkFRIGZpZWxkIGZyb20gU3lzQ29uZmlnCiAgICAgICAgbXkgJEZpZWxkQ29uZmlnID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoICdGQVE6Okl0ZW06OkZpZWxkJyAuICRGaWVsZCApOwoKICAgICAgICBuZXh0IEZJRUxEIGlmICEkRmllbGRDb25maWc7CiAgICAgICAgbmV4dCBGSUVMRCBpZiByZWYgJEZpZWxkQ29uZmlnIG5lICdIQVNIJzsKICAgICAgICBuZXh0IEZJRUxEIGlmICEkRmllbGRDb25maWctPntTaG93fTsKCiAgICAgICAgIyBnZXQgdGhlIHN0YXRlIHR5cGUgZGF0YSBvZiB0aGlzIGZpZWxkCiAgICAgICAgbXkgJFN0YXRlVHlwZURhdGEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUdldCgKICAgICAgICAgICAgTmFtZSAgID0+ICRGaWVsZENvbmZpZy0+e1Nob3d9LAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgaWYgY3VycmVudCBmaWVsZCBpcyBpbnRlcm5hbAogICAgICAgIG15ICRJc0ludGVybmFsOwogICAgICAgIGlmICggJFN0YXRlVHlwZURhdGEtPntTdGF0ZUlEfSA9PSAkSW50ZXJuYWxTdGF0ZUlEICkgewogICAgICAgICAgICAkSXNJbnRlcm5hbCA9IDE7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIHdoZXRoZXIgdGhlIGN1cnJlbnQgZmllbGQgc2hvdWxkIGJlIHZpc2libGUgdG8gdGhlIHB1YmxpYywgdGh1cyBiZSBpbnNlcnRlZCBpbnRvIGEKICAgICAgICAjIHJlc3BvbnNlIHRvIGEgY3VzdG9tZXIgb3Igbm90CiAgICAgICAgaWYgKCAhJFRpY2tldENvbXBvc2VDb25maWctPntJbmNsdWRlSW50ZXJuYWx9ICYmICRJc0ludGVybmFsICkgewogICAgICAgICAgICBuZXh0IEZJRUxEOwogICAgICAgIH0KCiAgICAgICAgIyBleHRyYWN0IGFsbCBVUkxzIHdoaWNoIHBvaW50IHRvIGFuIGVtYmVkZGVkIGltYWdlCiAgICAgICAgbXkgQE1hdGNoZWRVUkxzID0gKCAkRmllbGRDb250ZW50ID1+IG17JEVsZW1SZWdleH14Z21zICk7CiAgICAgICAgZm9yIG15ICRVUkwgKEBNYXRjaGVkVVJMcykgewoKICAgICAgICAgICAgIyBleHRyYWN0IHRoZSBpZCBvZiB0aGUgYXR0YWNobWVudAogICAgICAgICAgICBteSAoJEZpbGVJRCkgPSAkVVJMID1+IG17IEZpbGVJRD0oWzAtOV0rKSB9bXN4OwoKICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPntEZWJ1Z30gPiAwICkgewogICAgICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2RlYnVnJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRmlsZUlEOiAkRmlsZUlEIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZ2V0IHRoZSBhdHRhY2htZW50IHRvIHdoaWNoIHRoZSBjdXJyZW50IFVSTCBwb2ludHMKICAgICAgICAgICAgbXkgJUF0dGFjaG1lbnQgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkF0dGFjaG1lbnRHZXQoCiAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBGaWxlSUQgPT4gJEZpbGVJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSBAQXR0YWNobWVudE1ldGEgPSAkU2VsZi0+e1VwbG9hZENhY2hlT2JqZWN0fS0+Rm9ybUlER2V0QWxsRmlsZXNNZXRhKAogICAgICAgICAgICAgICAgRm9ybUlEID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICRGaWxlbmFtZVRtcCAgICA9ICRBdHRhY2htZW50e0ZpbGVuYW1lfTsKICAgICAgICAgICAgbXkgJFN1ZmZpeFRtcCAgICAgID0gMDsKICAgICAgICAgICAgbXkgJFVuaXF1ZUZpbGVuYW1lID0gJyc7CgogICAgICAgICAgICAjIGNyZWF0ZSBub3cgYW4gYXJ0aWNsZSBhdHRhY2htZW50IChpbmxpbmUpIGJhc2VkIG9uIHRoZSBkYXRhIG9mICVBdHRhY2htZW50IChGQVEpCiAgICAgICAgICAgIGlmICglQXR0YWNobWVudCkgewoKICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgbmFtZSBhbHJlYWR5IGV4aXN0cwogICAgICAgICAgICAgICAgd2hpbGUgKCAhJFVuaXF1ZUZpbGVuYW1lICkgewogICAgICAgICAgICAgICAgICAgICRVbmlxdWVGaWxlbmFtZSA9ICRGaWxlbmFtZVRtcDsKICAgICAgICAgICAgICAgICAgICBORVdOQU1FOgogICAgICAgICAgICAgICAgICAgIGZvciBteSAkQXR0YWNobWVudCAoIHJldmVyc2UgQEF0dGFjaG1lbnRNZXRhICkgewogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IE5FV05BTUUgaWYgJEZpbGVuYW1lVG1wIG5lICRBdHRhY2htZW50LT57RmlsZW5hbWV9OwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBuYW1lIGV4aXN0cyAtPiBjaGFuZ2UKICAgICAgICAgICAgICAgICAgICAgICAgKyskU3VmZml4VG1wOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRBdHRhY2htZW50e0ZpbGVuYW1lfSA9fiBte1xBICguKikgXC4gKC4rPykgXHp9bXN4ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEZpbGVuYW1lVG1wID0gIiQxLSRTdWZmaXhUbXAuJDIiOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEZpbGVuYW1lVG1wID0gIiRBdHRhY2htZW50e0ZpbGVuYW1lfS0kU3VmZml4VG1wIjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAkVW5pcXVlRmlsZW5hbWUgPSAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCBORVdOQU1FOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkQXR0YWNobWVudHtGaWxlbmFtZX0gPSAkRmlsZW5hbWVUbXA7CiAgICAgICAgICAgICAgICBkZWxldGUgJEF0dGFjaG1lbnR7Q29udGVudElEfTsKCiAgICAgICAgICAgICAgICAjIGFkZCB0aGUgYXR0YWNobWVudCB0byB0aGUgdXBsb2FkIGNhY2hlIG9mIHRoZSBjdXJyZW50IHRpY2tldAogICAgICAgICAgICAgICAgJFNlbGYtPntVcGxvYWRDYWNoZU9iamVjdH0tPkZvcm1JREFkZEZpbGUoCiAgICAgICAgICAgICAgICAgICAgRm9ybUlEICAgICAgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICAgICAgICAgIERpc3Bvc2l0aW9uID0+ICdpbmxpbmUnLAogICAgICAgICAgICAgICAgICAgICVBdHRhY2htZW50LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ0NvdWxkblwndCBnZXQgRkFRIGF0dGFjaG1lbnQgJwogICAgICAgICAgICAgICAgICAgICAgICAuICIoSXRlbUlEOiAkR2V0UGFyYW17SXRlbUlEfSwgRmlsZUlEOiAkRmlsZUlEKSEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZ2V0IG5ldyBjb250ZW50IGlkCiAgICAgICAgICAgIG15ICRDb250ZW50SUROZXcgPSAnJzsKICAgICAgICAgICAgQEF0dGFjaG1lbnRNZXRhID0gJFNlbGYtPntVcGxvYWRDYWNoZU9iamVjdH0tPkZvcm1JREdldEFsbEZpbGVzTWV0YSgKICAgICAgICAgICAgICAgIEZvcm1JRCA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKEBBdHRhY2htZW50TWV0YSkgewogICAgICAgICAgICAgICAgbmV4dCBpZiAkRmlsZW5hbWVUbXAgbmUgJEF0dGFjaG1lbnQtPntGaWxlbmFtZX07CiAgICAgICAgICAgICAgICAkQ29udGVudElETmV3ID0gJEF0dGFjaG1lbnQtPntDb250ZW50SUR9OwogICAgICAgICAgICAgICAgbGFzdDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAkQ29udGVudElETmV3IGVxICcnICkgewogICAgICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGRuJ3QgZGV0ZXJtaW5lIGEgbmV3IENvbnRlbnRJRCEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZXh0cmFjdCB0aGUgYWN0dWFsIE1JTUUgdHlwZSBmcm9tIHRoZSBjb250ZW50dHlwZSwgd2hpY2ggYWxzbyBjb250YWlucyB0aGUgZmlsZW5hbWUKICAgICAgICAgICAgbXkgKCRNaW1lVHlwZSkgPSAkQXR0YWNobWVudHtDb250ZW50VHlwZX0gPX4gbXteKC4rLy4rKTsgWyBdIG5hbWU9LiskfXhtczsKCiAgICAgICAgICAgIG15ICRTZXNzaW9uID0gJyc7CiAgICAgICAgICAgIGlmICggJFNlbGYtPntTZXNzaW9uSUR9ICYmICEkU2VsZi0+e1Nlc3Npb25JRENvb2tpZX0gKSB7CiAgICAgICAgICAgICAgICAkU2Vzc2lvbiA9ICcmJyAuICRTZWxmLT57U2Vzc2lvbk5hbWV9IC4gJz0nIC4gJFNlbGYtPntTZXNzaW9uSUR9OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGNyZWF0ZSB0aGUgbmV3IGlubGluZSBpbWFnZSBVUkwKICAgICAgICAgICAgbXkgJElubGluZUltYWdlID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57QmFzZWxpbmt9CiAgICAgICAgICAgICAgICAuICJBY3Rpb249UGljdHVyZVVwbG9hZDtGb3JtSUQ9JFNlbGYtPntGb3JtSUR9O0NvbnRlbnRJRD0kQ29udGVudElETmV3JFNlc3Npb24iOwoKICAgICAgICAgICAgIyByZXBsYWNlIHRoZSBpbWFnZSBVUkwgd2l0aCB0aGUgaW5saW5lIGltYWdlCiAgICAgICAgICAgICRGaWVsZENvbnRlbnQgPX4gc3tcUSRVUkxcRX17JElubGluZUltYWdlfXhtczsKICAgICAgICB9CgogICAgICAgICMgYWRkIHRoZSBuYW1lIG9mIHRoZSBmaWVsZCBhcyBoZWFkZXIKICAgICAgICBpZiAoICRGaWVsZENvbmZpZy0+e0NhcHRpb259ICYmICRUaWNrZXRDb21wb3NlQ29uZmlnLT57U2hvd0ZpZWxkTmFtZXN9ICkgewoKICAgICAgICAgICAgIyB0cmFuc2xhdGUgdGhlIGNhcHRpb24gdG8gdGhlIGxhbmd1YWdlIG9mIHRoZSBGQVEgaXRlbQogICAgICAgICAgICBteSAkVHJhbnNsYXRlZENhcHRpb24gPSAkRkFRTGFuZ3VhZ2VPYmplY3QtPkdldCggJEZpZWxkQ29uZmlnLT57Q2FwdGlvbn0gKTsKCiAgICAgICAgICAgIGlmICgkVHJhbnNsYXRlZENhcHRpb24pIHsKICAgICAgICAgICAgICAgICRGaWVsZENvbnRlbnQgPSAnPGgyPicgLiAkVHJhbnNsYXRlZENhcHRpb24gLiAnOjwvaDI+JyAuICRGaWVsZENvbnRlbnQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcHVzaCBARmllbGRzLCAkRmllbGRDb250ZW50OwogICAgfQoKICAgIG15ICRGQVFIVE1MID0gam9pbiggJzxiciAvPicsIEBGaWVsZHMgKTsKCiAgICAjIGdldCBhbGwgbm9uLWlubGluZSBhdHRhY2htZW50cyBvZiB0aGUgRkFRIGl0ZW0KICAgIG15IEBBdHRhY2htZW50cyA9ICRTZWxmLT57RkFRT2JqZWN0fS0+QXR0YWNobWVudEluZGV4KAogICAgICAgIEl0ZW1JRCAgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgU2hvd0lubGluZSA9PiAwLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICBmb3IgbXkgJEF0dGFjaG1lbnREYXRhIChAQXR0YWNobWVudHMpIHsKCiAgICAgICAgIyBnZXQgdGhlIGF0dGFjaG1lbnQKICAgICAgICBteSAlQXR0YWNobWVudCA9ICRTZWxmLT57RkFRT2JqZWN0fS0+QXR0YWNobWVudEdldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICBGaWxlSUQgPT4gJEF0dGFjaG1lbnREYXRhLT57RmlsZUlEfSwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoJUF0dGFjaG1lbnQpIHsKCiAgICAgICAgICAgICMgYWRkIHRoZSBhdHRhY2htZW50IHRvIHRoZSB1cGxvYWQgY2FjaGUgb2YgdGhlIGN1cnJlbnQgdGlja2V0CiAgICAgICAgICAgICRTZWxmLT57VXBsb2FkQ2FjaGVPYmplY3R9LT5Gb3JtSURBZGRGaWxlKAogICAgICAgICAgICAgICAgRm9ybUlEID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICAgICAgICAgICVBdHRhY2htZW50LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ0NvdWxkblwndCBnZXQgRkFRIGF0dGFjaG1lbnQgJwogICAgICAgICAgICAgICAgICAgIC4gIihJdGVtSUQ6ICRHZXRQYXJhbXtJdGVtSUR9LCBGaWxlSUQ6ICRBdHRhY2htZW50RGF0YS0+e0ZpbGVJRH0pISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKCk7CiAgICAgICAgfQogICAgfQoKICAgICMgc2VuZCBhIGxpc3Qgb2YgYXR0YWNobWVudHMgaW4gdGhlIHVwbG9hZCBjYWNoZSBiYWNrIHRvIHRoZSBjbGllbnRzaWRlIEphdmFTY3JpcHQgd2hpY2ggcmVuZGVycwogICAgIyB0aGVuIHRoZSBsaXN0IG9mIGN1cnJlbnRseSB1cGxvYWRlZCBhdHRhY2htZW50cwogICAgbXkgQFRpY2tldEF0dGFjaG1lbnRzID0gJFNlbGYtPntVcGxvYWRDYWNoZU9iamVjdH0tPkZvcm1JREdldEFsbEZpbGVzTWV0YSgKICAgICAgICBGb3JtSUQgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgKTsKCiAgICBteSBARmlsdGVyZWRUaWNrZXRBdHRhY2htZW50czsKCiAgICBpZiAoICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGcm9udGVuZDo6UmljaFRleHQnKSApIHsKCiAgICAgICAgIyByZW1vdmUgdGhlIGlubGluZS1hdHRhY2htZW50cyB3aGljaCBzaG91bGRuJ3QgYmUgc2hvd24gaW4gdGhlIHJlZ3VsYXIgYXR0YWNobWVudCBsaXN0CiAgICAgICAgQVRUQUNITUVOVDoKICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKEBUaWNrZXRBdHRhY2htZW50cykgewogICAgICAgICAgICBpZiAoIGRlZmluZWQgJEF0dGFjaG1lbnQtPntDb250ZW50SUR9ICYmICRBdHRhY2htZW50LT57Q29udGVudElEfSA9fiBte1xBIGlubGluZX1tc3ggKSB7CiAgICAgICAgICAgICAgICBuZXh0IEFUVEFDSE1FTlQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcHVzaCBARmlsdGVyZWRUaWNrZXRBdHRhY2htZW50cywgJEF0dGFjaG1lbnQ7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgaWYgcmljaHRleHQgaXMgbm90IGFjdGl2ZSB0aGVuIHNldCBhbHNvIGlubGluZSBhdHRhY2htZW50cyBhcyByZWd1bGFyIGF0dGFjaG1lbnRzCiAgICAgICAgQEZpbHRlcmVkVGlja2V0QXR0YWNobWVudHMgPSBAVGlja2V0QXR0YWNobWVudHM7CiAgICB9CgogICAgIyBjcmVhdGUgYSBKU09OIHN0cmluZwogICAgbXkgJEpTT04gPSAkU2VsZi0+e0pTT05PYmplY3R9LT5FbmNvZGUoCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIEZBUVRpdGxlICAgICAgICAgID0+ICRGQVFJdGVte1RpdGxlfSwKICAgICAgICAgICAgRkFRQ29udGVudCAgICAgICAgPT4gJFNlbGYtPntIVE1MVXRpbHNPYmplY3R9LT5Ub0FzY2lpKCBTdHJpbmcgPT4gJEZBUUhUTUwgKSB8fCAnJywKICAgICAgICAgICAgRkFRSFRNTENvbnRlbnQgICAgPT4gJEZBUUhUTUwsCiAgICAgICAgICAgIFRpY2tldEF0dGFjaG1lbnRzID0+IFxARmlsdGVyZWRUaWNrZXRBdHRhY2htZW50cywKICAgICAgICAgICAgTG9jYWxpemF0aW9uICAgICAgPT4gewogICAgICAgICAgICAgICAgRGVsZXRlID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdEZWxldGUnKSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgKTsKCiAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5BdHRhY2htZW50KAogICAgICAgIENvbnRlbnRUeXBlID0+ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PScgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntDaGFyc2V0fSwKICAgICAgICBDb250ZW50ICAgICA9PiAkSlNPTiwKICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICBOb0NhY2hlICAgICA9PiAxLAogICAgKTsKfQoKMTsK
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRU2VhcmNoLnBtIC0gbW9kdWxlIGZvciBGQVEgc2VhcmNoCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OkFnZW50RkFRU2VhcmNoOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpGQVE7CnVzZSBLZXJuZWw6OlN5c3RlbTo6U2VhcmNoUHJvZmlsZTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpDU1Y7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFsaWQ7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBjaGVjayBuZWVkZWQgb2JqZWN0cwogICAgZm9yIG15ICRPYmplY3QgKAogICAgICAgIHF3KFBhcmFtT2JqZWN0IERCT2JqZWN0IExheW91dE9iamVjdCBMb2dPYmplY3QgVXNlck9iamVjdCBHcm91cE9iamVjdCBDb25maWdPYmplY3QgTWFpbk9iamVjdCBFbmNvZGVPYmplY3QpCiAgICAgICAgKQogICAgewogICAgICAgIGlmICggISRTZWxmLT57JE9iamVjdH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RmF0YWxFcnJvciggTWVzc2FnZSA9PiAiR290IG5vICRPYmplY3QhIiApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNyZWF0ZSBhZGRpdGlvbmFsIG9iamVjdHMKICAgICRTZWxmLT57RkFRT2JqZWN0fSAgICAgICAgICAgPSBLZXJuZWw6OlN5c3RlbTo6RkFRLT5uZXcoJVBhcmFtKTsKICAgICRTZWxmLT57U2VhcmNoUHJvZmlsZU9iamVjdH0gPSBLZXJuZWw6OlN5c3RlbTo6U2VhcmNoUHJvZmlsZS0+bmV3KCVQYXJhbSk7CiAgICAkU2VsZi0+e0NTVk9iamVjdH0gICAgICAgICAgID0gS2VybmVsOjpTeXN0ZW06OkNTVi0+bmV3KCVQYXJhbSk7CiAgICAkU2VsZi0+e1ZhbGlkT2JqZWN0fSAgICAgICAgID0gS2VybmVsOjpTeXN0ZW06OlZhbGlkLT5uZXcoJVBhcmFtKTsKCiAgICAjIGdldCBjb25maWcgZm9yIGZyb250ZW5kCiAgICAkU2VsZi0+e0NvbmZpZ30gPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgiRkFROjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgIyBzZXQgZGVmYXVsdCBpbnRlcmZhY2Ugc2V0dGluZ3MKICAgICRTZWxmLT57SW50ZXJmYWNlfSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVUeXBlR2V0KAogICAgICAgIE5hbWUgICA9PiAnaW50ZXJuYWwnLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwogICAgJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9ID0gJFNlbGYtPntGQVFPYmplY3R9LT5TdGF0ZVR5cGVMaXN0KAogICAgICAgIFR5cGVzICA9PiAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpBZ2VudDo6U3RhdGVUeXBlcycpLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpNdWx0aUxhbmd1YWdlJyk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJE91dHB1dDsKCiAgICAjIGdldCBjb25maWcgZGF0YQogICAgJFNlbGYtPntTdGFydEhpdH0gPSBpbnQoICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1N0YXJ0SGl0JyApIHx8IDEgKTsKICAgICRTZWxmLT57U2VhcmNoTGltaXR9ID0gJFNlbGYtPntDb25maWd9LT57U2VhcmNoTGltaXR9IHx8IDUwMDsKICAgICRTZWxmLT57U29ydEJ5fSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NvcnRCeScgKQogICAgICAgIHx8ICRTZWxmLT57Q29uZmlnfS0+eydTb3J0Qnk6OkRlZmF1bHQnfQogICAgICAgIHx8ICdGQVFJRCc7CiAgICAkU2VsZi0+e09yZGVyQnl9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnT3JkZXJCeScgKQogICAgICAgIHx8ICRTZWxmLT57Q29uZmlnfS0+eydPcmRlcjo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ0Rvd24nOwogICAgJFNlbGYtPntQcm9maWxlfSAgICAgICAgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdQcm9maWxlJyApICAgICAgICB8fCAnJzsKICAgICRTZWxmLT57U2F2ZVByb2ZpbGV9ICAgID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnU2F2ZVByb2ZpbGUnICkgICAgfHwgJyc7CiAgICAkU2VsZi0+e1Rha2VMYXN0U2VhcmNofSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1Rha2VMYXN0U2VhcmNoJyApIHx8ICcnOwogICAgJFNlbGYtPntTZWxlY3RUZW1wbGF0ZX0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdTZWxlY3RUZW1wbGF0ZScgKSB8fCAnJzsKICAgICRTZWxmLT57RXJhc2VUZW1wbGF0ZX0gID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnRXJhc2VUZW1wbGF0ZScgKSAgfHwgJyc7CgogICAgIyBidWlsZCBvdXRwdXQgZm9yIG9wZW4gc2VhcmNoIGRlc2NyaXB0aW9uIGJ5IEZBUSBudW1iZXIKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXInICkgewogICAgICAgIG15ICRPdXRwdXQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcicsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QXR0YWNobWVudCgKICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJ09wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlci54bWwnLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC94bWwnLAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkT3V0cHV0LAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICApOwogICAgfQoKICAgICMgYnVpbGQgb3V0cHV0IGZvciBvcGVuIHNlYXJjaCBkZXNjcmlwdGlvbiBieSBmdWxsdGV4dAogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ09wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0JyApIHsKICAgICAgICBteSAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dCcsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QXR0YWNobWVudCgKICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJ09wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0LnhtbCcsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3htbCcsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRPdXRwdXQsCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICk7CiAgICB9CgogICAgIyBzZWFyY2ggd2l0aCBhIHNhdmVkIHRlbXBsYXRlCiAgICBpZiAoICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NlYXJjaFRlbXBsYXRlJyApICYmICRTZWxmLT57UHJvZmlsZX0gKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+UmVkaXJlY3QoCiAgICAgICAgICAgIE9QID0+CiAgICAgICAgICAgICAgICAiQWN0aW9uPUFnZW50RkFRU2VhcmNoO1N1YmFjdGlvbj1TZWFyY2g7VGFrZUxhc3RTZWFyY2g9MTtTYXZlUHJvZmlsZT0xO1Byb2ZpbGU9JFNlbGYtPntQcm9maWxlfSIKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHNpbmdsZSBwYXJhbXMKICAgIG15ICVHZXRQYXJhbTsKCiAgICAjIGxvYWQgcHJvZmlsZXMgc3RyaW5nIHBhcmFtcyAocHJlc3MgbG9hZCBwcm9maWxlKQogICAgaWYgKCAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnTG9hZFByb2ZpbGUnICYmICRTZWxmLT57UHJvZmlsZX0gKSB8fCAkU2VsZi0+e1Rha2VMYXN0U2VhcmNofSApIHsKICAgICAgICAlR2V0UGFyYW0gPSAkU2VsZi0+e1NlYXJjaFByb2ZpbGVPYmplY3R9LT5TZWFyY2hQcm9maWxlR2V0KAogICAgICAgICAgICBCYXNlICAgICAgPT4gJ0ZBUVNlYXJjaCcsCiAgICAgICAgICAgIE5hbWUgICAgICA9PiAkU2VsZi0+e1Byb2ZpbGV9LAogICAgICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgc2VhcmNoIHN0cmluZyBwYXJhbXMgKGdldCBzdWJtaXR0ZWQgcGFyYW1zKQogICAgZWxzZSB7CgogICAgICAgICMgZ2V0IHNjYWxhciBzZWFyY2ggcGFyYW1zCiAgICAgICAgZm9yIG15ICRQYXJhbU5hbWUgKAogICAgICAgICAgICBxdyhOdW1iZXIgVGl0bGUgS2V5d29yZCBGdWxsdGV4dCBSZXN1bHRGb3JtIFZvdGVTZWFyY2ggVm90ZVNlYXJjaFR5cGUgUmF0ZVNlYXJjaAogICAgICAgICAgICBSYXRlU2VhcmNoVHlwZSBBcHByb3ZlZFNlYXJjaAogICAgICAgICAgICBUaW1lU2VhcmNoVHlwZSBDaGFuZ2VUaW1lU2VhcmNoVHlwZQogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0IEl0ZW1DcmVhdGVUaW1lUG9pbnQKICAgICAgICAgICAgSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0CiAgICAgICAgICAgIEl0ZW1DcmVhdGVUaW1lU3RhcnQgSXRlbUNyZWF0ZVRpbWVTdGFydERheSBJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGgKICAgICAgICAgICAgSXRlbUNyZWF0ZVRpbWVTdGFydFllYXIKICAgICAgICAgICAgSXRlbUNyZWF0ZVRpbWVTdG9wIEl0ZW1DcmVhdGVUaW1lU3RvcERheSBJdGVtQ3JlYXRlVGltZVN0b3BNb250aAogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZVN0b3BZZWFyCiAgICAgICAgICAgIEl0ZW1DaGFuZ2VUaW1lUG9pbnRGb3JtYXQgSXRlbUNoYW5nZVRpbWVQb2ludAogICAgICAgICAgICBJdGVtQ2hhbmdlVGltZVBvaW50U3RhcnQKICAgICAgICAgICAgSXRlbUNoYW5nZVRpbWVTdGFydCBJdGVtQ2hhbmdlVGltZVN0YXJ0RGF5IEl0ZW1DaGFuZ2VUaW1lU3RhcnRNb250aAogICAgICAgICAgICBJdGVtQ2hhbmdlVGltZVN0YXJ0WWVhcgogICAgICAgICAgICBJdGVtQ2hhbmdlVGltZVN0b3AgSXRlbUNoYW5nZVRpbWVTdG9wRGF5IEl0ZW1DaGFuZ2VUaW1lU3RvcE1vbnRoCiAgICAgICAgICAgIEl0ZW1DaGFuZ2VUaW1lU3RvcFllYXIKICAgICAgICAgICAgKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkR2V0UGFyYW17JFBhcmFtTmFtZX0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbU5hbWUgKTsKCiAgICAgICAgICAgICMgcmVtb3ZlIHdoaXRlc3BhY2Ugb24gdGhlIHN0YXJ0IGFuZCBlbmQKICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17JFBhcmFtTmFtZX0gKSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17JFBhcmFtTmFtZX0gPX4gc3sgXEEgXHMrIH17fXhtczsKICAgICAgICAgICAgICAgICRHZXRQYXJhbXskUGFyYW1OYW1lfSA9fiBzeyBccysgXHogfXt9eG1zOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGdldCBhcnJheSBzZWFyY2ggcGFyYW1zCiAgICAgICAgZm9yIG15ICRTZWFyY2hQYXJhbSAoCiAgICAgICAgICAgIHF3KENhdGVnb3J5SURzIExhbmd1YWdlSURzIFZhbGlkSURzIFN0YXRlSURzIENyZWF0ZWRVc2VySURzIExhc3RDaGFuZ2VkVXNlcklEcykKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgbXkgQEFycmF5ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldEFycmF5KCBQYXJhbSA9PiAkU2VhcmNoUGFyYW0gKTsKICAgICAgICAgICAgaWYgKEBBcnJheSkgewogICAgICAgICAgICAgICAgJEdldFBhcmFteyRTZWFyY2hQYXJhbX0gPSBcQEFycmF5OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGFwcHJvdmVkIG9wdGlvbgogICAgaWYgKCAkR2V0UGFyYW17QXBwcm92ZWRTZWFyY2h9ICYmICRHZXRQYXJhbXtBcHByb3ZlZFNlYXJjaH0gZXEgJ1llcycgKSB7CiAgICAgICAgJEdldFBhcmFte0FwcHJvdmVkfSA9IDE7CiAgICB9CiAgICBlbHNpZiAoICRHZXRQYXJhbXtBcHByb3ZlZFNlYXJjaH0gJiYgJEdldFBhcmFte0FwcHJvdmVkU2VhcmNofSBlcSAnTm8nICkgewogICAgICAgICRHZXRQYXJhbXtBcHByb3ZlZH0gPSAwOwogICAgfQoKICAgICMgZ2V0IGNyZWF0ZSB0aW1lIG9wdGlvbgogICAgaWYgKCAhJEdldFBhcmFte1RpbWVTZWFyY2hUeXBlfSApIHsKICAgICAgICAkR2V0UGFyYW17J1RpbWVTZWFyY2hUeXBlOjpOb25lJ30gPSAxOwogICAgfQogICAgZWxzaWYgKCAkR2V0UGFyYW17VGltZVNlYXJjaFR5cGV9IGVxICdUaW1lUG9pbnQnICkgewogICAgICAgICRHZXRQYXJhbXsnVGltZVNlYXJjaFR5cGU6OlRpbWVQb2ludCd9ID0gMTsKICAgIH0KICAgIGVsc2lmICggJEdldFBhcmFte1RpbWVTZWFyY2hUeXBlfSBlcSAnVGltZVNsb3QnICkgewogICAgICAgICRHZXRQYXJhbXsnVGltZVNlYXJjaFR5cGU6OlRpbWVTbG90J30gPSAxOwogICAgfQoKICAgICMgZ2V0IGNoYW5nZSB0aW1lIG9wdGlvbgogICAgaWYgKCAhJEdldFBhcmFte0NoYW5nZVRpbWVTZWFyY2hUeXBlfSApIHsKICAgICAgICAkR2V0UGFyYW17J0NoYW5nZVRpbWVTZWFyY2hUeXBlOjpOb25lJ30gPSAxOwogICAgfQogICAgZWxzaWYgKCAkR2V0UGFyYW17Q2hhbmdlVGltZVNlYXJjaFR5cGV9IGVxICdUaW1lUG9pbnQnICkgewogICAgICAgICRHZXRQYXJhbXsnQ2hhbmdlVGltZVNlYXJjaFR5cGU6OlRpbWVQb2ludCd9ID0gMTsKICAgIH0KICAgIGVsc2lmICggJEdldFBhcmFte0NoYW5nZVRpbWVTZWFyY2hUeXBlfSBlcSAnVGltZVNsb3QnICkgewogICAgICAgICRHZXRQYXJhbXsnQ2hhbmdlVGltZVNlYXJjaFR5cGU6OlRpbWVTbG90J30gPSAxOwogICAgfQoKICAgICMgc2V0IHJlc3VsdCBmb3JtIGVudgogICAgaWYgKCAhJEdldFBhcmFte1Jlc3VsdEZvcm19ICkgewogICAgICAgICRHZXRQYXJhbXtSZXN1bHRGb3JtfSA9ICcnOwogICAgfQoKICAgICMgc2hvdyByZXN1bHQgc2l0ZQogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1NlYXJjaCcgJiYgISRTZWxmLT57RXJhc2VUZW1wbGF0ZX0gKSB7CgogICAgICAgICMgZmlsbCB1cCBwcm9maWxlIG5hbWUgKGUuZy4gd2l0aCBsYXN0LXNlYXJjaCkKICAgICAgICBpZiAoICEkU2VsZi0+e1Byb2ZpbGV9IHx8ICEkU2VsZi0+e1NhdmVQcm9maWxlfSApIHsKICAgICAgICAgICAgJFNlbGYtPntQcm9maWxlfSA9ICdsYXN0LXNlYXJjaCc7CiAgICAgICAgfQoKICAgICAgICAjIHN0b3JlIGxhc3Qgb3ZlcnZpZXcgc2NyZWVuCiAgICAgICAgbXkgJFVSTAogICAgICAgICAgICA9ICJBY3Rpb249QWdlbnRGQVFTZWFyY2g7U3ViYWN0aW9uPVNlYXJjaDtQcm9maWxlPSRTZWxmLT57UHJvZmlsZX07U29ydEJ5PSRTZWxmLT57U29ydEJ5fSIKICAgICAgICAgICAgLiAiO09yZGVyQnk9JFNlbGYtPntPcmRlckJ5fTtUYWtlTGFzdFNlYXJjaD0xO1N0YXJ0SGl0PSRTZWxmLT57U3RhcnRIaXR9IjsKICAgICAgICAkU2VsZi0+e1Nlc3Npb25PYmplY3R9LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlbk92ZXJ2aWV3JywKICAgICAgICAgICAgVmFsdWUgICAgID0+ICRVUkwsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+e1Nlc3Npb25PYmplY3R9LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlblZpZXcnLAogICAgICAgICAgICBWYWx1ZSAgICAgPT4gJFVSTCwKICAgICAgICApOwoKICAgICAgICAjIHNhdmUgc2VhcmNoIHByb2ZpbGUgKHVuZGVyIGxhc3Qtc2VhcmNoIG9yIHJlYWwgcHJvZmlsZSBuYW1lKQogICAgICAgICRTZWxmLT57U2F2ZVByb2ZpbGV9ID0gMTsKCiAgICAgICAgIyByZW1lbWJlciBsYXN0IHNlYXJjaCB2YWx1ZXMKICAgICAgICBpZiAoICRTZWxmLT57U2F2ZVByb2ZpbGV9ICYmICRTZWxmLT57UHJvZmlsZX0gKSB7CgogICAgICAgICAgICAjIHJlbW92ZSBvbGQgcHJvZmlsZSBzdHVmZgogICAgICAgICAgICAkU2VsZi0+e1NlYXJjaFByb2ZpbGVPYmplY3R9LT5TZWFyY2hQcm9maWxlRGVsZXRlKAogICAgICAgICAgICAgICAgQmFzZSAgICAgID0+ICdGQVFTZWFyY2gnLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICRTZWxmLT57UHJvZmlsZX0sCiAgICAgICAgICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBpbnNlcnQgbmV3IHByb2ZpbGUgcGFyYW1zCiAgICAgICAgICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICVHZXRQYXJhbSApIHsKICAgICAgICAgICAgICAgIGlmICggJEdldFBhcmFteyRLZXl9ICkgewogICAgICAgICAgICAgICAgICAgICRTZWxmLT57U2VhcmNoUHJvZmlsZU9iamVjdH0tPlNlYXJjaFByb2ZpbGVBZGQoCiAgICAgICAgICAgICAgICAgICAgICAgIEJhc2UgICAgICA9PiAnRkFRU2VhcmNoJywKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICRTZWxmLT57UHJvZmlsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIEtleSAgICAgICA9PiAkS2V5LAogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgPT4gJEdldFBhcmFteyRLZXl9LAogICAgICAgICAgICAgICAgICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICVUaW1lTWFwID0gKAogICAgICAgICAgICBJdGVtQ3JlYXRlID0+ICdUaW1lJywKICAgICAgICAgICAgSXRlbUNoYW5nZSA9PiAnQ2hhbmdlVGltZScsCiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICRUaW1lVHlwZSAoIHNvcnQga2V5cyAlVGltZU1hcCApIHsKCiAgICAgICAgICAgICMgZ2V0IGNyZWF0ZSB0aW1lIHNldHRpbmdzCiAgICAgICAgICAgIGlmICggISRHZXRQYXJhbXsgJFRpbWVNYXB7JFRpbWVUeXBlfSAuICdTZWFyY2hUeXBlJyB9ICkgewoKICAgICAgICAgICAgICAgICMgZG8gbm90aGluZyB3aXRoIHRpbWUgc3R1ZmYKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVNYXB7JFRpbWVUeXBlfSAuICdTZWFyY2hUeXBlJyB9IGVxICdUaW1lU2xvdCcgKSB7CiAgICAgICAgICAgICAgICBmb3IgbXkgJEtleSAocXcoTW9udGggRGF5KSkgewogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydCcgLiAkS2V5IH0KICAgICAgICAgICAgICAgICAgICAgICAgPSBzcHJpbnRmKCAiJTAyZCIsICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydCcgLiAkS2V5IH0gKTsKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcCcgLiAkS2V5IH0KICAgICAgICAgICAgICAgICAgICAgICAgPSBzcHJpbnRmKCAiJTAyZCIsICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wJyAuICRLZXkgfSApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydERheScgfQogICAgICAgICAgICAgICAgICAgICYmICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydE1vbnRoJyB9CiAgICAgICAgICAgICAgICAgICAgJiYgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0YXJ0WWVhcicgfQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lTmV3ZXJEYXRlJyB9CiAgICAgICAgICAgICAgICAgICAgICAgID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0YXJ0WWVhcicgfSAuICctJwogICAgICAgICAgICAgICAgICAgICAgICAuICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydE1vbnRoJyB9IC4gJy0nCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0YXJ0RGF5JyB9CiAgICAgICAgICAgICAgICAgICAgICAgIC4gJyAwMDowMDowMCc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3BEYXknIH0KICAgICAgICAgICAgICAgICAgICAmJiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcE1vbnRoJyB9CiAgICAgICAgICAgICAgICAgICAgJiYgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3BZZWFyJyB9CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVPbGRlckRhdGUnIH0KICAgICAgICAgICAgICAgICAgICAgICAgPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcFllYXInIH0gLiAnLScKICAgICAgICAgICAgICAgICAgICAgICAgLiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcE1vbnRoJyB9IC4gJy0nCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3BEYXknIH0KICAgICAgICAgICAgICAgICAgICAgICAgLiAnIDIzOjU5OjU5JzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVNYXB7JFRpbWVUeXBlfSAuICdTZWFyY2hUeXBlJyB9IGVxICdUaW1lUG9pbnQnICkgewogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludCcgfQogICAgICAgICAgICAgICAgICAgICYmICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludFN0YXJ0JyB9CiAgICAgICAgICAgICAgICAgICAgJiYgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIG15ICRUaW1lID0gMDsKICAgICAgICAgICAgICAgICAgICBpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfSBlcSAnbWludXRlJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9IGVxICdob3VyJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH0gKiA2MDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0gZXEgJ2RheScgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaW1lID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50JyB9ICogNjAgKiAyNDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0gZXEgJ3dlZWsnICkgewogICAgICAgICAgICAgICAgICAgICAgICAkVGltZSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludCcgfSAqIDYwICogMjQgKiA3OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfSBlcSAnbW9udGgnICkgewogICAgICAgICAgICAgICAgICAgICAgICAkVGltZSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludCcgfSAqIDYwICogMjQgKiAzMDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0gZXEgJ3llYXInICkgewogICAgICAgICAgICAgICAgICAgICAgICAkVGltZSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludCcgfSAqIDYwICogMjQgKiAzNjU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50U3RhcnQnIH0gZXEgJ0JlZm9yZScgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIG1vcmUgdGhhbiAuLi4gYWdvCiAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVPbGRlck1pbnV0ZXMnIH0gPSAkVGltZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRTdGFydCcgfSBlcSAnTmV4dCcgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIHdpdGhpbiBuZXh0CiAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVOZXdlck1pbnV0ZXMnIH0gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lT2xkZXJNaW51dGVzJyB9ID0gLSRUaW1lOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIyB3aXRoaW4gbGFzdCAuLi4KICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZU9sZGVyTWludXRlcycgfSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVOZXdlck1pbnV0ZXMnIH0gPSAkVGltZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgcHJlcGFyZSBmdWxsdGV4dCBzZWFyY2gKICAgICAgICBpZiAoICRHZXRQYXJhbXtGdWxsdGV4dH0gKSB7CiAgICAgICAgICAgICRHZXRQYXJhbXtDb250ZW50U2VhcmNofSA9ICdPUic7CiAgICAgICAgICAgICRHZXRQYXJhbXtXaGF0fSAgICAgICAgICA9ICRHZXRQYXJhbXtGdWxsdGV4dH07CiAgICAgICAgfQoKICAgICAgICAjIGdldCB2YWxpZCBsaXN0CiAgICAgICAgbXkgJVZhbGlkTGlzdCAgID0gJFNlbGYtPntWYWxpZE9iamVjdH0tPlZhbGlkTGlzdCgpOwogICAgICAgIG15IEBBbGxWYWxpZElEcyA9IGtleXMgJVZhbGlkTGlzdDsKCiAgICAgICAgIyBwcmVwYXJlIHNlYXJjaCBzdGF0ZXMKICAgICAgICBteSAkU2VhcmNoU3RhdGVzOwogICAgICAgIGlmICggIUlzQXJyYXlSZWZXaXRoRGF0YSggJEdldFBhcmFte1N0YXRlSURzfSApICkgewogICAgICAgICAgICAkU2VhcmNoU3RhdGVzID0gJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9OwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgU1RBVEVUWVBFSUQ6CiAgICAgICAgICAgIGZvciBteSAkU3RhdGVUeXBlSUQgKCBAeyAkR2V0UGFyYW17U3RhdGVJRHN9IH0gKSB7CiAgICAgICAgICAgICAgICBuZXh0IFNUQVRFVFlQRUlEIGlmICEkU3RhdGVUeXBlSUQ7CiAgICAgICAgICAgICAgICBuZXh0IFNUQVRFVFlQRUlEIGlmICEkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30tPnskU3RhdGVUeXBlSUR9OwogICAgICAgICAgICAgICAgJFNlYXJjaFN0YXRlcy0+eyRTdGF0ZVR5cGVJRH0gPSAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30tPnskU3RhdGVUeXBlSUR9OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoIElzTnVtYmVyKCAkR2V0UGFyYW17Vm90ZVNlYXJjaH0gKSApIHsKICAgICAgICAgICAgJEdldFBhcmFte1ZvdGVzfSA9IHsKICAgICAgICAgICAgICAgICRHZXRQYXJhbXtWb3RlU2VhcmNoVHlwZX0gPT4gJEdldFBhcmFte1ZvdGVTZWFyY2h9CiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICBpZiAoIElzTnVtYmVyKCAkR2V0UGFyYW17UmF0ZVNlYXJjaH0gKSApIHsKICAgICAgICAgICAgJEdldFBhcmFte1JhdGV9ID0gewogICAgICAgICAgICAgICAgJEdldFBhcmFte1JhdGVTZWFyY2hUeXBlfSA9PiAkR2V0UGFyYW17UmF0ZVNlYXJjaH0KICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgICMgcGVyZm9ybSBGQVEgc2VhcmNoCiAgICAgICAgIyBkZWZhdWx0IHNlYXJjaCBvbiBhbGwgdmFsaWQgaWRzLCB0aGlzIGNhbiBiZSBvdmVyd3JpdHRlbiBieSAlR2V0UGFyYW0KICAgICAgICBteSBAVmlld2FibGVGQVFJRHMgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUVNlYXJjaCgKICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICA9PiBbICRTZWxmLT57U29ydEJ5fSBdLAogICAgICAgICAgICBPcmRlckJ5RGlyZWN0aW9uICAgID0+IFsgJFNlbGYtPntPcmRlckJ5fSBdLAogICAgICAgICAgICBMaW1pdCAgICAgICAgICAgICAgID0+ICRTZWxmLT57U2VhcmNoTGltaXR9LAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgU3RhdGVzICAgICAgICAgICAgICA9PiAkU2VhcmNoU3RhdGVzLAogICAgICAgICAgICBJbnRlcmZhY2UgICAgICAgICAgID0+ICRTZWxmLT57SW50ZXJmYWNlfSwKICAgICAgICAgICAgQ29udGVudFNlYXJjaFByZWZpeCA9PiAnKicsCiAgICAgICAgICAgIENvbnRlbnRTZWFyY2hTdWZmaXggPT4gJyonLAogICAgICAgICAgICBWYWxpZElEcyAgICAgICAgICAgID0+IFxAQWxsVmFsaWRJRHMsCiAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICApOwoKICAgICAgICAjIENTViBvdXRwdXQKICAgICAgICBpZiAoICRHZXRQYXJhbXtSZXN1bHRGb3JtfSBlcSAnQ1NWJyApIHsKICAgICAgICAgICAgbXkgQENTVkhlYWQ7CiAgICAgICAgICAgIG15IEBDU1ZEYXRhOwoKICAgICAgICAgICAgZm9yIG15ICRGQVFJRCAoQFZpZXdhYmxlRkFRSURzKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgRkFRIGRhdGEgZGV0YWlscwogICAgICAgICAgICAgICAgbXkgJUZBUURhdGEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUUdldCgKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgICAgID0+ICRGQVFJRCwKICAgICAgICAgICAgICAgICAgICBJdGVtRmllbGRzID0+IDAsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG15ICRDaGFuZ2VkID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgICAgICAgICAgVGVtcGxhdGUgPT4gJyRUaW1lTG9uZ3siJERhdGF7IkNoYW5nZWQifSJ9JywKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICA9PiBcJUZBUURhdGEsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgZ2V0IGluZm8gZm9yIENTViBvdXRwdXQKICAgICAgICAgICAgICAgIG15ICVDU1ZJbmZvID0gKAogICAgICAgICAgICAgICAgICAgIEZBUU51bWJlciA9PiAkRkFRRGF0YXtOdW1iZXJ9LAogICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICA9PiAkRkFRRGF0YXtUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgQ2F0ZWdvcnkgID0+ICRGQVFEYXRhe0NhdGVnb3J5TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgTGFuZ3VhZ2UgID0+ICRGQVFEYXRhe0xhbmd1YWdlfSwKICAgICAgICAgICAgICAgICAgICBTdGF0ZSAgICAgPT4gJEZBUURhdGF7U3RhdGV9LAogICAgICAgICAgICAgICAgICAgIENoYW5nZWQgICA9PiAkQ2hhbmdlZCwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjc3YgcXVvdGUKICAgICAgICAgICAgICAgIGlmICggIUBDU1ZIZWFkICkgewogICAgICAgICAgICAgICAgICAgIEBDU1ZIZWFkID0gcXcoIEZBUU51bWJlciBUaXRsZSBDYXRlZ29yeSk7CgogICAgICAgICAgICAgICAgICAgICMgaW5zZXJ0IGxhbmd1YWdlIGhlYWRlcgogICAgICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntNdWx0aUxhbmd1YWdlfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAQ1NWSGVhZCwgJ0xhbmd1YWdlJzsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIHB1c2ggQENTVkhlYWQsIHF3KFN0YXRlIENoYW5nZWQpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgaW5zc2VydCBkYXRhCiAgICAgICAgICAgICAgICBteSBARGF0YTsKICAgICAgICAgICAgICAgIGZvciBteSAkSGVhZGVyIChAQ1NWSGVhZCkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQERhdGEsICRDU1ZJbmZveyRIZWFkZXJ9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcHVzaCBAQ1NWRGF0YSwgXEBEYXRhOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGNzdiBxdW90ZQogICAgICAgICAgICAjIHRyYW5zbGF0ZSBub24gZXhpc3RpbmcgaGVhZGVyIG1heSByZXN1bHQgaW4gYSBnYXJiYWdlIGZpbGUKICAgICAgICAgICAgaWYgKCAhQENTVkhlYWQgKSB7CiAgICAgICAgICAgICAgICBAQ1NWSGVhZCA9IHF3KEZBUU51bWJlciBUaXRsZSBDYXRlZ29yeSk7CgogICAgICAgICAgICAgICAgIyBpbnNlcnQgbGFuZ3VhZ2UgaGVhZGVyCiAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAQ1NWSGVhZCwgJ0xhbmd1YWdlJzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBwdXNoIEBDU1ZIZWFkLCBxdyhTdGF0ZSBDaGFuZ2VkKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyB0cmFuc2xhdGUgaGVhZGVycwogICAgICAgICAgICBmb3IgbXkgJEhlYWRlciAoQENTVkhlYWQpIHsKCiAgICAgICAgICAgICAgICAjIHJlcGxhY2UgRkFRTnVtYmVyIGhlYWRlciB3aXRoIHRoZSBjdXJyZW50IEZBUUhvb2sgZnJvbSBjb25maWcKICAgICAgICAgICAgICAgIGlmICggJEhlYWRlciBlcSAnRkFRTnVtYmVyJyApIHsKICAgICAgICAgICAgICAgICAgICAkSGVhZGVyID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6RkFRSG9vaycpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJEhlYWRlciA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCRIZWFkZXIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGFzc2FibGUgQ1NWIGRhdGEKICAgICAgICAgICAgbXkgJENTViA9ICRTZWxmLT57Q1NWT2JqZWN0fS0+QXJyYXkyQ1NWKAogICAgICAgICAgICAgICAgSGVhZCAgICAgID0+IFxAQ1NWSGVhZCwKICAgICAgICAgICAgICAgIERhdGEgICAgICA9PiBcQENTVkRhdGEsCiAgICAgICAgICAgICAgICBTZXBhcmF0b3IgPT4gJFNlbGYtPntVc2VyQ1NWU2VwYXJhdG9yfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgcmV0dXJuIGNzdiB0byBkb3dubG9hZAogICAgICAgICAgICBteSAkQ1NWRmlsZSA9ICdGQVFfc2VhcmNoJzsKICAgICAgICAgICAgbXkgKCAkcywgJG0sICRoLCAkRCwgJE0sICRZICkgPSAkU2VsZi0+e1RpbWVPYmplY3R9LT5TeXN0ZW1UaW1lMkRhdGUoCiAgICAgICAgICAgICAgICBTeXN0ZW1UaW1lID0+ICRTZWxmLT57VGltZU9iamVjdH0tPlN5c3RlbVRpbWUoKSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJE0gPSBzcHJpbnRmKCAiJTAyZCIsICRNICk7CiAgICAgICAgICAgICREID0gc3ByaW50ZiggIiUwMmQiLCAkRCApOwogICAgICAgICAgICAkaCA9IHNwcmludGYoICIlMDJkIiwgJGggKTsKICAgICAgICAgICAgJG0gPSBzcHJpbnRmKCAiJTAyZCIsICRtICk7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkF0dGFjaG1lbnQoCiAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAkQ1NWRmlsZSAuICJfIiAuICIkWS0kTS0kRCIgLiAiXyIgLiAiJGgtJG0uY3N2IiwKICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICJ0ZXh0L2NzdjsgY2hhcnNldD0iIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57VXNlckNoYXJzZXR9LAogICAgICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJENTViwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gZXEgJ1ByaW50JyApIHsKCiAgICAgICAgICAgIG15IEBQREZEYXRhOwogICAgICAgICAgICBmb3IgbXkgJEZBUUlEIChAVmlld2FibGVGQVFJRHMpIHsKCiAgICAgICAgICAgICAgICAjIGdldCBGQVEgZGF0YSBkZXRhaWxzCiAgICAgICAgICAgICAgICBteSAlRkFRRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRR2V0KAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJEZBUUlELAogICAgICAgICAgICAgICAgICAgIEl0ZW1GaWVsZHMgPT4gMCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjcmVhdGUgUERGT2JqZWN0CiAgICAgICAgICAgICAgICB1c2UgS2VybmVsOjpTeXN0ZW06OlBERjsKICAgICAgICAgICAgICAgICRTZWxmLT57UERGT2JqZWN0fSA9IEtlcm5lbDo6U3lzdGVtOjpQREYtPm5ldyggJXskU2VsZn0gKTsKCiAgICAgICAgICAgICAgICAjIHNldCBjaGFuZ2UgZGF0ZSB0byBsb25nIGZvcm1hdAogICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e1BERk9iamVjdH0gKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJENoYW5nZWQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgICAgICAgICAgICAgVGVtcGxhdGUgPT4gJyRUaW1lTG9uZ3siJERhdGF7IkNoYW5nZWQifSJ9JywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgPT4gXCVGQVFEYXRhLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgY3JlYXRlIFBERiBSb3dzCiAgICAgICAgICAgICAgICAgICAgbXkgQFBERlJvdzsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBQREZSb3csICRGQVFEYXRhe051bWJlcn07CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAUERGUm93LCAkRkFRRGF0YXtUaXRsZX07CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAUERGUm93LCAkRkFRRGF0YXtDYXRlZ29yeU5hbWV9OwoKICAgICAgICAgICAgICAgICAgICAjIGNyZWF0ZSBsYW5ndWFnZSByb3cKICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQFBERlJvdywgJEZBUURhdGF7TGFuZ3VhZ2V9OwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgcHVzaCBAUERGUm93LCAgJEZBUURhdGF7U3RhdGV9OwogICAgICAgICAgICAgICAgICAgIHB1c2ggQFBERlJvdywgICRDaGFuZ2VkOwogICAgICAgICAgICAgICAgICAgIHB1c2ggQFBERkRhdGEsIFxAUERGUm93OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICMgYWRkIHRhYmxlIGJsb2NrCiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7JUZBUURhdGF9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgYWRkIGxhbmd1YWdlIGRhdGEKICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmRMYW5ndWFnZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHslRkFRRGF0YX0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFBERiBPdXRwdXQKICAgICAgICAgICAgaWYgKCAkU2VsZi0+e1BERk9iamVjdH0gKSB7CiAgICAgICAgICAgICAgICBteSAkVGl0bGUgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCgnRkFRJykgLiAnICcKICAgICAgICAgICAgICAgICAgICAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdTZWFyY2gnKTsKICAgICAgICAgICAgICAgIG15ICRQcmludGVkQnkgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCgncHJpbnRlZCBieScpOwogICAgICAgICAgICAgICAgbXkgJFBhZ2UgICAgICA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdQYWdlJyk7CiAgICAgICAgICAgICAgICBteSAkVGltZSAgICAgID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoIFRlbXBsYXRlID0+ICckRW52eyJUaW1lIn0nICk7CiAgICAgICAgICAgICAgICBteSAkVXJsICAgICAgID0gJyc7CiAgICAgICAgICAgICAgICBpZiAoICRFTlZ7UkVRVUVTVF9VUkl9ICkgewogICAgICAgICAgICAgICAgICAgICRVcmwKICAgICAgICAgICAgICAgICAgICAgICAgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnSHR0cFR5cGUnKSAuICc6Ly8nCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZRRE4nKQogICAgICAgICAgICAgICAgICAgICAgICAuICRFTlZ7UkVRVUVTVF9VUkl9OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZ2V0IG1heGltdW0gbnVtYmVyIG9mIHBhZ2VzCiAgICAgICAgICAgICAgICBteSAkTWF4UGFnZXMgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnUERGOjpNYXhQYWdlcycpOwogICAgICAgICAgICAgICAgaWYgKCAhJE1heFBhZ2VzIHx8ICRNYXhQYWdlcyA8IDEgfHwgJE1heFBhZ2VzID4gMTAwMCApIHsKICAgICAgICAgICAgICAgICAgICAkTWF4UGFnZXMgPSAxMDA7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBjcmVhdGUgdGhlIGhlYWRlcgogICAgICAgICAgICAgICAgbXkgJENlbGxEYXRhOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlswXS0+e0NvbnRlbnR9ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6RkFRSG9vaycpOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlswXS0+e0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlsxXS0+e0NvbnRlbnR9CiAgICAgICAgICAgICAgICAgICAgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCgnVGl0bGUnKTsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bMV0tPntGb250fSA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bMl0tPntDb250ZW50fQogICAgICAgICAgICAgICAgICAgID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ0NhdGVnb3J5Jyk7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzJdLT57Rm9udH0gPSAnUHJvcG9ydGlvbmFsQm9sZCc7CgogICAgICAgICAgICAgICAgIyBzdG9yZSB0aGUgY29ycmVjdCBoZWFkZXIgaW5kZXgKICAgICAgICAgICAgICAgIG15ICROZXh0SGVhZGVySW5kZXggPSAzOwoKICAgICAgICAgICAgICAgICMgYWRkIGxhbmd1YWdlIGhlYWRlcgogICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ICkgewogICAgICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bM10tPntDb250ZW50fQogICAgICAgICAgICAgICAgICAgICAgICA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdMYW5ndWFnZScpOwogICAgICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bM10tPntGb250fSA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKICAgICAgICAgICAgICAgICAgICAkTmV4dEhlYWRlckluZGV4ID0gNDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WyROZXh0SGVhZGVySW5kZXhdLT57Q29udGVudH0KICAgICAgICAgICAgICAgICAgICA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdTdGF0ZScpOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlskTmV4dEhlYWRlckluZGV4XS0+e0ZvbnR9ID0gJ1Byb3BvcnRpb25hbEJvbGQnOwoKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bICROZXh0SGVhZGVySW5kZXggKyAxIF0tPntDb250ZW50fQogICAgICAgICAgICAgICAgICAgID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ0NoYW5nZWQnKTsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bICROZXh0SGVhZGVySW5kZXggKyAxIF0tPntGb250fSA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKCiAgICAgICAgICAgICAgICAjIGNyZWF0ZSB0aGUgY29udGVudCBhcnJheQogICAgICAgICAgICAgICAgbXkgJENvdW50ZXJSb3cgPSAxOwogICAgICAgICAgICAgICAgZm9yIG15ICRSb3cgKEBQREZEYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJENvdW50ZXJDb2x1bW4gPSAwOwogICAgICAgICAgICAgICAgICAgIGZvciBteSAkQ29udGVudCAoIEB7JFJvd30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WyRDb3VudGVyUm93XS0+WyRDb3VudGVyQ29sdW1uXS0+e0NvbnRlbnR9ID0gJENvbnRlbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICRDb3VudGVyQ29sdW1uKys7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRDb3VudGVyUm93Kys7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBvdXRwdXQgJ05vIFJlc3VsdCcsIGlmIG5vIGNvbnRlbnQgd2FzIGdpdmVuCiAgICAgICAgICAgICAgICBpZiAoICEkQ2VsbERhdGEtPlswXS0+WzBdICkgewogICAgICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bMF0tPntDb250ZW50fQogICAgICAgICAgICAgICAgICAgICAgICA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdObyBSZXN1bHQhJyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBwYWdlIHBhcmFtcwogICAgICAgICAgICAgICAgbXkgJVBhZ2VQYXJhbTsKICAgICAgICAgICAgICAgICRQYWdlUGFyYW17UGFnZU9yaWVudGF0aW9ufSA9ICdsYW5kc2NhcGUnOwogICAgICAgICAgICAgICAgJFBhZ2VQYXJhbXtNYXJnaW5Ub3B9ICAgICAgID0gMzA7CiAgICAgICAgICAgICAgICAkUGFnZVBhcmFte01hcmdpblJpZ2h0fSAgICAgPSA0MDsKICAgICAgICAgICAgICAgICRQYWdlUGFyYW17TWFyZ2luQm90dG9tfSAgICA9IDQwOwogICAgICAgICAgICAgICAgJFBhZ2VQYXJhbXtNYXJnaW5MZWZ0fSAgICAgID0gNDA7CiAgICAgICAgICAgICAgICAkUGFnZVBhcmFte0hlYWRlclJpZ2h0fSAgICAgPSAkVGl0bGU7CiAgICAgICAgICAgICAgICAkUGFnZVBhcmFte0Zvb3RlckxlZnR9ICAgICAgPSAkVXJsOwogICAgICAgICAgICAgICAgJFBhZ2VQYXJhbXtIZWFkbGluZUxlZnR9ICAgID0gJFRpdGxlOwogICAgICAgICAgICAgICAgJFBhZ2VQYXJhbXtIZWFkbGluZVJpZ2h0fSAgID0gJFByaW50ZWRCeSAuICcgJwogICAgICAgICAgICAgICAgICAgIC4gJFNlbGYtPntVc2VyRmlyc3RuYW1lfSAuICcgJwogICAgICAgICAgICAgICAgICAgIC4gJFNlbGYtPntVc2VyTGFzdG5hbWV9IC4gJyAoJwogICAgICAgICAgICAgICAgICAgIC4gJFNlbGYtPntVc2VyRW1haWx9IC4gJykgJwogICAgICAgICAgICAgICAgICAgIC4gJFRpbWU7CgogICAgICAgICAgICAgICAgIyB0YWJsZSBwYXJhbXMKICAgICAgICAgICAgICAgIG15ICVUYWJsZVBhcmFtOwogICAgICAgICAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9ICAgICAgICAgICAgPSAkQ2VsbERhdGE7CiAgICAgICAgICAgICAgICAkVGFibGVQYXJhbXtUeXBlfSAgICAgICAgICAgICAgICA9ICdDdXQnOwogICAgICAgICAgICAgICAgJFRhYmxlUGFyYW17Rm9udFNpemV9ICAgICAgICAgICAgPSA2OwogICAgICAgICAgICAgICAgJFRhYmxlUGFyYW17Qm9yZGVyfSAgICAgICAgICAgICAgPSAwOwogICAgICAgICAgICAgICAgJFRhYmxlUGFyYW17QmFja2dyb3VuZENvbG9yRXZlbn0gPSAnI0FBQUFBQSc7CiAgICAgICAgICAgICAgICAkVGFibGVQYXJhbXtCYWNrZ3JvdW5kQ29sb3JPZGR9ICA9ICcjREREREREJzsKICAgICAgICAgICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmd9ICAgICAgICAgICAgID0gMTsKICAgICAgICAgICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmdUb3B9ICAgICAgICAgID0gMzsKICAgICAgICAgICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmdCb3R0b219ICAgICAgID0gMzsKCiAgICAgICAgICAgICAgICAjIGNyZWF0ZSBuZXcgcGRmIGRvY3VtZW50CiAgICAgICAgICAgICAgICAkU2VsZi0+e1BERk9iamVjdH0tPkRvY3VtZW50TmV3KAogICAgICAgICAgICAgICAgICAgIFRpdGxlICA9PiAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnUHJvZHVjdCcpIC4gJzogJyAuICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICBFbmNvZGUgPT4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57VXNlckNoYXJzZXR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHN0YXJ0IHRhYmxlIG91dHB1dAogICAgICAgICAgICAgICAgJFNlbGYtPntQREZPYmplY3R9LT5QYWdlTmV3KCAlUGFnZVBhcmFtLCBGb290ZXJSaWdodCA9PiAkUGFnZSAuICcgMScsICk7CiAgICAgICAgICAgICAgICBmb3IgKCAyIC4uICRNYXhQYWdlcyApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBvdXRwdXQgdGFibGUgKG9yIGEgZnJhZ21lbnQgb2YgaXQpCiAgICAgICAgICAgICAgICAgICAgJVRhYmxlUGFyYW0gPSAkU2VsZi0+e1BERk9iamVjdH0tPlRhYmxlKCAlVGFibGVQYXJhbSwgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBzdG9wIG91dHB1dCBvciBhbm90aGVyIHBhZ2UKICAgICAgICAgICAgICAgICAgICBpZiAoICRUYWJsZVBhcmFte1N0YXRlfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbGFzdDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRTZWxmLT57UERGT2JqZWN0fS0+UGFnZU5ldyggJVBhZ2VQYXJhbSwgRm9vdGVyUmlnaHQgPT4gJFBhZ2UgLiAnICcgLiAkXywgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyByZXR1cm4gdGhlIHBkZiBkb2N1bWVudAogICAgICAgICAgICAgICAgbXkgJEZpbGVuYW1lID0gJ0ZBUV9zZWFyY2gnOwogICAgICAgICAgICAgICAgbXkgKCAkcywgJG0sICRoLCAkRCwgJE0sICRZICkKICAgICAgICAgICAgICAgICAgICA9ICRTZWxmLT57VGltZU9iamVjdH0tPlN5c3RlbVRpbWUyRGF0ZSgKICAgICAgICAgICAgICAgICAgICBTeXN0ZW1UaW1lID0+ICRTZWxmLT57VGltZU9iamVjdH0tPlN5c3RlbVRpbWUoKSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJE0gPSBzcHJpbnRmKCAiJTAyZCIsICRNICk7CiAgICAgICAgICAgICAgICAkRCA9IHNwcmludGYoICIlMDJkIiwgJEQgKTsKICAgICAgICAgICAgICAgICRoID0gc3ByaW50ZiggIiUwMmQiLCAkaCApOwogICAgICAgICAgICAgICAgJG0gPSBzcHJpbnRmKCAiJTAyZCIsICRtICk7CiAgICAgICAgICAgICAgICBteSAkUERGU3RyaW5nID0gJFNlbGYtPntQREZPYmplY3R9LT5Eb2N1bWVudE91dHB1dCgpOwogICAgICAgICAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QXR0YWNobWVudCgKICAgICAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAkRmlsZW5hbWUgLiAiXyIgLiAiJFktJE0tJEQiIC4gIl8iIC4gIiRoLSRtLnBkZiIsCiAgICAgICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gImFwcGxpY2F0aW9uL3BkZiIsCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJFBERlN0cmluZywKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgICA9PiAnYXR0YWNobWVudCcsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJE91dHB1dCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+UHJpbnRIZWFkZXIoIFdpZHRoID0+IDgwMCApOwogICAgICAgICAgICAgICAgaWYgKCBzY2FsYXIgQFZpZXdhYmxlRkFRSURzID09ICRTZWxmLT57U2VhcmNoTGltaXR9ICkgewogICAgICAgICAgICAgICAgICAgICRQYXJhbXtXYXJuaW5nfSA9ICckVGV4dHsiUmVhY2hlZCBtYXguIGNvdW50IG9mICVzIHNlYXJjaCBoaXRzISIsICInCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJFNlbGYtPntTZWFyY2hMaW1pdH0gLiAnIn0nOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgYWRkIGxhbmd1YWdlIGhlYWRlcgogICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ICkgewogICAgICAgICAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0hlYWRlckxhbmd1YWdlJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUVNlYXJjaFJlc3VsdFByaW50JywKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBhZGQgZm9vdGVyCiAgICAgICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+UHJpbnRGb290ZXIoKTsKCiAgICAgICAgICAgICAgICAjIHJldHVybiBvdXRwdXQKICAgICAgICAgICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgIyBzdGFydCBodG1sIHBhZ2UKICAgICAgICAgICAgbXkgJE91dHB1dCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+SGVhZGVyKCk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5OYXZpZ2F0aW9uQmFyKCk7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+UHJpbnQoIE91dHB1dCA9PiBcJE91dHB1dCApOwogICAgICAgICAgICAkT3V0cHV0ID0gJyc7CgogICAgICAgICAgICAkU2VsZi0+e0ZpbHRlcn0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdGaWx0ZXInICkgfHwgJyc7CiAgICAgICAgICAgICRTZWxmLT57Vmlld30gICA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1ZpZXcnICkgICB8fCAnJzsKCiAgICAgICAgICAgICMgc2hvdyBGQVEncwogICAgICAgICAgICBteSAkTGlua1BhZ2UgPSAnRmlsdGVyPScKICAgICAgICAgICAgICAgIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5MaW5rRW5jb2RlKCAkU2VsZi0+e0ZpbHRlcn0gKQogICAgICAgICAgICAgICAgLiAnO1ZpZXc9JyAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua0VuY29kZSggJFNlbGYtPntWaWV3fSApCiAgICAgICAgICAgICAgICAuICc7U29ydEJ5PScgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkxpbmtFbmNvZGUoICRTZWxmLT57U29ydEJ5fSApCiAgICAgICAgICAgICAgICAuICc7T3JkZXJCeT0nIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5MaW5rRW5jb2RlKCAkU2VsZi0+e09yZGVyQnl9ICkKICAgICAgICAgICAgICAgIC4gJztQcm9maWxlPScgLiAkU2VsZi0+e1Byb2ZpbGV9IC4gJztUYWtlTGFzdFNlYXJjaD0xO1N1YmFjdGlvbj1TZWFyY2gnCiAgICAgICAgICAgICAgICAuICc7JzsKICAgICAgICAgICAgbXkgJExpbmtTb3J0ID0gJ0ZpbHRlcj0nCiAgICAgICAgICAgICAgICAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua0VuY29kZSggJFNlbGYtPntGaWx0ZXJ9ICkKICAgICAgICAgICAgICAgIC4gJztWaWV3PScgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkxpbmtFbmNvZGUoICRTZWxmLT57Vmlld30gKQogICAgICAgICAgICAgICAgLiAnO1Byb2ZpbGU9JyAuICRTZWxmLT57UHJvZmlsZX0gLiAnO1Rha2VMYXN0U2VhcmNoPTE7U3ViYWN0aW9uPVNlYXJjaCcKICAgICAgICAgICAgICAgIC4gJzsnOwogICAgICAgICAgICBteSAkTGlua0ZpbHRlciA9ICdUYWtlTGFzdFNlYXJjaD0xO1N1YmFjdGlvbj1TZWFyY2g7UHJvZmlsZT0nCiAgICAgICAgICAgICAgICAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua0VuY29kZSggJFNlbGYtPntQcm9maWxlfSApCiAgICAgICAgICAgICAgICAuICc7JzsKICAgICAgICAgICAgbXkgJExpbmtCYWNrID0gJ1N1YmFjdGlvbj1Mb2FkUHJvZmlsZTtQcm9maWxlPScKICAgICAgICAgICAgICAgIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5MaW5rRW5jb2RlKCAkU2VsZi0+e1Byb2ZpbGV9ICkKICAgICAgICAgICAgICAgIC4gJztUYWtlTGFzdFNlYXJjaD0xOyc7CgogICAgICAgICAgICBteSAkRmlsdGVyTGluawogICAgICAgICAgICAgICAgPSAnU29ydEJ5PScgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkxpbmtFbmNvZGUoICRTZWxmLT57U29ydEJ5fSApCiAgICAgICAgICAgICAgICAuICc7T3JkZXJCeT0nIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5MaW5rRW5jb2RlKCAkU2VsZi0+e09yZGVyQnl9ICkKICAgICAgICAgICAgICAgIC4gJztWaWV3PScgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkxpbmtFbmNvZGUoICRTZWxmLT57Vmlld30gKQogICAgICAgICAgICAgICAgLiAnO1Byb2ZpbGU9JyAuICRTZWxmLT57UHJvZmlsZX0gLiAnO1Rha2VMYXN0U2VhcmNoPTE7U3ViYWN0aW9uPVNlYXJjaCcKICAgICAgICAgICAgICAgIC4gJzsnOwoKICAgICAgICAgICAgIyBmaW5kIG91dCB3aGljaCBjb2x1bW5zIHNob3VsZCBiZSBzaG93bgogICAgICAgICAgICBteSBAU2hvd0NvbHVtbnM7CiAgICAgICAgICAgIGlmICggJFNlbGYtPntDb25maWd9LT57U2hvd0NvbHVtbnN9ICkgewoKICAgICAgICAgICAgICAgICMgZ2V0IGFsbCBwb3NzaWJsZSBjb2x1bW5zIGZyb20gY29uZmlnCiAgICAgICAgICAgICAgICBteSAlUG9zc2libGVDb2x1bW4gPSAleyAkU2VsZi0+e0NvbmZpZ30tPntTaG93Q29sdW1uc30gfTsKCiAgICAgICAgICAgICAgICAjIGdldCB0aGUgY29sdW1uIG5hbWVzIHRoYXQgc2hvdWxkIGJlIHNob3duCiAgICAgICAgICAgICAgICBDT0xVTU5OQU1FOgogICAgICAgICAgICAgICAgZm9yIG15ICROYW1lICggc29ydCBrZXlzICVQb3NzaWJsZUNvbHVtbiApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IENPTFVNTk5BTUUgaWYgISRQb3NzaWJsZUNvbHVtbnskTmFtZX07CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAU2hvd0NvbHVtbnMsICROYW1lOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZW5mb3JjZSBGQVEgbnVtYmVyIGNvbHVtbiBzaW5jZSBpcyB0aGUgbGluayBNYXN0ZXJBY3Rpb24gaG9vawogICAgICAgICAgICAgICAgaWYgKCAhJFBvc3NpYmxlQ29sdW1ueydOdW1iZXInfSApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBTaG93Q29sdW1ucywgJ051bWJlcic7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GQVFMaXN0U2hvdygKICAgICAgICAgICAgICAgIEZBUUlEcyA9PiBcQFZpZXdhYmxlRkFRSURzLAogICAgICAgICAgICAgICAgVG90YWwgID0+IHNjYWxhciBAVmlld2FibGVGQVFJRHMsCgogICAgICAgICAgICAgICAgVmlldyA9PiAkU2VsZi0+e1ZpZXd9LAoKICAgICAgICAgICAgICAgIEVudiAgICAgICAgPT4gJFNlbGYsCiAgICAgICAgICAgICAgICBMaW5rUGFnZSAgID0+ICRMaW5rUGFnZSwKICAgICAgICAgICAgICAgIExpbmtTb3J0ICAgPT4gJExpbmtTb3J0LAogICAgICAgICAgICAgICAgTGlua0ZpbHRlciA9PiAkTGlua0ZpbHRlciwKICAgICAgICAgICAgICAgIExpbmtCYWNrICAgPT4gJExpbmtCYWNrLAogICAgICAgICAgICAgICAgUHJvZmlsZSAgICA9PiAkU2VsZi0+e1Byb2ZpbGV9LAoKICAgICAgICAgICAgICAgIFRpdGxlTmFtZSA9PiAnU2VhcmNoIFJlc3VsdCcsCiAgICAgICAgICAgICAgICBMaW1pdCAgICAgPT4gJFNlbGYtPntTZWFyY2hMaW1pdH0sCgogICAgICAgICAgICAgICAgRmlsdGVyICAgICA9PiAkU2VsZi0+e0ZpbHRlcn0sCiAgICAgICAgICAgICAgICBGaWx0ZXJMaW5rID0+ICRGaWx0ZXJMaW5rLAoKICAgICAgICAgICAgICAgIE9yZGVyQnkgPT4gJFNlbGYtPntPcmRlckJ5fSwKICAgICAgICAgICAgICAgIFNvcnRCeSAgPT4gJFNlbGYtPntTb3J0Qnl9LAoKICAgICAgICAgICAgICAgIFNob3dDb2x1bW5zID0+IFxAU2hvd0NvbHVtbnMsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGJ1aWxkIGZvb3RlcgogICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Rm9vdGVyKCk7CiAgICAgICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgICAgIH0KICAgIH0KCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQUpBWFByb2ZpbGVEZWxldGUnICkgewogICAgICAgIG15ICRQcm9maWxlID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnUHJvZmlsZScgKTsKCiAgICAgICAgIyByZW1vdmUgb2xkIHByb2ZpbGUgc3R1ZmYKICAgICAgICAkU2VsZi0+e1NlYXJjaFByb2ZpbGVPYmplY3R9LT5TZWFyY2hQcm9maWxlRGVsZXRlKAogICAgICAgICAgICBCYXNlICAgICAgPT4gJ0ZBUVNlYXJjaCcsCiAgICAgICAgICAgIE5hbWUgICAgICA9PiAkUHJvZmlsZSwKICAgICAgICAgICAgVXNlckxvZ2luID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICApOwogICAgICAgIG15ICRPdXRwdXQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkpTT05FbmNvZGUoCiAgICAgICAgICAgIERhdGEgPT4gMSwKICAgICAgICApOwogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkT3V0cHV0LAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICApOwogICAgfQoKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBSkFYJyApIHsKCiAgICAgICAgIyBjcmVhdGUgb3V0cHV0CiAgICAgICAgbXkgJE91dHB1dCAuPSAkU2VsZi0+X01hc2tGb3JtKAogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QXR0YWNobWVudCgKICAgICAgICAgICAgTm9DYWNoZSAgICAgPT4gMSwKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgIENoYXJzZXQgICAgID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e1VzZXJDaGFyc2V0fSwKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJE91dHB1dCwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNob3cgZGVmYXVsdCBzZWFyY2ggc2NyZWVuCiAgICAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5IZWFkZXIoKTsKICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5OYXZpZ2F0aW9uQmFyKCk7CiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ1NlYXJjaCcsCiAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgKTsKICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUVNlYXJjaCcsCiAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICApOwogICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZvb3RlcigpOwogICAgcmV0dXJuICRPdXRwdXQ7Cgp9CgpzdWIgX01hc2tGb3JtIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbGlzdCB0eXBlCiAgICBteSAkVHJlZVZpZXcgPSAwOwogICAgaWYgKCAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnVGlja2V0OjpGcm9udGVuZDo6TGlzdFR5cGUnKSBlcSAndHJlZScgKSB7CiAgICAgICAgJFRyZWVWaWV3ID0gMTsKICAgIH0KCiAgICBteSAkUHJvZmlsZSA9ICRTZWxmLT57UHJvZmlsZX07CiAgICBteSAkRW1wdHlTZWFyY2ggPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdFbXB0eVNlYXJjaCcgKTsKICAgIGlmICggISRQcm9maWxlICkgewogICAgICAgICRFbXB0eVNlYXJjaCA9IDE7CiAgICB9CgogICAgbXkgJUdldFBhcmFtID0gJFNlbGYtPntTZWFyY2hQcm9maWxlT2JqZWN0fS0+U2VhcmNoUHJvZmlsZUdldCgKICAgICAgICBCYXNlICAgICAgPT4gJ0ZBUVNlYXJjaCcsCiAgICAgICAgTmFtZSAgICAgID0+ICRQcm9maWxlLAogICAgICAgIFVzZXJMb2dpbiA9PiAkU2VsZi0+e1VzZXJMb2dpbn0sCiAgICApOwoKICAgICMgaWYgbm8gcHJvZmlsZSBpcyB1c2VkLCBzZXQgZGVmYXVsdCBwYXJhbXMgb2YgZGVmYXVsdCBhdHRyaWJ1dGVzCiAgICBpZiAoICEkUHJvZmlsZSApIHsKICAgICAgICBpZiAoICRTZWxmLT57Q29uZmlnfS0+e0RlZmF1bHRzfSApIHsKICAgICAgICAgICAgQVRUUklCVVRFOgogICAgICAgICAgICBmb3IgbXkgJEF0dHJpYnV0ZSAoIHNvcnQga2V5cyAleyAkU2VsZi0+e0NvbmZpZ30tPntEZWZhdWx0c30gfSApIHsKICAgICAgICAgICAgICAgIG5leHQgQVRUUklCVVRFIGlmICEkU2VsZi0+e0NvbmZpZ30tPntEZWZhdWx0c30tPnskQXR0cmlidXRlfTsKICAgICAgICAgICAgICAgICRHZXRQYXJhbXskQXR0cmlidXRlfSA9ICRTZWxmLT57Q29uZmlnfS0+e0RlZmF1bHRzfS0+eyRBdHRyaWJ1dGV9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgc2V0IGF0dHJpYnV0ZXMgc3RyaW5nCiAgICBteSBAQXR0cmlidXRlcyA9ICgKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdOdW1iZXInLAogICAgICAgICAgICBWYWx1ZSA9PiAnRkFRIE51bWJlcicsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdGdWxsdGV4dCcsCiAgICAgICAgICAgIFZhbHVlID0+ICdGdWxsdGV4dCcsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdUaXRsZScsCiAgICAgICAgICAgIFZhbHVlID0+ICdUaXRsZScsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdLZXl3b3JkJywKICAgICAgICAgICAgVmFsdWUgPT4gJ0tleXdvcmQnLAogICAgICAgIH0sCiAgICApOwoKICAgICMgc2hvdyBMYW5ndWFnZXMgYXR0cmlidXRlCiAgICBpZiAoICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gKSB7CiAgICAgICAgcHVzaCBAQXR0cmlidXRlcywgKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBLZXkgICA9PiAnTGFuZ3VhZ2VJRHMnLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJ0xhbmd1YWdlJywKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgIHB1c2ggQEF0dHJpYnV0ZXMsICgKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdDYXRlZ29yeUlEcycsCiAgICAgICAgICAgIFZhbHVlID0+ICdDYXRlZ29yeScsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdWYWxpZElEcycsCiAgICAgICAgICAgIFZhbHVlID0+ICdWYWxpZGl0eScsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdTdGF0ZUlEcycsCiAgICAgICAgICAgIFZhbHVlID0+ICdTdGF0ZScsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdWb3RlU2VhcmNoVHlwZScsCiAgICAgICAgICAgIFZhbHVlID0+ICdWb3RlcycsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdSYXRlU2VhcmNoVHlwZScsCiAgICAgICAgICAgIFZhbHVlID0+ICdSYXRlJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0FwcHJvdmVkU2VhcmNoJywKICAgICAgICAgICAgVmFsdWUgPT4gJ0FwcHJvdmVkJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0NyZWF0ZWRVc2VySURzJywKICAgICAgICAgICAgVmFsdWUgPT4gJ0NyZWF0ZWQgYnknLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnTGFzdENoYW5nZWRVc2VySURzJywKICAgICAgICAgICAgVmFsdWUgPT4gJ0xhc3QgQ2hhbmdlZCBieScsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdJdGVtQ3JlYXRlVGltZVBvaW50JywKICAgICAgICAgICAgVmFsdWUgPT4gJ0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0l0ZW1DcmVhdGVUaW1lU2xvdCcsCiAgICAgICAgICAgIFZhbHVlID0+ICdGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmV0d2VlbiknLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnSXRlbUNoYW5nZVRpbWVQb2ludCcsCiAgICAgICAgICAgIFZhbHVlID0+ICdGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKScsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdJdGVtQ2hhbmdlVGltZVNsb3QnLAogICAgICAgICAgICBWYWx1ZSA9PiAnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJldHdlZW4pJywKICAgICAgICB9LAogICAgKTsKCiAgICAjIGRyb3Bkb3duIG1lbnUgZm9yICdhdHRyaWJ1dGVzJwogICAgJFBhcmFte0F0dHJpYnV0ZXNTdHJnfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgPT4gXEBBdHRyaWJ1dGVzLAogICAgICAgIE5hbWUgICAgID0+ICdBdHRyaWJ1dGUnLAogICAgICAgIE11bHRpcGxlID0+IDAsCiAgICApOwogICAgJFBhcmFte0F0dHJpYnV0ZXNPcmlnU3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgID0+IFxAQXR0cmlidXRlcywKICAgICAgICBOYW1lICAgICA9PiAnQXR0cmlidXRlT3JpZycsCiAgICAgICAgTXVsdGlwbGUgPT4gMCwKICAgICk7CgogICAgIyBnZXQgbGFuZ3VhZ2VzIGxpc3QKICAgIG15ICVMYW5ndWFnZXMgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkxhbmd1YWdlTGlzdCgKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGRyb3Bkb3duIG1lbnUgZm9yICdsYW5ndWFnZXMnCiAgICAkUGFyYW17TGFuZ3VhZ2VzU2VsZWN0aW9uU3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4gXCVMYW5ndWFnZXMsCiAgICAgICAgTmFtZSAgICAgICA9PiAnTGFuZ3VhZ2VJRHMnLAogICAgICAgIFNpemUgICAgICAgPT4gNSwKICAgICAgICBNdWx0aXBsZSAgID0+IDEsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkR2V0UGFyYW17TGFuZ3VhZ2VJRHN9IHx8IFtdLAogICAgKTsKCiAgICAjIGdldCBjYXRlZ29yaWVzICh3aXRoIGNhdGVnb3J5IGxvbmcgbmFtZXMpIHdoZXJlIHVzZXIgaGFzIHJpZ2h0cwogICAgbXkgJFVzZXJDYXRlZ29yaWVzTG9uZ05hbWVzID0gJFNlbGYtPntGQVFPYmplY3R9LT5HZXRVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lcygKICAgICAgICBUeXBlICAgPT4gJ3J3JywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGJ1aWxkIHRoZSBjYXRlZ29yeSBzZWxlY3Rpb24KICAgICRQYXJhbXtDYXRlZ29yaWVzU2VsZWN0aW9uU3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgID0+ICRVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lcywKICAgICAgICBOYW1lICAgICAgICA9PiAnQ2F0ZWdvcnlJRHMnLAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRHZXRQYXJhbXtDYXRlZ29yeUlEc30gfHwgW10sCiAgICAgICAgU2l6ZSAgICAgICAgPT4gNSwKICAgICAgICBUcmFuc2xhdGlvbiA9PiAwLAogICAgICAgIE11bHRpcGxlICAgID0+IDEsCiAgICAgICAgVHJlZVZpZXcgICAgPT4gJFRyZWVWaWV3LAogICAgKTsKCiAgICAjIGdldCB2YWxpZCBsaXN0CiAgICBteSAlVmFsaWRMaXN0ID0gJFNlbGYtPntWYWxpZE9iamVjdH0tPlZhbGlkTGlzdCgpOwoKICAgICMgYnVpbGQgdGhlIHZhbGlkIHNlbGVjdGlvbgogICAgJFBhcmFte1ZhbGlkU2VsZWN0aW9uU3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgID0+IFwlVmFsaWRMaXN0LAogICAgICAgIE5hbWUgICAgICAgID0+ICdWYWxpZElEcycsCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJEdldFBhcmFte1ZhbGlkSURzfSB8fCBbXSwKICAgICAgICBTaXplICAgICAgICA9PiA1LAogICAgICAgIFRyYW5zbGF0aW9uID0+IDAsCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMSwKICAgICk7CgogICAgIyBjcmVhdGUgYSBtaXggb2Ygc3RhdGUgYW5kIHN0YXRlIHR5cGVzIGhhc2ggaW4gb3JkZXIgdG8gaGF2ZSB0aGUgc3RhdGUgdHlwZSBJRHMgd2l0aCBzdGF0ZQogICAgIyBuYW1lcwogICAgbXkgJVN0YXRlTGlzdCA9ICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVMaXN0KAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgIG15ICVTdGF0ZXM7CiAgICBmb3IgbXkgJFN0YXRlSUQgKCBzb3J0IGtleXMgJVN0YXRlTGlzdCApIHsKICAgICAgICBteSAlU3RhdGVEYXRhID0gJFNlbGYtPntGQVFPYmplY3R9LT5TdGF0ZUdldCgKICAgICAgICAgICAgU3RhdGVJRCA9PiAkU3RhdGVJRCwKICAgICAgICAgICAgVXNlcklEICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICAkU3RhdGVzeyAkU3RhdGVEYXRhe1R5cGVJRH0gfSA9ICRTdGF0ZURhdGF7TmFtZX0KICAgIH0KCiAgICAkUGFyYW17U3RhdGVTZWxlY3Rpb25TdHJnfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgPT4gXCVTdGF0ZXMsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ1N0YXRlSURzJywKICAgICAgICBTZWxlY3RlZElEICA9PiAkR2V0UGFyYW17U3RhdGVJRHN9IHx8IFtdLAogICAgICAgIFNpemUgICAgICAgID0+IDMsCiAgICAgICAgVHJhbnNsYXRpb24gPT4gMSwKICAgICAgICBNdWx0aXBsZSAgICA9PiAxLAogICAgKTsKCiAgICBteSAlVm90aW5nT3BlcmF0b3JzID0gKAogICAgICAgIEVxdWFscyAgICAgICAgICAgID0+ICdFcXVhbHMnLAogICAgICAgIEdyZWF0ZXJUaGFuICAgICAgID0+ICdHcmVhdGVyVGhhbicsCiAgICAgICAgR3JlYXRlclRoYW5FcXVhbHMgPT4gJ0dyZWF0ZXJUaGFuRXF1YWxzJywKICAgICAgICBTbWFsbGVyVGhhbiAgICAgICA9PiAnU21hbGxlclRoYW4nLAogICAgICAgIFNtYWxsZXJUaGFuRXF1YWxzID0+ICdTbWFsbGVyVGhhbkVxdWFscycsCiAgICApOwoKICAgICRQYXJhbXtWb3RlU2VhcmNoVHlwZVNlbGVjdGlvblN0cmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICA9PiBcJVZvdGluZ09wZXJhdG9ycywKICAgICAgICBOYW1lICAgICAgICA9PiAnVm90ZVNlYXJjaFR5cGUnLAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRHZXRQYXJhbXtWb3RlU2VhcmNoVHlwZX0gfHwgJycsCiAgICAgICAgU2l6ZSAgICAgICAgPT4gMSwKICAgICAgICBUcmFuc2xhdGlvbiA9PiAxLAogICAgICAgIE11bHRpcGxlICAgID0+IDAsCiAgICApOwoKICAgICRQYXJhbXtSYXRlU2VhcmNoVHlwZVNlbGVjdGlvblN0cmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICA9PiBcJVZvdGluZ09wZXJhdG9ycywKICAgICAgICBOYW1lICAgICAgICA9PiAnUmF0ZVNlYXJjaFR5cGUnLAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRHZXRQYXJhbXtSYXRlU2VhcmNoVHlwZX0gfHwgJycsCiAgICAgICAgU2l6ZSAgICAgICAgPT4gMSwKICAgICAgICBUcmFuc2xhdGlvbiA9PiAxLAogICAgICAgIE11bHRpcGxlICAgID0+IDAsCiAgICApOwogICAgJFBhcmFte1JhdGVTZWFyY2hTZWxlY3Rpb25TdHJnfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIDAgICA9PiAnMCUnLAogICAgICAgICAgICAyNSAgPT4gJzI1JScsCiAgICAgICAgICAgIDUwICA9PiAnNTAlJywKICAgICAgICAgICAgNzUgID0+ICc3NSUnLAogICAgICAgICAgICAxMDAgPT4gJzEwMCUnLAogICAgICAgIH0sCiAgICAgICAgU29ydCAgICAgICAgPT4gJ051bWVyaWNLZXknLAogICAgICAgIE5hbWUgICAgICAgID0+ICdSYXRlU2VhcmNoJywKICAgICAgICBTZWxlY3RlZElEICA9PiAkR2V0UGFyYW17UmF0ZVNlYXJjaH0gfHwgJycsCiAgICAgICAgU2l6ZSAgICAgICAgPT4gMSwKICAgICAgICBUcmFuc2xhdGlvbiA9PiAwLAogICAgICAgIE11bHRpcGxlICAgID0+IDAsCiAgICApOwoKICAgICRQYXJhbXtBcHByb3ZlZFN0cmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgTm8gID0+ICdObycsCiAgICAgICAgICAgIFllcyA9PiAnWWVzJywKICAgICAgICB9LAogICAgICAgIE5hbWUgICAgICAgID0+ICdBcHByb3ZlZFNlYXJjaCcsCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJEdldFBhcmFte0FwcHJvdmVkU2VhcmNofSB8fCAnWWVzJywKICAgICAgICBNdWx0aXBsZSAgICA9PiAwLAogICAgICAgIFRyYW5zbGF0aW9uID0+IDEsCiAgICApOwoKICAgICMgZ2V0IGEgbGlzdCBvZiBhbGwgdXNlcnMgdG8gZGlzcGxheQogICAgbXkgJVNob3duVXNlcnMgPSAkU2VsZi0+e1VzZXJPYmplY3R9LT5Vc2VyTGlzdCgKICAgICAgICBUeXBlICA9PiAnTG9uZycsCiAgICAgICAgVmFsaWQgPT4gMSwKICAgICk7CgogICAgIyBnZXQgdGhlIFVzZXJJRHMgZnJvbSBmYXEgYW5kIGZhcV9hZG1pbiBtZW1iZXJzCiAgICBteSAlR3JvdXBVc2VyczsKICAgIGZvciBteSAkR3JvdXAgKHF3KGZhcSBmYXFfYWRtaW4pKSB7CiAgICAgICAgbXkgJEdyb3VwSUQgPSAkU2VsZi0+e0dyb3VwT2JqZWN0fS0+R3JvdXBMb29rdXAoIEdyb3VwID0+ICRHcm91cCApOwogICAgICAgIG15ICVVc2VycyA9ICRTZWxmLT57R3JvdXBPYmplY3R9LT5Hcm91cE1lbWJlckxpc3QoCiAgICAgICAgICAgIEdyb3VwSUQgPT4gJEdyb3VwSUQsCiAgICAgICAgICAgIFR5cGUgICAgPT4gJ3J3JywKICAgICAgICAgICAgUmVzdWx0ICA9PiAnSEFTSCcsCiAgICAgICAgKTsKICAgICAgICAlR3JvdXBVc2VycyA9ICggJUdyb3VwVXNlcnMsICVVc2VycyApOwogICAgfQoKICAgICMgcmVtb3ZlIGFsbCB1c2VycyB0aGF0IGFyZSBub3QgaW4gdGhlIGZhcSBvciBmYXFfYWRtaW4gZ3JvdXBzCiAgICBmb3IgbXkgJFVzZXJJRCAoIHNvcnQga2V5cyAlU2hvd25Vc2VycyApIHsKICAgICAgICBpZiAoICEkR3JvdXBVc2Vyc3skVXNlcklEfSApIHsKICAgICAgICAgICAgZGVsZXRlICRTaG93blVzZXJzeyRVc2VySUR9OwogICAgICAgIH0KICAgIH0KICAgICRQYXJhbXtDcmVhdGVkVXNlclN0cmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgID0+IFwlU2hvd25Vc2VycywKICAgICAgICBOYW1lICAgICAgID0+ICdDcmVhdGVkVXNlcklEcycsCiAgICAgICAgTXVsdGlwbGUgICA9PiAxLAogICAgICAgIFNpemUgICAgICAgPT4gNSwKICAgICAgICBTZWxlY3RlZElEID0+ICRHZXRQYXJhbXtDcmVhdGVkVXNlcklEc30sCiAgICApOwogICAgJFBhcmFte0xhc3RDaGFuZ2VkVXNlclN0cmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgID0+IFwlU2hvd25Vc2VycywKICAgICAgICBOYW1lICAgICAgID0+ICdMYXN0Q2hhbmdlZFVzZXJJRHMnLAogICAgICAgIE11bHRpcGxlICAgPT4gMSwKICAgICAgICBTaXplICAgICAgID0+IDUsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkR2V0UGFyYW17TGFzdENoYW5nZWRVc2VySURzfSwKICAgICk7CgogICAgJFBhcmFte0l0ZW1DcmVhdGVUaW1lUG9pbnRTdHJnfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICA9PiBbIDEgLi4gNTkgXSwKICAgICAgICBOYW1lICAgICAgID0+ICdJdGVtQ3JlYXRlVGltZVBvaW50JywKICAgICAgICBTZWxlY3RlZElEID0+ICRHZXRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50fSwKICAgICk7CiAgICAkUGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0U3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAnTGFzdCcgICA9PiAnd2l0aGluIHRoZSBsYXN0IC4uLicsCiAgICAgICAgICAgICdCZWZvcmUnID0+ICdtb3JlIHRoYW4gLi4uIGFnbycsCiAgICAgICAgfSwKICAgICAgICBOYW1lID0+ICdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQnLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJEdldFBhcmFte0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydH0gfHwgJ0xhc3QnLAogICAgKTsKICAgICRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0U3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBtaW51dGUgPT4gJ21pbnV0ZShzKScsCiAgICAgICAgICAgIGhvdXIgICA9PiAnaG91cihzKScsCiAgICAgICAgICAgIGRheSAgICA9PiAnZGF5KHMpJywKICAgICAgICAgICAgd2VlayAgID0+ICd3ZWVrKHMpJywKICAgICAgICAgICAgbW9udGggID0+ICdtb250aChzKScsCiAgICAgICAgICAgIHllYXIgICA9PiAneWVhcihzKScsCiAgICAgICAgfSwKICAgICAgICBOYW1lICAgICAgID0+ICdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0JywKICAgICAgICBTZWxlY3RlZElEID0+ICRHZXRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0fSwKICAgICk7CiAgICAkUGFyYW17SXRlbUNyZWF0ZVRpbWVTdGFydFN0cmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZERhdGVTZWxlY3Rpb24oCiAgICAgICAgJUdldFBhcmFtLAogICAgICAgIFByZWZpeCAgID0+ICdJdGVtQ3JlYXRlVGltZVN0YXJ0JywKICAgICAgICBGb3JtYXQgICA9PiAnRGF0ZUlucHV0Rm9ybWF0JywKICAgICAgICBEaWZmVGltZSA9PiAtKCAoIDYwICogNjAgKiAyNCApICogMzAgKSwKICAgICk7CiAgICAkUGFyYW17SXRlbUNyZWF0ZVRpbWVTdG9wU3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkRGF0ZVNlbGVjdGlvbigKICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgUHJlZml4ID0+ICdJdGVtQ3JlYXRlVGltZVN0b3AnLAogICAgICAgIEZvcm1hdCA9PiAnRGF0ZUlucHV0Rm9ybWF0JywKICAgICk7CgogICAgJFBhcmFte0l0ZW1DaGFuZ2VUaW1lUG9pbnRTdHJnfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICA9PiBbIDEgLi4gNTkgXSwKICAgICAgICBOYW1lICAgICAgID0+ICdJdGVtQ2hhbmdlVGltZVBvaW50JywKICAgICAgICBTZWxlY3RlZElEID0+ICRHZXRQYXJhbXtJdGVtQ2hhbmdlVGltZVBvaW50fSwKICAgICk7CiAgICAkUGFyYW17SXRlbUNoYW5nZVRpbWVQb2ludFN0YXJ0U3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAnTGFzdCcgICA9PiAnd2l0aGluIHRoZSBsYXN0IC4uLicsCiAgICAgICAgICAgICdCZWZvcmUnID0+ICdtb3JlIHRoYW4gLi4uIGFnbycsCiAgICAgICAgfSwKICAgICAgICBOYW1lID0+ICdJdGVtQ2hhbmdlVGltZVBvaW50U3RhcnQnLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJEdldFBhcmFte0l0ZW1DaGFuZ2VUaW1lUG9pbnRTdGFydH0gfHwgJ0xhc3QnLAogICAgKTsKICAgICRQYXJhbXtJdGVtQ2hhbmdlVGltZVBvaW50Rm9ybWF0U3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBtaW51dGUgPT4gJ21pbnV0ZShzKScsCiAgICAgICAgICAgIGhvdXIgICA9PiAnaG91cihzKScsCiAgICAgICAgICAgIGRheSAgICA9PiAnZGF5KHMpJywKICAgICAgICAgICAgd2VlayAgID0+ICd3ZWVrKHMpJywKICAgICAgICAgICAgbW9udGggID0+ICdtb250aChzKScsCiAgICAgICAgICAgIHllYXIgICA9PiAneWVhcihzKScsCiAgICAgICAgfSwKICAgICAgICBOYW1lICAgICAgID0+ICdJdGVtQ2hhbmdlVGltZVBvaW50Rm9ybWF0JywKICAgICAgICBTZWxlY3RlZElEID0+ICRHZXRQYXJhbXtJdGVtQ2hhbmdlVGltZVBvaW50Rm9ybWF0fSwKICAgICk7CiAgICAkUGFyYW17SXRlbUNoYW5nZVRpbWVTdGFydFN0cmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZERhdGVTZWxlY3Rpb24oCiAgICAgICAgJUdldFBhcmFtLAogICAgICAgIFByZWZpeCAgID0+ICdJdGVtQ2hhbmdlVGltZVN0YXJ0JywKICAgICAgICBGb3JtYXQgICA9PiAnRGF0ZUlucHV0Rm9ybWF0JywKICAgICAgICBEaWZmVGltZSA9PiAtKCAoIDYwICogNjAgKiAyNCApICogMzAgKSwKICAgICk7CiAgICAkUGFyYW17SXRlbUNoYW5nZVRpbWVTdG9wU3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkRGF0ZVNlbGVjdGlvbigKICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgUHJlZml4ID0+ICdJdGVtQ2hhbmdlVGltZVN0b3AnLAogICAgICAgIEZvcm1hdCA9PiAnRGF0ZUlucHV0Rm9ybWF0JywKICAgICk7CgogICAgbXkgJVByb2ZpbGVzID0gJFNlbGYtPntTZWFyY2hQcm9maWxlT2JqZWN0fS0+U2VhcmNoUHJvZmlsZUxpc3QoCiAgICAgICAgQmFzZSAgICAgID0+ICdGQVFTZWFyY2gnLAogICAgICAgIFVzZXJMb2dpbiA9PiAkU2VsZi0+e1VzZXJMb2dpbn0sCiAgICApOwogICAgZGVsZXRlICRQcm9maWxlc3snJ307CiAgICBkZWxldGUgJFByb2ZpbGVzeydsYXN0LXNlYXJjaCd9OwogICAgaWYgKCRFbXB0eVNlYXJjaCkgewogICAgICAgICRQcm9maWxlc3snJ30gPSAnLSc7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkUHJvZmlsZXN7J2xhc3Qtc2VhcmNoJ30gPSAnLSc7CiAgICB9CiAgICAkUGFyYW17UHJvZmlsZXNTdHJnfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICA9PiBcJVByb2ZpbGVzLAogICAgICAgIE5hbWUgICAgICAgPT4gJ1Byb2ZpbGUnLAogICAgICAgIElEICAgICAgICAgPT4gJ1NlYXJjaFByb2ZpbGUnLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFByb2ZpbGUsCiAgICApOwoKICAgICRQYXJhbXtSZXN1bHRGb3JtU3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBOb3JtYWwgPT4gJ05vcm1hbCcsCiAgICAgICAgICAgIFByaW50ICA9PiAnUHJpbnQnLAogICAgICAgICAgICBDU1YgICAgPT4gJ0NTVicsCiAgICAgICAgfSwKICAgICAgICBOYW1lID0+ICdSZXN1bHRGb3JtJywKICAgICAgICBTZWxlY3RlZElEID0+ICRHZXRQYXJhbXtSZXN1bHRGb3JtfSB8fCAnTm9ybWFsJywKICAgICk7CgogICAgIyBodG1sIHNlYXJjaCBtYXNrIG91dHB1dAogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdTZWFyY2hBSkFYJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgIEVtcHR5U2VhcmNoID0+ICRFbXB0eVNlYXJjaCwKICAgICAgICB9LAogICAgKTsKCiAgICAjIHNob3cgYXR0cmlidXRlcwogICAgbXkgJUFscmVhZHlTaG93bjsKICAgIElURU06CiAgICBmb3IgbXkgJEl0ZW0gKEBBdHRyaWJ1dGVzKSB7CiAgICAgICAgbXkgJEtleSA9ICRJdGVtLT57S2V5fTsKICAgICAgICBuZXh0IElURU0gaWYgISRLZXk7CiAgICAgICAgbmV4dCBJVEVNIGlmICFkZWZpbmVkICRHZXRQYXJhbXskS2V5fTsKICAgICAgICBuZXh0IElURU0gaWYgJEdldFBhcmFteyRLZXl9IGVxICcnOwoKICAgICAgICBuZXh0IElURU0gaWYgJEFscmVhZHlTaG93bnskS2V5fTsKICAgICAgICAkQWxyZWFkeVNob3dueyRLZXl9ID0gMTsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdTZWFyY2hBSkFYU2hvdycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgQXR0cmlidXRlID0+ICRLZXksCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGlmIG5vIGF0dHJpYnV0ZSBpcyBzaG93biwgc2hvdyBmdWxsdGV4dCBzZWFyY2gKICAgIGlmICggISRQcm9maWxlICkgewogICAgICAgIGlmICggJFNlbGYtPntDb25maWd9LT57RGVmYXVsdHN9ICkgewogICAgICAgICAgICBLRVk6CiAgICAgICAgICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICV7ICRTZWxmLT57Q29uZmlnfS0+e0RlZmF1bHRzfSB9ICkgewogICAgICAgICAgICAgICAgbmV4dCBLRVkgaWYgJEFscmVhZHlTaG93bnskS2V5fTsKICAgICAgICAgICAgICAgICRBbHJlYWR5U2hvd257JEtleX0gPSAxOwogICAgICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdTZWFyY2hBSkFYU2hvdycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZSA9PiAkS2V5LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnU2VhcmNoQUpBWFNob3cnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlID0+ICdGdWxsdGV4dCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGJ1aWxkIG91dHB1dAogICAgbXkgJE91dHB1dCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFTZWFyY2gnLAogICAgICAgIERhdGEgICAgICAgICA9PiB7JVBhcmFtfSwKICAgICk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCjE7Cg==
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRU2VhcmNoU21hbGwucG0gLSBtb2R1bGUgZm9yIEZBUSBzZWFyY2gKIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxMyBPVFJTIEFHLCBodHRwOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFTZWFyY2hTbWFsbDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6RkFROwp1c2UgS2VybmVsOjpTeXN0ZW06OlNlYXJjaFByb2ZpbGU7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFsaWQ7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBjaGVjayBuZWVkZWQgb2JqZWN0cwogICAgZm9yIG15ICRPYmplY3QgKAogICAgICAgIHF3KFBhcmFtT2JqZWN0IERCT2JqZWN0IExheW91dE9iamVjdCBMb2dPYmplY3QgVXNlck9iamVjdCBHcm91cE9iamVjdCBDb25maWdPYmplY3QgTWFpbk9iamVjdCBFbmNvZGVPYmplY3QpCiAgICAgICAgKQogICAgewogICAgICAgIGlmICggISRTZWxmLT57JE9iamVjdH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RmF0YWxFcnJvciggTWVzc2FnZSA9PiAiR290IG5vICRPYmplY3QhIiApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNyZWF0ZSBhZGRpdGlvbmFsIG9iamVjdHMKICAgICRTZWxmLT57RkFRT2JqZWN0fSAgICAgICAgICAgPSBLZXJuZWw6OlN5c3RlbTo6RkFRLT5uZXcoJVBhcmFtKTsKICAgICRTZWxmLT57U2VhcmNoUHJvZmlsZU9iamVjdH0gPSBLZXJuZWw6OlN5c3RlbTo6U2VhcmNoUHJvZmlsZS0+bmV3KCVQYXJhbSk7CiAgICAkU2VsZi0+e1ZhbGlkT2JqZWN0fSAgICAgICAgID0gS2VybmVsOjpTeXN0ZW06OlZhbGlkLT5uZXcoJVBhcmFtKTsKCiAgICAjIGdldCBjb25maWcgZm9yIGZyb250ZW5kCiAgICAkU2VsZi0+e0NvbmZpZ30gPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgiRkFROjpGcm9udGVuZDo6QWdlbnRGQVFTZWFyY2giKTsKCiAgICAjIHNldCBkZWZhdWx0IGludGVyZmFjZSBzZXR0aW5ncwogICAgJFNlbGYtPntJbnRlcmZhY2V9ID0gJFNlbGYtPntGQVFPYmplY3R9LT5TdGF0ZVR5cGVHZXQoCiAgICAgICAgTmFtZSAgID0+ICdpbnRlcm5hbCcsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUxpc3QoCiAgICAgICAgVHlwZXMgID0+ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkFnZW50OjpTdGF0ZVR5cGVzJyksCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgJFNlbGYtPntNdWx0aUxhbmd1YWdlfSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6Ok11bHRpTGFuZ3VhZ2UnKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkT3V0cHV0OwoKICAgICMgZ2V0IGNvbmZpZyBkYXRhCiAgICAkU2VsZi0+e1N0YXJ0SGl0fSA9IGludCggJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnU3RhcnRIaXQnICkgfHwgMSApOwogICAgJFNlbGYtPntTZWFyY2hMaW1pdH0gPSAkU2VsZi0+e0NvbmZpZ30tPntTZWFyY2hMaW1pdH0gfHwgNTAwOwogICAgJFNlbGYtPntTb3J0Qnl9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnU29ydEJ5JyApCiAgICAgICAgfHwgJFNlbGYtPntDb25maWd9LT57J1NvcnRCeTo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ0ZBUUlEJzsKICAgICRTZWxmLT57T3JkZXJCeX0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdPcmRlckJ5JyApCiAgICAgICAgfHwgJFNlbGYtPntDb25maWd9LT57J09yZGVyOjpEZWZhdWx0J30KICAgICAgICB8fCAnRG93bic7CiAgICAkU2VsZi0+e1Byb2ZpbGV9ICAgICAgICA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1Byb2ZpbGUnICkgICAgICAgIHx8ICcnOwogICAgJFNlbGYtPntTYXZlUHJvZmlsZX0gICAgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdTYXZlUHJvZmlsZScgKSAgICB8fCAnJzsKICAgICRTZWxmLT57VGFrZUxhc3RTZWFyY2h9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnVGFrZUxhc3RTZWFyY2gnICkgfHwgJyc7CiAgICAkU2VsZi0+e1NlbGVjdFRlbXBsYXRlfSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NlbGVjdFRlbXBsYXRlJyApIHx8ICcnOwogICAgJFNlbGYtPntFcmFzZVRlbXBsYXRlfSAgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdFcmFzZVRlbXBsYXRlJyApICB8fCAnJzsKICAgIG15ICROYXYgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdOYXYnICkgfHwgJyc7CgogICAgIyBzZWFyY2ggd2l0aCBhIHNhdmVkIHRlbXBsYXRlCiAgICBpZiAoICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NlYXJjaFRlbXBsYXRlJyApICYmICRTZWxmLT57UHJvZmlsZX0gKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+UmVkaXJlY3QoCiAgICAgICAgICAgIE9QID0+CiAgICAgICAgICAgICAgICAiQWN0aW9uPUFnZW50RkFRU2VhcmNoU21hbGw7U3ViYWN0aW9uPVNlYXJjaDtUYWtlTGFzdFNlYXJjaD0xO1NhdmVQcm9maWxlPTE7UHJvZmlsZT0kU2VsZi0+e1Byb2ZpbGV9O05hdj0kTmF2IgogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgc2luZ2xlIHBhcmFtcwogICAgbXkgJUdldFBhcmFtOwoKICAgICMgbG9hZCBwcm9maWxlcyBzdHJpbmcgcGFyYW1zIChwcmVzcyBsb2FkIHByb2ZpbGUpCiAgICBpZiAoICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdMb2FkUHJvZmlsZScgJiYgJFNlbGYtPntQcm9maWxlfSApIHx8ICRTZWxmLT57VGFrZUxhc3RTZWFyY2h9ICkgewogICAgICAgICVHZXRQYXJhbSA9ICRTZWxmLT57U2VhcmNoUHJvZmlsZU9iamVjdH0tPlNlYXJjaFByb2ZpbGVHZXQoCiAgICAgICAgICAgIEJhc2UgICAgICA9PiAnRkFRU2VhcmNoJywKICAgICAgICAgICAgTmFtZSAgICAgID0+ICRTZWxmLT57UHJvZmlsZX0sCiAgICAgICAgICAgIFVzZXJMb2dpbiA9PiAkU2VsZi0+e1VzZXJMb2dpbn0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBzZWFyY2ggc3RyaW5nIHBhcmFtcyAoZ2V0IHN1Ym1pdHRlZCBwYXJhbXMpCiAgICBlbHNlIHsKCiAgICAgICAgIyBnZXQgc2NhbGFyIHNlYXJjaCBwYXJhbXMKICAgICAgICBmb3IgbXkgJFBhcmFtTmFtZSAoCiAgICAgICAgICAgIHF3KE51bWJlciBUaXRsZSBLZXl3b3JkIEZ1bGx0ZXh0IFJlc3VsdEZvcm0gVm90ZVNlYXJjaCBWb3RlU2VhcmNoVHlwZSBWb3RlU2VhcmNoT3B0aW9uCiAgICAgICAgICAgIFJhdGVTZWFyY2ggUmF0ZVNlYXJjaFR5cGUgUmF0ZVNlYXJjaE9wdGlvbiBBcHByb3ZlZFNlYXJjaAogICAgICAgICAgICBUaW1lU2VhcmNoVHlwZSBDaGFuZ2VUaW1lU2VhcmNoVHlwZQogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0IEl0ZW1DcmVhdGVUaW1lUG9pbnQKICAgICAgICAgICAgSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0CiAgICAgICAgICAgIEl0ZW1DcmVhdGVUaW1lU3RhcnQgSXRlbUNyZWF0ZVRpbWVTdGFydERheSBJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGgKICAgICAgICAgICAgSXRlbUNyZWF0ZVRpbWVTdGFydFllYXIKICAgICAgICAgICAgSXRlbUNyZWF0ZVRpbWVTdG9wIEl0ZW1DcmVhdGVUaW1lU3RvcERheSBJdGVtQ3JlYXRlVGltZVN0b3BNb250aAogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZVN0b3BZZWFyCiAgICAgICAgICAgIEl0ZW1DaGFuZ2VUaW1lUG9pbnRGb3JtYXQgSXRlbUNoYW5nZVRpbWVQb2ludAogICAgICAgICAgICBJdGVtQ2hhbmdlVGltZVBvaW50U3RhcnQKICAgICAgICAgICAgSXRlbUNoYW5nZVRpbWVTdGFydCBJdGVtQ2hhbmdlVGltZVN0YXJ0RGF5IEl0ZW1DaGFuZ2VUaW1lU3RhcnRNb250aAogICAgICAgICAgICBJdGVtQ2hhbmdlVGltZVN0YXJ0WWVhcgogICAgICAgICAgICBJdGVtQ2hhbmdlVGltZVN0b3AgSXRlbUNoYW5nZVRpbWVTdG9wRGF5IEl0ZW1DaGFuZ2VUaW1lU3RvcE1vbnRoCiAgICAgICAgICAgIEl0ZW1DaGFuZ2VUaW1lU3RvcFllYXIKICAgICAgICAgICAgKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkR2V0UGFyYW17JFBhcmFtTmFtZX0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbU5hbWUgKTsKCiAgICAgICAgICAgICMgcmVtb3ZlIHdoaXRlc3BhY2Ugb24gdGhlIHN0YXJ0IGFuZCBlbmQKICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17JFBhcmFtTmFtZX0gKSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17JFBhcmFtTmFtZX0gPX4gc3sgXEEgXHMrIH17fXhtczsKICAgICAgICAgICAgICAgICRHZXRQYXJhbXskUGFyYW1OYW1lfSA9fiBzeyBccysgXHogfXt9eG1zOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGdldCBhcnJheSBzZWFyY2ggcGFyYW1zCiAgICAgICAgZm9yIG15ICRTZWFyY2hQYXJhbSAoCiAgICAgICAgICAgIHF3KENhdGVnb3J5SURzIExhbmd1YWdlSURzIFZhbGlkSURzIFN0YXRlSURzIENyZWF0ZWRVc2VySURzIExhc3RDaGFuZ2VkVXNlcklEcykKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgbXkgQEFycmF5ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldEFycmF5KCBQYXJhbSA9PiAkU2VhcmNoUGFyYW0gKTsKICAgICAgICAgICAgaWYgKEBBcnJheSkgewogICAgICAgICAgICAgICAgJEdldFBhcmFteyRTZWFyY2hQYXJhbX0gPSBcQEFycmF5OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGFwcHJvdmVkIG9wdGlvbgogICAgaWYgKCAkR2V0UGFyYW17QXBwcm92ZWRTZWFyY2h9ICYmICRHZXRQYXJhbXtBcHByb3ZlZFNlYXJjaH0gZXEgJ1llcycgKSB7CiAgICAgICAgJEdldFBhcmFte0FwcHJvdmVkfSA9IDE7CiAgICB9CiAgICBlbHNpZiAoICRHZXRQYXJhbXtBcHByb3ZlZFNlYXJjaH0gJiYgJEdldFBhcmFte0FwcHJvdmVkU2VhcmNofSBlcSAnTm8nICkgewogICAgICAgICRHZXRQYXJhbXtBcHByb3ZlZH0gPSAwOwogICAgfQoKICAgICMgZ2V0IHZvdGUgb3B0aW9uCiAgICBpZiAoICEkR2V0UGFyYW17Vm90ZVNlYXJjaE9wdGlvbn0gKSB7CiAgICAgICAgJEdldFBhcmFteydWb3RlU2VhcmNoT3B0aW9uOjpOb25lJ30gPSAnY2hlY2tlZD0iY2hlY2tlZCInOwogICAgfQogICAgZWxzaWYgKCAkR2V0UGFyYW17Vm90ZVNlYXJjaE9wdGlvbn0gZXEgJ1ZvdGVQb2ludCcgKSB7CiAgICAgICAgJEdldFBhcmFteydWb3RlU2VhcmNoT3B0aW9uOjpWb3RlUG9pbnQnfSA9ICdjaGVja2VkPSJjaGVja2VkIic7CiAgICB9CgogICAgIyBnZXQgcmF0ZSBvcHRpb24KICAgIGlmICggISRHZXRQYXJhbXtSYXRlU2VhcmNoT3B0aW9ufSApIHsKICAgICAgICAkR2V0UGFyYW17J1JhdGVTZWFyY2hPcHRpb246Ok5vbmUnfSA9ICdjaGVja2VkPSJjaGVja2VkIic7CiAgICB9CiAgICBlbHNpZiAoICRHZXRQYXJhbXtSYXRlU2VhcmNoT3B0aW9ufSBlcSAnUmF0ZVBvaW50JyApIHsKICAgICAgICAkR2V0UGFyYW17J1JhdGVTZWFyY2hPcHRpb246OlJhdGVQb2ludCd9ID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgIH0KCiAgICAjIGdldCBjcmVhdGUgdGltZSBvcHRpb24KICAgIGlmICggISRHZXRQYXJhbXtUaW1lU2VhcmNoVHlwZX0gKSB7CiAgICAgICAgJEdldFBhcmFteydUaW1lU2VhcmNoVHlwZTo6Tm9uZSd9ID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgIH0KICAgIGVsc2lmICggJEdldFBhcmFte1RpbWVTZWFyY2hUeXBlfSBlcSAnVGltZVBvaW50JyApIHsKICAgICAgICAkR2V0UGFyYW17J1RpbWVTZWFyY2hUeXBlOjpUaW1lUG9pbnQnfSA9ICdjaGVja2VkPSJjaGVja2VkIic7CiAgICB9CiAgICBlbHNpZiAoICRHZXRQYXJhbXtUaW1lU2VhcmNoVHlwZX0gZXEgJ1RpbWVTbG90JyApIHsKICAgICAgICAkR2V0UGFyYW17J1RpbWVTZWFyY2hUeXBlOjpUaW1lU2xvdCd9ID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgIH0KCiAgICAjIGdldCBjaGFuZ2UgdGltZSBvcHRpb24KICAgIGlmICggISRHZXRQYXJhbXtDaGFuZ2VUaW1lU2VhcmNoVHlwZX0gKSB7CiAgICAgICAgJEdldFBhcmFteydDaGFuZ2VUaW1lU2VhcmNoVHlwZTo6Tm9uZSd9ID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgIH0KICAgIGVsc2lmICggJEdldFBhcmFte0NoYW5nZVRpbWVTZWFyY2hUeXBlfSBlcSAnVGltZVBvaW50JyApIHsKICAgICAgICAkR2V0UGFyYW17J0NoYW5nZVRpbWVTZWFyY2hUeXBlOjpUaW1lUG9pbnQnfSA9ICdjaGVja2VkPSJjaGVja2VkIic7CiAgICB9CiAgICBlbHNpZiAoICRHZXRQYXJhbXtDaGFuZ2VUaW1lU2VhcmNoVHlwZX0gZXEgJ1RpbWVTbG90JyApIHsKICAgICAgICAkR2V0UGFyYW17J0NoYW5nZVRpbWVTZWFyY2hUeXBlOjpUaW1lU2xvdCd9ID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgIH0KCiAgICAjIHNldCByZXN1bHQgZm9ybSBlbnYKICAgIGlmICggISRHZXRQYXJhbXtSZXN1bHRGb3JtfSApIHsKICAgICAgICAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gPSAnJzsKICAgIH0KCiAgICAjIHNob3cgcmVzdWx0IHNpdGUKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdTZWFyY2gnICYmICEkU2VsZi0+e0VyYXNlVGVtcGxhdGV9ICkgewoKICAgICAgICAjIGZpbGwgdXAgcHJvZmlsZSBuYW1lIChlLmcuIHdpdGggbGFzdC1zZWFyY2gpCiAgICAgICAgaWYgKCAhJFNlbGYtPntQcm9maWxlfSB8fCAhJFNlbGYtPntTYXZlUHJvZmlsZX0gKSB7CiAgICAgICAgICAgICRTZWxmLT57UHJvZmlsZX0gPSAnbGFzdC1zZWFyY2gnOwogICAgICAgIH0KCiAgICAgICAgIyBzdG9yZSBsYXN0IG92ZXJ2aWV3IHNjcmVlbgogICAgICAgIG15ICRVUkwKICAgICAgICAgICAgPSAiQWN0aW9uPUFnZW50RkFRU2VhcmNoU21hbGw7U3ViYWN0aW9uPVNlYXJjaDtQcm9maWxlPSRTZWxmLT57UHJvZmlsZX07U29ydEJ5PSRTZWxmLT57U29ydEJ5fSIKICAgICAgICAgICAgLiAiO09yZGVyQnk9JFNlbGYtPntPcmRlckJ5fTtUYWtlTGFzdFNlYXJjaD0xO1N0YXJ0SGl0PSRTZWxmLT57U3RhcnRIaXR9O05hdj0kTmF2IjsKICAgICAgICAkU2VsZi0+e1Nlc3Npb25PYmplY3R9LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlbk92ZXJ2aWV3JywKICAgICAgICAgICAgVmFsdWUgICAgID0+ICRVUkwsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+e1Nlc3Npb25PYmplY3R9LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlblZpZXcnLAogICAgICAgICAgICBWYWx1ZSAgICAgPT4gJFVSTCwKICAgICAgICApOwoKICAgICAgICAjIHNhdmUgc2VhcmNoIHByb2ZpbGUgKHVuZGVyIGxhc3Qtc2VhcmNoIG9yIHJlYWwgcHJvZmlsZSBuYW1lKQogICAgICAgICRTZWxmLT57U2F2ZVByb2ZpbGV9ID0gMTsKCiAgICAgICAgIyByZW1lbWJlciBsYXN0IHNlYXJjaCB2YWx1ZXMKICAgICAgICBpZiAoICRTZWxmLT57U2F2ZVByb2ZpbGV9ICYmICRTZWxmLT57UHJvZmlsZX0gKSB7CgogICAgICAgICAgICAjIHJlbW92ZSBvbGQgcHJvZmlsZSBzdHVmZgogICAgICAgICAgICAkU2VsZi0+e1NlYXJjaFByb2ZpbGVPYmplY3R9LT5TZWFyY2hQcm9maWxlRGVsZXRlKAogICAgICAgICAgICAgICAgQmFzZSAgICAgID0+ICdGQVFTZWFyY2gnLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICRTZWxmLT57UHJvZmlsZX0sCiAgICAgICAgICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBpbnNlcnQgbmV3IHByb2ZpbGUgcGFyYW1zCiAgICAgICAgICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICVHZXRQYXJhbSApIHsKICAgICAgICAgICAgICAgIGlmICggJEdldFBhcmFteyRLZXl9ICkgewogICAgICAgICAgICAgICAgICAgICRTZWxmLT57U2VhcmNoUHJvZmlsZU9iamVjdH0tPlNlYXJjaFByb2ZpbGVBZGQoCiAgICAgICAgICAgICAgICAgICAgICAgIEJhc2UgICAgICA9PiAnRkFRU2VhcmNoJywKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICRTZWxmLT57UHJvZmlsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIEtleSAgICAgICA9PiAkS2V5LAogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgPT4gJEdldFBhcmFteyRLZXl9LAogICAgICAgICAgICAgICAgICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgcHJlcGFyZSB2b3RlcyBzZWFyY2gKICAgICAgICBpZiAoIElzTnVtYmVyKCAkR2V0UGFyYW17Vm90ZVNlYXJjaH0gKSAmJiAkR2V0UGFyYW17Vm90ZVNlYXJjaE9wdGlvbn0gKSB7CiAgICAgICAgICAgICRHZXRQYXJhbXtWb3Rlc30gPSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17Vm90ZVNlYXJjaFR5cGV9ID0+ICRHZXRQYXJhbXtWb3RlU2VhcmNofQogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgIyBwcmVwYXJlIHJhdGUgc2VhcmNoCiAgICAgICAgaWYgKCBJc051bWJlciggJEdldFBhcmFte1JhdGVTZWFyY2h9ICkgJiYgJEdldFBhcmFte1JhdGVTZWFyY2hPcHRpb259ICkgewogICAgICAgICAgICAkR2V0UGFyYW17UmF0ZX0gPSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17UmF0ZVNlYXJjaFR5cGV9ID0+ICRHZXRQYXJhbXtSYXRlU2VhcmNofQogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgbXkgJVRpbWVNYXAgPSAoCiAgICAgICAgICAgIEl0ZW1DcmVhdGUgPT4gJ1RpbWUnLAogICAgICAgICAgICBJdGVtQ2hhbmdlID0+ICdDaGFuZ2VUaW1lJywKICAgICAgICApOwoKICAgICAgICBmb3IgbXkgJFRpbWVUeXBlICggc29ydCBrZXlzICVUaW1lTWFwICkgewoKICAgICAgICAgICAgIyBnZXQgY3JlYXRlIHRpbWUgc2V0dGluZ3MKICAgICAgICAgICAgaWYgKCAhJEdldFBhcmFteyAkVGltZU1hcHskVGltZVR5cGV9IC4gJ1NlYXJjaFR5cGUnIH0gKSB7CgogICAgICAgICAgICAgICAgIyBkbyBub3RoaW5nIHdpdGggdGltZSBzdHVmZgogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZU1hcHskVGltZVR5cGV9IC4gJ1NlYXJjaFR5cGUnIH0gZXEgJ1RpbWVTbG90JyApIHsKICAgICAgICAgICAgICAgIGZvciBteSAkS2V5IChxdyhNb250aCBEYXkpKSB7CiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0YXJ0JyAuICRLZXkgfQogICAgICAgICAgICAgICAgICAgICAgICA9IHNwcmludGYoICIlMDJkIiwgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0YXJ0JyAuICRLZXkgfSApOwogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wJyAuICRLZXkgfQogICAgICAgICAgICAgICAgICAgICAgICA9IHNwcmludGYoICIlMDJkIiwgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3AnIC4gJEtleSB9ICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0YXJ0RGF5JyB9CiAgICAgICAgICAgICAgICAgICAgJiYgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0YXJ0TW9udGgnIH0KICAgICAgICAgICAgICAgICAgICAmJiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnRZZWFyJyB9CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVOZXdlckRhdGUnIH0KICAgICAgICAgICAgICAgICAgICAgICAgPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnRZZWFyJyB9IC4gJy0nCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0YXJ0TW9udGgnIH0gLiAnLScKICAgICAgICAgICAgICAgICAgICAgICAgLiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnREYXknIH0KICAgICAgICAgICAgICAgICAgICAgICAgLiAnIDAwOjAwOjAwJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcERheScgfQogICAgICAgICAgICAgICAgICAgICYmICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wTW9udGgnIH0KICAgICAgICAgICAgICAgICAgICAmJiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcFllYXInIH0KICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZU9sZGVyRGF0ZScgfQogICAgICAgICAgICAgICAgICAgICAgICA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wWWVhcicgfSAuICctJwogICAgICAgICAgICAgICAgICAgICAgICAuICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wTW9udGgnIH0gLiAnLScKICAgICAgICAgICAgICAgICAgICAgICAgLiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcERheScgfQogICAgICAgICAgICAgICAgICAgICAgICAuICcgMjM6NTk6NTknOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZU1hcHskVGltZVR5cGV9IC4gJ1NlYXJjaFR5cGUnIH0gZXEgJ1RpbWVQb2ludCcgKSB7CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50JyB9CiAgICAgICAgICAgICAgICAgICAgJiYgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50U3RhcnQnIH0KICAgICAgICAgICAgICAgICAgICAmJiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0KICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgbXkgJFRpbWUgPSAwOwogICAgICAgICAgICAgICAgICAgIGlmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9IGVxICdtaW51dGUnICkgewogICAgICAgICAgICAgICAgICAgICAgICAkVGltZSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludCcgfTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0gZXEgJ2hvdXInICkgewogICAgICAgICAgICAgICAgICAgICAgICAkVGltZSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludCcgfSAqIDYwOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfSBlcSAnZGF5JyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH0gKiA2MCAqIDI0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfSBlcSAnd2VlaycgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaW1lID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50JyB9ICogNjAgKiAyNCAqIDc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9IGVxICdtb250aCcgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaW1lID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50JyB9ICogNjAgKiAyNCAqIDMwOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfSBlcSAneWVhcicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaW1lID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50JyB9ICogNjAgKiAyNCAqIDM2NTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRTdGFydCcgfSBlcSAnQmVmb3JlJyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgbW9yZSB0aGFuIC4uLiBhZ28KICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZU9sZGVyTWludXRlcycgfSA9ICRUaW1lOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludFN0YXJ0JyB9IGVxICdOZXh0JyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgd2l0aGluIG5leHQKICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZU5ld2VyTWludXRlcycgfSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVPbGRlck1pbnV0ZXMnIH0gPSAtJFRpbWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAjIHdpdGhpbiBsYXN0IC4uLgogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lT2xkZXJNaW51dGVzJyB9ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZU5ld2VyTWludXRlcycgfSA9ICRUaW1lOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBwcmVwYXJlIGZ1bGx0ZXh0IHNlYXJjaAogICAgICAgIGlmICggJEdldFBhcmFte0Z1bGx0ZXh0fSApIHsKICAgICAgICAgICAgJEdldFBhcmFte0NvbnRlbnRTZWFyY2h9ID0gJ09SJzsKICAgICAgICAgICAgJEdldFBhcmFte1doYXR9ICAgICAgICAgID0gJEdldFBhcmFte0Z1bGx0ZXh0fTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IHZhbGlkIGxpc3QKICAgICAgICBteSAlVmFsaWRMaXN0ICAgPSAkU2VsZi0+e1ZhbGlkT2JqZWN0fS0+VmFsaWRMaXN0KCk7CiAgICAgICAgbXkgQEFsbFZhbGlkSURzID0ga2V5cyAlVmFsaWRMaXN0OwoKICAgICAgICAjIHByZXBhcmUgc2VhcmNoIHN0YXRlcwogICAgICAgIG15ICRTZWFyY2hTdGF0ZXM7CiAgICAgICAgaWYgKCAhSXNBcnJheVJlZldpdGhEYXRhKCAkR2V0UGFyYW17U3RhdGVJRHN9ICkgKSB7CiAgICAgICAgICAgICRTZWFyY2hTdGF0ZXMgPSAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc307CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBTVEFURVRZUEVJRDoKICAgICAgICAgICAgZm9yIG15ICRTdGF0ZVR5cGVJRCAoIEB7ICRHZXRQYXJhbXtTdGF0ZUlEc30gfSApIHsKICAgICAgICAgICAgICAgIG5leHQgU1RBVEVUWVBFSUQgaWYgISRTdGF0ZVR5cGVJRDsKICAgICAgICAgICAgICAgIG5leHQgU1RBVEVUWVBFSUQgaWYgISRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfS0+eyRTdGF0ZVR5cGVJRH07CiAgICAgICAgICAgICAgICAkU2VhcmNoU3RhdGVzLT57JFN0YXRlVHlwZUlEfSA9ICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfS0+eyRTdGF0ZVR5cGVJRH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgcHJlcGFyZSB2b3RlcyBzZWFyY2gKICAgICAgICBpZiAoIElzTnVtYmVyKCAkR2V0UGFyYW17Vm90ZVNlYXJjaH0gKSAmJiAkR2V0UGFyYW17Vm90ZVNlYXJjaE9wdGlvbn0gKSB7CiAgICAgICAgICAgICRHZXRQYXJhbXtWb3Rlc30gPSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17Vm90ZVNlYXJjaFR5cGV9ID0+ICRHZXRQYXJhbXtWb3RlU2VhcmNofQogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgIyBwcmVwYXJlIHJhdGUgc2VhcmNoCiAgICAgICAgaWYgKCBJc051bWJlciggJEdldFBhcmFte1JhdGVTZWFyY2h9ICkgJiYgJEdldFBhcmFte1JhdGVTZWFyY2hPcHRpb259ICkgewogICAgICAgICAgICAkR2V0UGFyYW17UmF0ZX0gPSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17UmF0ZVNlYXJjaFR5cGV9ID0+ICRHZXRQYXJhbXtSYXRlU2VhcmNofQogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgIyBwZXJmb3JtIEZBUSBzZWFyY2gKICAgICAgICAjIGRlZmF1bHQgc2VhcmNoIG9uIGFsbCB2YWxpZCBpZHMsIHRoaXMgY2FuIGJlIG92ZXJ3cml0dGVuIGJ5ICVHZXRQYXJhbQogICAgICAgIG15IEBWaWV3YWJsZUZBUUlEcyA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRU2VhcmNoKAogICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgID0+IFsgJFNlbGYtPntTb3J0Qnl9IF0sCiAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gICAgPT4gWyAkU2VsZi0+e09yZGVyQnl9IF0sCiAgICAgICAgICAgIExpbWl0ICAgICAgICAgICAgICAgPT4gJFNlbGYtPntTZWFyY2hMaW1pdH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICBTdGF0ZXMgICAgICAgICAgICAgID0+ICRTZWFyY2hTdGF0ZXMsCiAgICAgICAgICAgIEludGVyZmFjZSAgICAgICAgICAgPT4gJFNlbGYtPntJbnRlcmZhY2V9LAogICAgICAgICAgICBDb250ZW50U2VhcmNoUHJlZml4ID0+ICcqJywKICAgICAgICAgICAgQ29udGVudFNlYXJjaFN1ZmZpeCA9PiAnKicsCiAgICAgICAgICAgIFZhbGlkSURzICAgICAgICAgICAgPT4gXEBBbGxWYWxpZElEcywKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICk7CgogICAgICAgICMgc3RhcnQgaHRtbCBwYWdlCiAgICAgICAgbXkgJE91dHB1dCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+SGVhZGVyKCBUeXBlID0+ICdTbWFsbCcgKTsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPlByaW50KCBPdXRwdXQgPT4gXCRPdXRwdXQgKTsKICAgICAgICAkT3V0cHV0ID0gJyc7CgogICAgICAgICRTZWxmLT57RmlsdGVyfSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0ZpbHRlcicgKSB8fCAnJzsKICAgICAgICAkU2VsZi0+e1ZpZXd9ICAgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdWaWV3JyApICAgfHwgJyc7CgogICAgICAgICMgc2hvdyBGQVEncwogICAgICAgIG15ICRMaW5rUGFnZSA9ICdGaWx0ZXI9JwogICAgICAgICAgICAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua0VuY29kZSggJFNlbGYtPntGaWx0ZXJ9ICkKICAgICAgICAgICAgLiAnO1ZpZXc9JyAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua0VuY29kZSggJFNlbGYtPntWaWV3fSApCiAgICAgICAgICAgIC4gJztTb3J0Qnk9JyAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua0VuY29kZSggJFNlbGYtPntTb3J0Qnl9ICkKICAgICAgICAgICAgLiAnO09yZGVyQnk9JyAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua0VuY29kZSggJFNlbGYtPntPcmRlckJ5fSApCiAgICAgICAgICAgIC4gJztQcm9maWxlPScgLiAkU2VsZi0+e1Byb2ZpbGV9IC4gJztUYWtlTGFzdFNlYXJjaD0xO1N1YmFjdGlvbj1TZWFyY2gnCiAgICAgICAgICAgIC4gJztOYXY9JyAuICROYXYKICAgICAgICAgICAgLiAnOyc7CiAgICAgICAgbXkgJExpbmtTb3J0ID0gJ0ZpbHRlcj0nCiAgICAgICAgICAgIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5MaW5rRW5jb2RlKCAkU2VsZi0+e0ZpbHRlcn0gKQogICAgICAgICAgICAuICc7Vmlldz0nIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5MaW5rRW5jb2RlKCAkU2VsZi0+e1ZpZXd9ICkKICAgICAgICAgICAgLiAnO1Byb2ZpbGU9JyAuICRTZWxmLT57UHJvZmlsZX0gLiAnO1Rha2VMYXN0U2VhcmNoPTE7U3ViYWN0aW9uPVNlYXJjaCcKICAgICAgICAgICAgLiAnO05hdj0nIC4gJE5hdgoKICAgICAgICAgICAgLiAnOyc7CiAgICAgICAgbXkgJExpbmtGaWx0ZXIgPSAnVGFrZUxhc3RTZWFyY2g9MTtTdWJhY3Rpb249U2VhcmNoO1Byb2ZpbGU9JwogICAgICAgICAgICAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua0VuY29kZSggJFNlbGYtPntQcm9maWxlfSApCiAgICAgICAgICAgIC4gJztOYXY9JyAuICROYXYKICAgICAgICAgICAgLiAnOyc7CiAgICAgICAgbXkgJExpbmtCYWNrID0gJ1N1YmFjdGlvbj1Mb2FkUHJvZmlsZTtQcm9maWxlPScKICAgICAgICAgICAgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkxpbmtFbmNvZGUoICRTZWxmLT57UHJvZmlsZX0gKQogICAgICAgICAgICAuICc7TmF2PScgLiAkTmF2CiAgICAgICAgICAgIC4gJztUYWtlTGFzdFNlYXJjaD0xOyc7CgogICAgICAgIG15ICRGaWx0ZXJMaW5rCiAgICAgICAgICAgID0gJ1NvcnRCeT0nIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5MaW5rRW5jb2RlKCAkU2VsZi0+e1NvcnRCeX0gKQogICAgICAgICAgICAuICc7T3JkZXJCeT0nIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5MaW5rRW5jb2RlKCAkU2VsZi0+e09yZGVyQnl9ICkKICAgICAgICAgICAgLiAnO1ZpZXc9JyAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua0VuY29kZSggJFNlbGYtPntWaWV3fSApCiAgICAgICAgICAgIC4gJztQcm9maWxlPScgLiAkU2VsZi0+e1Byb2ZpbGV9IC4gJztUYWtlTGFzdFNlYXJjaD0xO1N1YmFjdGlvbj1TZWFyY2gnCiAgICAgICAgICAgIC4gJztOYXY9JyAuICROYXYKICAgICAgICAgICAgLiAnOyc7CgogICAgICAgICMgZmluZCBvdXQgd2hpY2ggY29sdW1ucyBzaG91bGQgYmUgc2hvd24KICAgICAgICBteSBAU2hvd0NvbHVtbnM7CiAgICAgICAgaWYgKCAkU2VsZi0+e0NvbmZpZ30tPntTaG93Q29sdW1uc30gKSB7CgogICAgICAgICAgICAjIGdldCBhbGwgcG9zc2libGUgY29sdW1ucyBmcm9tIGNvbmZpZwogICAgICAgICAgICBteSAlUG9zc2libGVDb2x1bW4gPSAleyAkU2VsZi0+e0NvbmZpZ30tPntTaG93Q29sdW1uc30gfTsKCiAgICAgICAgICAgICMgZ2V0IHRoZSBjb2x1bW4gbmFtZXMgdGhhdCBzaG91bGQgYmUgc2hvd24KICAgICAgICAgICAgQ09MVU1OTkFNRToKICAgICAgICAgICAgZm9yIG15ICROYW1lICggc29ydCBrZXlzICVQb3NzaWJsZUNvbHVtbiApIHsKICAgICAgICAgICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAhJFBvc3NpYmxlQ29sdW1ueyROYW1lfTsKICAgICAgICAgICAgICAgIHB1c2ggQFNob3dDb2x1bW5zLCAkTmFtZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBlbmZvcmNlIEZBUSBudW1iZXIgY29sdW1uIHNpbmNlIGlzIHRoZSBsaW5rIE1hc3RlckFjdGlvbiBob29rCiAgICAgICAgICAgIGlmICggISRQb3NzaWJsZUNvbHVtbnsnTnVtYmVyJ30gKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBTaG93Q29sdW1ucywgJ051bWJlcic7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GQVFMaXN0U2hvdygKICAgICAgICAgICAgRkFRSURzID0+IFxAVmlld2FibGVGQVFJRHMsCiAgICAgICAgICAgIFRvdGFsICA9PiBzY2FsYXIgQFZpZXdhYmxlRkFRSURzLAoKICAgICAgICAgICAgVmlldyA9PiAkU2VsZi0+e1ZpZXd9LAoKICAgICAgICAgICAgRW52ICAgICAgICA9PiAkU2VsZiwKICAgICAgICAgICAgTGlua1BhZ2UgICA9PiAkTGlua1BhZ2UsCiAgICAgICAgICAgIExpbmtTb3J0ICAgPT4gJExpbmtTb3J0LAogICAgICAgICAgICBMaW5rRmlsdGVyID0+ICRMaW5rRmlsdGVyLAogICAgICAgICAgICBMaW5rQmFjayAgID0+ICRMaW5rQmFjaywKICAgICAgICAgICAgUHJvZmlsZSAgICA9PiAkU2VsZi0+e1Byb2ZpbGV9LAoKICAgICAgICAgICAgVGl0bGVOYW1lID0+ICdTZWFyY2ggUmVzdWx0JywKICAgICAgICAgICAgTGltaXQgICAgID0+ICRTZWxmLT57U2VhcmNoTGltaXR9LAoKICAgICAgICAgICAgRmlsdGVyICAgICA9PiAkU2VsZi0+e0ZpbHRlcn0sCiAgICAgICAgICAgIEZpbHRlckxpbmsgPT4gJEZpbHRlckxpbmssCgogICAgICAgICAgICBPcmRlckJ5ID0+ICRTZWxmLT57T3JkZXJCeX0sCiAgICAgICAgICAgIFNvcnRCeSAgPT4gJFNlbGYtPntTb3J0Qnl9LAoKICAgICAgICAgICAgU2hvd0NvbHVtbnMgPT4gXEBTaG93Q29sdW1ucywKICAgICAgICAgICAgTmF2ICAgICAgICAgPT4gJE5hdiwKICAgICAgICApOwoKICAgICAgICAjIGJ1aWxkIGZvb3RlcgogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Gb290ZXIoIFR5cGUgPT4gJ1NtYWxsJyApOwogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQoKICAgIGVsc2UgewogICAgICAgICRPdXRwdXQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkhlYWRlciggVHlwZSA9PiAnU21hbGwnICk7CgogICAgICAgICMgY3JlYXRlIG91dHB1dAogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPl9NYXNrRm9ybSgKICAgICAgICAgICAgTmF2ID0+ICROYXYsCiAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICApOwogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Gb290ZXIoIFR5cGUgPT4gJ1NtYWxsJyApOwoKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KfQoKc3ViIF9NYXNrRm9ybSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGxpc3QgdHlwZQogICAgbXkgJFRyZWVWaWV3ID0gMDsKICAgIGlmICggJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6Okxpc3RUeXBlJykgZXEgJ3RyZWUnICkgewogICAgICAgICRUcmVlVmlldyA9IDE7CiAgICB9CgogICAgIyBnZXQgcHJvZmlsZXMgbGlzdAogICAgbXkgJVByb2ZpbGVzID0gJFNlbGYtPntTZWFyY2hQcm9maWxlT2JqZWN0fS0+U2VhcmNoUHJvZmlsZUxpc3QoCiAgICAgICAgQmFzZSAgICAgID0+ICdGQVFTZWFyY2gnLAogICAgICAgIFVzZXJMb2dpbiA9PiAkU2VsZi0+e1VzZXJMb2dpbn0sCiAgICApOwoKICAgICMgYnVpbGQgcHJvZmlsZXMgb3V0cHV0IGxpc3QKICAgICRQYXJhbXtQcm9maWxlc1N0cmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICAgPT4geyVQcm9maWxlc30sCiAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdQcm9maWxlJywKICAgICAgICBTZWxlY3RlZElEICAgPT4gJFBhcmFte1Byb2ZpbGV9LAogICAgKTsKCiAgICAjIGdldCBsYW5ndWFnZXMgbGlzdAogICAgbXkgJUxhbmd1YWdlcyA9ICRTZWxmLT57RkFRT2JqZWN0fS0+TGFuZ3VhZ2VMaXN0KAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZHJvcGRvd24gbWVudSBmb3IgJ2xhbmd1YWdlcycKICAgICRQYXJhbXtMYW5ndWFnZXNTZWxlY3Rpb25TdHJnfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICA9PiBcJUxhbmd1YWdlcywKICAgICAgICBOYW1lICAgICAgID0+ICdMYW5ndWFnZUlEcycsCiAgICAgICAgU2l6ZSAgICAgICA9PiA1LAogICAgICAgIE11bHRpcGxlICAgPT4gMSwKICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtMYW5ndWFnZUlEc30gfHwgW10sCiAgICApOwoKICAgICMgZ2V0IGNhdGVnb3JpZXMgKHdpdGggY2F0ZWdvcnkgbG9uZyBuYW1lcykgd2hlcmUgdXNlciBoYXMgcmlnaHRzCiAgICBteSAkVXNlckNhdGVnb3JpZXNMb25nTmFtZXMgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkdldFVzZXJDYXRlZ29yaWVzTG9uZ05hbWVzKAogICAgICAgIFR5cGUgICA9PiAncncnLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgYnVpbGQgdGhlIGNhdGVnb3J5IHNlbGVjdGlvbgogICAgJFBhcmFte0NhdGVnb3JpZXNTZWxlY3Rpb25TdHJnfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgPT4gJFVzZXJDYXRlZ29yaWVzTG9uZ05hbWVzLAogICAgICAgIE5hbWUgICAgICAgID0+ICdDYXRlZ29yeUlEcycsCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFBhcmFte0NhdGVnb3J5SURzfSB8fCBbXSwKICAgICAgICBTaXplICAgICAgICA9PiA1LAogICAgICAgIFRyYW5zbGF0aW9uID0+IDAsCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMSwKICAgICAgICBUcmVlVmlldyAgICA9PiAkVHJlZVZpZXcsCiAgICApOwoKICAgICMgZ2V0IHZhbGlkIGxpc3QKICAgIG15ICVWYWxpZExpc3QgPSAkU2VsZi0+e1ZhbGlkT2JqZWN0fS0+VmFsaWRMaXN0KCk7CgogICAgIyBidWlsZCB0aGUgdmFsaWQgc2VsZWN0aW9uCiAgICAkUGFyYW17VmFsaWRTZWxlY3Rpb25TdHJnfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgPT4gXCVWYWxpZExpc3QsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ1ZhbGlkSURzJywKICAgICAgICBTZWxlY3RlZElEICA9PiAkUGFyYW17VmFsaWRJRHN9IHx8IFtdLAogICAgICAgIFNpemUgICAgICAgID0+IDUsCiAgICAgICAgVHJhbnNsYXRpb24gPT4gMCwKICAgICAgICBNdWx0aXBsZSAgICA9PiAxLAogICAgKTsKCiAgICAjIGNyZWF0ZSBhIG1peCBvZiBzdGF0ZSBhbmQgc3RhdGUgdHlwZXMgaGFzaCBpbiBvcmRlciB0byBoYXZlIHRoZSBzdGF0ZSB0eXBlIElEcyB3aXRoIHN0YXRlCiAgICAjIG5hbWVzCiAgICBteSAlU3RhdGVMaXN0ID0gJFNlbGYtPntGQVFPYmplY3R9LT5TdGF0ZUxpc3QoCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgbXkgJVN0YXRlczsKICAgIGZvciBteSAkU3RhdGVJRCAoIHNvcnQga2V5cyAlU3RhdGVMaXN0ICkgewogICAgICAgIG15ICVTdGF0ZURhdGEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlR2V0KAogICAgICAgICAgICBTdGF0ZUlEID0+ICRTdGF0ZUlELAogICAgICAgICAgICBVc2VySUQgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwogICAgICAgICRTdGF0ZXN7ICRTdGF0ZURhdGF7VHlwZUlEfSB9ID0gJFN0YXRlRGF0YXtOYW1lfQogICAgfQoKICAgICRQYXJhbXtTdGF0ZVNlbGVjdGlvblN0cmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICA9PiBcJVN0YXRlcywKICAgICAgICBOYW1lICAgICAgICA9PiAnU3RhdGVJRHMnLAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRQYXJhbXtTdGF0ZUlEc30gfHwgW10sCiAgICAgICAgU2l6ZSAgICAgICAgPT4gMywKICAgICAgICBUcmFuc2xhdGlvbiA9PiAxLAogICAgICAgIE11bHRpcGxlICAgID0+IDEsCiAgICApOwoKICAgIG15ICVWb3RpbmdPcGVyYXRvcnMgPSAoCiAgICAgICAgRXF1YWxzICAgICAgICAgICAgPT4gJ0VxdWFscycsCiAgICAgICAgR3JlYXRlclRoYW4gICAgICAgPT4gJ0dyZWF0ZXJUaGFuJywKICAgICAgICBHcmVhdGVyVGhhbkVxdWFscyA9PiAnR3JlYXRlclRoYW5FcXVhbHMnLAogICAgICAgIFNtYWxsZXJUaGFuICAgICAgID0+ICdTbWFsbGVyVGhhbicsCiAgICAgICAgU21hbGxlclRoYW5FcXVhbHMgPT4gJ1NtYWxsZXJUaGFuRXF1YWxzJywKICAgICk7CgogICAgJFBhcmFte1ZvdGVTZWFyY2hUeXBlU2VsZWN0aW9uU3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgID0+IFwlVm90aW5nT3BlcmF0b3JzLAogICAgICAgIE5hbWUgICAgICAgID0+ICdWb3RlU2VhcmNoVHlwZScsCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFBhcmFte1ZvdGVTZWFyY2hUeXBlfSB8fCAnJywKICAgICAgICBTaXplICAgICAgICA9PiAxLAogICAgICAgIFRyYW5zbGF0aW9uID0+IDEsCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMCwKICAgICk7CgogICAgJFBhcmFte1JhdGVTZWFyY2hUeXBlU2VsZWN0aW9uU3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgID0+IFwlVm90aW5nT3BlcmF0b3JzLAogICAgICAgIE5hbWUgICAgICAgID0+ICdSYXRlU2VhcmNoVHlwZScsCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFBhcmFte1JhdGVTZWFyY2hUeXBlfSB8fCAnJywKICAgICAgICBTaXplICAgICAgICA9PiAxLAogICAgICAgIFRyYW5zbGF0aW9uID0+IDEsCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMCwKICAgICk7CiAgICAkUGFyYW17UmF0ZVNlYXJjaFNlbGVjdGlvblN0cmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgMCAgID0+ICcwJScsCiAgICAgICAgICAgIDI1ICA9PiAnMjUlJywKICAgICAgICAgICAgNTAgID0+ICc1MCUnLAogICAgICAgICAgICA3NSAgPT4gJzc1JScsCiAgICAgICAgICAgIDEwMCA9PiAnMTAwJScsCiAgICAgICAgfSwKICAgICAgICBTb3J0ICAgICAgICA9PiAnTnVtZXJpY0tleScsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ1JhdGVTZWFyY2gnLAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRQYXJhbXtSYXRlU2VhcmNofSB8fCAnJywKICAgICAgICBTaXplICAgICAgICA9PiAxLAogICAgICAgIFRyYW5zbGF0aW9uID0+IDAsCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMCwKICAgICk7CgogICAgJFBhcmFte0FwcHJvdmVkU3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBObyAgPT4gJ05vJywKICAgICAgICAgICAgWWVzID0+ICdZZXMnLAogICAgICAgIH0sCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdBcHByb3ZlZFNlYXJjaCcsCiAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRQYXJhbXtBcHByb3ZlZFNlYXJjaH0gfHwgJycsCiAgICAgICAgTXVsdGlwbGUgICAgID0+IDAsCiAgICAgICAgVHJhbnNsYXRpb24gID0+IDEsCiAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICApOwoKICAgICMgZ2V0IGEgbGlzdCBvZiBhbGwgdXNlcnMgdG8gZGlzcGxheQogICAgbXkgJVNob3duVXNlcnMgPSAkU2VsZi0+e1VzZXJPYmplY3R9LT5Vc2VyTGlzdCgKICAgICAgICBUeXBlICA9PiAnTG9uZycsCiAgICAgICAgVmFsaWQgPT4gMSwKICAgICk7CgogICAgIyBnZXQgdGhlIFVzZXJJRHMgZnJvbSBmYXEgYW5kIGZhcV9hZG1pbiBtZW1iZXJzCiAgICBteSAlR3JvdXBVc2VyczsKICAgIGZvciBteSAkR3JvdXAgKHF3KGZhcSBmYXFfYWRtaW4pKSB7CiAgICAgICAgbXkgJEdyb3VwSUQgPSAkU2VsZi0+e0dyb3VwT2JqZWN0fS0+R3JvdXBMb29rdXAoIEdyb3VwID0+ICRHcm91cCApOwogICAgICAgIG15ICVVc2VycyA9ICRTZWxmLT57R3JvdXBPYmplY3R9LT5Hcm91cE1lbWJlckxpc3QoCiAgICAgICAgICAgIEdyb3VwSUQgPT4gJEdyb3VwSUQsCiAgICAgICAgICAgIFR5cGUgICAgPT4gJ3J3JywKICAgICAgICAgICAgUmVzdWx0ICA9PiAnSEFTSCcsCiAgICAgICAgKTsKICAgICAgICAlR3JvdXBVc2VycyA9ICggJUdyb3VwVXNlcnMsICVVc2VycyApOwogICAgfQoKICAgICMgcmVtb3ZlIGFsbCB1c2VycyB0aGF0IGFyZSBub3QgaW4gdGhlIGZhcSBvciBmYXFfYWRtaW4gZ3JvdXBzCiAgICBmb3IgbXkgJFVzZXJJRCAoIHNvcnQga2V5cyAlU2hvd25Vc2VycyApIHsKICAgICAgICBpZiAoICEkR3JvdXBVc2Vyc3skVXNlcklEfSApIHsKICAgICAgICAgICAgZGVsZXRlICRTaG93blVzZXJzeyRVc2VySUR9OwogICAgICAgIH0KICAgIH0KICAgICRQYXJhbXtDcmVhdGVkVXNlclN0cmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgID0+IFwlU2hvd25Vc2VycywKICAgICAgICBOYW1lICAgICAgID0+ICdDcmVhdGVkVXNlcklEcycsCiAgICAgICAgTXVsdGlwbGUgICA9PiAxLAogICAgICAgIFNpemUgICAgICAgPT4gNSwKICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtDcmVhdGVkVXNlcklEc30sCiAgICApOwogICAgJFBhcmFte0xhc3RDaGFuZ2VkVXNlclN0cmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgID0+IFwlU2hvd25Vc2VycywKICAgICAgICBOYW1lICAgICAgID0+ICdMYXN0Q2hhbmdlZFVzZXJJRHMnLAogICAgICAgIE11bHRpcGxlICAgPT4gMSwKICAgICAgICBTaXplICAgICAgID0+IDUsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17TGFzdENoYW5nZWRVc2VySURzfSwKICAgICk7CgogICAgJFBhcmFte0l0ZW1DcmVhdGVUaW1lUG9pbnRTdHJnfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICA9PiBbIDEgLi4gNTkgXSwKICAgICAgICBOYW1lICAgICAgID0+ICdJdGVtQ3JlYXRlVGltZVBvaW50JywKICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50fSwKICAgICk7CiAgICAkUGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0U3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAnTGFzdCcgICA9PiAnd2l0aGluIHRoZSBsYXN0IC4uLicsCiAgICAgICAgICAgICdCZWZvcmUnID0+ICdtb3JlIHRoYW4gLi4uIGFnbycsCiAgICAgICAgfSwKICAgICAgICBOYW1lID0+ICdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQnLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydH0gfHwgJ0xhc3QnLAogICAgKTsKICAgICRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0U3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBtaW51dGUgPT4gJ21pbnV0ZShzKScsCiAgICAgICAgICAgIGhvdXIgICA9PiAnaG91cihzKScsCiAgICAgICAgICAgIGRheSAgICA9PiAnZGF5KHMpJywKICAgICAgICAgICAgd2VlayAgID0+ICd3ZWVrKHMpJywKICAgICAgICAgICAgbW9udGggID0+ICdtb250aChzKScsCiAgICAgICAgICAgIHllYXIgICA9PiAneWVhcihzKScsCiAgICAgICAgfSwKICAgICAgICBOYW1lICAgICAgID0+ICdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0JywKICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0fSwKICAgICk7CiAgICAkUGFyYW17SXRlbUNyZWF0ZVRpbWVTdGFydFN0cmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZERhdGVTZWxlY3Rpb24oCiAgICAgICAgJVBhcmFtLAogICAgICAgIFByZWZpeCAgID0+ICdJdGVtQ3JlYXRlVGltZVN0YXJ0JywKICAgICAgICBGb3JtYXQgICA9PiAnRGF0ZUlucHV0Rm9ybWF0JywKICAgICAgICBEaWZmVGltZSA9PiAtKCAoIDYwICogNjAgKiAyNCApICogMzAgKSwKICAgICk7CiAgICAkUGFyYW17SXRlbUNyZWF0ZVRpbWVTdG9wU3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkRGF0ZVNlbGVjdGlvbigKICAgICAgICAlUGFyYW0sCiAgICAgICAgUHJlZml4ID0+ICdJdGVtQ3JlYXRlVGltZVN0b3AnLAogICAgICAgIEZvcm1hdCA9PiAnRGF0ZUlucHV0Rm9ybWF0JywKICAgICk7CgogICAgJFBhcmFte0l0ZW1DaGFuZ2VUaW1lUG9pbnRTdHJnfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICA9PiBbIDEgLi4gNTkgXSwKICAgICAgICBOYW1lICAgICAgID0+ICdJdGVtQ2hhbmdlVGltZVBvaW50JywKICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtJdGVtQ2hhbmdlVGltZVBvaW50fSwKICAgICk7CiAgICAkUGFyYW17SXRlbUNoYW5nZVRpbWVQb2ludFN0YXJ0U3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAnTGFzdCcgICA9PiAnd2l0aGluIHRoZSBsYXN0IC4uLicsCiAgICAgICAgICAgICdCZWZvcmUnID0+ICdtb3JlIHRoYW4gLi4uIGFnbycsCiAgICAgICAgfSwKICAgICAgICBOYW1lID0+ICdJdGVtQ2hhbmdlVGltZVBvaW50U3RhcnQnLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte0l0ZW1DaGFuZ2VUaW1lUG9pbnRTdGFydH0gfHwgJ0xhc3QnLAogICAgKTsKICAgICRQYXJhbXtJdGVtQ2hhbmdlVGltZVBvaW50Rm9ybWF0U3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBtaW51dGUgPT4gJ21pbnV0ZShzKScsCiAgICAgICAgICAgIGhvdXIgICA9PiAnaG91cihzKScsCiAgICAgICAgICAgIGRheSAgICA9PiAnZGF5KHMpJywKICAgICAgICAgICAgd2VlayAgID0+ICd3ZWVrKHMpJywKICAgICAgICAgICAgbW9udGggID0+ICdtb250aChzKScsCiAgICAgICAgICAgIHllYXIgICA9PiAneWVhcihzKScsCiAgICAgICAgfSwKICAgICAgICBOYW1lICAgICAgID0+ICdJdGVtQ2hhbmdlVGltZVBvaW50Rm9ybWF0JywKICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtJdGVtQ2hhbmdlVGltZVBvaW50Rm9ybWF0fSwKICAgICk7CiAgICAkUGFyYW17SXRlbUNoYW5nZVRpbWVTdGFydFN0cmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZERhdGVTZWxlY3Rpb24oCiAgICAgICAgJVBhcmFtLAogICAgICAgIFByZWZpeCAgID0+ICdJdGVtQ2hhbmdlVGltZVN0YXJ0JywKICAgICAgICBGb3JtYXQgICA9PiAnRGF0ZUlucHV0Rm9ybWF0JywKICAgICAgICBEaWZmVGltZSA9PiAtKCAoIDYwICogNjAgKiAyNCApICogMzAgKSwKICAgICk7CiAgICAkUGFyYW17SXRlbUNoYW5nZVRpbWVTdG9wU3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkRGF0ZVNlbGVjdGlvbigKICAgICAgICAlUGFyYW0sCiAgICAgICAgUHJlZml4ID0+ICdJdGVtQ2hhbmdlVGltZVN0b3AnLAogICAgICAgIEZvcm1hdCA9PiAnRGF0ZUlucHV0Rm9ybWF0JywKICAgICk7CgogICAgIyBodG1sIHNlYXJjaCBtYXNrIG91dHB1dAogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdTZWFyY2gnLAogICAgICAgIERhdGEgPT4geyVQYXJhbX0sCiAgICApOwoKICAgICMgc2hvdyBsYW5ndWFnZXMgc2VsZWN0CiAgICBpZiAoICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gKSB7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnTGFuZ3VhZ2UnLAogICAgICAgICAgICBEYXRhID0+IHslUGFyYW19LAogICAgICAgICk7CiAgICB9CgogICAgIyBodG1sIHNlYXJjaCBtYXNrIG91dHB1dAogICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFTZWFyY2hTbWFsbCcsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHslUGFyYW19LAogICAgKTsKfQoKMTsK
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRWm9vbS5wbSAtIHRvIGdldCBhIGNsb3NlciB2aWV3CiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OkFnZW50RkFRWm9vbTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdDsKdXNlIEtlcm5lbDo6U3lzdGVtOjpGQVE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgY2hlY2sgbmVlZGVkIG9iamVjdHMKICAgIGZvciBteSAkT2JqZWN0ICgKICAgICAgICBxdyhQYXJhbU9iamVjdCBEQk9iamVjdCBMYXlvdXRPYmplY3QgTG9nT2JqZWN0IENvbmZpZ09iamVjdCBVc2VyT2JqZWN0IEdyb3VwT2JqZWN0KQogICAgICAgICkKICAgIHsKICAgICAgICBpZiAoICEkU2VsZi0+eyRPYmplY3R9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZhdGFsRXJyb3IoIE1lc3NhZ2UgPT4gIkdvdCBubyAkT2JqZWN0ISIgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBjcmVhdGUgbmVlZGVkIG9iamVjdHMKICAgICRTZWxmLT57TGlua09iamVjdH0gPSBLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdC0+bmV3KCVQYXJhbSk7CiAgICAkU2VsZi0+e0ZBUU9iamVjdH0gID0gS2VybmVsOjpTeXN0ZW06OkZBUS0+bmV3KCVQYXJhbSk7CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgJFNlbGYtPntDb25maWd9ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoIkZBUTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgICMgc2V0IGRlZmF1bHQgaW50ZXJmYWNlIHNldHRpbmdzCiAgICAkU2VsZi0+e0ludGVyZmFjZX0gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUdldCgKICAgICAgICBOYW1lICAgPT4gJ2ludGVybmFsJywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVUeXBlTGlzdCgKICAgICAgICBUeXBlcyAgPT4gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6QWdlbnQ6OlN0YXRlVHlwZXMnKSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGdldCBkZWZhdWx0IG9wdGlvbnMKICAgICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpNdWx0aUxhbmd1YWdlJyk7CiAgICAkU2VsZi0+e1ZvdGluZ30gICAgICAgID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6Vm90aW5nJyk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBwZXJtaXNzaW9uIGNoZWNrCiAgICBpZiAoICEkU2VsZi0+e0FjY2Vzc1JvfSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gJ1lvdSBuZWVkIHJvIHBlcm1pc3Npb24hJywKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHBhcmFtcwogICAgbXkgJUdldFBhcmFtOwogICAgJEdldFBhcmFte0l0ZW1JRH0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdJdGVtSUQnICk7CiAgICAkR2V0UGFyYW17UmF0ZX0gICA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1JhdGUnICk7CgogICAgIyBnZXQgbmF2aWdhdGlvbiBiYXIgb3B0aW9uCiAgICBteSAkTmF2ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnTmF2JyApIHx8ICcnOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkR2V0UGFyYW17SXRlbUlEfSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiAnTm8gSXRlbUlEIGlzIGdpdmVuIScsCiAgICAgICAgICAgIENvbW1lbnQgPT4gJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbi4nLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgRkFRIGl0ZW0gZGF0YQogICAgbXkgJUZBUURhdGEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUUdldCgKICAgICAgICBJdGVtSUQgICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICBpZiAoICElRkFRRGF0YSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigpOwogICAgfQoKICAgICMgY2hlY2sgdXNlciBwZXJtaXNzaW9uCiAgICBteSAkUGVybWlzc2lvbiA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Q2hlY2tDYXRlZ29yeVVzZXJQZXJtaXNzaW9uKAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgIENhdGVnb3J5SUQgPT4gJEZBUURhdGF7Q2F0ZWdvcnlJRH0sCiAgICApOwoKICAgICMgc2hvdyBlcnJvciBtZXNzYWdlCiAgICBpZiAoICEkUGVybWlzc2lvbiApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gJ1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJywKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIEhUTUxWaWV3IFN1YmFjdGlvbgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdIVE1MVmlldycgKSB7CgogICAgICAgICMgZ2V0IHBhcmFtcwogICAgICAgIG15ICRGaWVsZCA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gIkZpZWxkIiApOwoKICAgICAgICAjIG5lZWRlZCBwYXJhbXMKICAgICAgICBmb3IgbXkgJE5lZWRlZCAocXcoIEl0ZW1JRCBGaWVsZCApKSB7CiAgICAgICAgICAgIGlmICggISROZWVkZWQgKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZGVkIFBhcmFtOiAkTmVlZGVkISIsCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgZ2V0IHRoZSBGaWVsZCBjb250ZW50CiAgICAgICAgbXkgJEZpZWxkQ29udGVudCA9ICRTZWxmLT57RkFRT2JqZWN0fS0+SXRlbUZpZWxkR2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgIEZpZWxkICA9PiAkRmllbGQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyByZXdyaXRlIGhhbmRsZSBhbmQgYWN0aW9uLCB0YWtlIGNhcmUgb2Ygb2xkIHN0eWxlIGJlZm9yZSBGQVEgMi4wLngKICAgICAgICAkRmllbGRDb250ZW50ID1+IHN7CiAgICAgICAgICAgIEFjdGlvbj1BZ2VudEZBUSBbJl0oYW1wOyk/IFN1YmFjdGlvbj1Eb3dubG9hZCBbJl0oYW1wOyk/CiAgICAgICAgfXtBY3Rpb249QWdlbnRGQVFab29tO1N1YmFjdGlvbj1Eb3dubG9hZEF0dGFjaG1lbnQ7fWd4bXM7CgogICAgICAgICMgYnVpbGQgYmFzZSB1cmwgZm9yIGlubGluZSBpbWFnZXMKICAgICAgICBteSAkU2Vzc2lvbklEID0gJyc7CiAgICAgICAgaWYgKCAkU2VsZi0+e1Nlc3Npb25JRH0gJiYgISRTZWxmLT57U2Vzc2lvbklEQ29va2llfSApIHsKICAgICAgICAgICAgJFNlc3Npb25JRCA9ICc7JyAuICRTZWxmLT57U2Vzc2lvbk5hbWV9IC4gJz0nIC4gJFNlbGYtPntTZXNzaW9uSUR9OwogICAgICAgICAgICAkRmllbGRDb250ZW50ID1+IHN7CiAgICAgICAgICAgICAgICAoQWN0aW9uPUFnZW50RkFRWm9vbTtTdWJhY3Rpb249RG93bmxvYWRBdHRhY2htZW50O0l0ZW1JRD1cZCs7RmlsZUlEPVxkKykKICAgICAgICAgICAgfXskMSRTZXNzaW9uSUR9Z21zeDsKICAgICAgICB9CgogICAgICAgICMgZGV0ZWN0IGFsbCBwbGFpbiB0ZXh0IGxpbmtzIGFuZCBwdXQgdGhlbSBpbnRvIGFuIEhUTUwgPGE+IHRhZwogICAgICAgICRGaWVsZENvbnRlbnQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPntIVE1MVXRpbHNPYmplY3R9LT5MaW5rUXVvdGUoCiAgICAgICAgICAgIFN0cmluZyA9PiAkRmllbGRDb250ZW50LAogICAgICAgICk7CgogICAgICAgICMgc2V0IHRhcmdldD0iX2JsYW5rIiBhdHRyaWJ1dGUgdG8gYWxsIEhUTUwgPGE+IHRhZ3MKICAgICAgICAjIHRoZSBMaW5rUXVvdGUgZnVuY3Rpb24gbmVlZHMgdG8gYmUgY2FsbGVkIGFnYWluCiAgICAgICAgJEZpZWxkQ29udGVudCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0hUTUxVdGlsc09iamVjdH0tPkxpbmtRdW90ZSgKICAgICAgICAgICAgU3RyaW5nICAgID0+ICRGaWVsZENvbnRlbnQsCiAgICAgICAgICAgIFRhcmdldEFkZCA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgYWRkIG5lZWRlZCBIVE1MIGhlYWRlcnMKICAgICAgICAkRmllbGRDb250ZW50ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57SFRNTFV0aWxzT2JqZWN0fS0+RG9jdW1lbnRDb21wbGV0ZSgKICAgICAgICAgICAgU3RyaW5nICA9PiAkRmllbGRDb250ZW50LAogICAgICAgICAgICBDaGFyc2V0ID0+ICd1dGYtOCcsCiAgICAgICAgKTsKCiAgICAgICAgIyByZXR1cm4gY29tcGxldGUgSFRNTCBhcyBhbiBhdHRhY2htZW50CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QXR0YWNobWVudCgKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkRmllbGRDb250ZW50LAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgRG93bmxvYWRBdHRhY2htZW50IFN1YmFjdGlvbgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdEb3dubG9hZEF0dGFjaG1lbnQnICkgewoKICAgICAgICAjIG1hbmFnZSBwYXJhbWV0ZXJzCiAgICAgICAgJEdldFBhcmFte0ZpbGVJRH0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdGaWxlSUQnICk7CgogICAgICAgIGlmICggIWRlZmluZWQgJEdldFBhcmFte0ZpbGVJRH0gKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZhdGFsRXJyb3IoIE1lc3NhZ2UgPT4gJ05lZWQgRmlsZUlEJyApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgYXR0YWNobWVudHMKICAgICAgICBteSAlRmlsZSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+QXR0YWNobWVudEdldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICBGaWxlSUQgPT4gJEdldFBhcmFte0ZpbGVJRH0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICBpZiAoJUZpbGUpIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QXR0YWNobWVudCglRmlsZSk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJObyBzdWNoIGF0dGFjaG1lbnQgKCRHZXRQYXJhbXtGaWxlSUR9KSEgTWF5IGJlIGFuIGF0dGFjayEhISIsCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkT3V0cHV0OwogICAgaWYgKCAkTmF2IGVxICdOb25lJyApIHsKCiAgICAgICAgIyBvdXRwdXQgaGVhZGVyIHNtYWxsIGFuZCBubyBOYXZiYXIKICAgICAgICAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5IZWFkZXIoIFR5cGUgPT4gJ1NtYWxsJyApOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgb3V0cHV0IGhlYWRlciBhbmQgbmF2aWdhdGlvbiBiYXIKICAgICAgICAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5IZWFkZXIoCiAgICAgICAgICAgIFZhbHVlID0+ICRGQVFEYXRhe1RpdGxlfSwKICAgICAgICApOwogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5OYXZpZ2F0aW9uQmFyKCk7CiAgICB9CgogICAgIyBnZXQgRkFRIHZvdGUgaW5mb3JtYXRpb24KICAgIG15ICRWb3RlRGF0YTsKICAgIGlmICggJFNlbGYtPntWb3Rpbmd9ICkgewogICAgICAgICRWb3RlRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Vm90ZUdldCgKICAgICAgICAgICAgQ3JlYXRlQnkgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgSXRlbUlEICAgID0+ICRGQVFEYXRhe0l0ZW1JRH0sCiAgICAgICAgICAgIEludGVyZmFjZSA9PiAkU2VsZi0+e0ludGVyZmFjZX0tPntTdGF0ZUlEfSwKICAgICAgICAgICAgSVAgICAgICAgID0+ICRFTlZ7J1JFTU9URV9BRERSJ30sCiAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGlmIHVzZXIgYWxyZWFkeSB2b3RlZCB0aGlzIEZBUSBpdGVtCiAgICBteSAkQWxyZWFkeVZvdGVkOwogICAgaWYgKCRWb3RlRGF0YSkgewoKICAgICAgICAjIGl0ZW0vY2hhbmdlX3RpbWUgPiB2b3RpbmcvY3JlYXRlX3RpbWUKICAgICAgICBteSAkSXRlbUNoYW5nZWRTeXN0ZW1UaW1lID0gJFNlbGYtPntUaW1lT2JqZWN0fS0+VGltZVN0YW1wMlN5c3RlbVRpbWUoCiAgICAgICAgICAgIFN0cmluZyA9PiAkRkFRRGF0YXtDaGFuZ2VkfSB8fCAnJywKICAgICAgICApOwogICAgICAgIG15ICRWb3RlQ3JlYXRlZFN5c3RlbVRpbWUgPSAkU2VsZi0+e1RpbWVPYmplY3R9LT5UaW1lU3RhbXAyU3lzdGVtVGltZSgKICAgICAgICAgICAgU3RyaW5nID0+ICRWb3RlRGF0YS0+e0NyZWF0ZWR9IHx8ICcnLAogICAgICAgICk7CiAgICAgICAgaWYgKCAkSXRlbUNoYW5nZWRTeXN0ZW1UaW1lIDw9ICRWb3RlQ3JlYXRlZFN5c3RlbVRpbWUgKSB7CiAgICAgICAgICAgICRBbHJlYWR5Vm90ZWQgPSAxOwogICAgICAgIH0KICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBWb3RlIFN1YmFjdGlvbgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdWb3RlJyApIHsKCiAgICAgICAgIyB1c2VyIGNhbid0IHVzZSB0aGlzIHN1YmFjdGlvbiBpZiBpcyBub3QgZW5ibGVkCiAgICAgICAgaWYgKCAhJFNlbGYtPntWb3Rpbmd9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZhdGFsRXJyb3IoIE1lc3NhZ2UgPT4gIlRoZSB2b3RpbmcgbWVjaGFuaXNtIGlzIG5vdCBlbmFibGVkISIgKTsKICAgICAgICB9CgogICAgICAgICMgdXNlciBjYW4gdm90ZSBvbmx5IG9uY2UgcGVyIEZBUSByZXZpc2lvbgogICAgICAgIGlmICgkQWxyZWFkeVZvdGVkKSB7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Ob3RpZnkoCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnRXJyb3InLAogICAgICAgICAgICAgICAgSW5mbyAgICAgPT4gJ1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgc2V0IHRoZSB2b3RlIGlmIGFueQogICAgICAgIGVsc2lmICggZGVmaW5lZCAkR2V0UGFyYW17UmF0ZX0gKSB7CgogICAgICAgICAgICAjIGdldCByYXRlcyBjb25maWcKICAgICAgICAgICAgbXkgJFZvdGluZ1JhdGVzID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6SXRlbTo6Vm90aW5nOjpSYXRlcycpOwogICAgICAgICAgICBteSAkUmF0ZSAgICAgICAgPSAkR2V0UGFyYW17UmF0ZX07CgogICAgICAgICAgICAjIHNlbmQgZXJyb3IgaWYgcmF0ZSBpcyBub3QgZGVmaW5lZCBpbiBjb25maWcKICAgICAgICAgICAgaWYgKCAhJFZvdGluZ1JhdGVzLT57JFJhdGV9ICkgewogICAgICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GYXRhbEVycm9yKCBNZXNzYWdlID0+ICJUaGUgdm90ZSByYXRlIGlzIG5vdCBkZWZpbmVkISIgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBvdGhlcndpc2UgYWRkIHRoZSB2b3RlCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFNlbGYtPntGQVFPYmplY3R9LT5Wb3RlQWRkKAogICAgICAgICAgICAgICAgICAgIENyZWF0ZWRCeSA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgIElQICAgICAgICA9PiAkRU5WeydSRU1PVEVfQUREUid9LAogICAgICAgICAgICAgICAgICAgIEludGVyZmFjZSA9PiAkU2VsZi0+e0ludGVyZmFjZX0tPntTdGF0ZUlEfSwKICAgICAgICAgICAgICAgICAgICBSYXRlICAgICAgPT4gJEdldFBhcmFte1JhdGV9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgZG8gbm90IHNob3cgdGhlIHZvdGluZyBmb3JtCiAgICAgICAgICAgICAgICAkQWxyZWFkeVZvdGVkID0gMTsKCiAgICAgICAgICAgICAgICAjIHJlZnJlc2ggRkFRIGl0ZW0gZGF0YQogICAgICAgICAgICAgICAgJUZBUURhdGEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUUdldCgKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBpZiAoICElRkFRRGF0YSApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Ob3RpZnkoIEluZm8gPT4gJ1RoYW5rcyBmb3IgeW91ciB2b3RlIScgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyB1c2VyIGlzIGFibGUgdG8gdm90ZSBidXQgbm8gcmF0ZSBoYXMgYmVlbiBzZWxlY3RlZAogICAgICAgIGVsc2UgewogICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Tm90aWZ5KAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ0Vycm9yJywKICAgICAgICAgICAgICAgIEluZm8gICAgID0+ICdObyByYXRlIHNlbGVjdGVkIScsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgcHJlcGFyZSBmaWVsZHMgZGF0YSAoU3RpbGwgbmVlZGVkIGZvciBQbGFpblRleHQpCiAgICBGSUVMRDoKICAgIGZvciBteSAkRmllbGQgKHF3KEZpZWxkMSBGaWVsZDIgRmllbGQzIEZpZWxkNCBGaWVsZDUgRmllbGQ2KSkgewogICAgICAgIG5leHQgRklFTEQgaWYgISRGQVFEYXRheyRGaWVsZH07CgogICAgICAgICMgcmV3cml0ZSBoYW5kbGUgYW5kIGFjdGlvbiwgdGFrZSBjYXJlIG9mIG9sZCBzdHlsZSBiZWZvcmUgRkFRIDIuMC54CiAgICAgICAgJEZBUURhdGF7JEZpZWxkfSA9fiBzewogICAgICAgICAgICBBY3Rpb249QWdlbnRGQVEgWyZdKGFtcDspPyBTdWJhY3Rpb249RG93bmxvYWQgWyZdKGFtcDspPwogICAgICAgIH17QWN0aW9uPUFnZW50RkFRWm9vbTtTdWJhY3Rpb249RG93bmxvYWRBdHRhY2htZW50O31neG1zOwoKICAgICAgICAjIG5vIHF1b3RpbmcgaWYgaHRtbCB2aWV3IGlzIGVuYWJsZWQKICAgICAgICBuZXh0IEZJRUxEIGlmICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6Okl0ZW06OkhUTUwnKTsKCiAgICAgICAgIyBodG1sIHF1b3RpbmcKICAgICAgICAkRkFRRGF0YXskRmllbGR9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICBOZXdMaW5lICAgICAgICA9PiAwLAogICAgICAgICAgICBUZXh0ICAgICAgICAgICA9PiAkRkFRRGF0YXskRmllbGR9LAogICAgICAgICAgICBWTWF4ICAgICAgICAgICA9PiA1MDAwLAogICAgICAgICAgICBIVE1MUmVzdWx0TW9kZSA9PiAxLAogICAgICAgICAgICBMaW5rRmVhdHVyZSAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgdXNlciBpbmZvIChDcmVhdGVkQnkpCiAgICBteSAlVXNlckluZm8gPSAkU2VsZi0+e1VzZXJPYmplY3R9LT5HZXRVc2VyRGF0YSgKICAgICAgICBVc2VySUQgPT4gJEZBUURhdGF7Q3JlYXRlZEJ5fQogICAgKTsKICAgICRQYXJhbXtDcmVhdGVkQnlVc2VyfSA9ICIkVXNlckluZm97VXNlckZpcnN0bmFtZX0gJFVzZXJJbmZve1VzZXJMYXN0bmFtZX0iOwoKICAgICMgZ2V0IHVzZXIgaW5mbyAoQ2hhbmdlZEJ5KQogICAgJVVzZXJJbmZvID0gJFNlbGYtPntVc2VyT2JqZWN0fS0+R2V0VXNlckRhdGEoCiAgICAgICAgVXNlcklEID0+ICRGQVFEYXRhe0NoYW5nZWRCeX0KICAgICk7CiAgICAkUGFyYW17Q2hhbmdlZEJ5VXNlcn0gPSAiJFVzZXJJbmZve1VzZXJGaXJzdG5hbWV9ICRVc2VySW5mb3tVc2VyTGFzdG5hbWV9IjsKCiAgICAjIHNldCB2b3RpbmcgcmVzdWx0cwogICAgJFBhcmFte1ZvdGluZ1Jlc3VsdENvbG9yfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+R2V0RkFRSXRlbVZvdGluZ1JhdGVDb2xvcigKICAgICAgICBSYXRlID0+ICRGQVFEYXRhe1ZvdGVSZXN1bHR9LAogICAgKTsKCiAgICBpZiAoICEkUGFyYW17Vm90aW5nUmVzdWx0Q29sb3J9IHx8ICRGQVFEYXRhe1ZvdGVzfSBlcSAnMCcgKSB7CiAgICAgICAgJFBhcmFte1ZvdGluZ1Jlc3VsdENvbG9yfSA9ICdHcmF5JzsKICAgIH0KCiAgICBpZiAoICROYXYgbmUgJ05vbmUnICkgewoKICAgICAgICAjIHJ1biBmYXEgbWVudSBtb2R1bGVzCiAgICAgICAgaWYgKCByZWYgJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUnKSBlcSAnSEFTSCcgKSB7CiAgICAgICAgICAgIG15ICVNZW51cyAgID0gJXsgJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUnKSB9OwogICAgICAgICAgICBteSAkQ291bnRlciA9IDA7CiAgICAgICAgICAgIGZvciBteSAkTWVudSAoIHNvcnQga2V5cyAlTWVudXMgKSB7CgogICAgICAgICAgICAgICAgIyBsb2FkIG1vZHVsZQogICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e01haW5PYmplY3R9LT5SZXF1aXJlKCAkTWVudXN7JE1lbnV9LT57TW9kdWxlfSApICkgewogICAgICAgICAgICAgICAgICAgIG15ICRPYmplY3QgPSAkTWVudXN7JE1lbnV9LT57TW9kdWxlfS0+bmV3KAogICAgICAgICAgICAgICAgICAgICAgICAleyRTZWxmfSwKICAgICAgICAgICAgICAgICAgICAgICAgSXRlbUlEID0+ICRGQVFEYXRhe0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBzZXQgY2xhc3NlcwogICAgICAgICAgICAgICAgICAgIGlmICggJE1lbnVzeyRNZW51fS0+e1RhcmdldH0gKSB7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRNZW51c3skTWVudX0tPntUYXJnZXR9IGVxICdQb3BVcCcgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTWVudXN7JE1lbnV9LT57Q2xhc3N9ID0gJ0FzUG9wdXAnOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2lmICggJE1lbnVzeyRNZW51fS0+e1RhcmdldH0gZXEgJ0JhY2snICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJE1lbnVzeyRNZW51fS0+e0NsYXNzfSA9ICdIaXN0b3J5QmFjayc7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkTWVudXN7JE1lbnV9LT57VGFyZ2V0fSBlcSAnQ29uZmlybWF0aW9uRGlhbG9nJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRNZW51c3skTWVudX0tPntDbGFzc30gPSAnQXNDb25maXJtYXRpb25EaWFsb2cnOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBydW4gbW9kdWxlCiAgICAgICAgICAgICAgICAgICAgJENvdW50ZXIgPSAkT2JqZWN0LT5SdW4oCiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgRkFRSXRlbSA9PiB7JUZBUURhdGF9LAogICAgICAgICAgICAgICAgICAgICAgICBDb3VudGVyID0+ICRDb3VudGVyLAogICAgICAgICAgICAgICAgICAgICAgICBDb25maWcgID0+ICRNZW51c3skTWVudX0sCiAgICAgICAgICAgICAgICAgICAgICAgIE1lbnVJRCAgPT4gJ01lbnUnIC4gJE1lbnUsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZhdGFsRXJyb3IoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIG91dHB1dCBhcHByb3ZhbCBzdGF0ZQogICAgaWYgKCAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpBcHByb3ZhbFJlcXVpcmVkJykgKSB7CiAgICAgICAgJFBhcmFte0FwcHJvdmFsfSA9ICRGQVFEYXRhe0FwcHJvdmVkfSA/ICdZZXMnIDogJ05vJzsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdWaWV3QXBwcm92YWwnLAogICAgICAgICAgICBEYXRhID0+IHslUGFyYW19LAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCAkU2VsZi0+e1ZvdGluZ30gKSB7CgogICAgICAgICMgb3V0cHV0IHZvdGVzIG51bWJlciBpZiBhbnkKICAgICAgICBpZiAoICRGQVFEYXRhe1ZvdGVzfSApIHsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1ZpZXdWb3RlcycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHslRkFRRGF0YX0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIG90aGVyd2lzZSBkaXNwbGF5IGEgTm8gVm90ZXMgZm91bmQgbWVzc2FnZQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKCBOYW1lID0+ICdWaWV3Tm9Wb3RlcycgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBzaG93IEZBUSBwYXRoCiAgICBteSAkU2hvd0ZBUVBhdGggPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZBUVBhdGhTaG93KAogICAgICAgIEZBUU9iamVjdCAgPT4gJFNlbGYtPntGQVFPYmplY3R9LAogICAgICAgIENhdGVnb3J5SUQgPT4gJEZBUURhdGF7Q2F0ZWdvcnlJRH0sCiAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgTmF2ICAgICAgICA9PiAkTmF2LAogICAgKTsKICAgIGlmICgkU2hvd0ZBUVBhdGgpIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGQVFQYXRoSXRlbUVsZW1lbnQnLAogICAgICAgICAgICBEYXRhID0+IHslRkFRRGF0YX0sCiAgICAgICAgICAgIE5hdiAgPT4gJE5hdiwKICAgICAgICApOwogICAgfQoKICAgICMgc2hvdyBrZXl3b3JkcyBhcyBzZWFyY2ggbGlua3MKICAgIGlmICggJEZBUURhdGF7S2V5d29yZHN9ICkgewoKICAgICAgICAjIHJlcGxhY2UgY29tbWFzIGFuZCBzZW1pY29sb25zCiAgICAgICAgJEZBUURhdGF7S2V5d29yZHN9ID1+IHMvLC8gL2c7CiAgICAgICAgJEZBUURhdGF7S2V5d29yZHN9ID1+IHMvOy8gL2c7CgogICAgICAgIG15IEBLZXl3b3JkcyA9IHNwbGl0IC9ccysvLCAkRkFRRGF0YXtLZXl3b3Jkc307CiAgICAgICAgZm9yIG15ICRLZXl3b3JkIChAS2V5d29yZHMpIHsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0tleXdvcmRzJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEtleXdvcmQgPT4gJEtleXdvcmQsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNob3cgbGFuZ3VhZ2VzCiAgICBpZiAoICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gKSB7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnTGFuZ3VhZ2UnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBvdXRwdXQgcmF0aW5nIHN0YXJzCiAgICBpZiAoICRTZWxmLT57Vm90aW5nfSApIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZBUVJhdGluZ1N0YXJzU2hvdygKICAgICAgICAgICAgVm90ZVJlc3VsdCA9PiAkRkFRRGF0YXtWb3RlUmVzdWx0fSwKICAgICAgICAgICAgVm90ZXMgICAgICA9PiAkRkFRRGF0YXtWb3Rlc30sCiAgICAgICAgKTsKICAgIH0KICAgIGlmICggJE5hdiBuZSAnTm9uZScgKSB7CgogICAgICAgICMgb3V0cHV0IGV4aXN0aW5nIGF0dGFjaG1lbnRzCiAgICAgICAgbXkgQEF0dGFjaG1lbnRJbmRleCA9ICRTZWxmLT57RkFRT2JqZWN0fS0+QXR0YWNobWVudEluZGV4KAogICAgICAgICAgICBJdGVtSUQgICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICBTaG93SW5saW5lID0+IDAsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgb3V0cHV0IGhlYWRlciBhbmQgYWxsIGF0dGFjaG1lbnRzCiAgICAgICAgaWYgKEBBdHRhY2htZW50SW5kZXgpIHsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0F0dGFjaG1lbnRIZWFkZXInLAogICAgICAgICAgICApOwogICAgICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKEBBdHRhY2htZW50SW5kZXgpIHsKICAgICAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQXR0YWNobWVudFJvdycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAleyRBdHRhY2htZW50fSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIHNob3cgRkFRIENvbnRlbnQKICAgIG15ICRGQVFCb2R5ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GQVFDb250ZW50U2hvdygKICAgICAgICBGQVFPYmplY3QgICAgICAgPT4gJFNlbGYtPntGQVFPYmplY3R9LAogICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30sCiAgICAgICAgRkFRRGF0YSAgICAgICAgID0+IHslRkFRRGF0YX0sCiAgICAgICAgVXNlcklEICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICBSZXR1cm5Db250ZW50ICAgPT4gMSwKICAgICk7CgogICAgaWYgKCAkTmF2IG5lICdOb25lJyApIHsKCiAgICAgICAgIyBzaG93IEZBUSBWb3RpbmcKICAgICAgICBpZiAoICRTZWxmLT57Vm90aW5nfSApIHsKCiAgICAgICAgICAgICMgZ2V0IHZvdGluZyBjb25maWcKICAgICAgICAgICAgbXkgJFNob3dWb3RpbmdDb25maWcgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpJdGVtOjpWb3Rpbmc6OlNob3cnKTsKICAgICAgICAgICAgaWYgKCAkU2hvd1ZvdGluZ0NvbmZpZy0+eyAkU2VsZi0+e0ludGVyZmFjZX0tPntOYW1lfSB9ICkgewoKICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgdGhlIHVzZXIgYWxyZWFkeSB2b3RlZCBhZnRlciBsYXN0IGNoYW5nZQogICAgICAgICAgICAgICAgaWYgKCAhJEFscmVhZHlWb3RlZCApIHsKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+X0ZBUVZvdGluZyggRkFRRGF0YSA9PiB7JUZBUURhdGF9ICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgZ2V0IGxpbmtlZCBvYmplY3RzCiAgICAgICAgbXkgJExpbmtMaXN0V2l0aERhdGEgPSAkU2VsZi0+e0xpbmtPYmplY3R9LT5MaW5rTGlzdFdpdGhEYXRhKAogICAgICAgICAgICBPYmplY3QgPT4gJ0ZBUScsCiAgICAgICAgICAgIEtleSAgICA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICAgICAgU3RhdGUgID0+ICdWYWxpZCcsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgbGluayB0YWJsZSB2aWV3IG1vZGUKICAgICAgICBteSAkTGlua1RhYmxlVmlld01vZGUgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnTGlua09iamVjdDo6Vmlld01vZGUnKTsKCiAgICAgICAgIyBjcmVhdGUgdGhlIGxpbmsgdGFibGUKICAgICAgICBteSAkTGlua1RhYmxlU3RyZyA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua09iamVjdFRhYmxlQ3JlYXRlKAogICAgICAgICAgICBMaW5rTGlzdFdpdGhEYXRhID0+ICRMaW5rTGlzdFdpdGhEYXRhLAogICAgICAgICAgICBWaWV3TW9kZSAgICAgICAgID0+ICRMaW5rVGFibGVWaWV3TW9kZSwKICAgICAgICApOwoKICAgICAgICAjIG91dHB1dCB0aGUgbGluayB0YWJsZQogICAgICAgIGlmICgkTGlua1RhYmxlU3RyZykgewogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnTGlua1RhYmxlJyAuICRMaW5rVGFibGVWaWV3TW9kZSwKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIExpbmtUYWJsZVN0cmcgPT4gJExpbmtUYWJsZVN0cmcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGxvZyBhY2Nlc3MgdG8gdGhpcyBGQVEgaXRlbQogICAgJFNlbGYtPntGQVFPYmplY3R9LT5GQVFMb2dBZGQoCiAgICAgICAgSXRlbUlEID0+ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0l0ZW1JRCcgKSwKICAgICAgICBJbnRlcmZhY2UgPT4gJFNlbGYtPntJbnRlcmZhY2V9LT57TmFtZX0sCiAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBzdGFydCB0ZW1wbGF0ZSBvdXRwdXQKICAgIGlmICggJE5hdiAmJiAkTmF2IGVxICdOb25lJyApIHsKCiAgICAgICAgIyBvbmx5IGNvbnZlcnQgaHRtbCB0byBwbGFpbiB0ZXh0IGlmIHJpY2ggdGV4dCBlZGl0b3IgaXMgbm90IHVzZWQKICAgICAgICBpZiAoICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGcm9udGVuZDo6UmljaFRleHQnKSApIHsKICAgICAgICAgICAgJEZBUURhdGF7RnVsbEJvZHl9ID0gJEZBUUJvZHk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkRkFRRGF0YXtGdWxsQm9keX0gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPntIVE1MVXRpbHNPYmplY3R9LT5Ub0FzY2lpKAogICAgICAgICAgICAgICAgU3RyaW5nID0+ICRGQVFCb2R5LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgdGhlIHB1YmxpYyBzdGF0ZSB0eXBlCiAgICAgICAgbXkgJFB1YmxpY1N0YXRlVHlwZSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVUeXBlR2V0KAogICAgICAgICAgICBOYW1lICAgPT4gJ3B1YmxpYycsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyByZW1vdmUgaW5saW5lIGltYWdlIGxpbmtzIHRvIGZhcSBpbWFnZXMKICAgICAgICAkRkFRRGF0YXtGdWxsQm9keX0KICAgICAgICAgICAgPX4gc3sgPGltZyBbXjw+XSsgQWN0aW9uPShBZ2VudHxDdXN0b21lcnxQdWJsaWMpRkFRIFtePD5dKyA+IH17fWd4bXM7CgogICAgICAgICMgZ2V0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgVGlja2V0IENvbXBvc2UKICAgICAgICBteSAkVGlja2V0Q29tcG9zZUNvbmZpZyA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OlRpY2tldENvbXBvc2UnKTsKCiAgICAgICAgbXkgJFNob3dPckJsb2NrOwoKICAgICAgICAjIHNob3cgIkluc2VydCBUZXh0IiBidXR0b24KICAgICAgICBpZiAoICRUaWNrZXRDb21wb3NlQ29uZmlnLT57U2hvd0luc2VydFRleHRCdXR0b259ICkgewogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICBkZWZpbmVkICRUaWNrZXRDb21wb3NlQ29uZmlnLT57SW5zZXJ0TWV0aG9kfQogICAgICAgICAgICAgICAgJiYgJFRpY2tldENvbXBvc2VDb25maWctPntJbnNlcnRNZXRob2R9IGVxICdGdWxsJwogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0luc2VydEZ1bGwnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdJbnNlcnRUZXh0JywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJFNob3dPckJsb2NrID0gMTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgaWYgRkFRIGFydGljbGUgaXMgcHVibGljCiAgICAgICAgaWYgKCAkRkFRRGF0YXtTdGF0ZVR5cGVJRH0gPT0gJFB1YmxpY1N0YXRlVHlwZS0+e1N0YXRlSUR9ICkgewoKICAgICAgICAgICAgbXkgJEhUVFBUeXBlID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0h0dHBUeXBlJyk7CiAgICAgICAgICAgIG15ICRGUUROICAgICA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGUUROJyk7CiAgICAgICAgICAgIG15ICRCYXNlbGluayA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0Jhc2VsaW5rfTsKCiAgICAgICAgICAgICMgcmV3cml0ZSBoYW5kbGUKICAgICAgICAgICAgJEJhc2VsaW5rCiAgICAgICAgICAgICAgICA9fiBzeyBpbmRleFsuXXBsIFs/XSB9e3B1YmxpYy5wbD99Z3htczsKCiAgICAgICAgICAgICRGQVFEYXRhe1B1YmxpY2xpbmt9ID0gJEhUVFBUeXBlIC4gJzovLycgLiAkRlFETiAuICRCYXNlbGluawogICAgICAgICAgICAgICAgLiAiQWN0aW9uPVB1YmxpY0ZBUVpvb207SXRlbUlEPSRGQVFEYXRhe0l0ZW1JRH0iOwoKICAgICAgICAgICAgIyBzaG93ICJJbnNlcnQgTGluayIgYnV0dG9uCiAgICAgICAgICAgIGlmICggJFRpY2tldENvbXBvc2VDb25maWctPntTaG93SW5zZXJ0TGlua0J1dHRvbn0gKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0luc2VydExpbmsnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJFNob3dPckJsb2NrID0gMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzaG93ICJJbnNlcnQgVGV4dCBhbmQgTGluayIgYnV0dG9uCiAgICAgICAgICAgIGlmICggJFRpY2tldENvbXBvc2VDb25maWctPntTaG93SW5zZXJ0VGV4dEFuZExpbmtCdXR0b259ICkgewogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgIGRlZmluZWQgJFRpY2tldENvbXBvc2VDb25maWctPntJbnNlcnRNZXRob2R9CiAgICAgICAgICAgICAgICAgICAgJiYgJFRpY2tldENvbXBvc2VDb25maWctPntJbnNlcnRNZXRob2R9IGVxICdGdWxsJwogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdJbnNlcnRGdWxsQW5kTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0luc2VydFRleHRBbmRMaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJFNob3dPckJsb2NrID0gMQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAkQ2FuY2VsQnV0dG9uQ2xhc3MgPSAnWm9vbVNtYWxsQnV0dG9uJzsKCiAgICAgICAgIyBzaG93IHRoZSAiT3IiIGJsb2NrIGJldHdlZW4gdGhlIGJ1dHRvbnMgYW5kIHRoZSBDYW5jZWwgJiBjbG9zZSB3aW5kb3cgbGFiZWwKICAgICAgICBpZiAoJFNob3dPckJsb2NrKSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdPcicsCiAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBzZXQgdGhlICRDYW5jZWxCdXR0b25DbGFzcyB0byAnJzsKICAgICAgICAgICAgJENhbmNlbEJ1dHRvbkNsYXNzID0gJyc7CiAgICAgICAgfQoKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRWm9vbVNtYWxsJywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgQ2FuY2VsQnV0dG9uQ2xhc3MgPT4gJENhbmNlbEJ1dHRvbkNsYXNzIHx8ICcnLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRWm9vbScsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAlRkFRRGF0YSwKICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgICMgYWRkIGZvb3RlcgogICAgaWYgKCAkTmF2ICYmICROYXYgZXEgJ05vbmUnICkgewogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Gb290ZXIoIFR5cGUgPT4gJ1NtYWxsJyApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZvb3RlcigpOwogICAgfQoKICAgIHJldHVybiAkT3V0cHV0Owp9CgpzdWIgX0ZBUVZvdGluZyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICVGQVFEYXRhID0gJXsgJFBhcmFte0ZBUURhdGF9IH07CgogICAgIyBvdXB1dCB2b3RpbmcgYmxvY2sKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnRkFRVm90aW5nJywKICAgICAgICBEYXRhID0+IHslRkFRRGF0YX0sCiAgICApOwoKICAgICMgZ2V0IFZvdGluZyByYXRlcyBzZXR0aW5nCiAgICBteSAkVm90aW5nUmF0ZXMgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpJdGVtOjpWb3Rpbmc6OlJhdGVzJyk7CiAgICBmb3IgbXkgJFJhdGVWYWx1ZSAoIHNvcnQgeyAkYSA8PT4gJGIgfSBrZXlzICV7JFZvdGluZ1JhdGVzfSApIHsKCiAgICAgICAgIyBjcmVhdGUgZGF0YSBzdHJ1Y3VyZSBmb3Igb3V0cHV0CiAgICAgICAgbXkgJURhdGEgPSAoCiAgICAgICAgICAgIFZhbHVlID0+ICRSYXRlVmFsdWUsCiAgICAgICAgICAgIFRpdGxlID0+ICRWb3RpbmdSYXRlcy0+eyRSYXRlVmFsdWV9LAogICAgICAgICk7CgogICAgICAgICMgb3V0cHV0IHZvdGUgcmF0aW5nIHJvdyBibG9jawogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0ZBUVZvdGluZ1JhdGVSb3cnLAogICAgICAgICAgICBEYXRhID0+IHslRGF0YX0sCiAgICAgICAgKTsKICAgIH0KfQoKMTsK
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRRXhwbG9yZXIucG0gLSBjdXN0b21lciBGQVEgZXhwbG9yZXIKIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxMyBPVFJTIEFHLCBodHRwOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6Q3VzdG9tZXJGQVFFeHBsb3JlcjsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6RkFROwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE9iamVjdCAoCiAgICAgICAgcXcoUGFyYW1PYmplY3QgREJPYmplY3QgTGF5b3V0T2JqZWN0IExvZ09iamVjdCBDb25maWdPYmplY3QpCiAgICAgICAgKQogICAgewogICAgICAgIGlmICggISRTZWxmLT57JE9iamVjdH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RmF0YWxFcnJvciggTWVzc2FnZSA9PiAiR290IG5vICRPYmplY3QhIiApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNyZWF0ZSBuZWVkZWQgb2JqZWN0cwogICAgJFNlbGYtPntGQVFPYmplY3R9ID0gS2VybmVsOjpTeXN0ZW06OkZBUS0+bmV3KCVQYXJhbSk7CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgJFNlbGYtPntDb25maWd9ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoIkZBUTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgICMgc2V0IGRlZmF1bHQgaW50ZXJmYWNlIHNldHRpbmdzCiAgICAkU2VsZi0+e0ludGVyZmFjZX0gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUdldCgKICAgICAgICBOYW1lICAgPT4gJ2V4dGVybmFsJywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVUeXBlTGlzdCgKICAgICAgICBUeXBlcyAgPT4gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6Q3VzdG9tZXI6OlN0YXRlVHlwZXMnKSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6TXVsdGlMYW5ndWFnZScpOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGNvbmZpZyBkYXRhCiAgICAkU2VsZi0+e1N0YXJ0SGl0fSA9IGludCggJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnU3RhcnRIaXQnICkgfHwgMSApOwogICAgJFNlbGYtPntTZWFyY2hMaW1pdH0gICAgID0gJFNlbGYtPntDb25maWd9LT57U2VhcmNoTGltaXR9ICAgICB8fCAyMDA7CiAgICAkU2VsZi0+e1NlYXJjaFBhZ2VTaG93bn0gPSAkU2VsZi0+e0NvbmZpZ30tPntTZWFyY2hQYWdlU2hvd259IHx8IDM7CiAgICAkU2VsZi0+e1NvcnRCeX0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdTb3J0QnknICkKICAgICAgICB8fCAkU2VsZi0+e0NvbmZpZ30tPnsnU29ydEJ5OjpEZWZhdWx0J30KICAgICAgICB8fCAnRkFRSUQnOwogICAgJFNlbGYtPntPcmRlckJ5fSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ09yZGVyJyApCiAgICAgICAgfHwgJFNlbGYtPntDb25maWd9LT57J09yZGVyOjpEZWZhdWx0J30KICAgICAgICB8fCAnRG93bic7CgogICAgIyBnZXQgY2F0ZWdvcnkgaWQKICAgIG15ICRDYXRlZ29yeUlEID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnQ2F0ZWdvcnlJRCcgKSB8fCAwOwoKICAgICMgY2hlY2sgZm9yIG5vbiBudW1lcmljIENhdGVnb3J5SUQKICAgIGlmICggJENhdGVnb3J5SUQgIX4gL1xkKy8gKSB7CiAgICAgICAgJENhdGVnb3J5SUQgPSAwOwogICAgfQoKICAgICMgZ2V0IGNhdGVnb3J5IGJ5IG5hbWUKICAgIG15ICRDYXRlZ29yeSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NhdGVnb3J5JyApIHx8ICcnOwoKICAgICMgdHJ5IHRvIGdldCB0aGUgQ2F0ZWdvcnkgSUQgZnJvbSBjYXRlZ29yeSBuYW1lIGlmIG5vIENhdGVnb3J5IElECiAgICBpZiAoICRDYXRlZ29yeSAmJiAhJENhdGVnb3J5SUQgKSB7CgogICAgICAgICMgZ2V0IHRoZSBjYXRlZ29yeSB0cmVlCiAgICAgICAgbXkgJENhdGVnb3J5VHJlZSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Q2F0ZWdvcnlUcmVlTGlzdCgKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIHJldmVyc2UgdGhlIGhhcyBmb3IgZWFzeSBsb29rdXAKICAgICAgICBteSAlUmV2ZXJzZUNhdGVnb3J5VHJlZSA9IHJldmVyc2UgJXskQ2F0ZWdvcnlUcmVlfTsKCiAgICAgICAgJENhdGVnb3J5SUQgPSAkUmV2ZXJzZUNhdGVnb3J5VHJlZXskQ2F0ZWdvcnl9IHx8IDA7CiAgICB9CgogICAgIyB0cnkgdG8gZ2V0IHRoZSBjYXRlZ29yeSBkYXRhCiAgICBteSAlQ2F0ZWdvcnlEYXRhOwogICAgaWYgKCRDYXRlZ29yeUlEKSB7CgogICAgICAgICMgZ2V0IGNhdGVnb3J5IGRhdGEKICAgICAgICAlQ2F0ZWdvcnlEYXRhID0gJFNlbGYtPntGQVFPYmplY3R9LT5DYXRlZ29yeUdldCgKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICBpZiAoICElQ2F0ZWdvcnlEYXRhICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DdXN0b21lck5vUGVybWlzc2lvbiggV2l0aEhlYWRlciA9PiAneWVzJyApOwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayB1c2VyIHBlcm1pc3Npb24KICAgICAgICBteSAkUGVybWlzc2lvbiA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Q2hlY2tDYXRlZ29yeUN1c3RvbWVyUGVybWlzc2lvbigKICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICAgICAgQ2F0ZWdvcnlJRCAgID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgcGVybWlzc2lvbiBjaGVjawogICAgICAgIGlmICggISRQZXJtaXNzaW9uICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DdXN0b21lck5vUGVybWlzc2lvbiggV2l0aEhlYWRlciA9PiAneWVzJyApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHN0b3JlIHRoZSBsYXN0IHNjcmVlbiBvdmVydmlldyBpbiBzZXNzaW9uCiAgICAkU2VsZi0+e1Nlc3Npb25PYmplY3R9LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICBLZXkgICAgICAgPT4gJ0xhc3RTY3JlZW5PdmVydmlldycsCiAgICAgICAgVmFsdWUgICAgID0+ICRTZWxmLT57UmVxdWVzdGVkVVJMfSwKICAgICk7CgogICAgIyBvdXRwdXQgaGVhZGVyCiAgICBteSAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DdXN0b21lckhlYWRlcigKICAgICAgICBWYWx1ZSA9PiAnJywKICAgICk7CiAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Q3VzdG9tZXJOYXZpZ2F0aW9uQmFyKCk7CgogICAgIyBzaG93IEZBUSBwYXRoCiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZBUVBhdGhTaG93KAogICAgICAgIEZBUU9iamVjdCAgPT4gJFNlbGYtPntGQVFPYmplY3R9LAogICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IGFsbCBkaXJlY3Qgc3ViY2F0ZWdvcmllcyBvZiB0aGUgc2VsZWN0ZWQgY2F0ZWdvcnkKICAgIG15ICRDYXRlZ29yeUlEc1JlZiA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Q3VzdG9tZXJDYXRlZ29yeVNlYXJjaCgKICAgICAgICBQYXJlbnRJRCAgICAgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICBNb2RlICAgICAgICAgPT4gJ0N1c3RvbWVyJywKICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIHNob3cgc3ViY2F0ZWdvcmllcyBsaXN0CiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKCBOYW1lID0+ICdTdWJjYXRlZ29yaWVzJyApOwogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jayggTmFtZSA9PiAnT3ZlcnZpZXdSZXN1bHQnICk7CgogICAgIyBjaGVjayBpZiB0aGVyZSBhcmUgc3ViY2F0ZWdvcmllcwogICAgaWYgKCAkQ2F0ZWdvcnlJRHNSZWYgJiYgcmVmICRDYXRlZ29yeUlEc1JlZiBlcSAnQVJSQVknICYmIEB7JENhdGVnb3J5SURzUmVmfSApIHsKCiAgICAgICAgIyBzaG93IGRhdGEgZm9yIGVhY2ggc3ViY2F0ZWdvcnkKICAgICAgICBmb3IgbXkgJFN1YkNhdGVnb3J5SUQgKCBAeyRDYXRlZ29yeUlEc1JlZn0gKSB7CgogICAgICAgICAgICAjIGdldCB0aGUgY2F0ZWdvcnkgZGF0YQogICAgICAgICAgICBteSAlU3ViQ2F0ZWdvcnlEYXRhID0gJFNlbGYtPntGQVFPYmplY3R9LT5DYXRlZ29yeUdldCgKICAgICAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJFN1YkNhdGVnb3J5SUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZ2V0IHRoZSBudW1iZXIgb2Ygc3ViY2F0ZWdvcmllcyBvZiB0aGlzIHN1YmNhdGVnb3J5CiAgICAgICAgICAgICRTdWJDYXRlZ29yeURhdGF7U3ViQ2F0ZWdvcnlDb3VudH0gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkNhdGVnb3J5Q291bnQoCiAgICAgICAgICAgICAgICBQYXJlbnRJRHMgPT4gWyRTdWJDYXRlZ29yeUlEXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGdldCB0aGUgbnVtYmVyIG9mIGZhcSBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5CiAgICAgICAgICAgICRTdWJDYXRlZ29yeURhdGF7QXJ0aWNsZUNvdW50fSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRQ291bnQoCiAgICAgICAgICAgICAgICBDYXRlZ29yeUlEcyAgPT4gWyRTdWJDYXRlZ29yeUlEXSwKICAgICAgICAgICAgICAgIEl0ZW1TdGF0ZXMgICA9PiAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30sCiAgICAgICAgICAgICAgICBPbmx5QXBwcm92ZWQgPT4gMSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIG91dHB1dCB0aGUgY2F0ZWdvcnkgZGF0YQogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdSZXN1bHRSb3cnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7JVN1YkNhdGVnb3J5RGF0YX0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgb3RoZXJ3aXNlIGEgbm8gZGF0YSBmb3VuZCBtZXNzYWdlIGlzIGRpc3BsYXllZAogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnTm9DYXRlZ29yeURhdGFGb3VuZE1zZycsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNlYXJjaCBhbGwgRkFRIGFydGljbGVzIHdpdGhpbiB0aGUgZ2l2ZW4gY2F0ZWdvcnkKICAgIG15IEBWaWV3YWJsZUZBUUlEcyA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRU2VhcmNoKAogICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gWyAkU2VsZi0+e1NvcnRCeX0gXSwKICAgICAgICBPcmRlckJ5RGlyZWN0aW9uID0+IFsgJFNlbGYtPntPcmRlckJ5fSBdLAogICAgICAgIExpbWl0ICAgICAgICAgICAgPT4gJFNlbGYtPntTZWFyY2hMaW1pdH0sCiAgICAgICAgVXNlcklEICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgU3RhdGVzICAgICAgICAgICA9PiAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30sCiAgICAgICAgSW50ZXJmYWNlICAgICAgICA9PiAkU2VsZi0+e0ludGVyZmFjZX0sCiAgICAgICAgQ2F0ZWdvcnlJRHMgICAgICA9PiBbJENhdGVnb3J5SURdLAogICAgKTsKCiAgICAjIHNldCB0aGUgU29ydEJ5IENsYXNzCiAgICBteSAkU29ydENsYXNzOwoKICAgICMgdGhpcyBzZXRzIHRoZSBvcHBvc2l0IHRvIHRoZSBPcmRlckJ5IHBhcmFtZXRlcgogICAgaWYgKCAkU2VsZi0+e09yZGVyQnl9IGVxICdEb3duJyApIHsKICAgICAgICAkU29ydENsYXNzID0gJ1NvcnRBc2NlbmRpbmcnOwogICAgfQogICAgZWxzaWYgKCAkU2VsZi0+e09yZGVyQnl9IGVxICdVcCcgKSB7CiAgICAgICAgJFNvcnRDbGFzcyA9ICdTb3J0RGVzY2VuZGluZyc7CiAgICB9CgogICAgIyBzZXQgdGhlIFNvcnRCeSBDbGFzcyB0byB0aGUgY29ycmVjdCBmaWVsZAogICAgbXkgJUNTU1NvcnQ7CiAgICBteSAkU29ydEJ5ID0gJFNlbGYtPntTb3J0Qnl9IC4gJ1NvcnQnOwogICAgJENTU1NvcnR7JFNvcnRCeX0gPSAkU29ydENsYXNzOwoKICAgIG15ICVOZXdPcmRlciA9ICgKICAgICAgICBEb3duID0+ICdVcCcsCiAgICAgICAgVXAgICA9PiAnRG93bicsCiAgICApOwoKICAgICMgc2hvdyB0aGUgRkFRIGFydGljbGUgbGlzdAogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdGQVFJdGVtTGlzdCcsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgICVDU1NTb3J0LAogICAgICAgICAgICBPcmRlciA9PiAkTmV3T3JkZXJ7ICRTZWxmLT57T3JkZXJCeX0gfSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIHNob3cgbGFuZ3VhZ2UgaGVhZGVyCiAgICBpZiAoICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gKSB7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnSGVhZGVyTGFuZ3VhZ2UnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgICAgICAlQ1NTU29ydCwKICAgICAgICAgICAgICAgIE9yZGVyID0+ICROZXdPcmRlcnsgJFNlbGYtPntPcmRlckJ5fSB9LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgbXkgJENvdW50ZXIgPSAwOwogICAgaWYgKEBWaWV3YWJsZUZBUUlEcykgewoKICAgICAgICBmb3IgbXkgJEZBUUlEIChAVmlld2FibGVGQVFJRHMpIHsKCiAgICAgICAgICAgICRDb3VudGVyKys7CgogICAgICAgICAgICAjIGJ1aWxkIHNlYXJjaCByZXN1bHQKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJENvdW50ZXIgPj0gJFNlbGYtPntTdGFydEhpdH0KICAgICAgICAgICAgICAgICYmICRDb3VudGVyIDwgKCAkU2VsZi0+e1NlYXJjaFBhZ2VTaG93bn0gKyAkU2VsZi0+e1N0YXJ0SGl0fSApCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAjIGdldCBGQVEgZGF0YSBkZXRhaWxzCiAgICAgICAgICAgICAgICBteSAlRkFRRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRR2V0KAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJEZBUUlELAogICAgICAgICAgICAgICAgICAgIEl0ZW1GaWVsZHMgPT4gMCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBhZGQgYmxvY2tzIHRvIHRlbXBsYXRlCiAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgYWRkIGxhbmd1YWdlIGRhdGEKICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntNdWx0aUxhbmd1YWdlfSApIHsKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmRMYW5ndWFnZScsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJUZBUURhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIG90aGVyd2lzZSBhIG5vIGRhdGEgZm91bmQgbWVzc2FnZSBpcyBkaXNwbGF5ZWQKICAgIGVsc2UgewogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ05vRkFRRGF0YUZvdW5kTXNnJywKICAgICAgICApOwogICAgfQoKICAgIG15ICRMaW5rID0gJ1NvcnRCeT0nIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5MaW5rRW5jb2RlKCAkU2VsZi0+e1NvcnRCeX0gKSAuICc7JzsKICAgICRMaW5rIC49ICdPcmRlcj0nIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5MaW5rRW5jb2RlKCAkU2VsZi0+e09yZGVyQnl9ICkgLiAnOyc7CgogICAgIyBidWlsZCBzZWFyY2ggbmF2aWdhdGlvbiBiYXIKICAgIG15ICVQYWdlTmF2ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5QYWdlTmF2QmFyKAogICAgICAgIExpbWl0ICAgICA9PiAkU2VsZi0+e1NlYXJjaExpbWl0fSwKICAgICAgICBTdGFydEhpdCAgPT4gJFNlbGYtPntTdGFydEhpdH0sCiAgICAgICAgUGFnZVNob3duID0+ICRTZWxmLT57U2VhcmNoUGFnZVNob3dufSwKICAgICAgICBBbGxIaXRzICAgPT4gJENvdW50ZXIsCiAgICAgICAgQWN0aW9uICAgID0+ICJBY3Rpb249Q3VzdG9tZXJGQVFFeHBsb3JlcjtDYXRlZ29yeUlEPSRDYXRlZ29yeUlEIiwKICAgICAgICBMaW5rICAgICAgPT4gJExpbmssCiAgICAgICAgSURQcmVmaXggID0+ICJDdXN0b21lckZBUUV4cGxvcmVyIiwKICAgICk7CgogICAgIyBzaG93IGZvb3RlciBmaWx0ZXIgLSBzaG93IG9ubHkgaWYgbW9yZSB0aGUgb25lIHBhZ2UgaXMgYXZhaWxhYmxlCiAgICBpZiAoIGRlZmluZWQgJFBhZ2VOYXZ7VG90YWxIaXRzfSAmJiAoICRQYWdlTmF2e1RvdGFsSGl0c30gPiAkU2VsZi0+e1NlYXJjaFBhZ2VTaG93bn0gKSApIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdQYWdpbmF0aW9uJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAlUGFnZU5hdiwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgICMgc2hvdyBRdWlja1NlYXJjaAogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GQVFTaG93UXVpY2tTZWFyY2goCiAgICAgICAgTW9kZSAgICAgICAgICAgID0+ICdDdXN0b21lcicsCiAgICAgICAgQ3VzdG9tZXJVc2VyICAgID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICBJbnRlcmZhY2UgICAgICAgPT4gJFNlbGYtPntJbnRlcmZhY2V9LAogICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30sCiAgICAgICAgVXNlcklEICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBzaG93IGxhc3QgYWRkZWQgYW5kIGxhc3QgdXBkYXRlZCBhcnRpY2xlcwogICAgZm9yIG15ICRUeXBlIChxdyhMYXN0Q3JlYXRlIExhc3RDaGFuZ2UpKSB7CgogICAgICAgIG15ICRTaG93T2sgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZBUVNob3dMYXRlc3ROZXdzQm94KAogICAgICAgICAgICBGQVFPYmplY3QgICAgICAgPT4gJFNlbGYtPntGQVFPYmplY3R9LAogICAgICAgICAgICBUeXBlICAgICAgICAgICAgPT4gJFR5cGUsCiAgICAgICAgICAgIE1vZGUgICAgICAgICAgICA9PiAnQ3VzdG9tZXInLAogICAgICAgICAgICBDdXN0b21lclVzZXIgICAgPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgICAgICBDYXRlZ29yeUlEICAgICAgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIEludGVyZmFjZSAgICAgICA9PiAkU2VsZi0+e0ludGVyZmFjZX0sCiAgICAgICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBlcnJvcgogICAgICAgIGlmICggISRTaG93T2sgKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKCk7CiAgICAgICAgfQogICAgfQoKICAgICMgc2hvdyB0b3AgdGVuIGFydGljbGVzCiAgICBteSAkU2hvd09rID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GQVFTaG93VG9wMTAoCiAgICAgICAgRkFRT2JqZWN0ICAgICAgID0+ICRTZWxmLT57RkFRT2JqZWN0fSwKICAgICAgICBNb2RlICAgICAgICAgICAgPT4gJ0N1c3RvbWVyJywKICAgICAgICBDdXN0b21lclVzZXIgICAgPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgIENhdGVnb3J5SUQgICAgICA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICBJbnRlcmZhY2UgICAgICAgPT4gJFNlbGYtPntJbnRlcmZhY2V9LAogICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30sCiAgICAgICAgVXNlcklEICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBjaGVjayBlcnJvcgogICAgaWYgKCAhJFNob3dPayApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigpOwogICAgfQoKICAgICMgc3RhcnQgdGVtcGxhdGUgb3V0cHV0CiAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQ3VzdG9tZXJGQVFFeHBsb3JlcicsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICAlQ2F0ZWdvcnlEYXRhLAogICAgICAgIH0sCiAgICApOwoKICAgICMgYWRkIGZvb3RlcgogICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkN1c3RvbWVyRm9vdGVyKCk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCjE7Cg==
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRUHJpbnQucG0gLSBwcmludCBsYXlvdXQgZm9yIGFnZW50IGludGVyZmFjZQojIENvcHlyaWdodCAoQykgMjAwMS0yMDEzIE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpDdXN0b21lckZBUVByaW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHM7CnVzZSBLZXJuZWw6OlN5c3RlbTo6UERGOwp1c2UgS2VybmVsOjpTeXN0ZW06OkZBUTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBjaGVjayBuZWVkZWQgb2JqZWN0cwogICAgZm9yIG15ICROZWVkZWQgKAogICAgICAgIHF3KFBhcmFtT2JqZWN0IERCT2JqZWN0IExheW91dE9iamVjdCBMb2dPYmplY3QgQ29uZmlnT2JqZWN0IE1haW5PYmplY3QpCiAgICAgICAgKQogICAgewogICAgICAgIGlmICggISRTZWxmLT57JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RmF0YWxFcnJvciggTWVzc2FnZSA9PiAiR290IG5vICROZWVkZWQhIiApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNyZWF0ZSBhZGl0aW9uYWwgb2JqZWN0cwogICAgJFNlbGYtPntIVE1MVXRpbHNPYmplY3R9ID0gS2VybmVsOjpTeXN0ZW06OkhUTUxVdGlscy0+bmV3KCVQYXJhbSk7CiAgICAkU2VsZi0+e1BERk9iamVjdH0gICAgICAgPSBLZXJuZWw6OlN5c3RlbTo6UERGLT5uZXcoJVBhcmFtKTsKICAgICRTZWxmLT57RkFRT2JqZWN0fSAgICAgICA9IEtlcm5lbDo6U3lzdGVtOjpGQVEtPm5ldyglUGFyYW0pOwoKICAgICMgc2V0IGRlZmF1bHQgaW50ZXJmYWNlIHNldHRpbmdzCiAgICAkU2VsZi0+e0ludGVyZmFjZX0gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUdldCgKICAgICAgICBOYW1lICAgPT4gJ2V4dGVybmFsJywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVUeXBlTGlzdCgKICAgICAgICBUeXBlcyAgPT4gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6Q3VzdG9tZXI6OlN0YXRlVHlwZXMnKSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGdldCBkZWZhdWx0IG9wdGlvbnMKICAgICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpNdWx0aUxhbmd1YWdlJyk7CiAgICAkU2VsZi0+e1ZvdGluZ30gICAgICAgID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6Vm90aW5nJyk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBwZXJtaXNzaW9uIGNoZWNrCiAgICBpZiAoICEkU2VsZi0+e0FjY2Vzc1JvfSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gJ1lvdSBuZWVkIHJvIHBlcm1pc3Npb24hJywKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKICAgIG15ICRPdXRwdXQ7CgogICAgIyBnZXQgcGFyYW1zCiAgICBteSAlR2V0UGFyYW07CiAgICAkR2V0UGFyYW17SXRlbUlEfSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0l0ZW1JRCcgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJEdldFBhcmFte0l0ZW1JRH0gKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Q3VzdG9tZXJGYXRhbEVycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+ICdObyBJdGVtSUQgaXMgZ2l2ZW4hJywKICAgICAgICAgICAgQ29tbWVudCA9PiAnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluLicsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBGQVEgaXRlbSBkYXRhCiAgICBteSAlRkFRRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRR2V0KAogICAgICAgIEl0ZW1JRCAgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgSXRlbUZpZWxkcyA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICggISVGQVFEYXRhICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkN1c3RvbWVyRmF0YWxFcnJvcigpOwogICAgfQoKICAgICMgY2hlY2sgdXNlciBwZXJtaXNzaW9uCiAgICBteSAkUGVybWlzc2lvbiA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Q2hlY2tDYXRlZ29yeUN1c3RvbWVyUGVybWlzc2lvbigKICAgICAgICBDdXN0b21lclVzZXIgPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgIENhdGVnb3J5SUQgICA9PiAkRkFRRGF0YXtDYXRlZ29yeUlEfSwKICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIHNob3cgbm8gcGVybWlzc2lvbiBlcnJvcgogICAgaWYgKAogICAgICAgICEkUGVybWlzc2lvbgogICAgICAgIHx8ICEkRkFRRGF0YXtBcHByb3ZlZH0KICAgICAgICB8fCAhJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9LT57ICRGQVFEYXRhe1N0YXRlVHlwZUlEfSB9CiAgICAgICAgKQogICAgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkN1c3RvbWVyTm9QZXJtaXNzaW9uKCBXaXRoSGVhZGVyID0+ICd5ZXMnICk7CiAgICB9CgogICAgIyBwcmVwYXJlIGZpZWxkcyBkYXRhCiAgICBGSUVMRDoKICAgIGZvciBteSAkRmllbGQgKHF3KEZpZWxkMSBGaWVsZDIgRmllbGQzIEZpZWxkNCBGaWVsZDUgRmllbGQ2KSkgewogICAgICAgIG5leHQgRklFTEQgaWYgISRGQVFEYXRheyRGaWVsZH07CgogICAgICAgICMgcmV3cml0ZSBsaW5rcyB0byBlbWJlZGRlZCBpbWFnZXMgZm9yIGN1c3RvbWVyIGFuZCBwdWJsaWMgaW50ZXJmYWNlCiAgICAgICAgaWYgKCAkU2VsZi0+e0ludGVyZmFjZX17TmFtZX0gZXEgJ2V4dGVybmFsJyApIHsKICAgICAgICAgICAgJEZBUURhdGF7JEZpZWxkfQogICAgICAgICAgICAgICAgPX4gc3sgaW5kZXhbLl1wbCBbP10gQWN0aW9uPUFnZW50RkFRWm9vbSB9e2N1c3RvbWVyLnBsP0FjdGlvbj1DdXN0b21lckZBUVpvb219Z3htczsKICAgICAgICB9CgogICAgICAgICMgbm8gcXVvdGluZyBpZiBodG1sIHZpZXcgaXMgZW5hYmxlZAogICAgICAgIG5leHQgRklFTEQgaWYgJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6SXRlbTo6SFRNTCcpOwoKICAgICAgICAjIGh0bWwgcXVvdGluZwogICAgICAgICRGQVFEYXRheyRGaWVsZH0gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkFzY2lpMkh0bWwoCiAgICAgICAgICAgIE5ld0xpbmUgICAgICAgID0+IDAsCiAgICAgICAgICAgIFRleHQgICAgICAgICAgID0+ICRGQVFEYXRheyRGaWVsZH0sCiAgICAgICAgICAgIFZNYXggICAgICAgICAgID0+IDUwMDAsCiAgICAgICAgICAgIEhUTUxSZXN1bHRNb2RlID0+IDEsCiAgICAgICAgICAgIExpbmtGZWF0dXJlICAgID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdlbmVyYXRlIHBkZiBvdXRwdXQKICAgIGlmICggJFNlbGYtPntQREZPYmplY3R9ICkgewogICAgICAgIG15ICRQcmludGVkQnkgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCgncHJpbnRlZCBieScpOwogICAgICAgIG15ICRUaW1lICAgICAgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCggVGVtcGxhdGUgPT4gJyRFbnZ7IlRpbWUifScgKTsKICAgICAgICBteSAkVXJsICAgICAgID0gJyAnOwogICAgICAgIGlmICggJEVOVntSRVFVRVNUX1VSSX0gKSB7CiAgICAgICAgICAgICRVcmwgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnSHR0cFR5cGUnKSAuICc6Ly8nCiAgICAgICAgICAgICAgICAuICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGUUROJykKICAgICAgICAgICAgICAgIC4gJEVOVntSRVFVRVNUX1VSSX07CiAgICAgICAgfQogICAgICAgIG15ICVQYWdlOwoKICAgICAgICAjIGdldCBtYXhpbXVtIG51bWJlciBvZiBwYWdlcwogICAgICAgICRQYWdle01heFBhZ2VzfSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdQREY6Ok1heFBhZ2VzJyk7CiAgICAgICAgaWYgKCAhJFBhZ2V7TWF4UGFnZXN9IHx8ICRQYWdle01heFBhZ2VzfSA8IDEgfHwgJFBhZ2V7TWF4UGFnZXN9ID4gMTAwMCApIHsKICAgICAgICAgICAgJFBhZ2V7TWF4UGFnZXN9ID0gMTAwOwogICAgICAgIH0KICAgICAgICBteSAkSGVhZGVyUmlnaHQgID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6RkFRSG9vaycpIC4gJEZBUURhdGF7TnVtYmVyfTsKICAgICAgICBteSAkSGVhZGxpbmVMZWZ0ID0gJEhlYWRlclJpZ2h0OwogICAgICAgIG15ICRUaXRsZSAgICAgICAgPSAkSGVhZGVyUmlnaHQ7CiAgICAgICAgaWYgKCAkRkFRRGF0YXtUaXRsZX0gKSB7CiAgICAgICAgICAgICRIZWFkbGluZUxlZnQgPSAkRkFRRGF0YXtUaXRsZX07CiAgICAgICAgICAgICRUaXRsZSAuPSAnIC8gJyAuICRGQVFEYXRhe1RpdGxlfTsKICAgICAgICB9CgogICAgICAgICRQYWdle01hcmdpblRvcH0gICAgPSAzMDsKICAgICAgICAkUGFnZXtNYXJnaW5SaWdodH0gID0gNDA7CiAgICAgICAgJFBhZ2V7TWFyZ2luQm90dG9tfSA9IDQwOwogICAgICAgICRQYWdle01hcmdpbkxlZnR9ICAgPSA0MDsKICAgICAgICAkUGFnZXtIZWFkZXJSaWdodH0gID0gJEhlYWRlclJpZ2h0OwogICAgICAgICRQYWdle0hlYWRsaW5lTGVmdH0gPSAkSGVhZGxpbmVMZWZ0OwogICAgICAgICRQYWdle0hlYWRsaW5lUmlnaHR9CiAgICAgICAgICAgID0gJFByaW50ZWRCeSAuICcgJwogICAgICAgICAgICAuICRTZWxmLT57VXNlckZpcnN0bmFtZX0gLiAnICcKICAgICAgICAgICAgLiAkU2VsZi0+e1VzZXJMYXN0bmFtZX0gLiAnICgnCiAgICAgICAgICAgIC4gJFNlbGYtPntVc2VyRW1haWx9IC4gJykgJwogICAgICAgICAgICAuICRUaW1lOwogICAgICAgICRQYWdle0Zvb3RlckxlZnR9ID0gJFVybDsKICAgICAgICAkUGFnZXtQYWdlVGV4dH0gICA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdQYWdlJyk7CiAgICAgICAgJFBhZ2V7UGFnZUNvdW50fSAgPSAxOwoKICAgICAgICAjIGNyZWF0ZSBuZXcgcGRmIGRvY3VtZW50CiAgICAgICAgJFNlbGYtPntQREZPYmplY3R9LT5Eb2N1bWVudE5ldygKICAgICAgICAgICAgVGl0bGUgID0+ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdQcm9kdWN0JykgLiAnOiAnIC4gJFRpdGxlLAogICAgICAgICAgICBFbmNvZGUgPT4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57VXNlckNoYXJzZXR9LAogICAgICAgICk7CgogICAgICAgICMgY3JlYXRlIGZpcnN0IHBkZiBwYWdlCiAgICAgICAgJFNlbGYtPntQREZPYmplY3R9LT5QYWdlTmV3KAogICAgICAgICAgICAlUGFnZSwgRm9vdGVyUmlnaHQgPT4gJFBhZ2V7UGFnZVRleHR9IC4gJyAnIC4gJFBhZ2V7UGFnZUNvdW50fSwKICAgICAgICApOwogICAgICAgICRQYWdle1BhZ2VDb3VudH0rKzsKCiAgICAgICAgIyB0eXBlIG9mIHByaW50IHRhZwogICAgICAgIG15ICRQcmludFRhZyA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdGQVEgQXJ0aWNsZSBQcmludCcpOwoKICAgICAgICAjIG91dHB1dCBoZWFkbGluZQogICAgICAgICRTZWxmLT57UERGT2JqZWN0fS0+VGV4dCgKICAgICAgICAgICAgVGV4dCAgICAgPT4gJFByaW50VGFnLAogICAgICAgICAgICBIZWlnaHQgICA9PiA5LAogICAgICAgICAgICBUeXBlICAgICA9PiAnQ3V0JywKICAgICAgICAgICAgRm9udCAgICAgPT4gJ1Byb3BvcnRpb25hbEJvbGQnLAogICAgICAgICAgICBBbGlnbiAgICA9PiAncmlnaHQnLAogICAgICAgICAgICBGb250U2l6ZSA9PiA5LAogICAgICAgICAgICBDb2xvciAgICA9PiAnIzY2NjY2NicsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPntQREZPYmplY3R9LT5Qb3NpdGlvblNldCgKICAgICAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgICAgIFkgICAgPT4gLTYsCiAgICAgICAgKTsKCiAgICAgICAgIyBvdXRwdXQgZmFxIGluZm9ybWF0aW9uCiAgICAgICAgJFNlbGYtPl9QREZPdXRwdXRGQVFIZWFkZXJJbmZvKAogICAgICAgICAgICBQYWdlRGF0YSA9PiBcJVBhZ2UsCiAgICAgICAgICAgIEZBUURhdGEgID0+IFwlRkFRRGF0YSwKICAgICAgICApOwoKICAgICAgICBpZiAoICRGQVFEYXRhe0tleXdvcmRzfSApIHsKICAgICAgICAgICAgJFNlbGYtPl9QREZPdXRwdXRLZXl3b3JkcygKICAgICAgICAgICAgICAgIFBhZ2VEYXRhID0+IFwlUGFnZSwKICAgICAgICAgICAgICAgIEZBUURhdGEgID0+IFwlRkFRRGF0YSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICRTZWxmLT5fUERGT3VwdXRGQVFDb250ZW50KAogICAgICAgICAgICBQYWdlRGF0YSAgICAgICAgPT4gXCVQYWdlLAogICAgICAgICAgICBGQVFEYXRhICAgICAgICAgPT4gXCVGQVFEYXRhLAogICAgICAgICAgICBJbnRlcmZhY2VTdGF0ZXMgPT4gJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9LAogICAgICAgICk7CgogICAgICAgICMgcmV0dXJuIHRoZSBwZGYgZG9jdW1lbnQKICAgICAgICBteSAkRmlsZW5hbWUgPSAnRkFRXycgLiAkRkFRRGF0YXtOdW1iZXJ9OwogICAgICAgIG15ICggJHMsICRtLCAkaCwgJEQsICRNLCAkWSApID0gJFNlbGYtPntUaW1lT2JqZWN0fS0+U3lzdGVtVGltZTJEYXRlKAogICAgICAgICAgICBTeXN0ZW1UaW1lID0+ICRTZWxmLT57VGltZU9iamVjdH0tPlN5c3RlbVRpbWUoKSwKICAgICAgICApOwogICAgICAgICRNID0gc3ByaW50ZiggIiUwMmQiLCAkTSApOwogICAgICAgICREID0gc3ByaW50ZiggIiUwMmQiLCAkRCApOwogICAgICAgICRoID0gc3ByaW50ZiggIiUwMmQiLCAkaCApOwogICAgICAgICRtID0gc3ByaW50ZiggIiUwMmQiLCAkbSApOwogICAgICAgIG15ICRQREZTdHJpbmcgPSAkU2VsZi0+e1BERk9iamVjdH0tPkRvY3VtZW50T3V0cHV0KCk7CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QXR0YWNobWVudCgKICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJEZpbGVuYW1lIC4gIl8iIC4gIiRZLSRNLSREIiAuICJfIiAuICIkaC0kbS5wZGYiLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAiYXBwbGljYXRpb24vcGRmIiwKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJFBERlN0cmluZywKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2F0dGFjaG1lbnQnLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZW5lcmF0ZSBodG1sIG91dHB1dAogICAgZWxzZSB7CgogICAgICAgICMgb3V0cHV0IGhlYWRlcgogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5QcmludEhlYWRlciggVmFsdWUgPT4gJEZBUURhdGF7TnVtYmVyfSApOwoKICAgICAgICAjIHNob3cgRkFRIENvbnRlbnQKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZBUUNvbnRlbnRTaG93KAogICAgICAgICAgICBGQVFPYmplY3QgICAgICAgPT4gJFNlbGYtPntGQVFPYmplY3R9LAogICAgICAgICAgICBJbnRlcmZhY2VTdGF0ZXMgPT4gJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9LAogICAgICAgICAgICBGQVFEYXRhICAgICAgICAgPT4geyVGQVFEYXRhfSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIHNob3cgZmFxCiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+X0hUTUxNYXNrKAogICAgICAgICAgICBGQVFJRCA9PiAkR2V0UGFyYW17RkFRSUR9LAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICk7CgogICAgICAgICMgYWRkIGZvb3RlcgogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5QcmludEZvb3RlcigpOwoKICAgICAgICAjIHJldHVybiBvdXRwdXQKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KfQoKc3ViIF9QREZPdXRwdXRGQVFIZWFkZXJJbmZvIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhQYWdlRGF0YSBGQVFEYXRhKSkgewogICAgICAgIGlmICggIWRlZmluZWQoICRQYXJhbXskTmVlZGVkfSApICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZyggUHJpb3JpdHkgPT4gJ2Vycm9yJywgTWVzc2FnZSA9PiAiTmVlZCAkTmVlZGVkISIgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KICAgIG15ICVGQVFEYXRhID0gJXsgJFBhcmFte0ZBUURhdGF9IH07CiAgICBteSAlUGFnZSAgICA9ICV7ICRQYXJhbXtQYWdlRGF0YX0gfTsKCiAgICAjIGNyZWF0ZSBsZWZ0IHRhYmxlCiAgICBteSAkVGFibGVMZWZ0ID0gWwogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ0NhdGVnb3J5JykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCAkRkFRRGF0YXtDYXRlZ29yeU5hbWV9ICksCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdTdGF0ZScpIC4gJzonLAogICAgICAgICAgICBWYWx1ZSA9PiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCggJEZBUURhdGF7U3RhdGV9ICksCiAgICAgICAgfSwKICAgIF07CgogICAgIyBsYW5ndWFnZSByb3csIGZlYXR1cmUgaXMgZW5hYmxlZAogICAgaWYgKCAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ICkgewogICAgICAgIG15ICRSb3cgPSB7CiAgICAgICAgICAgIEtleSAgID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdMYW5ndWFnZScpIC4gJzonLAogICAgICAgICAgICBWYWx1ZSA9PiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCggJEZBUURhdGF7TGFuZ3VhZ2V9ICksCiAgICAgICAgfTsKICAgICAgICBwdXNoIEB7JFRhYmxlTGVmdH0sICRSb3c7CiAgICB9CgogICAgIyBjcmVhdGUgcmlnaHQgdGFibGUKICAgIG15ICRUYWJsZVJpZ2h0OwoKICAgICMgdm90aW5nIHJvd3MsIGZlYXRyZSBpcyBlbmFibGVkCiAgICBpZiAoICRTZWxmLT57Vm90aW5nfSApIHsKICAgICAgICAkVGFibGVSaWdodCA9IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ1ZvdGVzJykgLiAnOicsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkRkFRRGF0YXtWb3Rlc30sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdSZXN1bHQnKSAuICc6JywKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRGQVFEYXRhe1ZvdGVSZXN1bHR9IC4gIiAlIiwKICAgICAgICAgICAgfSwKICAgICAgICBdOwogICAgfQoKICAgICMgbGFzdCB1cGRhdGUgcm93CiAgICBwdXNoIEB7JFRhYmxlUmlnaHR9LCB7CiAgICAgICAgS2V5ICAgPT4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ0xhc3QgdXBkYXRlJykgLiAnOicsCiAgICAgICAgVmFsdWUgPT4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlID0+ICckVGltZUxvbmd7IiREYXRheyJDaGFuZ2VkIn0ifScsCiAgICAgICAgICAgIERhdGEgICAgID0+IFwlRkFRRGF0YSwKICAgICAgICApLAogICAgfTsKCiAgICBteSAkUm93cyA9IEB7JFRhYmxlTGVmdH07CiAgICBpZiAoIEB7JFRhYmxlUmlnaHR9ID4gJFJvd3MgKSB7CiAgICAgICAgJFJvd3MgPSBAeyRUYWJsZVJpZ2h0fTsKICAgIH0KCiAgICBteSAlVGFibGVQYXJhbTsKICAgIGZvciBteSAkUm93ICggMSAuLiAkUm93cyApIHsKICAgICAgICAkUm93LS07CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0NvbnRlbnR9ICAgICAgICAgPSAkVGFibGVMZWZ0LT5bJFJvd10tPntLZXl9OwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVswXXtGb250fSAgICAgICAgICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsxXXtDb250ZW50fSAgICAgICAgID0gJFRhYmxlTGVmdC0+WyRSb3ddLT57VmFsdWV9OwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsyXXtDb250ZW50fSAgICAgICAgID0gJyAnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsyXXtCYWNrZ3JvdW5kQ29sb3J9ID0gJyNGRkZGRkYnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVszXXtDb250ZW50fSAgICAgICAgID0gJFRhYmxlUmlnaHQtPlskUm93XS0+e0tleX07CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzNde0ZvbnR9ICAgICAgICAgICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzRde0NvbnRlbnR9ICAgICAgICAgPSAkVGFibGVSaWdodC0+WyRSb3ddLT57VmFsdWV9OwogICAgfQoKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzBde1dpZHRofSA9IDgwOwogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMV17V2lkdGh9ID0gMTcwLjU7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVsyXXtXaWR0aH0gPSA0OwogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bM117V2lkdGh9ID0gODA7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVs0XXtXaWR0aH0gPSAxNzAuNTsKCiAgICAkVGFibGVQYXJhbXtUeXBlfSAgICAgICAgICAgICAgICA9ICdDdXQnOwogICAgJFRhYmxlUGFyYW17Qm9yZGVyfSAgICAgICAgICAgICAgPSAwOwogICAgJFRhYmxlUGFyYW17Rm9udFNpemV9ICAgICAgICAgICAgPSA2OwogICAgJFRhYmxlUGFyYW17QmFja2dyb3VuZENvbG9yRXZlbn0gPSAnI0FBQUFBQSc7CiAgICAkVGFibGVQYXJhbXtCYWNrZ3JvdW5kQ29sb3JPZGR9ICA9ICcjREREREREJzsKICAgICRUYWJsZVBhcmFte1BhZGRpbmd9ICAgICAgICAgICAgID0gMTsKICAgICRUYWJsZVBhcmFte1BhZGRpbmdUb3B9ICAgICAgICAgID0gMzsKICAgICRUYWJsZVBhcmFte1BhZGRpbmdCb3R0b219ICAgICAgID0gMzsKCiAgICAjIG91dHB1dCB0YWJsZQogICAgZm9yICggJFBhZ2V7UGFnZUNvdW50fSAuLiAkUGFnZXtNYXhQYWdlc30gKSB7CgogICAgICAgICMgb3V0cHV0IHRhYmxlIChvciBhIGZyYWdtZW50IG9mIGl0KQogICAgICAgICVUYWJsZVBhcmFtID0gJFNlbGYtPntQREZPYmplY3R9LT5UYWJsZSggJVRhYmxlUGFyYW0sICk7CgogICAgICAgICMgc3RvcCBvdXRwdXQgb3Igb3V0cHV0IG5leHQgcGFnZQogICAgICAgIGlmICggJFRhYmxlUGFyYW17U3RhdGV9ICkgewogICAgICAgICAgICBsYXN0OwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlbGYtPntQREZPYmplY3R9LT5QYWdlTmV3KAogICAgICAgICAgICAgICAgJVBhZ2UsIEZvb3RlclJpZ2h0ID0+ICRQYWdle1BhZ2VUZXh0fSAuICcgJyAuICRQYWdle1BhZ2VDb3VudH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRQYWdle1BhZ2VDb3VudH0rKzsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMTsKfQoKc3ViIF9QREZPdXRwdXRLZXl3b3JkcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoUGFnZURhdGEgRkFRRGF0YSkpIHsKICAgICAgICBpZiAoICFkZWZpbmVkKCAkUGFyYW17JE5lZWRlZH0gKSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coIFByaW9yaXR5ID0+ICdlcnJvcicsIE1lc3NhZ2UgPT4gIk5lZWQgJE5lZWRlZCEiICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CiAgICBteSAlRkFRRGF0YSA9ICV7ICRQYXJhbXtGQVFEYXRhfSB9OwogICAgbXkgJVBhZ2UgICAgPSAleyAkUGFyYW17UGFnZURhdGF9IH07CiAgICBteSAlVGFibGVQYXJhbTsKCiAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bMF1bMF17Q29udGVudH0gPSAkRkFRRGF0YXtLZXl3b3Jkc30gfHwgJyc7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVswXXtXaWR0aH0gPSA1MTE7CgogICAgIyBzZXQgbmV3IHBvc2l0aW9uCiAgICAkU2VsZi0+e1BERk9iamVjdH0tPlBvc2l0aW9uU2V0KAogICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgIFkgICAgPT4gLTE1LAogICAgKTsKCiAgICAjIG91dHB1dCBoZWFkbGluZQogICAgJFNlbGYtPntQREZPYmplY3R9LT5UZXh0KAogICAgICAgIFRleHQgICAgID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdLZXl3b3JkcycpLAogICAgICAgIEhlaWdodCAgID0+IDcsCiAgICAgICAgVHlwZSAgICAgPT4gJ0N1dCcsCiAgICAgICAgRm9udCAgICAgPT4gJ1Byb3BvcnRpb25hbEJvbGRJdGFsaWMnLAogICAgICAgIEZvbnRTaXplID0+IDcsCiAgICAgICAgQ29sb3IgICAgPT4gJyM2NjY2NjYnLAogICAgKTsKCiAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICRTZWxmLT57UERGT2JqZWN0fS0+UG9zaXRpb25TZXQoCiAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgWSAgICA9PiAtNCwKICAgICk7CgogICAgIyB0YWJsZSBwYXJhbXMKICAgICRUYWJsZVBhcmFte1R5cGV9ICAgICAgICAgICAgPSAnQ3V0JzsKICAgICRUYWJsZVBhcmFte0JvcmRlcn0gICAgICAgICAgPSAwOwogICAgJFRhYmxlUGFyYW17Rm9udFNpemV9ICAgICAgICA9IDY7CiAgICAkVGFibGVQYXJhbXtCYWNrZ3JvdW5kQ29sb3J9ID0gJyNEREREREQnOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ30gICAgICAgICA9IDE7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nVG9wfSAgICAgID0gMzsKICAgICRUYWJsZVBhcmFte1BhZGRpbmdCb3R0b219ICAgPSAzOwoKICAgICMgb3V0cHV0IHRhYmxlCiAgICBmb3IgKCAkUGFnZXtQYWdlQ291bnR9IC4uICRQYWdle01heFBhZ2VzfSApIHsKCiAgICAgICAgIyBvdXRwdXQgdGFibGUgKG9yIGEgZnJhZ21lbnQgb2YgaXQpCiAgICAgICAgJVRhYmxlUGFyYW0gPSAkU2VsZi0+e1BERk9iamVjdH0tPlRhYmxlKCAlVGFibGVQYXJhbSwgKTsKCiAgICAgICAgIyBzdG9wIG91dHB1dCBvciBvdXRwdXQgbmV4dCBwYWdlCiAgICAgICAgaWYgKCAkVGFibGVQYXJhbXtTdGF0ZX0gKSB7CiAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VsZi0+e1BERk9iamVjdH0tPlBhZ2VOZXcoCiAgICAgICAgICAgICAgICAlUGFnZSwgRm9vdGVyUmlnaHQgPT4gJFBhZ2V7UGFnZVRleHR9IC4gJyAnIC4gJFBhZ2V7UGFnZUNvdW50fSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFBhZ2V7UGFnZUNvdW50fSsrOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAxOwp9CgpzdWIgX1BERk91cHV0RkFRQ29udGVudCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgcGFyYW1ldGVycwogICAgZm9yIG15ICRQYXJhbU5hbWUgKHF3KFBhZ2VEYXRhIEZBUURhdGEpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRQYXJhbU5hbWV9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkUGFyYW1OYW1lISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJUZBUURhdGEgPSAleyAkUGFyYW17RkFRRGF0YX0gfTsKICAgIG15ICVQYWdlICAgID0gJXsgJFBhcmFte1BhZ2VEYXRhfSB9OwoKICAgICMgZ2V0IHRoZSBjb25maWcgb2YgRkFRIGZpZWxkcyB0aGF0IHNob3VsZCBiZSBzaG93bgogICAgbXkgJUZpZWxkczsKICAgIEZJRUxEOgogICAgZm9yIG15ICROdW1iZXIgKCAxIC4uIDYgKSB7CgogICAgICAgICMgZ2V0IGNvbmZpZyBvZiBGQVEgZmllbGQKICAgICAgICBteSAkQ29uZmlnID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoICdGQVE6Okl0ZW06OkZpZWxkJyAuICROdW1iZXIgKTsKCiAgICAgICAgIyBza2lwIG92ZXIgbm90IHNob3duIGZpZWxkcwogICAgICAgIG5leHQgRklFTEQgaWYgISRDb25maWctPntTaG93fTsKCiAgICAgICAgIyBzdG9yZSBvbmx5IHRoZSBjb25maWcgb2YgZmllbGRzIHRoYXQgc2hvdWxkIGJlIHNob3duCiAgICAgICAgJEZpZWxkc3sgIkZpZWxkIiAuICROdW1iZXIgfSA9ICRDb25maWc7CiAgICB9CgogICAgIyBzb3J0IHNob3duIGZpZWxkcyBieSBwcmlvcml0eQogICAgRklFTEQ6CiAgICBmb3IgbXkgJEZpZWxkICggc29ydCB7ICRGaWVsZHN7JGF9LT57UHJpb30gPD0+ICRGaWVsZHN7JGJ9LT57UHJpb30gfSBrZXlzICVGaWVsZHMgKSB7CgogICAgICAgICMgZ2V0IHRoZSBzdGF0ZSB0eXBlIGRhdGEgb2YgdGhpcyBmaWVsZAogICAgICAgIG15ICRTdGF0ZVR5cGVEYXRhID0gJFNlbGYtPntGQVFPYmplY3R9LT5TdGF0ZVR5cGVHZXQoCiAgICAgICAgICAgIE5hbWUgICA9PiAkRmllbGRzeyRGaWVsZH0tPntTaG93fSwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGRvIG5vdCBzaG93IGZpZWxkcyB0aGF0IGFyZSBub3QgYWxsb3dlZCBpbiB0aGUgZ2l2ZW4gaW50ZXJmYWNlCiAgICAgICAgbmV4dCBGSUVMRCBpZiAhJFBhcmFte0ludGVyZmFjZVN0YXRlc30tPnsgJFN0YXRlVHlwZURhdGEtPntTdGF0ZUlEfSB9OwoKICAgICAgICBteSAlVGFibGVQYXJhbTsKCiAgICAgICAgIyBjb252ZXJ0IEhUTUwgdG8gYXNjaWkKICAgICAgICBteSAkQXNjaWlGaWVsZCA9ICRTZWxmLT57SFRNTFV0aWxzT2JqZWN0fS0+VG9Bc2NpaSggU3RyaW5nID0+ICRGQVFEYXRheyRGaWVsZH0gKTsKCiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WzBdWzBde0NvbnRlbnR9ID0gJEFzY2lpRmllbGQgfHwgJyc7CiAgICAgICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMF17V2lkdGh9ID0gNTExOwoKICAgICAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICAgICAkU2VsZi0+e1BERk9iamVjdH0tPlBvc2l0aW9uU2V0KAogICAgICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICAgICAgWSAgICA9PiAtMTUsCiAgICAgICAgKTsKCiAgICAgICAgIyB0cmFuc2xhdGUgdGhlIGZpZWxkIG5hbWUgYW5kIHN0YXRlCiAgICAgICAgbXkgJEZpZWxkTmFtZSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCAkRmllbGRzeyRGaWVsZH0tPnsnQ2FwdGlvbid9ICkKICAgICAgICAgICAgLiAnICgnCiAgICAgICAgICAgIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoICRTdGF0ZVR5cGVEYXRhLT57TmFtZX0gKQogICAgICAgICAgICAuICcpJzsKCiAgICAgICAgIyBvdXRwdXQgaGVhZGxpbmUKICAgICAgICAkU2VsZi0+e1BERk9iamVjdH0tPlRleHQoCiAgICAgICAgICAgIFRleHQgICAgID0+ICRGaWVsZE5hbWUsCiAgICAgICAgICAgIEhlaWdodCAgID0+IDcsCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdDdXQnLAogICAgICAgICAgICBGb250ICAgICA9PiAnUHJvcG9ydGlvbmFsQm9sZEl0YWxpYycsCiAgICAgICAgICAgIEZvbnRTaXplID0+IDcsCiAgICAgICAgICAgIENvbG9yICAgID0+ICcjNjY2NjY2JywKICAgICAgICApOwoKICAgICAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICAgICAkU2VsZi0+e1BERk9iamVjdH0tPlBvc2l0aW9uU2V0KAogICAgICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICAgICAgWSAgICA9PiAtNCwKICAgICAgICApOwoKICAgICAgICAjIHRhYmxlIHBhcmFtcwogICAgICAgICRUYWJsZVBhcmFte1R5cGV9ICAgICAgICAgICAgPSAnQ3V0JzsKICAgICAgICAkVGFibGVQYXJhbXtCb3JkZXJ9ICAgICAgICAgID0gMDsKICAgICAgICAkVGFibGVQYXJhbXtGb250U2l6ZX0gICAgICAgID0gNjsKICAgICAgICAkVGFibGVQYXJhbXtCYWNrZ3JvdW5kQ29sb3J9ID0gJyNEREREREQnOwogICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmd9ICAgICAgICAgPSAxOwogICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmdUb3B9ICAgICAgPSAzOwogICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmdCb3R0b219ICAgPSAzOwoKICAgICAgICAjIG91dHB1dCB0YWJsZQogICAgICAgIGZvciAoICRQYWdle1BhZ2VDb3VudH0gLi4gJFBhZ2V7TWF4UGFnZXN9ICkgewoKICAgICAgICAgICAgIyBvdXRwdXQgdGFibGUgKG9yIGEgZnJhZ21lbnQgb2YgaXQpCiAgICAgICAgICAgICVUYWJsZVBhcmFtID0gJFNlbGYtPntQREZPYmplY3R9LT5UYWJsZSggJVRhYmxlUGFyYW0sICk7CgogICAgICAgICAgICAjIHN0b3Agb3V0cHV0IG9yIG91dHB1dCBuZXh0IHBhZ2UKICAgICAgICAgICAgaWYgKCAkVGFibGVQYXJhbXtTdGF0ZX0gKSB7CiAgICAgICAgICAgICAgICBsYXN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFNlbGYtPntQREZPYmplY3R9LT5QYWdlTmV3KAogICAgICAgICAgICAgICAgICAgICVQYWdlLCBGb290ZXJSaWdodCA9PiAkUGFnZXtQYWdlVGV4dH0gLiAnICcgLiAkUGFnZXtQYWdlQ291bnR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRQYWdle1BhZ2VDb3VudH0rKzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAxOwp9CgpzdWIgX0hUTUxNYXNrIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBzaG93IExhbmd1YWdlCiAgICBpZiAoICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gKSB7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnTGFuZ3VhZ2UnLAogICAgICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNob3cgcmF0aW5nCiAgICBpZiAoICRTZWxmLT57Vm90aW5nfSApIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdSYXRpbmcnLAogICAgICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdDdXN0b21lckZBUVByaW50JywKICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICk7Cn0KCjE7Cg==
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRU2VhcmNoLnBtIC0gY3VzdG9tZXIgRkFRIHNlYXJjaAojIENvcHlyaWdodCAoQykgMjAwMS0yMDEzIE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpDdXN0b21lckZBUVNlYXJjaDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6RkFROwp1c2UgS2VybmVsOjpTeXN0ZW06OlNlYXJjaFByb2ZpbGU7CnVzZSBLZXJuZWw6OlN5c3RlbTo6Q1NWOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgY2hlY2sgbmVlZGVkIG9iamVjdHMKICAgIGZvciAocXcoUGFyYW1PYmplY3QgREJPYmplY3QgTGF5b3V0T2JqZWN0IExvZ09iamVjdCBDb25maWdPYmplY3QpKSB7CiAgICAgICAgaWYgKCAhJFNlbGYtPnskX30gKSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RmF0YWxFcnJvciggTWVzc2FnZSA9PiAiR290IG5vICRfISIgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBjcmVhdGUgYWRkaXRpb25hbCBvYmplY3RzCiAgICAkU2VsZi0+e0ZBUU9iamVjdH0gICAgICAgICAgID0gS2VybmVsOjpTeXN0ZW06OkZBUS0+bmV3KCVQYXJhbSk7CiAgICAkU2VsZi0+e1NlYXJjaFByb2ZpbGVPYmplY3R9ID0gS2VybmVsOjpTeXN0ZW06OlNlYXJjaFByb2ZpbGUtPm5ldyglUGFyYW0pOwogICAgJFNlbGYtPntDU1ZPYmplY3R9ICAgICAgICAgICA9IEtlcm5lbDo6U3lzdGVtOjpDU1YtPm5ldyglUGFyYW0pOwoKICAgICMgZ2V0IGNvbmZpZyBmb3IgZnJvbnRlbmQKICAgICRTZWxmLT57Q29uZmlnfSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCJGQVE6OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKTsKCiAgICAjIHNldCBkZWZhdWx0IGludGVyZmFjZSBzZXR0aW5ncwogICAgJFNlbGYtPntJbnRlcmZhY2V9ID0gJFNlbGYtPntGQVFPYmplY3R9LT5TdGF0ZVR5cGVHZXQoCiAgICAgICAgTmFtZSAgID0+ICdleHRlcm5hbCcsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUxpc3QoCiAgICAgICAgVHlwZXMgID0+ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkN1c3RvbWVyOjpTdGF0ZVR5cGVzJyksCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgJFNlbGYtPntNdWx0aUxhbmd1YWdlfSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6Ok11bHRpTGFuZ3VhZ2UnKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkT3V0cHV0OwoKICAgICMgZ2V0IGNvbmZpZyBkYXRhCiAgICAkU2VsZi0+e1N0YXJ0SGl0fSA9IGludCggJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnU3RhcnRIaXQnICkgfHwgMSApOwogICAgJFNlbGYtPntTZWFyY2hMaW1pdH0gICAgID0gJFNlbGYtPntDb25maWd9LT57U2VhcmNoTGltaXR9ICAgICB8fCAyMDA7CiAgICAkU2VsZi0+e1NlYXJjaFBhZ2VTaG93bn0gPSAkU2VsZi0+e0NvbmZpZ30tPntTZWFyY2hQYWdlU2hvd259IHx8IDQwOwogICAgJFNlbGYtPntTb3J0Qnl9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnU29ydEJ5JyApCiAgICAgICAgfHwgJFNlbGYtPntDb25maWd9LT57J1NvcnRCeTo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ0ZBUUlEJzsKICAgICRTZWxmLT57T3JkZXJCeX0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdPcmRlcicgKQogICAgICAgIHx8ICRTZWxmLT57Q29uZmlnfS0+eydPcmRlcjo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ0Rvd24nOwoKICAgICRTZWxmLT57UHJvZmlsZX0gICAgICAgID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnUHJvZmlsZScgKSAgICAgICAgfHwgJyc7CiAgICAkU2VsZi0+e1NhdmVQcm9maWxlfSAgICA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NhdmVQcm9maWxlJyApICAgIHx8ICcnOwogICAgJFNlbGYtPntUYWtlTGFzdFNlYXJjaH0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdUYWtlTGFzdFNlYXJjaCcgKSB8fCAnJzsKICAgICRTZWxmLT57U2VsZWN0VGVtcGxhdGV9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnU2VsZWN0VGVtcGxhdGUnICkgfHwgJyc7CiAgICAkU2VsZi0+e0VyYXNlVGVtcGxhdGV9ICA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0VyYXNlVGVtcGxhdGUnICkgIHx8ICcnOwoKICAgICMgc2VhcmNoIHdpdGggYSBzYXZlZCB0ZW1wbGF0ZQogICAgaWYgKCAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdTZWFyY2hUZW1wbGF0ZScgKSAmJiAkU2VsZi0+e1Byb2ZpbGV9ICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPlJlZGlyZWN0KAogICAgICAgICAgICBPUCA9PgogICAgICAgICAgICAgICAgIkFjdGlvbj1DdXN0b21lckZBUVNlYXJjaDtTdWJhY3Rpb249U2VhcmNoO1Rha2VMYXN0U2VhcmNoPTE7U2F2ZVByb2ZpbGU9MTtQcm9maWxlPSRTZWxmLT57UHJvZmlsZX0iLAogICAgICAgICk7CiAgICB9CgogICAgIyBidWlsZCBvdXRwdXQgZm9yIG9wZW4gc2VhcmNoIGRlc2NyaXB0aW9uIGJ5IEZBUSBudW1iZXIKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXInICkgewogICAgICAgIG15ICRPdXRwdXQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdDdXN0b21lckZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcicsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QXR0YWNobWVudCgKICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJ09wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlci54bWwnLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC94bWwnLAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkT3V0cHV0LAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICApOwogICAgfQoKICAgICMgYnVpbGQgb3V0cHV0IGZvciBvcGVuIHNlYXJjaCBkZXNjcmlwdGlvbiBieSBmdWxsdGV4dAogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ09wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0JyApIHsKICAgICAgICBteSAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQ3VzdG9tZXJGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsVGV4dCcsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QXR0YWNobWVudCgKICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJ09wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0LnhtbCcsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3htbCcsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRPdXRwdXQsCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICk7CiAgICB9CgogICAgIyByZW1lbWJlciBleGNsdWRlIGF0dHJpYnV0ZXMKICAgIG15IEBFeGNsdWRlcyA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRBcnJheSggUGFyYW0gPT4gJ0V4Y2x1ZGUnICk7CgogICAgIyBnZXQgc2luZ2xlIHBhcmFtcwogICAgbXkgJUdldFBhcmFtOwoKICAgICMgbG9hZCBwcm9maWxlcyBzdHJpbmcgcGFyYW1zIChwcmVzcyBsb2FkIHByb2ZpbGUpCiAgICBpZiAoICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdMb2FkUHJvZmlsZScgJiYgJFNlbGYtPntQcm9maWxlfSApIHx8ICRTZWxmLT57VGFrZUxhc3RTZWFyY2h9ICkgewogICAgICAgICVHZXRQYXJhbSA9ICRTZWxmLT57U2VhcmNoUHJvZmlsZU9iamVjdH0tPlNlYXJjaFByb2ZpbGVHZXQoCiAgICAgICAgICAgIEJhc2UgICAgICA9PiAnQ3VzdG9tZXJGQVFTZWFyY2gnLAogICAgICAgICAgICBOYW1lICAgICAgPT4gJFNlbGYtPntQcm9maWxlfSwKICAgICAgICAgICAgVXNlckxvZ2luID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHNlYXJjaCBzdHJpbmcgcGFyYW1zIChnZXQgc3VibWl0dGVkIHBhcmFtcykKICAgIGVsc2UgewogICAgICAgIGZvciBteSAkUGFyYW1OYW1lICgKICAgICAgICAgICAgcXcoTnVtYmVyIFRpdGxlIEtleXdvcmQgRnVsbHRleHQgUmVzdWx0Rm9ybSBUaW1lU2VhcmNoVHlwZSBWb3RlU2VhcmNoIFZvdGVTZWFyY2hUeXBlCiAgICAgICAgICAgIFZvdGVTZWFyY2hPcHRpb24gUmF0ZVNlYXJjaCBSYXRlU2VhcmNoVHlwZSBSYXRlU2VhcmNoT3B0aW9uCiAgICAgICAgICAgIEl0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQgSXRlbUNyZWF0ZVRpbWVQb2ludAogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQKICAgICAgICAgICAgSXRlbUNyZWF0ZVRpbWVTdGFydCBJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5IEl0ZW1DcmVhdGVUaW1lU3RhcnRNb250aAogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcgogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZVN0b3AgSXRlbUNyZWF0ZVRpbWVTdG9wRGF5IEl0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoCiAgICAgICAgICAgIEl0ZW1DcmVhdGVUaW1lU3RvcFllYXIKICAgICAgICAgICAgKQogICAgICAgICAgICApCiAgICAgICAgewoKICAgICAgICAgICAgIyBnZXQgc2VhcmNoIHN0cmluZyBwYXJhbXMgKGdldCBzdWJtaXR0ZWQgcGFyYW1zKQogICAgICAgICAgICAkR2V0UGFyYW17JFBhcmFtTmFtZX0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbU5hbWUgKTsKCiAgICAgICAgICAgICMgcmVtb3ZlIHdoaXRlc3BhY2Ugb24gdGhlIHN0YXJ0IGFuZCBlbmQKICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17JFBhcmFtTmFtZX0gKSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17JFBhcmFtTmFtZX0gPX4gc3sgXEEgXHMrIH17fXhtczsKICAgICAgICAgICAgICAgICRHZXRQYXJhbXskUGFyYW1OYW1lfSA9fiBzeyBccysgXHogfXt9eG1zOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGdldCBhcnJheSBwYXJhbXMKICAgICAgICBmb3IgbXkgJFBhcmFtTmFtZSAocXcoQ2F0ZWdvcnlJRHMgTGFuZ3VhZ2VJRHMgKSkgewoKICAgICAgICAgICAgIyBnZXQgc2VhcmNoIGFycmF5IHBhcmFtcyAoZ2V0IHN1Ym1pdHRlZCBwYXJhbXMpCiAgICAgICAgICAgIG15IEBBcnJheSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRBcnJheSggUGFyYW0gPT4gJFBhcmFtTmFtZSApOwogICAgICAgICAgICBpZiAoQEFycmF5KSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17JFBhcmFtTmFtZX0gPSBcQEFycmF5OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgaWYgaXRlbSBuZWVkIHRvIGdldCBleGNsdWRlZAogICAgZm9yIG15ICRFeGNsdWRlIChARXhjbHVkZXMpIHsKICAgICAgICBpZiAoICRHZXRQYXJhbXskRXhjbHVkZX0gKSB7CiAgICAgICAgICAgIGRlbGV0ZSAkR2V0UGFyYW17JEV4Y2x1ZGV9OwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCB2b3RlIG9wdGlvbgogICAgaWYgKCAhJEdldFBhcmFte1ZvdGVTZWFyY2hPcHRpb259ICkgewogICAgICAgICRHZXRQYXJhbXsnVm90ZVNlYXJjaE9wdGlvbjo6Tm9uZSd9ID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgIH0KICAgIGVsc2lmICggJEdldFBhcmFte1ZvdGVTZWFyY2hPcHRpb259IGVxICdWb3RlUG9pbnQnICkgewogICAgICAgICRHZXRQYXJhbXsnVm90ZVNlYXJjaE9wdGlvbjo6Vm90ZVBvaW50J30gPSAnY2hlY2tlZD0iY2hlY2tlZCInOwogICAgfQoKICAgICMgZ2V0IHJhdGUgb3B0aW9uCiAgICBpZiAoICEkR2V0UGFyYW17UmF0ZVNlYXJjaE9wdGlvbn0gKSB7CiAgICAgICAgJEdldFBhcmFteydSYXRlU2VhcmNoT3B0aW9uOjpOb25lJ30gPSAnY2hlY2tlZD0iY2hlY2tlZCInOwogICAgfQogICAgZWxzaWYgKCAkR2V0UGFyYW17UmF0ZVNlYXJjaE9wdGlvbn0gZXEgJ1JhdGVQb2ludCcgKSB7CiAgICAgICAgJEdldFBhcmFteydSYXRlU2VhcmNoT3B0aW9uOjpSYXRlUG9pbnQnfSA9ICdjaGVja2VkPSJjaGVja2VkIic7CiAgICB9CgogICAgIyBnZXQgdGltZSBvcHRpb24KICAgIGlmICggISRHZXRQYXJhbXtUaW1lU2VhcmNoVHlwZX0gKSB7CiAgICAgICAgJEdldFBhcmFteydUaW1lU2VhcmNoVHlwZTo6Tm9uZSd9ID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgIH0KICAgIGVsc2lmICggJEdldFBhcmFte1RpbWVTZWFyY2hUeXBlfSBlcSAnVGltZVBvaW50JyApIHsKICAgICAgICAkR2V0UGFyYW17J1RpbWVTZWFyY2hUeXBlOjpUaW1lUG9pbnQnfSA9ICdjaGVja2VkPSJjaGVja2VkIic7CiAgICB9CiAgICBlbHNpZiAoICRHZXRQYXJhbXtUaW1lU2VhcmNoVHlwZX0gZXEgJ1RpbWVTbG90JyApIHsKICAgICAgICAkR2V0UGFyYW17J1RpbWVTZWFyY2hUeXBlOjpUaW1lU2xvdCd9ID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgIH0KCiAgICAjIHNldCByZXN1bHQgZm9ybSBlbnYKICAgIGlmICggISRHZXRQYXJhbXtSZXN1bHRGb3JtfSApIHsKICAgICAgICAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gPSAnJzsKICAgIH0KICAgIGlmICggJEdldFBhcmFte1Jlc3VsdEZvcm19IGVxICdQcmludCcgKSB7CiAgICAgICAgJFNlbGYtPntTZWFyY2hQYWdlU2hvd259ID0gJFNlbGYtPntTZWFyY2hMaW1pdH07CiAgICB9CgogICAgIyBjaGVjayByZXF1ZXN0CiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnT3BlblNlYXJjaERlc2NyaXB0aW9uJyApIHsKICAgICAgICBteSAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQ3VzdG9tZXJGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb24nLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4geyVQYXJhbX0sCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5BdHRhY2htZW50KAogICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbCcsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3htbCcsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRPdXRwdXQsCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICk7CiAgICB9CgogICAgIyBzaG93IHJlc3VsdCBwYWdlCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnU2VhcmNoJyAmJiAhJFNlbGYtPntFcmFzZVRlbXBsYXRlfSApIHsKCiAgICAgICAgIyBmaWxsIHVwIHByb2ZpbGUgbmFtZSAoZS5nLiB3aXRoIGxhc3Qtc2VhcmNoKQogICAgICAgIGlmICggISRTZWxmLT57UHJvZmlsZX0gfHwgISRTZWxmLT57U2F2ZVByb2ZpbGV9ICkgewogICAgICAgICAgICAkU2VsZi0+e1Byb2ZpbGV9ID0gJ2xhc3Qtc2VhcmNoJzsKICAgICAgICB9CgogICAgICAgICMgc3RvcmUgbGFzdCBvdmVydmlldyBzY3JlZW4KICAgICAgICBteSAkVVJMCiAgICAgICAgICAgID0gIkFjdGlvbj1DdXN0b21lckZBUVNlYXJjaDtTdWJhY3Rpb249U2VhcmNoO1Byb2ZpbGU9JFNlbGYtPntQcm9maWxlfSIKICAgICAgICAgICAgLiAiO1NvcnRCeT0kU2VsZi0+e1NvcnRCeX07T3JkZXJCeT0kU2VsZi0+e09yZGVyQnl9O1Rha2VMYXN0U2VhcmNoPTEiCiAgICAgICAgICAgIC4gIjtTdGFydEhpdD0kU2VsZi0+e1N0YXJ0SGl0fSI7CgogICAgICAgICMgc3RvcmUgbGFzdCBzY3JlZW4KICAgICAgICAkU2VsZi0+e1Nlc3Npb25PYmplY3R9LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlblZpZXcnLAogICAgICAgICAgICBWYWx1ZSAgICAgPT4gJFVSTCwKICAgICAgICApOwogICAgICAgICRTZWxmLT57U2Vzc2lvbk9iamVjdH0tPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICAgICAgS2V5ICAgICAgID0+ICdMYXN0U2NyZWVuT3ZlcnZpZXcnLAogICAgICAgICAgICBWYWx1ZSAgICAgPT4gJFVSTCwKICAgICAgICApOwoKICAgICAgICAjIHNhdmUgc2VhcmNoIHByb2ZpbGUgKHVuZGVyIGxhc3Qtc2VhcmNoIG9yIHJlYWwgcHJvZmlsZSBuYW1lKQogICAgICAgICRTZWxmLT57U2F2ZVByb2ZpbGV9ID0gMTsKCiAgICAgICAgIyByZW1lbWJlciBsYXN0IHNlYXJjaCB2YWx1ZXMKICAgICAgICBpZiAoICRTZWxmLT57U2F2ZVByb2ZpbGV9ICYmICRTZWxmLT57UHJvZmlsZX0gKSB7CgogICAgICAgICAgICAjIHJlbW92ZSBvbGQgcHJvZmlsZSBzdHVmZgogICAgICAgICAgICAkU2VsZi0+e1NlYXJjaFByb2ZpbGVPYmplY3R9LT5TZWFyY2hQcm9maWxlRGVsZXRlKAogICAgICAgICAgICAgICAgQmFzZSAgICAgID0+ICdDdXN0b21lckZBUVNlYXJjaCcsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJFNlbGYtPntQcm9maWxlfSwKICAgICAgICAgICAgICAgIFVzZXJMb2dpbiA9PiAkU2VsZi0+e1VzZXJMb2dpbn0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGluc2VydCBuZXcgcHJvZmlsZSBwYXJhbXMKICAgICAgICAgICAgZm9yIG15ICRQYXJhbU5hbWUgKCBzb3J0IGtleXMgJUdldFBhcmFtICkgewogICAgICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17JFBhcmFtTmFtZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntTZWFyY2hQcm9maWxlT2JqZWN0fS0+U2VhcmNoUHJvZmlsZUFkZCgKICAgICAgICAgICAgICAgICAgICAgICAgQmFzZSAgICAgID0+ICdDdXN0b21lckZBUVNlYXJjaCcsCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAkU2VsZi0+e1Byb2ZpbGV9LAogICAgICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgPT4gJFBhcmFtTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgID0+ICRHZXRQYXJhbXskUGFyYW1OYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgVXNlckxvZ2luID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHByZXBhcmUgZnVsbHRleHQgc2VhcmNoCiAgICAgICAgaWYgKCAkR2V0UGFyYW17RnVsbHRleHR9ICkgewogICAgICAgICAgICAkR2V0UGFyYW17Q29udGVudFNlYXJjaH0gPSAnT1InOwogICAgICAgICAgICAkR2V0UGFyYW17V2hhdH0gICAgICAgICAgPSAkR2V0UGFyYW17RnVsbHRleHR9OwogICAgICAgIH0KCiAgICAgICAgIyBwcmVwYXJlIHZvdGVzIHNlYXJjaAogICAgICAgIGlmICggSXNOdW1iZXIoICRHZXRQYXJhbXtWb3RlU2VhcmNofSApICYmICRHZXRQYXJhbXtWb3RlU2VhcmNoT3B0aW9ufSApIHsKICAgICAgICAgICAgJEdldFBhcmFte1ZvdGVzfSA9IHsKICAgICAgICAgICAgICAgICRHZXRQYXJhbXtWb3RlU2VhcmNoVHlwZX0gPT4gJEdldFBhcmFte1ZvdGVTZWFyY2h9CiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAjIHByZXBhcmUgcmF0ZSBzZWFyY2gKICAgICAgICBpZiAoIElzTnVtYmVyKCAkR2V0UGFyYW17UmF0ZVNlYXJjaH0gKSAmJiAkR2V0UGFyYW17UmF0ZVNlYXJjaE9wdGlvbn0gKSB7CiAgICAgICAgICAgICRHZXRQYXJhbXtSYXRlfSA9IHsKICAgICAgICAgICAgICAgICRHZXRQYXJhbXtSYXRlU2VhcmNoVHlwZX0gPT4gJEdldFBhcmFte1JhdGVTZWFyY2h9CiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICBteSAlVGltZU1hcCA9ICgKICAgICAgICAgICAgSXRlbUNyZWF0ZSA9PiAnVGltZScsCiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICRUaW1lVHlwZSAoIHNvcnQga2V5cyAlVGltZU1hcCApIHsKCiAgICAgICAgICAgICMgZ2V0IGNyZWF0ZSB0aW1lIHNldHRpbmdzCiAgICAgICAgICAgIGlmICggISRHZXRQYXJhbXsgJFRpbWVNYXB7JFRpbWVUeXBlfSAuICdTZWFyY2hUeXBlJyB9ICkgewoKICAgICAgICAgICAgICAgICMgZG8gbm90aGluZyB3aXRoIHRpbWUgc3R1ZmYKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVNYXB7JFRpbWVUeXBlfSAuICdTZWFyY2hUeXBlJyB9IGVxICdUaW1lU2xvdCcgKSB7CiAgICAgICAgICAgICAgICBmb3IgbXkgJEtleSAocXcoTW9udGggRGF5KSkgewogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydCcgLiAkS2V5IH0KICAgICAgICAgICAgICAgICAgICAgICAgPSBzcHJpbnRmKCAiJTAyZCIsICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydCcgLiAkS2V5IH0gKTsKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcCcgLiAkS2V5IH0KICAgICAgICAgICAgICAgICAgICAgICAgPSBzcHJpbnRmKCAiJTAyZCIsICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wJyAuICRLZXkgfSApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydERheScgfQogICAgICAgICAgICAgICAgICAgICYmICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydE1vbnRoJyB9CiAgICAgICAgICAgICAgICAgICAgJiYgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0YXJ0WWVhcicgfQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lTmV3ZXJEYXRlJyB9CiAgICAgICAgICAgICAgICAgICAgICAgID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0YXJ0WWVhcicgfSAuICctJwogICAgICAgICAgICAgICAgICAgICAgICAuICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydE1vbnRoJyB9IC4gJy0nCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0YXJ0RGF5JyB9CiAgICAgICAgICAgICAgICAgICAgICAgIC4gJyAwMDowMDowMCc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3BEYXknIH0KICAgICAgICAgICAgICAgICAgICAmJiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcE1vbnRoJyB9CiAgICAgICAgICAgICAgICAgICAgJiYgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3BZZWFyJyB9CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVPbGRlckRhdGUnIH0KICAgICAgICAgICAgICAgICAgICAgICAgPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcFllYXInIH0gLiAnLScKICAgICAgICAgICAgICAgICAgICAgICAgLiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcE1vbnRoJyB9IC4gJy0nCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3BEYXknIH0KICAgICAgICAgICAgICAgICAgICAgICAgLiAnIDIzOjU5OjU5JzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVNYXB7JFRpbWVUeXBlfSAuICdTZWFyY2hUeXBlJyB9IGVxICdUaW1lUG9pbnQnICkgewogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludCcgfQogICAgICAgICAgICAgICAgICAgICYmICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludFN0YXJ0JyB9CiAgICAgICAgICAgICAgICAgICAgJiYgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIG15ICRUaW1lID0gMDsKICAgICAgICAgICAgICAgICAgICBpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfSBlcSAnbWludXRlJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9IGVxICdob3VyJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH0gKiA2MDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0gZXEgJ2RheScgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaW1lID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50JyB9ICogNjAgKiAyNDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0gZXEgJ3dlZWsnICkgewogICAgICAgICAgICAgICAgICAgICAgICAkVGltZSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludCcgfSAqIDYwICogMjQgKiA3OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfSBlcSAnbW9udGgnICkgewogICAgICAgICAgICAgICAgICAgICAgICAkVGltZSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludCcgfSAqIDYwICogMjQgKiAzMDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0gZXEgJ3llYXInICkgewogICAgICAgICAgICAgICAgICAgICAgICAkVGltZSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludCcgfSAqIDYwICogMjQgKiAzNjU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50U3RhcnQnIH0gZXEgJ0JlZm9yZScgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIG1vcmUgdGhhbiAuLi4gYWdvCiAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVPbGRlck1pbnV0ZXMnIH0gPSAkVGltZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRTdGFydCcgfSBlcSAnTmV4dCcgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIHdpdGhpbiBuZXh0CiAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVOZXdlck1pbnV0ZXMnIH0gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lT2xkZXJNaW51dGVzJyB9ID0gLSRUaW1lOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIyB3aXRoaW4gbGFzdCAuLi4KICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZU9sZGVyTWludXRlcycgfSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVOZXdlck1pbnV0ZXMnIH0gPSAkVGltZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgcGVyZm9ybSBGQVEgc2VhcmNoCiAgICAgICAgbXkgQFZpZXdhYmxlRkFRSURzID0gJFNlbGYtPntGQVFPYmplY3R9LT5GQVFTZWFyY2goCiAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgPT4gWyAkU2VsZi0+e1NvcnRCeX0gXSwKICAgICAgICAgICAgT3JkZXJCeURpcmVjdGlvbiAgICA9PiBbICRTZWxmLT57T3JkZXJCeX0gXSwKICAgICAgICAgICAgTGltaXQgICAgICAgICAgICAgICA9PiAkU2VsZi0+e1NlYXJjaExpbWl0fSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIFN0YXRlcyAgICAgICAgICAgICAgPT4gJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9LAogICAgICAgICAgICBJbnRlcmZhY2UgICAgICAgICAgID0+ICRTZWxmLT57SW50ZXJmYWNlfSwKICAgICAgICAgICAgQ29udGVudFNlYXJjaFByZWZpeCA9PiAnKicsCiAgICAgICAgICAgIENvbnRlbnRTZWFyY2hTdWZmaXggPT4gJyonLAogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgKTsKCiAgICAgICAgIyBDU1Ygb3V0cHV0CiAgICAgICAgaWYgKCAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gZXEgJ0NTVicgKSB7CiAgICAgICAgICAgIG15IEBDU1ZIZWFkOwogICAgICAgICAgICBteSBAQ1NWRGF0YTsKCiAgICAgICAgICAgIGZvciBteSAkRkFRSUQgKEBWaWV3YWJsZUZBUUlEcykgewoKICAgICAgICAgICAgICAgICMgZ2V0IEZBUSBkYXRhIGRldGFpbHMKICAgICAgICAgICAgICAgIG15ICVGQVFEYXRhID0gJFNlbGYtPntGQVFPYmplY3R9LT5GQVFHZXQoCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkRkFRSUQsCiAgICAgICAgICAgICAgICAgICAgSXRlbUZpZWxkcyA9PiAwLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGZvcm1hdCB0aGUgY2hhbmdlIHRpbWUKICAgICAgICAgICAgICAgIG15ICRDaGFuZ2VkID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgICAgICAgICAgVGVtcGxhdGUgPT4gJyRUaW1lTG9uZ3siJERhdGF7IkNoYW5nZWQifSJ9JywKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICA9PiBcJUZBUURhdGEsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgZ2V0IGluZm8gZm9yIENTViBvdXRwdXQKICAgICAgICAgICAgICAgIG15ICVDU1ZJbmZvID0gKAogICAgICAgICAgICAgICAgICAgIEZBUU51bWJlciA9PiAkRkFRRGF0YXtOdW1iZXJ9LAogICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICA9PiAkRkFRRGF0YXtUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgQ2F0ZWdvcnkgID0+ICRGQVFEYXRhe0NhdGVnb3J5TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgTGFuZ3VhZ2UgID0+ICRGQVFEYXRhe0xhbmd1YWdlfSwKICAgICAgICAgICAgICAgICAgICBTdGF0ZSAgICAgPT4gJEZBUURhdGF7U3RhdGV9LAogICAgICAgICAgICAgICAgICAgIENoYW5nZWQgICA9PiAkQ2hhbmdlZCwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjc3YgcXVvdGUKICAgICAgICAgICAgICAgIGlmICggIUBDU1ZIZWFkICkgewogICAgICAgICAgICAgICAgICAgIEBDU1ZIZWFkID0gcXcoIEZBUU51bWJlciBUaXRsZSBDYXRlZ29yeSk7CgogICAgICAgICAgICAgICAgICAgICMgaW5zZXJ0IGxhbmd1YWdlIGhlYWRlcgogICAgICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntNdWx0aUxhbmd1YWdlfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAQ1NWSGVhZCwgJ0xhbmd1YWdlJzsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIHB1c2ggQENTVkhlYWQsIHF3KFN0YXRlIENoYW5nZWQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbXkgQERhdGE7CiAgICAgICAgICAgICAgICBmb3IgbXkgJEhlYWRlciAoQENTVkhlYWQpIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBEYXRhLCAkQ1NWSW5mb3skSGVhZGVyfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHB1c2ggQENTVkRhdGEsIFxARGF0YTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBjc3YgcXVvdGUKICAgICAgICAgICAgIyB0cmFuc2xhdGUgbm9uIGV4aXN0aW5nIGhlYWRlciBtYXkgcmVzdWx0IGluIGEgZ2FyYmFnZSBmaWxlCiAgICAgICAgICAgIGlmICggIUBDU1ZIZWFkICkgewogICAgICAgICAgICAgICAgQENTVkhlYWQgPSBxdyhGQVFOdW1iZXIgVGl0bGUgQ2F0ZWdvcnkpOwoKICAgICAgICAgICAgICAgICMgaW5zZXJ0IGxhbmd1YWdlIGhlYWRlcgogICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQENTVkhlYWQsICdMYW5ndWFnZSc7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcHVzaCBAQ1NWSGVhZCwgcXcoU3RhdGUgQ2hhbmdlZCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgdHJhbnNsYXRlIGhlYWRlcnMKICAgICAgICAgICAgZm9yIG15ICRIZWFkZXIgKEBDU1ZIZWFkKSB7CgogICAgICAgICAgICAgICAgIyByZXBsYWNlIEZBUU51bWJlciBoZWFkZXIgd2l0aCB0aGUgY3VycmVudCBGQVFIb29rIGZyb20gY29uZmlnCiAgICAgICAgICAgICAgICBpZiAoICRIZWFkZXIgZXEgJ0ZBUU51bWJlcicgKSB7CiAgICAgICAgICAgICAgICAgICAgJEhlYWRlciA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkZBUUhvb2snKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRIZWFkZXIgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCgkSGVhZGVyKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBhc3NhYmxlIENTViBkYXRhCiAgICAgICAgICAgIG15ICRDU1YgPSAkU2VsZi0+e0NTVk9iamVjdH0tPkFycmF5MkNTVigKICAgICAgICAgICAgICAgIEhlYWQgICAgICA9PiBcQENTVkhlYWQsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgPT4gXEBDU1ZEYXRhLAogICAgICAgICAgICAgICAgU2VwYXJhdG9yID0+ICRTZWxmLT57VXNlckNTVlNlcGFyYXRvcn0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHJldHVybiBjc3YgdG8gZG93bmxvYWQKICAgICAgICAgICAgbXkgJENTVkZpbGUgPSAnRkFRX3NlYXJjaCc7CiAgICAgICAgICAgIG15ICggJHMsICRtLCAkaCwgJEQsICRNLCAkWSApID0gJFNlbGYtPntUaW1lT2JqZWN0fS0+U3lzdGVtVGltZTJEYXRlKAogICAgICAgICAgICAgICAgU3lzdGVtVGltZSA9PiAkU2VsZi0+e1RpbWVPYmplY3R9LT5TeXN0ZW1UaW1lKCksCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRNID0gc3ByaW50ZiggIiUwMmQiLCAkTSApOwogICAgICAgICAgICAkRCA9IHNwcmludGYoICIlMDJkIiwgJEQgKTsKICAgICAgICAgICAgJGggPSBzcHJpbnRmKCAiJTAyZCIsICRoICk7CiAgICAgICAgICAgICRtID0gc3ByaW50ZiggIiUwMmQiLCAkbSApOwogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5BdHRhY2htZW50KAogICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJENTVkZpbGUgLiAiXyIgLiAiJFktJE0tJEQiIC4gIl8iIC4gIiRoLSRtLmNzdiIsCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAidGV4dC9jc3Y7IGNoYXJzZXQ9IiAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e1VzZXJDaGFyc2V0fSwKICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRDU1YsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJEdldFBhcmFte1Jlc3VsdEZvcm19IGVxICdQcmludCcgKSB7CiAgICAgICAgICAgIGZvciBteSAkRkFRSUQgKEBWaWV3YWJsZUZBUUlEcykgewoKICAgICAgICAgICAgICAgICMgZ2V0IEZBUSBkYXRhIGRldGFpbHMKICAgICAgICAgICAgICAgIG15ICVGQVFEYXRhID0gJFNlbGYtPntGQVFPYmplY3R9LT5GQVFHZXQoCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkRkFRSUQsCiAgICAgICAgICAgICAgICAgICAgSXRlbUZpZWxkcyA9PiAwLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGFkZCB0YWJsZSBibG9jawogICAgICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmQnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4geyVGQVFEYXRhfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBhZGQgbGFuZ3VhZ2UgZGF0YQogICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ICkgewogICAgICAgICAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZExhbmd1YWdlJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7JUZBUURhdGF9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgb3V0cHV0IGhlYWRlcgogICAgICAgICAgICBteSAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5QcmludEhlYWRlciggV2lkdGggPT4gODAwICk7CiAgICAgICAgICAgIGlmICggc2NhbGFyIEBWaWV3YWJsZUZBUUlEcyA9PSAkU2VsZi0+e1NlYXJjaExpbWl0fSApIHsKICAgICAgICAgICAgICAgICRQYXJhbXtXYXJuaW5nfSA9ICckVGV4dHsiUmVhY2hlZCBtYXguIGNvdW50IG9mICVzIHNlYXJjaCBoaXRzISIsICInCiAgICAgICAgICAgICAgICAgICAgLiAkU2VsZi0+e1NlYXJjaExpbWl0fSAuICcifSc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgYWRkIGxhbmd1YWdlIGhlYWRlcgogICAgICAgICAgICBpZiAoICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0hlYWRlckxhbmd1YWdlJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQ3VzdG9tZXJGQVFTZWFyY2hSZXN1bHRQcmludCcsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgYWRkIGZvb3RlcgogICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+UHJpbnRGb290ZXIoKTsKCiAgICAgICAgICAgICMgcmV0dXJuIG91dHB1dAogICAgICAgICAgICByZXR1cm4gJE91dHB1dDsKCiAgICAgICAgfQoKICAgICAgICBteSAkQ291bnRlciA9IDA7CgogICAgICAgICMgaWYgdGhlcmUgYXJlIHJlc3VsdHMgdG8gc2hvdwogICAgICAgIGlmIChAVmlld2FibGVGQVFJRHMpIHsKICAgICAgICAgICAgZm9yIG15ICRGQVFJRCAoQFZpZXdhYmxlRkFRSURzKSB7CgogICAgICAgICAgICAgICAgJENvdW50ZXIrKzsKCiAgICAgICAgICAgICAgICAjIGJ1aWxkIHNlYXJjaCByZXN1bHQKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkQ291bnRlciA+PSAkU2VsZi0+e1N0YXJ0SGl0fQogICAgICAgICAgICAgICAgICAgICYmICRDb3VudGVyIDwgKCAkU2VsZi0+e1NlYXJjaFBhZ2VTaG93bn0gKyAkU2VsZi0+e1N0YXJ0SGl0fSApCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICAjIGdldCBGQVEgZGF0YSBkZXRhaWxzCiAgICAgICAgICAgICAgICAgICAgbXkgJUZBUURhdGEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUUdldCgKICAgICAgICAgICAgICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkRkFRSUQsCiAgICAgICAgICAgICAgICAgICAgICAgIEl0ZW1GaWVsZHMgPT4gMCwKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBhZGQgYmxvY2tzIHRvIHRlbXBsYXRlCiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlRkFRRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIGFkZCBsYW5ndWFnZSBkYXRhCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkTGFuZ3VhZ2UnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7JUZBUURhdGF9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBvdGhlcndpc2Ugc2hvdyBhIG5vIGRhdGEgZm91bmQgbXNnCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soIE5hbWUgPT4gJ05vRGF0YUZvdW5kTXNnJyApOwogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgYSBsb29rdXAgdGFibGUgZm9yIGF0dHJpYnV0ZSBzZXR0aW5ncwogICAgICAgIG15ICVBdHRyaWJ1dGVNYXAgPSAoCiAgICAgICAgICAgIE51bWJlciA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6RkFRSG9vaycpLAogICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlID0+IDAsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFRpdGxlID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnVGl0bGUnLAogICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEtleXdvcmQgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdLZXl3b3JkJywKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBGdWxsdGV4dCA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ0Z1bGx0ZXh0JywKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBDYXRlZ29yeUlEcyA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ0NhdGVnb3J5JywKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBMYW5ndWFnZUlEcyA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ0xhbmd1YWdlJywKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBUaW1lU2VhcmNoVHlwZSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ0NyZWF0ZSBUaW1lJywKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBWb3RlU2VhcmNoVHlwZSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1ZvdGVzJywKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBSYXRlU2VhcmNoVHlwZSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1JhdGUnLAogICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBwcmludCBlYWNoIGF0dHJpYnV0ZSBpbiBzZWFyY2ggcmVzdWx0cyBhcmVhLgogICAgICAgIEFUVFJJQlVURToKICAgICAgICBmb3IgbXkgJEF0dHJpYnV0ZSAoIHNvcnQga2V5cyAlQXR0cmlidXRlTWFwICkgewoKICAgICAgICAgICAgIyBjaGVjayBpZiB0aGUgYXR0cmlidXRlIHdhcyBkZWZpbmVkIGJ5IHRoZSB1c2VyCiAgICAgICAgICAgIGlmICggJEdldFBhcmFteyRBdHRyaWJ1dGV9ICkgewoKICAgICAgICAgICAgICAgICMgc2V0IGF0dHJpYnV0ZSBuYW1lIGFuZCB0cmFuc2xhdGUgaXQgaWYgYXBwbGllcwogICAgICAgICAgICAgICAgbXkgJEF0dHJpYnV0ZU5hbWUgPSAkQXR0cmlidXRlTWFweyRBdHRyaWJ1dGV9LT57TmFtZX07CiAgICAgICAgICAgICAgICBpZiAoICRBdHRyaWJ1dGVNYXB7JEF0dHJpYnV0ZX0tPntUcmFuc2xhdGFibGV9ICkgewogICAgICAgICAgICAgICAgICAgICRBdHRyaWJ1dGVOYW1lID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJEF0dHJpYnV0ZU5hbWUpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG15ICRBdHRyaWJ1dGVWYWx1ZTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIHRoZSB2YWx1ZXMgaXMgYW4gYXJyYXkgdG8gcGFyc2UgZWFjaCB2YWx1ZQogICAgICAgICAgICAgICAgaWYgKCByZWYgJEdldFBhcmFteyRBdHRyaWJ1dGV9IGVxICdBUlJBWScgKSB7CgogICAgICAgICAgICAgICAgICAgICMgQ2F0ZWdvcnkgYXR0cmlidXRlCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkQXR0cmlidXRlIGVxICdDYXRlZ29yeUlEcycgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGdldCB0aGUgbG9uZyBuYW1lIGZvciBhbGwgY3VzdG9tZXIgY2F0ZWdvcmllcwogICAgICAgICAgICAgICAgICAgICAgICBteSAkQ2F0ZWdvcnlMaXN0ID0gJFNlbGYtPntGQVFPYmplY3R9LT5HZXRDdXN0b21lckNhdGVnb3JpZXNMb25nTmFtZXMoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICdydycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgY29udmVydCBlYWNoIGNhdGVnb3J5IGlkIHRvIGNhdGVnb3J5IGxvbmcgbmFtZQogICAgICAgICAgICAgICAgICAgICAgICBteSBAQ2F0ZWdvcnlOYW1lczsKICAgICAgICAgICAgICAgICAgICAgICAgQ0FURUdPUllJRDoKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRDYXRlZG9yeUlEICggQHsgJEdldFBhcmFteyRBdHRyaWJ1dGV9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0IENBVEVHT1JZSUQgaWYgISRDYXRlZ29yeUxpc3QtPnskQ2F0ZWRvcnlJRH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBDYXRlZ29yeU5hbWVzLCAkQ2F0ZWdvcnlMaXN0LT57JENhdGVkb3J5SUR9OwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAjIGNyZWF0ZSBhIHN0cmluZyB3aXRoIGFsbCBzZWxlY3RlZCBjYXRlZ29yeSBuYW1lcwogICAgICAgICAgICAgICAgICAgICAgICAkQXR0cmlidXRlVmFsdWUgPSBqb2luKCAiICsgIiwgQENhdGVnb3J5TmFtZXMgKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgTGFuZ3VhZ2VJRHMKICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRBdHRyaWJ1dGUgZXEgJ0xhbmd1YWdlSURzJyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgY29udmVydCBlYWNoIGxhbmd1YWdlIGlkIHRvIGxhbmd1YWdlIG5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgbXkgQExhbmd1YWdlTmFtZXM7CiAgICAgICAgICAgICAgICAgICAgICAgIExBTkdVQUdFSUQ6CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciBteSAkTGFuZ3VhZ2VJRCAoIEB7ICRHZXRQYXJhbXskQXR0cmlidXRlfSB9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJExhbmd1YWdlTmFtZSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+TGFuZ3VhZ2VMb29rdXAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFuZ3VhZ2VJRCA9PiAkTGFuZ3VhZ2VJRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0IExBTkdVQUdFSUQgaWYgISRMYW5ndWFnZU5hbWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBMYW5ndWFnZU5hbWVzLCAkTGFuZ3VhZ2VOYW1lCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICMgY3JlYXRlIGEgc3RyaW5nIHdpdGggYWxsIHNlbGVjdGVkIGxhbmd1YWdlIG5hbWVzCiAgICAgICAgICAgICAgICAgICAgICAgICRBdHRyaWJ1dGVWYWx1ZSA9IGpvaW4oICIgKyAiLCBATGFuZ3VhZ2VOYW1lcyApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIG90aGVyd2lzZSBpcyBhbiBzY2FsYXIgYW5kIGNhbiBiZSBzZXQgZGlyZWN0bHkKICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRBdHRyaWJ1dGVWYWx1ZSA9ICRHZXRQYXJhbXskQXR0cmlidXRlfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCAkQXR0cmlidXRlIGVxICdUaW1lU2VhcmNoVHlwZScgKSB7CgogICAgICAgICAgICAgICAgICAgIGlmICggJEdldFBhcmFte1RpbWVTZWFyY2hUeXBlfSBlcSAnVGltZVNsb3QnICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJFN0YXJ0RGF0ZSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+Rm9ybWF0VGltZVN0cmluZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXtJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICctJyAuICRHZXRQYXJhbXtJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGh9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnLScgLiAkR2V0UGFyYW17SXRlbUNyZWF0ZVRpbWVTdGFydERheX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICcgMDA6MDA6MDAnLCAnRGF0ZUZvcm1hdFNob3J0JwogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJFN0b3BEYXRlID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5Gb3JtYXRUaW1lU3RyaW5nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFte0l0ZW1DcmVhdGVUaW1lU3RvcFllYXJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnLScgLiAkR2V0UGFyYW17SXRlbUNyZWF0ZVRpbWVTdG9wTW9udGh9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnLScgLiAkR2V0UGFyYW17SXRlbUNyZWF0ZVRpbWVTdG9wRGF5fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJyAwMDowMDowMCcsICdEYXRlRm9ybWF0U2hvcnQnCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAkQXR0cmlidXRlID0gJ0NyZWF0ZWQgYmV0d2Vlbic7CiAgICAgICAgICAgICAgICAgICAgICAgICRBdHRyaWJ1dGVWYWx1ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAkU3RhcnREYXRlIC4gJyAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdhbmQnKSAuICcgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkU3RvcERhdGU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJE1hcHBpbmcgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTGFzdCcgICA9PiAnQ3JlYXRlZCB3aXRoaW4gdGhlIGxhc3QnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0JlZm9yZScgPT4gJ0NyZWF0ZWQgbW9yZSB0aGFuIC4uLiBhZ28nLAogICAgICAgICAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgICAgICAgICAgICAgJEF0dHJpYnV0ZSA9ICRNYXBwaW5nLT57ICRHZXRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnR9IH07CiAgICAgICAgICAgICAgICAgICAgICAgICRBdHRyaWJ1dGVWYWx1ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAkR2V0UGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludH0gLiAnICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPkdldCggJEdldFBhcmFte0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXR9IC4gJyhzKScgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRBdHRyaWJ1dGUgZXEgJ1ZvdGVTZWFyY2hUeXBlJyApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IEFUVFJJQlVURSBpZiAhJEdldFBhcmFte1ZvdGVTZWFyY2hPcHRpb259OwogICAgICAgICAgICAgICAgICAgICRBdHRyaWJ1dGVWYWx1ZQogICAgICAgICAgICAgICAgICAgICAgICA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fQogICAgICAgICAgICAgICAgICAgICAgICAtPkdldCggJEdldFBhcmFte1ZvdGVTZWFyY2hUeXBlfSApIC4gJyAnIC4gJEdldFBhcmFte1ZvdGVTZWFyY2h9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkQXR0cmlidXRlIGVxICdSYXRlU2VhcmNoVHlwZScgKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBBVFRSSUJVVEUgaWYgISRHZXRQYXJhbXtSYXRlU2VhcmNoT3B0aW9ufTsKICAgICAgICAgICAgICAgICAgICAkQXR0cmlidXRlVmFsdWUKICAgICAgICAgICAgICAgICAgICAgICAgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0KICAgICAgICAgICAgICAgICAgICAgICAgLT5HZXQoICRHZXRQYXJhbXtSYXRlU2VhcmNoVHlwZX0gKSAuICcgJyAuICRHZXRQYXJhbXtSYXRlU2VhcmNofSAuICclJzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1NlYXJjaFRlcm1zJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlID0+ICRBdHRyaWJ1dGVOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgPT4gJEF0dHJpYnV0ZVZhbHVlLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAkTGluayA9ICdQcm9maWxlPScgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkxpbmtFbmNvZGUoICRTZWxmLT57UHJvZmlsZX0gKSAuICc7JzsKICAgICAgICAkTGluayAuPSAnU29ydEJ5PScgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkxpbmtFbmNvZGUoICRTZWxmLT57U29ydEJ5fSApIC4gJzsnOwogICAgICAgICRMaW5rIC49ICdPcmRlcj0nIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5MaW5rRW5jb2RlKCAkU2VsZi0+e09yZGVyQnl9ICkgLiAnOyc7CiAgICAgICAgJExpbmsgLj0gJ1Rha2VMYXN0U2VhcmNoPTE7JzsKCiAgICAgICAgIyBidWlsZCBzZWFyY2ggbmF2aWdhdGlvbiBiYXIKICAgICAgICBteSAlUGFnZU5hdiA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+UGFnZU5hdkJhcigKICAgICAgICAgICAgTGltaXQgICAgID0+ICRTZWxmLT57U2VhcmNoTGltaXR9LAogICAgICAgICAgICBTdGFydEhpdCAgPT4gJFNlbGYtPntTdGFydEhpdH0sCiAgICAgICAgICAgIFBhZ2VTaG93biA9PiAkU2VsZi0+e1NlYXJjaFBhZ2VTaG93bn0sCiAgICAgICAgICAgIEFsbEhpdHMgICA9PiAkQ291bnRlciwKICAgICAgICAgICAgQWN0aW9uICAgID0+ICJBY3Rpb249Q3VzdG9tZXJGQVFTZWFyY2g7U3ViYWN0aW9uPVNlYXJjaCIsCiAgICAgICAgICAgIExpbmsgICAgICA9PiAkTGluaywKICAgICAgICAgICAgSURQcmVmaXggID0+ICJDdXN0b21lckZBUVNlYXJjaCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBzaG93IGZvb3RlciBmaWx0ZXIgLSBzaG93IG9ubHkgaWYgbW9yZSB0aGUgb25lIHBhZ2UgaXMgYXZhaWxhYmxlCiAgICAgICAgaWYgKCBkZWZpbmVkICRQYWdlTmF2e1RvdGFsSGl0c30gJiYgKCAkUGFnZU5hdntUb3RhbEhpdHN9ID4gJFNlbGYtPntTZWFyY2hQYWdlU2hvd259ICkgKSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdQYWdpbmF0aW9uJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAlUGFnZU5hdiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHN0YXJ0IGh0bWwgcGFnZQogICAgICAgIG15ICRPdXRwdXQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkN1c3RvbWVySGVhZGVyKCk7CiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkN1c3RvbWVyTmF2aWdhdGlvbkJhcigpOwoKICAgICAgICAjIFNldCB0aGUgU29ydEJ5IENsYXNzCiAgICAgICAgbXkgJFNvcnRDbGFzczsKCiAgICAgICAgIyB0aGlzIHNldHMgdGhlIG9wcG9zaXRlIHRvIHRoZSBPcmRlckJ5IHBhcmFtZXRlcgogICAgICAgIGlmICggJFNlbGYtPntPcmRlckJ5fSBlcSAnRG93bicgKSB7CiAgICAgICAgICAgICRTb3J0Q2xhc3MgPSAnU29ydEFzY2VuZGluZyc7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJFNlbGYtPntPcmRlckJ5fSBlcSAnVXAnICkgewogICAgICAgICAgICAkU29ydENsYXNzID0gJ1NvcnREZXNjZW5kaW5nJzsKICAgICAgICB9CgogICAgICAgICMgc2V0IHRoZSBTb3J0QnkgQ2xhc3MgdG8gdGhlIGNvcnJlY3QgZmllbGQKICAgICAgICBteSAlQ1NTU29ydDsKICAgICAgICBteSAkU29ydEJ5ID0gJFNlbGYtPntTb3J0Qnl9IC4gJ1NvcnQnOwogICAgICAgICRDU1NTb3J0eyRTb3J0Qnl9ID0gJFNvcnRDbGFzczsKCiAgICAgICAgbXkgJU5ld09yZGVyID0gKAogICAgICAgICAgICBEb3duID0+ICdVcCcsCiAgICAgICAgICAgIFVwICAgPT4gJ0Rvd24nLAogICAgICAgICk7CgogICAgICAgICMgc2hvdyBsYW5ndWFnZSBoZWFkZXIKICAgICAgICBpZiAoICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdIZWFkZXJMYW5ndWFnZScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgJUNTU1NvcnQsCiAgICAgICAgICAgICAgICAgICAgT3JkZXIgPT4gJE5ld09yZGVyeyAkU2VsZi0+e09yZGVyQnl9IH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdDdXN0b21lckZBUVNlYXJjaFJlc3VsdFNob3J0JywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICVQYWdlTmF2LAogICAgICAgICAgICAgICAgJUNTU1NvcnQsCiAgICAgICAgICAgICAgICBPcmRlciAgID0+ICROZXdPcmRlcnsgJFNlbGYtPntPcmRlckJ5fSB9LAogICAgICAgICAgICAgICAgUHJvZmlsZSA9PiAkU2VsZi0+e1Byb2ZpbGV9LAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgYnVpbGQgZm9vdGVyCiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkN1c3RvbWVyRm9vdGVyKCk7CiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9CgogICAgIyBlbXB0eSBzZWFyY2ggc2l0ZQogICAgZWxzZSB7CgogICAgICAgICMgZGVsZXRlIHByb2ZpbGUKICAgICAgICBpZiAoICRTZWxmLT57RXJhc2VUZW1wbGF0ZX0gJiYgJFNlbGYtPntQcm9maWxlfSApIHsKCiAgICAgICAgICAgICMgcmVtb3ZlIG9sZCBwcm9maWxlIHN0dWZmCiAgICAgICAgICAgICRTZWxmLT57U2VhcmNoUHJvZmlsZU9iamVjdH0tPlNlYXJjaFByb2ZpbGVEZWxldGUoCiAgICAgICAgICAgICAgICBCYXNlICAgICAgPT4gJ0N1c3RvbWVyRkFRU2VhcmNoJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAkU2VsZi0+e1Byb2ZpbGV9LAogICAgICAgICAgICAgICAgVXNlckxvZ2luID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJUdldFBhcmFtID0gKCk7CiAgICAgICAgICAgICRTZWxmLT57UHJvZmlsZX0gPSAnJzsKICAgICAgICB9CgogICAgICAgICMgZ2VuZXJhdGUgc2VhcmNoIG1hc2sKICAgICAgICBteSAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DdXN0b21lckhlYWRlcigpOwogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DdXN0b21lck5hdmlnYXRpb25CYXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT5NYXNrRm9ybSgKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICBQcm9maWxlID0+ICRTZWxmLT57UHJvZmlsZX0sCiAgICAgICAgICAgIEFyZWEgICAgPT4gJ0N1c3RvbWVyJywKICAgICAgICApOwogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DdXN0b21lckZvb3RlcigpOwogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQp9CgpzdWIgTWFza0Zvcm0gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBsaXN0IHR5cGUKICAgIG15ICRUcmVlVmlldyA9IDA7CiAgICBpZiAoICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpMaXN0VHlwZScpIGVxICd0cmVlJyApIHsKICAgICAgICAkVHJlZVZpZXcgPSAxOwogICAgfQoKICAgICMgc2V0IG91dHB1dCBmb3JtYXRzIGxpc3QKICAgIG15ICVSZXN1bHRGb3JtID0gKAogICAgICAgIE5vcm1hbCA9PiAnTm9ybWFsJywKICAgICAgICBQcmludCAgPT4gJ1ByaW50JywKICAgICAgICBDU1YgICAgPT4gJ0NTVicsCiAgICApOwoKICAgICMgYnVpbGQgb3V0cHV0IGZvcm1hdHMgbGlzdAogICAgJFBhcmFte1Jlc3VsdEZvcm1TdHJnfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICA9PiB7JVJlc3VsdEZvcm19LAogICAgICAgIE5hbWUgICAgICAgPT4gJ1Jlc3VsdEZvcm0nLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte1Jlc3VsdEZvcm19IHx8ICdOb3JtYWwnLAogICAgKTsKCiAgICAjIGdldCBwcm9maWxlcyBsaXN0CiAgICBteSAlUHJvZmlsZXMgPSAkU2VsZi0+e1NlYXJjaFByb2ZpbGVPYmplY3R9LT5TZWFyY2hQcm9maWxlTGlzdCgKICAgICAgICBCYXNlICAgICAgPT4gJ0N1c3RvbWVyRkFRU2VhcmNoJywKICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgKTsKCiAgICAjIGJ1aWxkIHByb2ZpbGVzIG91dHB1dCBsaXN0CiAgICAkUGFyYW17UHJvZmlsZXNTdHJnfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgID0+IHslUHJvZmlsZXN9LAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgIE5hbWUgICAgICAgICA9PiAnUHJvZmlsZScsCiAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRQYXJhbXtQcm9maWxlfSwKICAgICk7CgogICAgIyBnZXQgbGFuZ3VhZ2VzIGxpc3QKICAgIG15ICVMYW5ndWFnZXMgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkxhbmd1YWdlTGlzdCgKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGJ1aWxkIGxhbmd1YWdlcyBvdXRwdXQgbGlzdAogICAgJFBhcmFte0xhbmd1YWdlc1N0cmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgID0+IHslTGFuZ3VhZ2VzfSwKICAgICAgICBOYW1lICAgICAgID0+ICdMYW5ndWFnZUlEcycsCiAgICAgICAgTXVsdGlwbGUgICA9PiAxLAogICAgICAgIFNpemUgICAgICAgPT4gNSwKICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtMYW5ndWFnZUlEc30sCiAgICApOwoKICAgICMgZ2V0IGNhdGVnb3JpZXMgbGlzdAogICAgbXkgJENhdGVnb3JpZXMgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkdldEN1c3RvbWVyQ2F0ZWdvcmllc0xvbmdOYW1lcygKICAgICAgICBDdXN0b21lclVzZXIgPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgIFR5cGUgICAgICAgICA9PiAncncnLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgYnVpbGQgY2F0ZWdvcmllcyBvdXRwdXQgbGlzdAogICAgJFBhcmFte0NhdGVnb3JpZXNTdHJnfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICA9PiAkQ2F0ZWdvcmllcywKICAgICAgICBOYW1lICAgICAgID0+ICdDYXRlZ29yeUlEcycsCiAgICAgICAgTXVsdGlwbGUgICA9PiAxLAogICAgICAgIFNpemUgICAgICAgPT4gNSwKICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtDYXRlZ29yeUlEc30sCiAgICAgICAgVHJlZVZpZXcgICA9PiAkVHJlZVZpZXcsCiAgICApOwoKICAgIG15ICVWb3RpbmdPcGVyYXRvcnMgPSAoCiAgICAgICAgRXF1YWxzICAgICAgICAgICAgPT4gJ0VxdWFscycsCiAgICAgICAgR3JlYXRlclRoYW4gICAgICAgPT4gJ0dyZWF0ZXJUaGFuJywKICAgICAgICBHcmVhdGVyVGhhbkVxdWFscyA9PiAnR3JlYXRlclRoYW5FcXVhbHMnLAogICAgICAgIFNtYWxsZXJUaGFuICAgICAgID0+ICdTbWFsbGVyVGhhbicsCiAgICAgICAgU21hbGxlclRoYW5FcXVhbHMgPT4gJ1NtYWxsZXJUaGFuRXF1YWxzJywKICAgICk7CgogICAgJFBhcmFte1ZvdGVTZWFyY2hUeXBlU2VsZWN0aW9uU3RyaW5nfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgPT4gXCVWb3RpbmdPcGVyYXRvcnMsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ1ZvdGVTZWFyY2hUeXBlJywKICAgICAgICBTZWxlY3RlZElEICA9PiAkUGFyYW17Vm90ZVNlYXJjaFR5cGV9IHx8ICcnLAogICAgICAgIFNpemUgICAgICAgID0+IDEsCiAgICAgICAgVHJhbnNsYXRpb24gPT4gMSwKICAgICAgICBNdWx0aXBsZSAgICA9PiAwLAogICAgKTsKCiAgICAkUGFyYW17UmF0ZVNlYXJjaFR5cGVTZWxlY3Rpb25TdHJpbmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICA9PiBcJVZvdGluZ09wZXJhdG9ycywKICAgICAgICBOYW1lICAgICAgICA9PiAnUmF0ZVNlYXJjaFR5cGUnLAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRQYXJhbXtSYXRlU2VhcmNoVHlwZX0gfHwgJycsCiAgICAgICAgU2l6ZSAgICAgICAgPT4gMSwKICAgICAgICBUcmFuc2xhdGlvbiA9PiAxLAogICAgICAgIE11bHRpcGxlICAgID0+IDAsCiAgICApOwogICAgJFBhcmFte1JhdGVTZWFyY2hTZWxlY3Rpb25TdHJpbmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgMCAgID0+ICcwJScsCiAgICAgICAgICAgIDI1ICA9PiAnMjUlJywKICAgICAgICAgICAgNTAgID0+ICc1MCUnLAogICAgICAgICAgICA3NSAgPT4gJzc1JScsCiAgICAgICAgICAgIDEwMCA9PiAnMTAwJScsCiAgICAgICAgfSwKICAgICAgICBTb3J0ICAgICAgICA9PiAnTnVtZXJpY0tleScsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ1JhdGVTZWFyY2gnLAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRQYXJhbXtSYXRlU2VhcmNofSB8fCAnJywKICAgICAgICBTaXplICAgICAgICA9PiAxLAogICAgICAgIFRyYW5zbGF0aW9uID0+IDAsCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMCwKICAgICk7CgogICAgJFBhcmFte0l0ZW1DcmVhdGVUaW1lUG9pbnR9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICA9PiBbIDEgLi4gNTkgXSwKICAgICAgICBUcmFuc2xhdGlvbiA9PiAwLAogICAgICAgIE5hbWUgICAgICAgID0+ICdJdGVtQ3JlYXRlVGltZVBvaW50JywKICAgICAgICBTZWxlY3RlZElEICA9PiAkUGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludH0sCiAgICApOwogICAgJFBhcmFte0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydH0gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBMYXN0ICAgPT4gJ3dpdGhpbiB0aGUgbGFzdCAuLi4nLAogICAgICAgICAgICBCZWZvcmUgPT4gJ21vcmUgdGhhbiAuLi4gYWdvJywKICAgICAgICB9LAogICAgICAgIFRyYW5zbGF0aW9uID0+IDEsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydCcsCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFBhcmFte0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydH0gfHwgJ0xhc3QnLAogICAgKTsKICAgICRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0fSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIG1pbnV0ZSA9PiAnbWludXRlKHMpJywKICAgICAgICAgICAgaG91ciAgID0+ICdob3VyKHMpJywKICAgICAgICAgICAgZGF5ICAgID0+ICdkYXkocyknLAogICAgICAgICAgICB3ZWVrICAgPT4gJ3dlZWsocyknLAogICAgICAgICAgICBtb250aCAgPT4gJ21vbnRoKHMpJywKICAgICAgICAgICAgeWVhciAgID0+ICd5ZWFyKHMpJywKICAgICAgICB9LAogICAgICAgIFRyYW5zbGF0aW9uID0+IDEsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQnLAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0fSwKICAgICk7CiAgICAkUGFyYW17SXRlbUNyZWF0ZVRpbWVTdGFydH0gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkRGF0ZVNlbGVjdGlvbigKICAgICAgICAlUGFyYW0sCiAgICAgICAgUHJlZml4ICAgPT4gJ0l0ZW1DcmVhdGVUaW1lU3RhcnQnLAogICAgICAgIEZvcm1hdCAgID0+ICdEYXRlSW5wdXRGb3JtYXQnLAogICAgICAgIERpZmZUaW1lID0+IC0oICggNjAgKiA2MCAqIDI0ICkgKiAzMCApLAogICAgKTsKICAgICRQYXJhbXtJdGVtQ3JlYXRlVGltZVN0b3B9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZERhdGVTZWxlY3Rpb24oCiAgICAgICAgJVBhcmFtLAogICAgICAgIFByZWZpeCA9PiAnSXRlbUNyZWF0ZVRpbWVTdG9wJywKICAgICAgICBGb3JtYXQgPT4gJ0RhdGVJbnB1dEZvcm1hdCcsCiAgICApOwoKICAgICMgaHRtbCBzZWFyY2ggbWFzayBvdXRwdXQKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnU2VhcmNoJywKICAgICAgICBEYXRhID0+IHslUGFyYW19LAogICAgKTsKCiAgICAjIHNob3cgbGFuZ3VhZ2VzIHNlbGVjdAogICAgaWYgKCAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ICkgewogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0xhbmd1YWdlJywKICAgICAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICAgICApOwogICAgfQoKICAgICMgaHRtbCBzZWFyY2ggbWFzayBvdXRwdXQKICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0N1c3RvbWVyRkFRU2VhcmNoJywKICAgICAgICBEYXRhICAgICAgICAgPT4geyVQYXJhbX0sCiAgICApOwp9CgoxOwo=
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRWm9vbS5wbSAtIHRvIGdldCBhIGNsb3NlciB2aWV3CiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OkN1c3RvbWVyRkFRWm9vbTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6RkFROwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhbGlkOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE9iamVjdCAoCiAgICAgICAgcXcoUGFyYW1PYmplY3QgREJPYmplY3QgTGF5b3V0T2JqZWN0IExvZ09iamVjdCBDb25maWdPYmplY3QpCiAgICAgICAgKQogICAgewogICAgICAgIGlmICggISRTZWxmLT57JE9iamVjdH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RmF0YWxFcnJvciggTWVzc2FnZSA9PiAiR290IG5vICRPYmplY3QhIiApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNyZWF0ZSBuZWVkZWQgb2JqZWN0cwogICAgJFNlbGYtPntGQVFPYmplY3R9ICAgPSBLZXJuZWw6OlN5c3RlbTo6RkFRLT5uZXcoJVBhcmFtKTsKICAgICRTZWxmLT57VmFsaWRPYmplY3R9ID0gS2VybmVsOjpTeXN0ZW06OlZhbGlkLT5uZXcoJVBhcmFtKTsKCiAgICAjIGdldCBjb25maWcgb2YgZnJvbnRlbmQgbW9kdWxlCiAgICAkU2VsZi0+e0NvbmZpZ30gPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgiRkFROjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgIyBzZXQgZGVmYXVsdCBpbnRlcmZhY2Ugc2V0dGluZ3MKICAgICRTZWxmLT57SW50ZXJmYWNlfSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVUeXBlR2V0KAogICAgICAgIE5hbWUgICA9PiAnZXh0ZXJuYWwnLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwogICAgJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9ID0gJFNlbGYtPntGQVFPYmplY3R9LT5TdGF0ZVR5cGVMaXN0KAogICAgICAgIFR5cGVzICA9PiAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpDdXN0b21lcjo6U3RhdGVUeXBlcycpLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IGRlZmF1bHQgb3B0aW9ucwogICAgJFNlbGYtPntNdWx0aUxhbmd1YWdlfSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6Ok11bHRpTGFuZ3VhZ2UnKTsKICAgICRTZWxmLT57Vm90aW5nfSAgICAgICAgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpWb3RpbmcnKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBwYXJhbXMKICAgIG15ICVHZXRQYXJhbTsKICAgICRHZXRQYXJhbXtJdGVtSUR9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnSXRlbUlEJyApOwogICAgJEdldFBhcmFte1JhdGV9ICAgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdSYXRlJyApOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkR2V0UGFyYW17SXRlbUlEfSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DdXN0b21lckZhdGFsRXJyb3IoIE1lc3NhZ2UgPT4gJ05lZWQgSXRlbUlEIScgKTsKICAgIH0KCiAgICAjIGdldCBGQVEgaXRlbSBkYXRhCiAgICBteSAlRkFRRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRR2V0KAogICAgICAgIEl0ZW1JRCAgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgSXRlbUZpZWxkcyA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICggISVGQVFEYXRhICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkN1c3RvbWVyRmF0YWxFcnJvcigpOwogICAgfQoKICAgICMgZ2V0IHRoZSB2YWxpZCBpZHMKICAgIG15IEBWYWxpZElEcyA9ICRTZWxmLT57VmFsaWRPYmplY3R9LT5WYWxpZElEc0dldCgpOwogICAgbXkgJVZhbGlkSURMb29rdXAgPSBtYXAgeyAkXyA9PiAxIH0gQFZhbGlkSURzOwoKICAgICMgY2hlY2sgdXNlciBwZXJtaXNzaW9uCiAgICBteSAkUGVybWlzc2lvbiA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Q2hlY2tDYXRlZ29yeUN1c3RvbWVyUGVybWlzc2lvbigKICAgICAgICBDdXN0b21lclVzZXIgPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgIENhdGVnb3J5SUQgICA9PiAkRkFRRGF0YXtDYXRlZ29yeUlEfSwKICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIHBlcm1pc3Npb24gY2hlY2sKICAgIGlmICgKICAgICAgICAhJFBlcm1pc3Npb24KICAgICAgICB8fCAhJEZBUURhdGF7QXBwcm92ZWR9CiAgICAgICAgfHwgISRWYWxpZElETG9va3VweyAkRkFRRGF0YXtWYWxpZElEfSB9CiAgICAgICAgfHwgISRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfS0+eyAkRkFRRGF0YXtTdGF0ZVR5cGVJRH0gfQogICAgICAgICkKICAgIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DdXN0b21lck5vUGVybWlzc2lvbiggV2l0aEhlYWRlciA9PiAneWVzJyApOwogICAgfQoKICAgICMgc3RvcmUgdGhlIGxhc3Qgc2NyZWVuIGluIHNlc3Npb24KICAgICRTZWxmLT57U2Vzc2lvbk9iamVjdH0tPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlblZpZXcnLAogICAgICAgIFZhbHVlICAgICA9PiAkU2VsZi0+e1JlcXVlc3RlZFVSTH0sCiAgICApOwoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIEhUTUxWaWV3IFN1YmFjdGlvbgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdIVE1MVmlldycgKSB7CgogICAgICAgICMgZ2V0IHBhcmFtcwogICAgICAgIG15ICRGaWVsZCA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gIkZpZWxkIiApOwoKICAgICAgICAjIG5lZWRlZCBwYXJhbXMKICAgICAgICBmb3IgbXkgJE5lZWRlZCAocXcoIEl0ZW1JRCBGaWVsZCApKSB7CiAgICAgICAgICAgIGlmICggISROZWVkZWQgKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZGVkIFBhcmFtOiAkTmVlZGVkISIsCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgZ2V0IHRoZSBGaWVsZCBjb250ZW50CiAgICAgICAgbXkgJEZpZWxkQ29udGVudCA9ICRTZWxmLT57RkFRT2JqZWN0fS0+SXRlbUZpZWxkR2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgIEZpZWxkICA9PiAkRmllbGQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyByZXdyaXRlIGhhbmRsZSBhbmQgYWN0aW9uCiAgICAgICAgJEZpZWxkQ29udGVudAogICAgICAgICAgICA9fiBzeyBpbmRleFsuXXBsIFs/XSBBY3Rpb249QWdlbnRGQVFab29tIH17Y3VzdG9tZXIucGw/QWN0aW9uPUN1c3RvbWVyRkFRWm9vbX1neG1zOwoKICAgICAgICAjIHRha2UgY2FyZSBvZiBvbGQgc3R5bGUgYmVmb3JlIEZBUSAyLjAueAogICAgICAgICRGaWVsZENvbnRlbnQgPX4gc3sKICAgICAgICAgICAgaW5kZXhbLl1wbCBbP10gQWN0aW9uPUFnZW50RkFRIFsmXShhbXA7KT8gU3ViYWN0aW9uPURvd25sb2FkIFsmXShhbXA7KT8KICAgICAgICB9e2N1c3RvbWVyLnBsP0FjdGlvbj1DdXN0b21lckZBUVpvb207U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudDt9Z3htczsKCiAgICAgICAgIyBidWlsZCBiYXNlIHVybCBmb3IgaW5saW5lIGltYWdlcwogICAgICAgIG15ICRTZXNzaW9uSUQgPSAnJzsKICAgICAgICBpZiAoICRTZWxmLT57U2Vzc2lvbklEfSAmJiAhJFNlbGYtPntTZXNzaW9uSURDb29raWV9ICkgewogICAgICAgICAgICAkU2Vzc2lvbklEID0gJzsnIC4gJFNlbGYtPntTZXNzaW9uTmFtZX0gLiAnPScgLiAkU2VsZi0+e1Nlc3Npb25JRH07CiAgICAgICAgICAgICRGaWVsZENvbnRlbnQgPX4gc3sKICAgICAgICAgICAgICAgIChBY3Rpb249Q3VzdG9tZXJGQVFab29tO1N1YmFjdGlvbj1Eb3dubG9hZEF0dGFjaG1lbnQ7SXRlbUlEPVxkKztGaWxlSUQ9XGQrKQogICAgICAgICAgICB9eyQxJFNlc3Npb25JRH1nbXN4OwogICAgICAgIH0KCiAgICAgICAgIyBhZGQgbmVlZGVkIEhUTUwgaGVhZGVycwogICAgICAgICRGaWVsZENvbnRlbnQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPntIVE1MVXRpbHNPYmplY3R9LT5Eb2N1bWVudENvbXBsZXRlKAogICAgICAgICAgICBTdHJpbmcgID0+ICRGaWVsZENvbnRlbnQsCiAgICAgICAgICAgIENoYXJzZXQgPT4gJ3V0Zi04JywKICAgICAgICApOwoKICAgICAgICAjIHJldHVybiBjb21wbGV0ZSBIVE1MIGFzIGFuIGF0dGFjaG1lbnQKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5BdHRhY2htZW50KAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRGaWVsZENvbnRlbnQsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBEb3dubG9hZEF0dGFjaG1lbnQgU3ViYWN0aW9uCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0Rvd25sb2FkQXR0YWNobWVudCcgKSB7CgogICAgICAgICMgbWFuYWdlIHBhcmFtZXRlcnMKICAgICAgICAkR2V0UGFyYW17RmlsZUlEfSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0ZpbGVJRCcgKTsKICAgICAgICBpZiAoICFkZWZpbmVkICRHZXRQYXJhbXtGaWxlSUR9ICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DdXN0b21lckZhdGFsRXJyb3IoIE1lc3NhZ2UgPT4gJ05lZWQgRmlsZUlEJyApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgYXR0YWNobWVudHMKICAgICAgICBteSAlRmlsZSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+QXR0YWNobWVudEdldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICBGaWxlSUQgPT4gJEdldFBhcmFte0ZpbGVJRH0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICBpZiAoJUZpbGUpIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QXR0YWNobWVudCglRmlsZSk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJObyBzdWNoIGF0dGFjaG1lbnQgKCRHZXRQYXJhbXtGaWxlSUR9KSEgTWF5IGJlIGFuIGF0dGFjayEhISIsCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DdXN0b21lckZhdGFsRXJyb3IoKTsKICAgICAgICB9CiAgICB9CgogICAgIyBvdXRwdXQgaGVhZGVyCiAgICBteSAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DdXN0b21lckhlYWRlcigKICAgICAgICBWYWx1ZSA9PiAkRkFRRGF0YXtUaXRsZX0sCiAgICApOwogICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkN1c3RvbWVyTmF2aWdhdGlvbkJhcigpOwoKICAgICMgZ2V0IEZBUSB2b3RlIGluZm9ybWF0aW9uCiAgICBteSAkVm90ZURhdGE7CiAgICBpZiAoICRTZWxmLT57Vm90aW5nfSApIHsKICAgICAgICAkVm90ZURhdGEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlZvdGVHZXQoCiAgICAgICAgICAgIENyZWF0ZUJ5ICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIEl0ZW1JRCAgICA9PiAkRkFRRGF0YXtJdGVtSUR9LAogICAgICAgICAgICBJbnRlcmZhY2UgPT4gJFNlbGYtPntJbnRlcmZhY2V9LT57U3RhdGVJRH0sCiAgICAgICAgICAgIElQICAgICAgICA9PiAkRU5WeydSRU1PVEVfQUREUid9LAogICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICB9CgogICAgIyBjaGVjayBpZiB1c2VyIGFscmVhZHkgdm90ZWQgdGhpcyBGQVEgaXRlbQogICAgbXkgJEFscmVhZHlWb3RlZDsKICAgIGlmICgkVm90ZURhdGEpIHsKCiAgICAgICAgIyBpdGVtL2NoYW5nZV90aW1lID4gdm90aW5nL2NyZWF0ZV90aW1lCiAgICAgICAgbXkgJEl0ZW1DaGFuZ2VkU3lzdGVtVGltZSA9ICRTZWxmLT57VGltZU9iamVjdH0tPlRpbWVTdGFtcDJTeXN0ZW1UaW1lKAogICAgICAgICAgICBTdHJpbmcgPT4gJEZBUURhdGF7Q2hhbmdlZH0gfHwgJycsCiAgICAgICAgKTsKICAgICAgICBteSAkVm90ZUNyZWF0ZWRTeXN0ZW1UaW1lID0gJFNlbGYtPntUaW1lT2JqZWN0fS0+VGltZVN0YW1wMlN5c3RlbVRpbWUoCiAgICAgICAgICAgIFN0cmluZyA9PiAkVm90ZURhdGEtPntDcmVhdGVkfSB8fCAnJywKICAgICAgICApOwogICAgICAgIGlmICggJEl0ZW1DaGFuZ2VkU3lzdGVtVGltZSA8PSAkVm90ZUNyZWF0ZWRTeXN0ZW1UaW1lICkgewogICAgICAgICAgICAkQWxyZWFkeVZvdGVkID0gMTsKICAgICAgICB9CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgVm90ZSBTdWJhY3Rpb24KICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnVm90ZScgKSB7CgogICAgICAgICMgY3VzdG9tZXIgY2FuJ3QgdXNlIHRoaXMgc3ViYWN0aW9uIGlmIGlzIG5vdCBlbmJsZWQKICAgICAgICBpZiAoICEkU2VsZi0+e1ZvdGluZ30gKSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Q3VzdG9tZXJGYXRhbEVycm9yKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiAiVGhlIHZvdGluZyBtZWNoYW5pc20gaXMgbm90IGVuYWJsZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgdXNlciBjYW4gdm90ZSBvbmx5IG9uY2UgcGVyIEZBUSByZXZpc2lvbgogICAgICAgIGlmICgkQWxyZWFkeVZvdGVkKSB7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Ob3RpZnkoCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnRXJyb3InLAogICAgICAgICAgICAgICAgSW5mbyAgICAgPT4gJ1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgc2V0IHRoZSB2b3RlIGlmIGFueQogICAgICAgIGVsc2lmICggZGVmaW5lZCAkR2V0UGFyYW17UmF0ZX0gKSB7CgogICAgICAgICAgICAjIGdldCByYXRlcyBjb25maWcKICAgICAgICAgICAgbXkgJFZvdGluZ1JhdGVzID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6SXRlbTo6Vm90aW5nOjpSYXRlcycpOwogICAgICAgICAgICBteSAkUmF0ZSAgICAgICAgPSAkR2V0UGFyYW17UmF0ZX07CgogICAgICAgICAgICAjIHNlbmQgZXJyb3IgaWYgcmF0ZSBpcyBub3QgZGVmaW5lZCBpbiBjb25maWcKICAgICAgICAgICAgaWYgKCAhJFZvdGluZ1JhdGVzLT57JFJhdGV9ICkgewogICAgICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DdXN0b21lckZhdGFsRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSA9PiAiVGhlIHZvdGUgcmF0ZSBpcyBub3QgZGVmaW5lZCEiCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIG90aGVyd2lzZSBhZGQgdGhlIHZvdGUKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+e0ZBUU9iamVjdH0tPlZvdGVBZGQoCiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlZEJ5ID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgSVAgICAgICAgID0+ICRFTlZ7J1JFTU9URV9BRERSJ30sCiAgICAgICAgICAgICAgICAgICAgSW50ZXJmYWNlID0+ICRTZWxmLT57SW50ZXJmYWNlfS0+e1N0YXRlSUR9LAogICAgICAgICAgICAgICAgICAgIFJhdGUgICAgICA9PiAkR2V0UGFyYW17UmF0ZX0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBkbyBub3Qgc2hvdyB0aGUgdm90aW5nIGZvcm0KICAgICAgICAgICAgICAgICRBbHJlYWR5Vm90ZWQgPSAxOwoKICAgICAgICAgICAgICAgICMgcmVmcmVzaCBGQVEgaXRlbSBkYXRhCiAgICAgICAgICAgICAgICAlRkFRRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRR2V0KAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgSXRlbUZpZWxkcyA9PiAxLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGlmICggISVGQVFEYXRhICkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkN1c3RvbWVyRmF0YWxFcnJvcigpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Ob3RpZnkoIEluZm8gPT4gJ1RoYW5rcyBmb3IgeW91ciB2b3RlIScgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyB1c2VyIGlzIGFibGUgdG8gdm90ZSBidXQgbm8gcmF0ZSBoYXMgYmVlbiBzZWxlY3RlZAogICAgICAgIGVsc2UgewogICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Tm90aWZ5KAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ0Vycm9yJywKICAgICAgICAgICAgICAgIEluZm8gICAgID0+ICdObyByYXRlIHNlbGVjdGVkIScsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgcHJlcGFyZSBmaWVsZHMgZGF0YSAoU3RpbGwgbmVlZGVkIGZvciBQbGFpblRleHQpCiAgICBGSUVMRDoKICAgIGZvciBteSAkRmllbGQgKHF3KEZpZWxkMSBGaWVsZDIgRmllbGQzIEZpZWxkNCBGaWVsZDUgRmllbGQ2KSkgewogICAgICAgIG5leHQgRklFTEQgaWYgISRGQVFEYXRheyRGaWVsZH07CgogICAgICAgICMgcmV3cml0ZSBsaW5rcyB0byBlbWJlZGRlZCBpbWFnZXMgZm9yIGN1c3RvbWVyIGludGVyZmFjZQogICAgICAgIGlmICggJFNlbGYtPntJbnRlcmZhY2V9LT57TmFtZX0gZXEgJ2V4dGVybmFsJyApIHsKCiAgICAgICAgICAgICMgcmV3cml0ZSBoYW5kbGUgYW5kIGFjdGlvbgogICAgICAgICAgICAkRkFRRGF0YXskRmllbGR9CiAgICAgICAgICAgICAgICA9fiBzeyBpbmRleFsuXXBsIFs/XSBBY3Rpb249QWdlbnRGQVFab29tIH17Y3VzdG9tZXIucGw/QWN0aW9uPUN1c3RvbWVyRkFRWm9vbX1neG1zOwoKICAgICAgICAgICAgIyB0YWtlIGNhcmUgb2Ygb2xkIHN0eWxlIGJlZm9yZSBGQVEgMi4wLngKICAgICAgICAgICAgJEZBUURhdGF7JEZpZWxkfSA9fiBzewogICAgICAgICAgICAgICAgaW5kZXhbLl1wbCBbP10gQWN0aW9uPUFnZW50RkFRIFsmXShhbXA7KT8gU3ViYWN0aW9uPURvd25sb2FkIFsmXShhbXA7KT8KICAgICAgICAgICAgfXtjdXN0b21lci5wbD9BY3Rpb249Q3VzdG9tZXJGQVFab29tO1N1YmFjdGlvbj1Eb3dubG9hZEF0dGFjaG1lbnQ7fWd4bXM7CiAgICAgICAgfQoKICAgICAgICAjIG5vIHF1b3RpbmcgaWYgaHRtbCB2aWV3IGlzIGVuYWJsZWQKICAgICAgICBuZXh0IEZJRUxEIGlmICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6Okl0ZW06OkhUTUwnKTsKCiAgICAgICAgIyBodG1sIHF1b3RpbmcKICAgICAgICAkRkFRRGF0YXskRmllbGR9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICBOZXdMaW5lICAgICAgICA9PiAwLAogICAgICAgICAgICBUZXh0ICAgICAgICAgICA9PiAkRkFRRGF0YXskRmllbGR9LAogICAgICAgICAgICBWTWF4ICAgICAgICAgICA9PiA1MDAwLAogICAgICAgICAgICBIVE1MUmVzdWx0TW9kZSA9PiAxLAogICAgICAgICAgICBMaW5rRmVhdHVyZSAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgIyBzZXQgdm90aW5nIHJlc3VsdHMKICAgICRQYXJhbXtWb3RpbmdSZXN1bHRDb2xvcn0gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkdldEZBUUl0ZW1Wb3RpbmdSYXRlQ29sb3IoCiAgICAgICAgUmF0ZSA9PiAkRkFRRGF0YXtWb3RlUmVzdWx0fSwKICAgICk7CgogICAgaWYgKCAhJFBhcmFte1ZvdGluZ1Jlc3VsdENvbG9yfSB8fCAkRkFRRGF0YXtWb3Rlc30gZXEgJzAnICkgewogICAgICAgICRQYXJhbXtWb3RpbmdSZXN1bHRDb2xvcn0gPSAnR3JheSc7CiAgICB9CgogICAgIyBzaG93IGJhY2sgbGluawogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdCYWNrJywKICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICApOwoKICAgICMgc2hvdyBsYW5ndWFnZQogICAgaWYgKCAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ICkgewogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0xhbmd1YWdlJywKICAgICAgICAgICAgRGF0YSA9PiB7JUZBUURhdGF9LAogICAgICAgICk7CiAgICB9CgogICAgIyBzaG93IHZvdGVzCiAgICBpZiAoICRTZWxmLT57Vm90aW5nfSApIHsKCiAgICAgICAgIyBhbHdheXMgZGlwbGF5cyBWb3RlcyByZXN1bHQgZXZlbiBpZiBpdHMgMAogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1ZpZXdWb3RlcycsCiAgICAgICAgICAgIERhdGEgPT4geyVGQVFEYXRhfSwKICAgICAgICApOwogICAgfQoKICAgICMgc2hvdyBGQVEgcGF0aAogICAgbXkgJFNob3dGQVFQYXRoID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GQVFQYXRoU2hvdygKICAgICAgICBGQVFPYmplY3QgID0+ICRTZWxmLT57RkFRT2JqZWN0fSwKICAgICAgICBDYXRlZ29yeUlEID0+ICRGQVFEYXRhe0NhdGVnb3J5SUR9LAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICgkU2hvd0ZBUVBhdGgpIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGQVFQYXRoSXRlbUVsZW1lbnQnLAogICAgICAgICAgICBEYXRhID0+IHslRkFRRGF0YX0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNob3cga2V5d29yZHMgYXMgc2VhcmNoIGxpbmtzCiAgICBpZiAoICRGQVFEYXRhe0tleXdvcmRzfSApIHsKCiAgICAgICAgIyByZXBsYWNlIGNvbW1hcyBhbmQgc2VtaWNvbG9ucwogICAgICAgICRGQVFEYXRhe0tleXdvcmRzfSA9fiBzLywvIC9nOwogICAgICAgICRGQVFEYXRhe0tleXdvcmRzfSA9fiBzLzsvIC9nOwoKICAgICAgICBteSBAS2V5d29yZHMgPSBzcGxpdCAvXHMrLywgJEZBUURhdGF7S2V5d29yZHN9OwogICAgICAgIGZvciBteSAkS2V5d29yZCAoQEtleXdvcmRzKSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdLZXl3b3JkcycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBLZXl3b3JkID0+ICRLZXl3b3JkLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBvdXRwdXQgcmF0aW5nIHN0YXJzCiAgICBpZiAoICRTZWxmLT57Vm90aW5nfSApIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZBUVJhdGluZ1N0YXJzU2hvdygKICAgICAgICAgICAgVm90ZVJlc3VsdCA9PiAkRkFRRGF0YXtWb3RlUmVzdWx0fSwKICAgICAgICAgICAgVm90ZXMgICAgICA9PiAkRkFRRGF0YXtWb3Rlc30sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIG91dHB1dCBhdHRhY2htZW50cyBpZiBhbnkKICAgIG15IEBBdHRhY2htZW50SW5kZXggPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkF0dGFjaG1lbnRJbmRleCgKICAgICAgICBJdGVtSUQgICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgIFNob3dJbmxpbmUgPT4gMCwKICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBvdXRwdXQgYXR0YWNobWVudHMKICAgIGlmIChAQXR0YWNobWVudEluZGV4KSB7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnQXR0YWNobWVudEhlYWRlcicsCiAgICAgICAgKTsKICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKEBBdHRhY2htZW50SW5kZXgpIHsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0F0dGFjaG1lbnRSb3cnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJUZBUURhdGEsCiAgICAgICAgICAgICAgICAgICAgJXskQXR0YWNobWVudH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNob3cgRkFRIENvbnRlbnQKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RkFRQ29udGVudFNob3coCiAgICAgICAgRkFRT2JqZWN0ICAgICAgID0+ICRTZWxmLT57RkFRT2JqZWN0fSwKICAgICAgICBJbnRlcmZhY2VTdGF0ZXMgPT4gJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9LAogICAgICAgIEZBUURhdGEgICAgICAgICA9PiB7JUZBUURhdGF9LAogICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgc2hvdyBGQVEgVm90aW5nCiAgICBpZiAoICRTZWxmLT57Vm90aW5nfSApIHsKCiAgICAgICAgIyBnZXQgdm90aW5nIGNvbmZpZwogICAgICAgIG15ICRTaG93Vm90aW5nQ29uZmlnID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6SXRlbTo6Vm90aW5nOjpTaG93Jyk7CiAgICAgICAgaWYgKCAkU2hvd1ZvdGluZ0NvbmZpZy0+eyAkU2VsZi0+e0ludGVyZmFjZX0tPntOYW1lfSB9ICkgewoKICAgICAgICAgICAgIyBjaGVjayBpZiB0aGUgdXNlciBhbHJlYWR5IHZvdGVkIGFmdGVyIGxhc3QgY2hhbmdlCiAgICAgICAgICAgIGlmICggISRBbHJlYWR5Vm90ZWQgKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+X0ZBUVZvdGluZyggRkFRRGF0YSA9PiB7JUZBUURhdGF9ICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBsb2cgYWNjZXNzIHRvIHRoaXMgRkFRIGl0ZW0KICAgICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRTG9nQWRkKAogICAgICAgIEl0ZW1JRCA9PiAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdJdGVtSUQnICksCiAgICAgICAgSW50ZXJmYWNlID0+ICRTZWxmLT57SW50ZXJmYWNlfS0+e05hbWV9LAogICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgc3RhcnQgdGVtcGxhdGUgb3V0cHV0CiAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQ3VzdG9tZXJGQVFab29tJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlRkFRRGF0YSwKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgfSwKICAgICk7CgogICAgIyBhZGQgZm9vdGVyCiAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Q3VzdG9tZXJGb290ZXIoKTsKCiAgICByZXR1cm4gJE91dHB1dDsKfQoKc3ViIF9GQVFWb3RpbmcgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAlRkFRRGF0YSA9ICV7ICRQYXJhbXtGQVFEYXRhfSB9OwoKICAgICMgb3VwdXQgdm90aW5nIGJsb2NrCiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0ZBUVZvdGluZycsCiAgICAgICAgRGF0YSA9PiB7JUZBUURhdGF9LAogICAgKTsKCiAgICAjIGdldCBWb3RpbmcgcmF0ZXMgc2V0dGluZwogICAgbXkgJFZvdGluZ1JhdGVzID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6SXRlbTo6Vm90aW5nOjpSYXRlcycpOwogICAgZm9yIG15ICRSYXRlVmFsdWUgKCBzb3J0IHsgJGEgPD0+ICRiIH0ga2V5cyAleyRWb3RpbmdSYXRlc30gKSB7CgogICAgICAgICMgY3JlYXRlIGRhdGEgc3RydWN1cmUgZm9yIG91dHB1dAogICAgICAgIG15ICVEYXRhID0gKAogICAgICAgICAgICBWYWx1ZSA9PiAkUmF0ZVZhbHVlLAogICAgICAgICAgICBUaXRsZSA9PiAkVm90aW5nUmF0ZXMtPnskUmF0ZVZhbHVlfSwKICAgICAgICApOwoKICAgICAgICAjIG91dHB1dCB2b3RlIHJhdGluZyByb3cgYmxvY2sKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGQVFWb3RpbmdSYXRlUm93JywKICAgICAgICAgICAgRGF0YSA9PiB7JURhdGF9LAogICAgICAgICk7CiAgICB9Cn0KCjE7Cg==
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUS5wbSAtIFRoaXMgbW9kdWxlIHJlZGlyZWN0cyB0byBQdWJsaWNGQVFab29tCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OlB1YmxpY0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBjaGVjayBuZWVkZWQgb2JqZWN0cwogICAgZm9yIG15ICRPYmplY3QgKHF3KFBhcmFtT2JqZWN0IERCT2JqZWN0IExheW91dE9iamVjdCBMb2dPYmplY3QgQ29uZmlnT2JqZWN0ICkpIHsKICAgICAgICBpZiAoICEkU2VsZi0+eyRPYmplY3R9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZhdGFsRXJyb3IoIE1lc3NhZ2UgPT4gIkdvdCBubyAkT2JqZWN0ISIgKTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFJlZGlyZWN0ID0gJEVOVntSRVFVRVNUX1VSSX07CgogICAgaWYgKCRSZWRpcmVjdCkgewogICAgICAgICRSZWRpcmVjdCA9fiBze1B1YmxpY0ZBUX17UHVibGljRkFRWm9vbX14bXM7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkUmVkaXJlY3QgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPntCYXNlbGlua30KICAgICAgICAgICAgLiAnQWN0aW9uPVB1YmxpY0ZBUVpvb207SXRlbUlEPScKICAgICAgICAgICAgLiAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdJdGVtSUQnICk7CiAgICB9CgogICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+UmVkaXJlY3QoCiAgICAgICAgT1AgPT4gJFJlZGlyZWN0LAogICAgKTsKfQoKMTsK
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUUV4cGxvcmVyLnBtIC0gcHVibGljIEZBUSBleHBsb3JlcgojIENvcHlyaWdodCAoQykgMjAwMS0yMDEzIE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpQdWJsaWNGQVFFeHBsb3JlcjsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBNSU1FOjpCYXNlNjQgcXcoKTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpGQVE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgY2hlY2sgbmVlZGVkIG9iamVjdHMKICAgIGZvciBteSAkT2JqZWN0ICgKICAgICAgICBxdyhQYXJhbU9iamVjdCBEQk9iamVjdCBMYXlvdXRPYmplY3QgTG9nT2JqZWN0IENvbmZpZ09iamVjdCkKICAgICAgICApCiAgICB7CiAgICAgICAgaWYgKCAhJFNlbGYtPnskT2JqZWN0fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GYXRhbEVycm9yKCBNZXNzYWdlID0+ICJHb3Qgbm8gJE9iamVjdCEiICk7CiAgICAgICAgfQogICAgfQoKICAgICMgc2V0IFVzZXJJRCB0byByb290IGJlY2F1c2UgaW4gcHVibGljIGludGVyZmFjZSB0aGVyZSBpcyBubyB1c2VyCiAgICAkU2VsZi0+e1VzZXJJRH0gPSAxOwoKICAgICMgY3JlYXRlIG5lZWRlZCBvYmplY3RzCiAgICAkU2VsZi0+e0ZBUU9iamVjdH0gPSBLZXJuZWw6OlN5c3RlbTo6RkFRLT5uZXcoJVBhcmFtKTsKCiAgICAjIGdldCBjb25maWcgb2YgZnJvbnRlbmQgbW9kdWxlCiAgICAkU2VsZi0+e0NvbmZpZ30gPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgiRkFROjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgIyBzZXQgZGVmYXVsdCBpbnRlcmZhY2Ugc2V0dGluZ3MKICAgICRTZWxmLT57SW50ZXJmYWNlfSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVUeXBlR2V0KAogICAgICAgIE5hbWUgICA9PiAncHVibGljJywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVUeXBlTGlzdCgKICAgICAgICBUeXBlcyAgPT4gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6UHVibGljOjpTdGF0ZVR5cGVzJyksCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgJFNlbGYtPntNdWx0aUxhbmd1YWdlfSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6Ok11bHRpTGFuZ3VhZ2UnKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBjb25maWcgZGF0YQogICAgJFNlbGYtPntTdGFydEhpdH0gPSBpbnQoICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1N0YXJ0SGl0JyApIHx8IDEgKTsKICAgICRTZWxmLT57U2VhcmNoTGltaXR9ICAgICA9ICRTZWxmLT57Q29uZmlnfS0+e1NlYXJjaExpbWl0fSAgICAgfHwgMjAwOwogICAgJFNlbGYtPntTZWFyY2hQYWdlU2hvd259ID0gJFNlbGYtPntDb25maWd9LT57U2VhcmNoUGFnZVNob3dufSB8fCAzOwogICAgJFNlbGYtPntTb3J0Qnl9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnU29ydEJ5JyApCiAgICAgICAgfHwgJFNlbGYtPntDb25maWd9LT57J1NvcnRCeTo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ0ZBUUlEJzsKICAgICRTZWxmLT57T3JkZXJCeX0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdPcmRlcicgKQogICAgICAgIHx8ICRTZWxmLT57Q29uZmlnfS0+eydPcmRlcjo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ0Rvd24nOwoKICAgICMgZ2V0IEl0ZW0gSUQKICAgIG15ICRJdGVtSUQgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdJdGVtSUQnICkgfHwgMDsKCiAgICAjIGNoZWNrIGlmIEl0ZW1JRCBwYXJhbWV0ZXIgd2FzIHNlbnQgYW5kIHJlZGlyZWN0IHRvIEZBUSBhcnRpY2xlIHpvb20gc2NyZWVuCiAgICBpZiAoJEl0ZW1JRCkgewoKICAgICAgICAjIHJlZGlyZWN0IHRvIEZBUSB6b29tCiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+UmVkaXJlY3QoIE9QID0+ICdBY3Rpb249UHVibGljRkFRWm9vbTtJdGVtSUQ9JyAuICRJdGVtSUQgKTsKICAgIH0KCiAgICAjIGdldCBjYXRlZ29yeSBpZAogICAgbXkgJENhdGVnb3J5SUQgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdDYXRlZ29yeUlEJyApIHx8IDA7CgogICAgIyBjaGVjayBmb3Igbm9uIG51bWVyaWMgQ2F0ZWdvcnlJRAogICAgaWYgKCAkQ2F0ZWdvcnlJRCAhfiAvXGQrLyApIHsKICAgICAgICAkQ2F0ZWdvcnlJRCA9IDA7CiAgICB9CgogICAgIyBnZXQgY2F0ZWdvcnkgYnkgbmFtZQogICAgbXkgJENhdGVnb3J5ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnQ2F0ZWdvcnknICkgfHwgJyc7CgogICAgIyB0cnkgdG8gZ2V0IHRoZSBDYXRlZ29yeSBJRCBmcm9tIGNhdGVnb3J5IG5hbWUgaWYgbm8gQ2F0ZWdvcnkgSUQKICAgIGlmICggJENhdGVnb3J5ICYmICEkQ2F0ZWdvcnlJRCApIHsKCiAgICAgICAgIyBnZXQgdGhlIGNhdGVnb3J5IHRyZWUKICAgICAgICBteSAkQ2F0ZWdvcnlUcmVlID0gJFNlbGYtPntGQVFPYmplY3R9LT5DYXRlZ29yeVRyZWVMaXN0KAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIHJldmVyc2UgdGhlIGhhcyBmb3IgZWFzeSBsb29rdXAKICAgICAgICBteSAlUmV2ZXJzZUNhdGVnb3J5VHJlZSA9IHJldmVyc2UgJXskQ2F0ZWdvcnlUcmVlfTsKCiAgICAgICAgJENhdGVnb3J5SUQgPSAkUmV2ZXJzZUNhdGVnb3J5VHJlZXskQ2F0ZWdvcnl9IHx8IDA7CiAgICB9CgogICAgIyB0cnkgdG8gZ2V0IHRoZSBjYXRlZ29yeSBkYXRhCiAgICBteSAlQ2F0ZWdvcnlEYXRhOwogICAgaWYgKCRDYXRlZ29yeUlEKSB7CgogICAgICAgICMgZ2V0IGNhdGVnb3J5IGRhdGEKICAgICAgICAlQ2F0ZWdvcnlEYXRhID0gJFNlbGYtPntGQVFPYmplY3R9LT5DYXRlZ29yeUdldCgKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICBpZiAoICElQ2F0ZWdvcnlEYXRhICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DdXN0b21lck5vUGVybWlzc2lvbiggV2l0aEhlYWRlciA9PiAneWVzJyApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGFkZCByc3MgZmVlZCBsaW5rIGZvciBuZXcgRkFRIGFydGljbGVzIGluIHRoZSBicm93c2VyIFVSTCBiYXIKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnTWV0YUxpbmsnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBSZWwgICA9PiAnYWx0ZXJuYXRlJywKICAgICAgICAgICAgVHlwZSAgPT4gJ2FwcGxpY2F0aW9uL3Jzcyt4bWwnLAogICAgICAgICAgICBUaXRsZSA9PiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCgnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknKSwKICAgICAgICAgICAgSHJlZiAgPT4gJyRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249UHVibGljRkFRUlNTO1R5cGU9Q3JlYXRlZCcsCiAgICAgICAgfSwKICAgICk7CgogICAgIyBhZGQgcnNzIGZlZWQgbGluayBmb3IgY2hhbmdlZCBGQVEgYXJ0aWNsZXMgaW4gdGhlIGJyb3dzZXIgVVJMIGJhcgogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdNZXRhTGluaycsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIFJlbCAgPT4gJ2FsdGVybmF0ZScsCiAgICAgICAgICAgIFR5cGUgPT4gJ2FwcGxpY2F0aW9uL3Jzcyt4bWwnLAogICAgICAgICAgICBUaXRsZSA9PgogICAgICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknKSwKICAgICAgICAgICAgSHJlZiA9PiAnJEVudnsiQmFzZWxpbmsifUFjdGlvbj1QdWJsaWNGQVFSU1M7VHlwZT1DaGFuZ2VkJywKICAgICAgICB9LAogICAgKTsKCiAgICAjIGFkZCByc3MgZmVlZCBsaW5rIGZvciBUb3AxMCBGQVEgYXJ0aWNsZXMgaW4gdGhlIGJyb3dzZXIgVVJMIGJhcgogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdNZXRhTGluaycsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIFJlbCAgID0+ICdhbHRlcm5hdGUnLAogICAgICAgICAgICBUeXBlICA9PiAnYXBwbGljYXRpb24vcnNzK3htbCcsCiAgICAgICAgICAgIFRpdGxlID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdGQVEgQXJ0aWNsZXMgKFRvcCAxMCknKSwKICAgICAgICAgICAgSHJlZiAgPT4gJyRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249UHVibGljRkFRUlNTO1R5cGU9VG9wMTAnLAogICAgICAgIH0sCiAgICApOwoKICAgICMgb3V0cHV0IGhlYWRlcgogICAgbXkgJE91dHB1dCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Q3VzdG9tZXJIZWFkZXIoKTsKCiAgICAjIHNob3cgRkFRIHBhdGgKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RkFRUGF0aFNob3coCiAgICAgICAgRkFRT2JqZWN0ICA9PiAkU2VsZi0+e0ZBUU9iamVjdH0sCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBnZXQgYWxsIGRpcmVjdCBzdWJjYXRlZ29yaWVzIG9mIHRoZSBzZWxlY3RlZCBjYXRlZ29yeQogICAgbXkgJENhdGVnb3J5SURzUmVmID0gJFNlbGYtPntGQVFPYmplY3R9LT5QdWJsaWNDYXRlZ29yeVNlYXJjaCgKICAgICAgICBQYXJlbnRJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICBNb2RlICAgICA9PiAnUHVibGljJywKICAgICAgICBVc2VySUQgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgc2hvdyBzdWJjYXRlZ29yaWVzIGxpc3QKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soIE5hbWUgPT4gJ1N1YmNhdGVnb3JpZXMnICk7CiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKCBOYW1lID0+ICdPdmVydmlld1Jlc3VsdCcgKTsKCiAgICAjIGNoZWNrIGlmIHRoZXJlIGFyZSBzdWJjYXRlZ29yaWVzCiAgICBpZiAoICRDYXRlZ29yeUlEc1JlZiAmJiByZWYgJENhdGVnb3J5SURzUmVmIGVxICdBUlJBWScgJiYgQHskQ2F0ZWdvcnlJRHNSZWZ9ICkgewoKICAgICAgICAjIHNob3cgZGF0YSBmb3IgZWFjaCBzdWJjYXRlZ29yeQogICAgICAgIGZvciBteSAkU3ViQ2F0ZWdvcnlJRCAoIEB7JENhdGVnb3J5SURzUmVmfSApIHsKCiAgICAgICAgICAgICMgZ2V0IHRoZSBjYXRlZ29yeSBkYXRhCiAgICAgICAgICAgIG15ICVTdWJDYXRlZ29yeURhdGEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkNhdGVnb3J5R2V0KAogICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkU3ViQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBnZXQgdGhlIG51bWJlciBvZiBzdWJjYXRlZ29yaWVzIG9mIHRoaXMgc3ViY2F0ZWdvcnkKICAgICAgICAgICAgJFN1YkNhdGVnb3J5RGF0YXtTdWJDYXRlZ29yeUNvdW50fSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Q2F0ZWdvcnlDb3VudCgKICAgICAgICAgICAgICAgIFBhcmVudElEcyA9PiBbJFN1YkNhdGVnb3J5SURdLAogICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZ2V0IHRoZSBudW1iZXIgb2YgZmFxIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkKICAgICAgICAgICAgJFN1YkNhdGVnb3J5RGF0YXtBcnRpY2xlQ291bnR9ID0gJFNlbGYtPntGQVFPYmplY3R9LT5GQVFDb3VudCgKICAgICAgICAgICAgICAgIENhdGVnb3J5SURzICA9PiBbJFN1YkNhdGVnb3J5SURdLAogICAgICAgICAgICAgICAgSXRlbVN0YXRlcyAgID0+ICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSwKICAgICAgICAgICAgICAgIE9ubHlBcHByb3ZlZCA9PiAxLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgb3V0cHV0IHRoZSBjYXRlZ29yeSBkYXRhCiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld1Jlc3VsdFJvdycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHslU3ViQ2F0ZWdvcnlEYXRhfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBvdGhlcndpc2UgYSBubyBkYXRhIGZvdW5kIG1lc3NhZ2UgaXMgZGlzcGxheWVkCiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdOb0NhdGVnb3J5RGF0YUZvdW5kTXNnJywKICAgICAgICApOwogICAgfQoKICAgICMgc2VhcmNoIGFsbCBGQVEgYXJ0aWNsZXMgd2l0aGluIHRoZSBnaXZlbiBjYXRlZ29yeQogICAgbXkgQFZpZXdhYmxlRkFRSURzID0gJFNlbGYtPntGQVFPYmplY3R9LT5GQVFTZWFyY2goCiAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiBbICRTZWxmLT57U29ydEJ5fSBdLAogICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gPT4gWyAkU2VsZi0+e09yZGVyQnl9IF0sCiAgICAgICAgTGltaXQgICAgICAgICAgICA9PiAkU2VsZi0+e1NlYXJjaExpbWl0fSwKICAgICAgICBVc2VySUQgICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICBTdGF0ZXMgICAgICAgICAgID0+ICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSwKICAgICAgICBJbnRlcmZhY2UgICAgICAgID0+ICRTZWxmLT57SW50ZXJmYWNlfSwKICAgICAgICBDYXRlZ29yeUlEcyAgICAgID0+IFskQ2F0ZWdvcnlJRF0sCiAgICApOwoKICAgICMgc2V0IHRoZSBTb3J0QnkgQ2xhc3MKICAgIG15ICRTb3J0Q2xhc3M7CgogICAgIyB0aGlzIHNldHMgdGhlIG9wcG9zaXQgdG8gdGhlIE9yZGVyQnkgcGFyYW1ldGVyCiAgICBpZiAoICRTZWxmLT57T3JkZXJCeX0gZXEgJ0Rvd24nICkgewogICAgICAgICRTb3J0Q2xhc3MgPSAnU29ydEFzY2VuZGluZyc7CiAgICB9CiAgICBlbHNpZiAoICRTZWxmLT57T3JkZXJCeX0gZXEgJ1VwJyApIHsKICAgICAgICAkU29ydENsYXNzID0gJ1NvcnREZXNjZW5kaW5nJzsKICAgIH0KCiAgICAjIHNldCB0aGUgU29ydEJ5IENsYXNzIHRvIHRoZSBjb3JyZWN0IGZpZWxkCiAgICBteSAlQ1NTU29ydDsKICAgIG15ICRTb3J0QnkgPSAkU2VsZi0+e1NvcnRCeX0gLiAnU29ydCc7CiAgICAkQ1NTU29ydHskU29ydEJ5fSA9ICRTb3J0Q2xhc3M7CgogICAgbXkgJU5ld09yZGVyID0gKAogICAgICAgIERvd24gPT4gJ1VwJywKICAgICAgICBVcCAgID0+ICdEb3duJywKICAgICk7CgogICAgIyBzaG93IHRoZSBGQVEgYXJ0aWNsZSBsaXN0CiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0ZBUUl0ZW1MaXN0JywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgJUNTU1NvcnQsCiAgICAgICAgICAgIE9yZGVyID0+ICROZXdPcmRlcnsgJFNlbGYtPntPcmRlckJ5fSB9LAogICAgICAgIH0sCiAgICApOwoKICAgICMgc2hvdyBsYW5ndWFnZSBoZWFkZXIKICAgIGlmICggJFNlbGYtPntNdWx0aUxhbmd1YWdlfSApIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdIZWFkZXJMYW5ndWFnZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgICAgICVDU1NTb3J0LAogICAgICAgICAgICAgICAgT3JkZXIgPT4gJE5ld09yZGVyeyAkU2VsZi0+e09yZGVyQnl9IH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkQ291bnRlciA9IDA7CiAgICBpZiAoQFZpZXdhYmxlRkFRSURzKSB7CgogICAgICAgICMgY3JlYXRlIGJhY2sgbGluayBmb3IgRkFRIFpvb20gc2NyZWVuCiAgICAgICAgbXkgJFpvb21CYWNrTGluayA9ICJBY3Rpb249UHVibGljRkFRRXhwbG9yZXI7Q2F0ZWdvcnlJRD0kQ2F0ZWdvcnlJRDsiCiAgICAgICAgICAgIC4gIlNvcnRCeT0kU2VsZi0+e1NvcnRCeX07T3JkZXI9JFNlbGYtPntPcmRlckJ5fTtTdGFydEhpdD0kU2VsZi0+e1N0YXJ0SGl0fSI7CgogICAgICAgICMgZW5jb2RlIGJhY2sgbGluayB0byBCYXNlNjQgZm9yIGVhc3kgSFRNTCB0cmFuc3BvcnQKICAgICAgICAkWm9vbUJhY2tMaW5rID0gTUlNRTo6QmFzZTY0OjplbmNvZGVfYmFzZTY0KCRab29tQmFja0xpbmspOwoKICAgICAgICBmb3IgbXkgJEZBUUlEIChAVmlld2FibGVGQVFJRHMpIHsKCiAgICAgICAgICAgICRDb3VudGVyKys7CgogICAgICAgICAgICAjIGJ1aWxkIHNlYXJjaCByZXN1bHQKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJENvdW50ZXIgPj0gJFNlbGYtPntTdGFydEhpdH0KICAgICAgICAgICAgICAgICYmICRDb3VudGVyIDwgKCAkU2VsZi0+e1NlYXJjaFBhZ2VTaG93bn0gKyAkU2VsZi0+e1N0YXJ0SGl0fSApCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAjIGdldCBGQVEgZGF0YSBkZXRhaWxzCiAgICAgICAgICAgICAgICBteSAlRkFRRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRR2V0KAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJEZBUUlELAogICAgICAgICAgICAgICAgICAgIEl0ZW1GaWVsZHMgPT4gMCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBhZGQgYmxvY2tzIHRvIHRlbXBsYXRlCiAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICBab29tQmFja0xpbmsgPT4gJFpvb21CYWNrTGluaywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGFkZCBsYW5ndWFnZSBkYXRhCiAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkTGFuZ3VhZ2UnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBvdGhlcndpc2UgYSBubyBkYXRhIGZvdW5kIG1lc3NhZ2UgaXMgZGlzcGxheWVkCiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdOb0ZBUURhdGFGb3VuZE1zZycsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkTGluayA9ICdTb3J0Qnk9JyAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua0VuY29kZSggJFNlbGYtPntTb3J0Qnl9ICkgLiAnOyc7CiAgICAkTGluayAuPSAnT3JkZXI9JyAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua0VuY29kZSggJFNlbGYtPntPcmRlckJ5fSApIC4gJzsnOwoKICAgICMgYnVpbGQgc2VhcmNoIG5hdmlnYXRpb24gYmFyCiAgICBteSAlUGFnZU5hdiA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+UGFnZU5hdkJhcigKICAgICAgICBMaW1pdCAgICAgPT4gJFNlbGYtPntTZWFyY2hMaW1pdH0sCiAgICAgICAgU3RhcnRIaXQgID0+ICRTZWxmLT57U3RhcnRIaXR9LAogICAgICAgIFBhZ2VTaG93biA9PiAkU2VsZi0+e1NlYXJjaFBhZ2VTaG93bn0sCiAgICAgICAgQWxsSGl0cyAgID0+ICRDb3VudGVyLAogICAgICAgIEFjdGlvbiAgICA9PiAiQWN0aW9uPVB1YmxpY0ZBUUV4cGxvcmVyO0NhdGVnb3J5SUQ9JENhdGVnb3J5SUQiLAogICAgICAgIExpbmsgICAgICA9PiAkTGluaywKICAgICAgICBJRFByZWZpeCAgPT4gIlB1YmxpY0ZBUUV4cGxvcmVyIiwKICAgICk7CgogICAgIyBzaG93IGZvb3RlciBmaWx0ZXIgLSBzaG93IG9ubHkgaWYgbW9yZSB0aGUgb25lIHBhZ2UgaXMgYXZhaWxhYmxlCiAgICBpZiAoIGRlZmluZWQgJFBhZ2VOYXZ7VG90YWxIaXRzfSAmJiAoICRQYWdlTmF2e1RvdGFsSGl0c30gPiAkU2VsZi0+e1NlYXJjaFBhZ2VTaG93bn0gKSApIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdQYWdpbmF0aW9uJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAlUGFnZU5hdiwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgICMgc2hvdyBRdWlja1NlYXJjaAogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GQVFTaG93UXVpY2tTZWFyY2goCiAgICAgICAgTW9kZSAgICAgICAgICAgID0+ICdQdWJsaWMnLAogICAgICAgIEludGVyZmFjZSAgICAgICA9PiAkU2VsZi0+e0ludGVyZmFjZX0sCiAgICAgICAgSW50ZXJmYWNlU3RhdGVzID0+ICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSwKICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIHNob3cgbGFzdCBhZGRlZCBhbmQgbGFzdCB1cGRhdGVkIGFydGljbGVzCiAgICBmb3IgbXkgJFR5cGUgKHF3KExhc3RDcmVhdGUgTGFzdENoYW5nZSkpIHsKCiAgICAgICAgbXkgJFNob3dPayA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RkFRU2hvd0xhdGVzdE5ld3NCb3goCiAgICAgICAgICAgIEZBUU9iamVjdCAgICAgICA9PiAkU2VsZi0+e0ZBUU9iamVjdH0sCiAgICAgICAgICAgIFR5cGUgICAgICAgICAgICA9PiAkVHlwZSwKICAgICAgICAgICAgTW9kZSAgICAgICAgICAgID0+ICdQdWJsaWMnLAogICAgICAgICAgICBDYXRlZ29yeUlEICAgICAgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIEludGVyZmFjZSAgICAgICA9PiAkU2VsZi0+e0ludGVyZmFjZX0sCiAgICAgICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBlcnJvcgogICAgICAgIGlmICggISRTaG93T2sgKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKCk7CiAgICAgICAgfQogICAgfQoKICAgICMgc2hvdyB0b3AgdGVuIGFydGljbGVzCiAgICBteSAkU2hvd09rID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GQVFTaG93VG9wMTAoCiAgICAgICAgRkFRT2JqZWN0ICAgICAgID0+ICRTZWxmLT57RkFRT2JqZWN0fSwKICAgICAgICBNb2RlICAgICAgICAgICAgPT4gJ1B1YmxpYycsCiAgICAgICAgQ2F0ZWdvcnlJRCAgICAgID0+ICRDYXRlZ29yeUlELAogICAgICAgIEludGVyZmFjZSAgICAgICA9PiAkU2VsZi0+e0ludGVyZmFjZX0sCiAgICAgICAgSW50ZXJmYWNlU3RhdGVzID0+ICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSwKICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGNoZWNrIGVycm9yCiAgICBpZiAoICEkU2hvd09rICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKCk7CiAgICB9CgogICAgIyBzdGFydCB0ZW1wbGF0ZSBvdXRwdXQKICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdQdWJsaWNGQVFFeHBsb3JlcicsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICAlQ2F0ZWdvcnlEYXRhLAogICAgICAgIH0sCiAgICApOwoKICAgICMgYWRkIGZvb3RlcgogICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkN1c3RvbWVyRm9vdGVyKCk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCjE7Cg==
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUVByaW50LnBtIC0gcHJpbnQgbGF5b3V0IGZvciBhZ2VudCBpbnRlcmZhY2UKIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxMyBPVFJTIEFHLCBodHRwOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6UHVibGljRkFRUHJpbnQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OkhUTUxVdGlsczsKdXNlIEtlcm5lbDo6U3lzdGVtOjpQREY7CnVzZSBLZXJuZWw6OlN5c3RlbTo6RkFROwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE5lZWRlZCAoCiAgICAgICAgcXcoUGFyYW1PYmplY3QgREJPYmplY3QgTGF5b3V0T2JqZWN0IExvZ09iamVjdCBDb25maWdPYmplY3QgTWFpbk9iamVjdCkKICAgICAgICApCiAgICB7CiAgICAgICAgaWYgKCAhJFNlbGYtPnskTmVlZGVkfSApIHsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GYXRhbEVycm9yKCBNZXNzYWdlID0+ICJHb3Qgbm8gJE5lZWRlZCEiICk7CiAgICAgICAgfQogICAgfQoKICAgICMgc2V0IFVzZXJJRCB0byByb290IGJlY2F1c2UgaW4gcHVibGljIGludGVyZmFjZSB0aGVyZSBpcyBubyB1c2VyCiAgICAkU2VsZi0+e1VzZXJJRH0gPSAxOwoKICAgICMgY3JlYXRlIGFkaXRpb25hbCBvYmplY3RzCiAgICAkU2VsZi0+e0hUTUxVdGlsc09iamVjdH0gPSBLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzLT5uZXcoJVBhcmFtKTsKICAgICRTZWxmLT57UERGT2JqZWN0fSAgICAgICA9IEtlcm5lbDo6U3lzdGVtOjpQREYtPm5ldyglUGFyYW0pOwogICAgJFNlbGYtPntGQVFPYmplY3R9ICAgICAgID0gS2VybmVsOjpTeXN0ZW06OkZBUS0+bmV3KCVQYXJhbSk7CgogICAgIyBzZXQgZGVmYXVsdCBpbnRlcmZhY2Ugc2V0dGluZ3MKICAgICRTZWxmLT57SW50ZXJmYWNlfSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVUeXBlR2V0KAogICAgICAgIE5hbWUgICA9PiAncHVibGljJywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVUeXBlTGlzdCgKICAgICAgICBUeXBlcyAgPT4gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6UHVibGljOjpTdGF0ZVR5cGVzJyksCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBnZXQgZGVmYXVsdCBvcHRpb25zCiAgICAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6TXVsdGlMYW5ndWFnZScpOwogICAgJFNlbGYtPntWb3Rpbmd9ICAgICAgICA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OlZvdGluZycpOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRPdXRwdXQ7CgogICAgIyBnZXQgcGFyYW1zCiAgICBteSAlR2V0UGFyYW07CiAgICAkR2V0UGFyYW17SXRlbUlEfSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0l0ZW1JRCcgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJEdldFBhcmFte0l0ZW1JRH0gKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Q3VzdG9tZXJGYXRhbEVycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+ICdObyBJdGVtSUQgaXMgZ2l2ZW4hJywKICAgICAgICAgICAgQ29tbWVudCA9PiAnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluLicsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBGQVEgaXRlbSBkYXRhCiAgICBteSAlRkFRRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRR2V0KAogICAgICAgIEl0ZW1JRCAgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgSXRlbUZpZWxkcyA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICggISVGQVFEYXRhICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkN1c3RvbWVyRmF0YWxFcnJvcigpOwogICAgfQoKICAgICMgc2hvdyBubyBwZXJtaXNzaW9uIGVycm9yCiAgICBpZiAoCiAgICAgICAgISRGQVFEYXRhe0FwcHJvdmVkfQogICAgICAgIHx8ICEkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30tPnsgJEZBUURhdGF7U3RhdGVUeXBlSUR9IH0KICAgICAgICApCiAgICB7CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Q3VzdG9tZXJOb1Blcm1pc3Npb24oIFdpdGhIZWFkZXIgPT4gJ3llcycgKTsKICAgIH0KCiAgICAjIHByZXBhcmUgZmllbGRzIGRhdGEKICAgIEZJRUxEOgogICAgZm9yIG15ICRGaWVsZCAocXcoRmllbGQxIEZpZWxkMiBGaWVsZDMgRmllbGQ0IEZpZWxkNSBGaWVsZDYpKSB7CiAgICAgICAgbmV4dCBGSUVMRCBpZiAhJEZBUURhdGF7JEZpZWxkfTsKCiAgICAgICAgIyByZXdyaXRlIGxpbmtzIHRvIGVtYmVkZGVkIGltYWdlcyBmb3IgY3VzdG9tZXIgYW5kIHB1YmxpYyBpbnRlcmZhY2UKICAgICAgICBpZiAoICRTZWxmLT57SW50ZXJmYWNlfXtOYW1lfSBlcSAncHVibGljJyApIHsKICAgICAgICAgICAgJEZBUURhdGF7JEZpZWxkfQogICAgICAgICAgICAgICAgPX4gc3sgaW5kZXhbLl1wbCBbP10gQWN0aW9uPUFnZW50RkFRWm9vbSB9e3B1YmxpYy5wbD9BY3Rpb249UHVibGljRkFRWm9vbX1neG1zOwogICAgICAgIH0KCiAgICAgICAgIyBubyBxdW90aW5nIGlmIGh0bWwgdmlldyBpcyBlbmFibGVkCiAgICAgICAgbmV4dCBGSUVMRCBpZiAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpJdGVtOjpIVE1MJyk7CgogICAgICAgICMgaHRtbCBxdW90aW5nCiAgICAgICAgJEZBUURhdGF7JEZpZWxkfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QXNjaWkySHRtbCgKICAgICAgICAgICAgTmV3TGluZSAgICAgICAgPT4gMCwKICAgICAgICAgICAgVGV4dCAgICAgICAgICAgPT4gJEZBUURhdGF7JEZpZWxkfSwKICAgICAgICAgICAgVk1heCAgICAgICAgICAgPT4gNTAwMCwKICAgICAgICAgICAgSFRNTFJlc3VsdE1vZGUgPT4gMSwKICAgICAgICAgICAgTGlua0ZlYXR1cmUgICAgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2VuZXJhdGUgcGRmIG91dHB1dAogICAgaWYgKCAkU2VsZi0+e1BERk9iamVjdH0gKSB7CiAgICAgICAgbXkgJFRpbWUgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCggVGVtcGxhdGUgPT4gJyRFbnZ7IlRpbWUifScgKTsKICAgICAgICBteSAkVXJsID0gJyAnOwogICAgICAgIGlmICggJEVOVntSRVFVRVNUX1VSSX0gKSB7CiAgICAgICAgICAgICRVcmwgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnSHR0cFR5cGUnKSAuICc6Ly8nCiAgICAgICAgICAgICAgICAuICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGUUROJykKICAgICAgICAgICAgICAgIC4gJEVOVntSRVFVRVNUX1VSSX07CiAgICAgICAgfQogICAgICAgIG15ICVQYWdlOwoKICAgICAgICAjIGdldCBtYXhpbXVtIG51bWJlciBvZiBwYWdlcwogICAgICAgICRQYWdle01heFBhZ2VzfSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdQREY6Ok1heFBhZ2VzJyk7CiAgICAgICAgaWYgKCAhJFBhZ2V7TWF4UGFnZXN9IHx8ICRQYWdle01heFBhZ2VzfSA8IDEgfHwgJFBhZ2V7TWF4UGFnZXN9ID4gMTAwMCApIHsKICAgICAgICAgICAgJFBhZ2V7TWF4UGFnZXN9ID0gMTAwOwogICAgICAgIH0KICAgICAgICBteSAkSGVhZGVyUmlnaHQgID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6RkFRSG9vaycpIC4gJEZBUURhdGF7TnVtYmVyfTsKICAgICAgICBteSAkSGVhZGxpbmVMZWZ0ID0gJEhlYWRlclJpZ2h0OwogICAgICAgIG15ICRUaXRsZSAgICAgICAgPSAkSGVhZGVyUmlnaHQ7CiAgICAgICAgaWYgKCAkRkFRRGF0YXtUaXRsZX0gKSB7CiAgICAgICAgICAgICRIZWFkbGluZUxlZnQgPSAkRkFRRGF0YXtUaXRsZX07CiAgICAgICAgICAgICRUaXRsZSAuPSAnIC8gJyAuICRGQVFEYXRhe1RpdGxlfTsKICAgICAgICB9CgogICAgICAgICRQYWdle01hcmdpblRvcH0gICAgID0gMzA7CiAgICAgICAgJFBhZ2V7TWFyZ2luUmlnaHR9ICAgPSA0MDsKICAgICAgICAkUGFnZXtNYXJnaW5Cb3R0b219ICA9IDQwOwogICAgICAgICRQYWdle01hcmdpbkxlZnR9ICAgID0gNDA7CiAgICAgICAgJFBhZ2V7SGVhZGVyUmlnaHR9ICAgPSAkSGVhZGVyUmlnaHQ7CiAgICAgICAgJFBhZ2V7SGVhZGxpbmVMZWZ0fSAgPSAkSGVhZGxpbmVMZWZ0OwogICAgICAgICRQYWdle0hlYWRsaW5lUmlnaHR9ID0gJFRpbWU7CiAgICAgICAgJFBhZ2V7Rm9vdGVyTGVmdH0gICAgPSAkVXJsOwogICAgICAgICRQYWdle1BhZ2VUZXh0fSAgICAgID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ1BhZ2UnKTsKICAgICAgICAkUGFnZXtQYWdlQ291bnR9ICAgICA9IDE7CgogICAgICAgICMgY3JlYXRlIG5ldyBwZGYgZG9jdW1lbnQKICAgICAgICAkU2VsZi0+e1BERk9iamVjdH0tPkRvY3VtZW50TmV3KAogICAgICAgICAgICBUaXRsZSAgPT4gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ1Byb2R1Y3QnKSAuICc6ICcgLiAkVGl0bGUsCiAgICAgICAgICAgIEVuY29kZSA9PiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntVc2VyQ2hhcnNldH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgZmlyc3QgcGRmIHBhZ2UKICAgICAgICAkU2VsZi0+e1BERk9iamVjdH0tPlBhZ2VOZXcoCiAgICAgICAgICAgICVQYWdlLCBGb290ZXJSaWdodCA9PiAkUGFnZXtQYWdlVGV4dH0gLiAnICcgLiAkUGFnZXtQYWdlQ291bnR9LAogICAgICAgICk7CiAgICAgICAgJFBhZ2V7UGFnZUNvdW50fSsrOwoKICAgICAgICAjIHR5cGUgb2YgcHJpbnQgdGFnCiAgICAgICAgbXkgJFByaW50VGFnID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ0ZBUSBBcnRpY2xlIFByaW50Jyk7CgogICAgICAgICMgb3V0cHV0IGhlYWRsaW5lCiAgICAgICAgJFNlbGYtPntQREZPYmplY3R9LT5UZXh0KAogICAgICAgICAgICBUZXh0ICAgICA9PiAkUHJpbnRUYWcsCiAgICAgICAgICAgIEhlaWdodCAgID0+IDksCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdDdXQnLAogICAgICAgICAgICBGb250ICAgICA9PiAnUHJvcG9ydGlvbmFsQm9sZCcsCiAgICAgICAgICAgIEFsaWduICAgID0+ICdyaWdodCcsCiAgICAgICAgICAgIEZvbnRTaXplID0+IDksCiAgICAgICAgICAgIENvbG9yICAgID0+ICcjNjY2NjY2JywKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+e1BERk9iamVjdH0tPlBvc2l0aW9uU2V0KAogICAgICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICAgICAgWSAgICA9PiAtNiwKICAgICAgICApOwoKICAgICAgICAjIG91dHB1dCBmYXEgaW5mb3JtYXRpb24KICAgICAgICAkU2VsZi0+X1BERk91dHB1dEZBUUhlYWRlckluZm8oCiAgICAgICAgICAgIFBhZ2VEYXRhID0+IFwlUGFnZSwKICAgICAgICAgICAgRkFRRGF0YSAgPT4gXCVGQVFEYXRhLAogICAgICAgICk7CgogICAgICAgIGlmICggJEZBUURhdGF7S2V5d29yZHN9ICkgewogICAgICAgICAgICAkU2VsZi0+X1BERk91dHB1dEtleXdvcmRzKAogICAgICAgICAgICAgICAgUGFnZURhdGEgPT4gXCVQYWdlLAogICAgICAgICAgICAgICAgRkFRRGF0YSAgPT4gXCVGQVFEYXRhLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPl9QREZPdXB1dEZBUUNvbnRlbnQoCiAgICAgICAgICAgIFBhZ2VEYXRhICAgICAgICA9PiBcJVBhZ2UsCiAgICAgICAgICAgIEZBUURhdGEgICAgICAgICA9PiBcJUZBUURhdGEsCiAgICAgICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30sCiAgICAgICAgKTsKCiAgICAgICAgIyByZXR1cm4gdGhlIHBkZiBkb2N1bWVudAogICAgICAgIG15ICRGaWxlbmFtZSA9ICdGQVFfJyAuICRGQVFEYXRhe051bWJlcn07CiAgICAgICAgbXkgKCAkcywgJG0sICRoLCAkRCwgJE0sICRZICkgPSAkU2VsZi0+e1RpbWVPYmplY3R9LT5TeXN0ZW1UaW1lMkRhdGUoCiAgICAgICAgICAgIFN5c3RlbVRpbWUgPT4gJFNlbGYtPntUaW1lT2JqZWN0fS0+U3lzdGVtVGltZSgpLAogICAgICAgICk7CiAgICAgICAgJE0gPSBzcHJpbnRmKCAiJTAyZCIsICRNICk7CiAgICAgICAgJEQgPSBzcHJpbnRmKCAiJTAyZCIsICREICk7CiAgICAgICAgJGggPSBzcHJpbnRmKCAiJTAyZCIsICRoICk7CiAgICAgICAgJG0gPSBzcHJpbnRmKCAiJTAyZCIsICRtICk7CiAgICAgICAgbXkgJFBERlN0cmluZyA9ICRTZWxmLT57UERGT2JqZWN0fS0+RG9jdW1lbnRPdXRwdXQoKTsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5BdHRhY2htZW50KAogICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAkRmlsZW5hbWUgLiAiXyIgLiAiJFktJE0tJEQiIC4gIl8iIC4gIiRoLSRtLnBkZiIsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICJhcHBsaWNhdGlvbi9wZGYiLAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkUERGU3RyaW5nLAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnYXR0YWNobWVudCcsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdlbmVyYXRlIGh0bWwgb3V0cHV0CiAgICBlbHNlIHsKCiAgICAgICAgIyBvdXRwdXQgaGVhZGVyCiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPlByaW50SGVhZGVyKCBWYWx1ZSA9PiAkRkFRRGF0YXtOdW1iZXJ9ICk7CgogICAgICAgICMgc2hvdyBGQVEgQ29udGVudAogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RkFRQ29udGVudFNob3coCiAgICAgICAgICAgIEZBUU9iamVjdCAgICAgICA9PiAkU2VsZi0+e0ZBUU9iamVjdH0sCiAgICAgICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30sCiAgICAgICAgICAgIEZBUURhdGEgICAgICAgICA9PiB7JUZBUURhdGF9LAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgc2hvdyBmYXEKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT5fSFRNTE1hc2soCiAgICAgICAgICAgIEZBUUlEID0+ICRHZXRQYXJhbXtGQVFJRH0sCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgJUZBUURhdGEsCiAgICAgICAgKTsKCiAgICAgICAgIyBhZGQgZm9vdGVyCiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPlByaW50Rm9vdGVyKCk7CgogICAgICAgICMgcmV0dXJuIG91dHB1dAogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQp9CgpzdWIgX1BERk91dHB1dEZBUUhlYWRlckluZm8gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KFBhZ2VEYXRhIEZBUURhdGEpKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCggJFBhcmFteyROZWVkZWR9ICkgKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKCBQcmlvcml0eSA9PiAnZXJyb3InLCBNZXNzYWdlID0+ICJOZWVkICROZWVkZWQhIiApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQogICAgbXkgJUZBUURhdGEgPSAleyAkUGFyYW17RkFRRGF0YX0gfTsKICAgIG15ICVQYWdlICAgID0gJXsgJFBhcmFte1BhZ2VEYXRhfSB9OwoKICAgICMgY3JlYXRlIGxlZnQgdGFibGUKICAgIG15ICRUYWJsZUxlZnQgPSBbCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCgnQ2F0ZWdvcnknKSAuICc6JywKICAgICAgICAgICAgVmFsdWUgPT4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoICRGQVFEYXRhe0NhdGVnb3J5TmFtZX0gKSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ1N0YXRlJykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCAkRkFRRGF0YXtTdGF0ZX0gKSwKICAgICAgICB9LAogICAgXTsKCiAgICAjIGxhbmd1YWdlIHJvdywgZmVhdHVyZSBpcyBlbmFibGVkCiAgICBpZiAoICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gKSB7CiAgICAgICAgbXkgJFJvdyA9IHsKICAgICAgICAgICAgS2V5ICAgPT4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ0xhbmd1YWdlJykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCAkRkFRRGF0YXtMYW5ndWFnZX0gKSwKICAgICAgICB9OwogICAgICAgIHB1c2ggQHskVGFibGVMZWZ0fSwgJFJvdzsKICAgIH0KCiAgICAjIGNyZWF0ZSByaWdodCB0YWJsZQogICAgbXkgJFRhYmxlUmlnaHQ7CgogICAgIyB2b3Rpbmcgcm93cywgZmVhdHJlIGlzIGVuYWJsZWQKICAgIGlmICggJFNlbGYtPntWb3Rpbmd9ICkgewogICAgICAgICRUYWJsZVJpZ2h0ID0gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBLZXkgICA9PiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCgnVm90ZXMnKSAuICc6JywKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRGQVFEYXRhe1ZvdGVzfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ1Jlc3VsdCcpIC4gJzonLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJEZBUURhdGF7Vm90ZVJlc3VsdH0gLiAiICUiLAogICAgICAgICAgICB9LAogICAgICAgIF07CiAgICB9CgogICAgIyBsYXN0IHVwZGF0ZSByb3cKICAgIHB1c2ggQHskVGFibGVSaWdodH0sIHsKICAgICAgICBLZXkgICA9PiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCgnTGFzdCB1cGRhdGUnKSAuICc6JywKICAgICAgICBWYWx1ZSA9PiAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGUgPT4gJyRUaW1lTG9uZ3siJERhdGF7IkNoYW5nZWQifSJ9JywKICAgICAgICAgICAgRGF0YSAgICAgPT4gXCVGQVFEYXRhLAogICAgICAgICksCiAgICB9OwoKICAgIG15ICRSb3dzID0gQHskVGFibGVMZWZ0fTsKICAgIGlmICggQHskVGFibGVSaWdodH0gPiAkUm93cyApIHsKICAgICAgICAkUm93cyA9IEB7JFRhYmxlUmlnaHR9OwogICAgfQoKICAgIG15ICVUYWJsZVBhcmFtOwogICAgZm9yIG15ICRSb3cgKCAxIC4uICRSb3dzICkgewogICAgICAgICRSb3ctLTsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMF17Q29udGVudH0gICAgICAgICA9ICRUYWJsZUxlZnQtPlskUm93XS0+e0tleX07CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0ZvbnR9ICAgICAgICAgICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzFde0NvbnRlbnR9ICAgICAgICAgPSAkVGFibGVMZWZ0LT5bJFJvd10tPntWYWx1ZX07CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzJde0NvbnRlbnR9ICAgICAgICAgPSAnICc7CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzJde0JhY2tncm91bmRDb2xvcn0gPSAnI0ZGRkZGRic7CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzNde0NvbnRlbnR9ICAgICAgICAgPSAkVGFibGVSaWdodC0+WyRSb3ddLT57S2V5fTsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bM117Rm9udH0gICAgICAgICAgICA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bNF17Q29udGVudH0gICAgICAgICA9ICRUYWJsZVJpZ2h0LT5bJFJvd10tPntWYWx1ZX07CiAgICB9CgogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMF17V2lkdGh9ID0gODA7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVsxXXtXaWR0aH0gPSAxNzAuNTsKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzJde1dpZHRofSA9IDQ7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVszXXtXaWR0aH0gPSA4MDsKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzRde1dpZHRofSA9IDE3MC41OwoKICAgICRUYWJsZVBhcmFte1R5cGV9ICAgICAgICAgICAgICAgID0gJ0N1dCc7CiAgICAkVGFibGVQYXJhbXtCb3JkZXJ9ICAgICAgICAgICAgICA9IDA7CiAgICAkVGFibGVQYXJhbXtGb250U2l6ZX0gICAgICAgICAgICA9IDY7CiAgICAkVGFibGVQYXJhbXtCYWNrZ3JvdW5kQ29sb3JFdmVufSA9ICcjQUFBQUFBJzsKICAgICRUYWJsZVBhcmFte0JhY2tncm91bmRDb2xvck9kZH0gID0gJyNEREREREQnOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ30gICAgICAgICAgICAgPSAxOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ1RvcH0gICAgICAgICAgPSAzOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ0JvdHRvbX0gICAgICAgPSAzOwoKICAgICMgb3V0cHV0IHRhYmxlCiAgICBmb3IgKCAkUGFnZXtQYWdlQ291bnR9IC4uICRQYWdle01heFBhZ2VzfSApIHsKCiAgICAgICAgIyBvdXRwdXQgdGFibGUgKG9yIGEgZnJhZ21lbnQgb2YgaXQpCiAgICAgICAgJVRhYmxlUGFyYW0gPSAkU2VsZi0+e1BERk9iamVjdH0tPlRhYmxlKCAlVGFibGVQYXJhbSwgKTsKCiAgICAgICAgIyBzdG9wIG91dHB1dCBvciBvdXRwdXQgbmV4dCBwYWdlCiAgICAgICAgaWYgKCAkVGFibGVQYXJhbXtTdGF0ZX0gKSB7CiAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VsZi0+e1BERk9iamVjdH0tPlBhZ2VOZXcoCiAgICAgICAgICAgICAgICAlUGFnZSwgRm9vdGVyUmlnaHQgPT4gJFBhZ2V7UGFnZVRleHR9IC4gJyAnIC4gJFBhZ2V7UGFnZUNvdW50fSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFBhZ2V7UGFnZUNvdW50fSsrOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAxOwp9CgpzdWIgX1BERk91dHB1dEtleXdvcmRzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhQYWdlRGF0YSBGQVFEYXRhKSkgewogICAgICAgIGlmICggIWRlZmluZWQoICRQYXJhbXskTmVlZGVkfSApICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZyggUHJpb3JpdHkgPT4gJ2Vycm9yJywgTWVzc2FnZSA9PiAiTmVlZCAkTmVlZGVkISIgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KICAgIG15ICVGQVFEYXRhID0gJXsgJFBhcmFte0ZBUURhdGF9IH07CiAgICBteSAlUGFnZSAgICA9ICV7ICRQYXJhbXtQYWdlRGF0YX0gfTsKICAgIG15ICVUYWJsZVBhcmFtOwoKICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVswXVswXXtDb250ZW50fSA9ICRGQVFEYXRhe0tleXdvcmRzfSB8fCAnJzsKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzBde1dpZHRofSA9IDUxMTsKCiAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICRTZWxmLT57UERGT2JqZWN0fS0+UG9zaXRpb25TZXQoCiAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgWSAgICA9PiAtMTUsCiAgICApOwoKICAgICMgb3V0cHV0IGhlYWRsaW5lCiAgICAkU2VsZi0+e1BERk9iamVjdH0tPlRleHQoCiAgICAgICAgVGV4dCAgICAgPT4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ0tleXdvcmRzJyksCiAgICAgICAgSGVpZ2h0ICAgPT4gNywKICAgICAgICBUeXBlICAgICA9PiAnQ3V0JywKICAgICAgICBGb250ICAgICA9PiAnUHJvcG9ydGlvbmFsQm9sZEl0YWxpYycsCiAgICAgICAgRm9udFNpemUgPT4gNywKICAgICAgICBDb2xvciAgICA9PiAnIzY2NjY2NicsCiAgICApOwoKICAgICMgc2V0IG5ldyBwb3NpdGlvbgogICAgJFNlbGYtPntQREZPYmplY3R9LT5Qb3NpdGlvblNldCgKICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICBZICAgID0+IC00LAogICAgKTsKCiAgICAjIHRhYmxlIHBhcmFtcwogICAgJFRhYmxlUGFyYW17VHlwZX0gICAgICAgICAgICA9ICdDdXQnOwogICAgJFRhYmxlUGFyYW17Qm9yZGVyfSAgICAgICAgICA9IDA7CiAgICAkVGFibGVQYXJhbXtGb250U2l6ZX0gICAgICAgID0gNjsKICAgICRUYWJsZVBhcmFte0JhY2tncm91bmRDb2xvcn0gPSAnI0RERERERCc7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nfSAgICAgICAgID0gMTsKICAgICRUYWJsZVBhcmFte1BhZGRpbmdUb3B9ICAgICAgPSAzOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ0JvdHRvbX0gICA9IDM7CgogICAgIyBvdXRwdXQgdGFibGUKICAgIGZvciAoICRQYWdle1BhZ2VDb3VudH0gLi4gJFBhZ2V7TWF4UGFnZXN9ICkgewoKICAgICAgICAjIG91dHB1dCB0YWJsZSAob3IgYSBmcmFnbWVudCBvZiBpdCkKICAgICAgICAlVGFibGVQYXJhbSA9ICRTZWxmLT57UERGT2JqZWN0fS0+VGFibGUoICVUYWJsZVBhcmFtLCApOwoKICAgICAgICAjIHN0b3Agb3V0cHV0IG9yIG91dHB1dCBuZXh0IHBhZ2UKICAgICAgICBpZiAoICRUYWJsZVBhcmFte1N0YXRlfSApIHsKICAgICAgICAgICAgbGFzdDsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWxmLT57UERGT2JqZWN0fS0+UGFnZU5ldygKICAgICAgICAgICAgICAgICVQYWdlLCBGb290ZXJSaWdodCA9PiAkUGFnZXtQYWdlVGV4dH0gLiAnICcgLiAkUGFnZXtQYWdlQ291bnR9LAogICAgICAgICAgICApOwogICAgICAgICAgICAkUGFnZXtQYWdlQ291bnR9Kys7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDE7Cn0KCnN1YiBfUERGT3VwdXRGQVFDb250ZW50IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBwYXJhbWV0ZXJzCiAgICBmb3IgbXkgJFBhcmFtTmFtZSAocXcoUGFnZURhdGEgRkFRRGF0YSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JFBhcmFtTmFtZX0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRQYXJhbU5hbWUhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlRkFRRGF0YSA9ICV7ICRQYXJhbXtGQVFEYXRhfSB9OwogICAgbXkgJVBhZ2UgICAgPSAleyAkUGFyYW17UGFnZURhdGF9IH07CgogICAgIyBnZXQgdGhlIGNvbmZpZyBvZiBGQVEgZmllbGRzIHRoYXQgc2hvdWxkIGJlIHNob3duCiAgICBteSAlRmllbGRzOwogICAgRklFTEQ6CiAgICBmb3IgbXkgJE51bWJlciAoIDEgLi4gNiApIHsKCiAgICAgICAgIyBnZXQgY29uZmlnIG9mIEZBUSBmaWVsZAogICAgICAgIG15ICRDb25maWcgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCggJ0ZBUTo6SXRlbTo6RmllbGQnIC4gJE51bWJlciApOwoKICAgICAgICAjIHNraXAgb3ZlciBub3Qgc2hvd24gZmllbGRzCiAgICAgICAgbmV4dCBGSUVMRCBpZiAhJENvbmZpZy0+e1Nob3d9OwoKICAgICAgICAjIHN0b3JlIG9ubHkgdGhlIGNvbmZpZyBvZiBmaWVsZHMgdGhhdCBzaG91bGQgYmUgc2hvd24KICAgICAgICAkRmllbGRzeyAiRmllbGQiIC4gJE51bWJlciB9ID0gJENvbmZpZzsKICAgIH0KCiAgICAjIHNvcnQgc2hvd24gZmllbGRzIGJ5IHByaW9yaXR5CiAgICBGSUVMRDoKICAgIGZvciBteSAkRmllbGQgKCBzb3J0IHsgJEZpZWxkc3skYX0tPntQcmlvfSA8PT4gJEZpZWxkc3skYn0tPntQcmlvfSB9IGtleXMgJUZpZWxkcyApIHsKCiAgICAgICAgIyBnZXQgdGhlIHN0YXRlIHR5cGUgZGF0YSBvZiB0aGlzIGZpZWxkCiAgICAgICAgbXkgJFN0YXRlVHlwZURhdGEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUdldCgKICAgICAgICAgICAgTmFtZSAgID0+ICRGaWVsZHN7JEZpZWxkfS0+e1Nob3d9LAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgZG8gbm90IHNob3cgZmllbGRzIHRoYXQgYXJlIG5vdCBhbGxvd2VkIGluIHRoZSBnaXZlbiBpbnRlcmZhY2UKICAgICAgICBuZXh0IEZJRUxEIGlmICEkUGFyYW17SW50ZXJmYWNlU3RhdGVzfS0+eyAkU3RhdGVUeXBlRGF0YS0+e1N0YXRlSUR9IH07CgogICAgICAgIG15ICVUYWJsZVBhcmFtOwoKICAgICAgICAjIGNvbnZlcnQgSFRNTCB0byBhc2NpaQogICAgICAgIG15ICRBc2NpaUZpZWxkID0gJFNlbGYtPntIVE1MVXRpbHNPYmplY3R9LT5Ub0FzY2lpKCBTdHJpbmcgPT4gJEZBUURhdGF7JEZpZWxkfSApOwoKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bMF1bMF17Q29udGVudH0gPSAkQXNjaWlGaWVsZCB8fCAnJzsKICAgICAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVswXXtXaWR0aH0gPSA1MTE7CgogICAgICAgICMgc2V0IG5ldyBwb3NpdGlvbgogICAgICAgICRTZWxmLT57UERGT2JqZWN0fS0+UG9zaXRpb25TZXQoCiAgICAgICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgICAgICBZICAgID0+IC0xNSwKICAgICAgICApOwoKICAgICAgICAjIHRyYW5zbGF0ZSB0aGUgZmllbGQgbmFtZSBhbmQgc3RhdGUKICAgICAgICBteSAkRmllbGROYW1lID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoICRGaWVsZHN7JEZpZWxkfS0+eydDYXB0aW9uJ30gKQogICAgICAgICAgICAuICcgKCcKICAgICAgICAgICAgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCggJFN0YXRlVHlwZURhdGEtPntOYW1lfSApCiAgICAgICAgICAgIC4gJyknOwoKICAgICAgICAjIG91dHB1dCBoZWFkbGluZQogICAgICAgICRTZWxmLT57UERGT2JqZWN0fS0+VGV4dCgKICAgICAgICAgICAgVGV4dCAgICAgPT4gJEZpZWxkTmFtZSwKICAgICAgICAgICAgSGVpZ2h0ICAgPT4gNywKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0N1dCcsCiAgICAgICAgICAgIEZvbnQgICAgID0+ICdQcm9wb3J0aW9uYWxCb2xkSXRhbGljJywKICAgICAgICAgICAgRm9udFNpemUgPT4gNywKICAgICAgICAgICAgQ29sb3IgICAgPT4gJyM2NjY2NjYnLAogICAgICAgICk7CgogICAgICAgICMgc2V0IG5ldyBwb3NpdGlvbgogICAgICAgICRTZWxmLT57UERGT2JqZWN0fS0+UG9zaXRpb25TZXQoCiAgICAgICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgICAgICBZICAgID0+IC00LAogICAgICAgICk7CgogICAgICAgICMgdGFibGUgcGFyYW1zCiAgICAgICAgJFRhYmxlUGFyYW17VHlwZX0gICAgICAgICAgICA9ICdDdXQnOwogICAgICAgICRUYWJsZVBhcmFte0JvcmRlcn0gICAgICAgICAgPSAwOwogICAgICAgICRUYWJsZVBhcmFte0ZvbnRTaXplfSAgICAgICAgPSA2OwogICAgICAgICRUYWJsZVBhcmFte0JhY2tncm91bmRDb2xvcn0gPSAnI0RERERERCc7CiAgICAgICAgJFRhYmxlUGFyYW17UGFkZGluZ30gICAgICAgICA9IDE7CiAgICAgICAgJFRhYmxlUGFyYW17UGFkZGluZ1RvcH0gICAgICA9IDM7CiAgICAgICAgJFRhYmxlUGFyYW17UGFkZGluZ0JvdHRvbX0gICA9IDM7CgogICAgICAgICMgb3V0cHV0IHRhYmxlCiAgICAgICAgZm9yICggJFBhZ2V7UGFnZUNvdW50fSAuLiAkUGFnZXtNYXhQYWdlc30gKSB7CgogICAgICAgICAgICAjIG91dHB1dCB0YWJsZSAob3IgYSBmcmFnbWVudCBvZiBpdCkKICAgICAgICAgICAgJVRhYmxlUGFyYW0gPSAkU2VsZi0+e1BERk9iamVjdH0tPlRhYmxlKCAlVGFibGVQYXJhbSwgKTsKCiAgICAgICAgICAgICMgc3RvcCBvdXRwdXQgb3Igb3V0cHV0IG5leHQgcGFnZQogICAgICAgICAgICBpZiAoICRUYWJsZVBhcmFte1N0YXRlfSApIHsKICAgICAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+e1BERk9iamVjdH0tPlBhZ2VOZXcoCiAgICAgICAgICAgICAgICAgICAgJVBhZ2UsIEZvb3RlclJpZ2h0ID0+ICRQYWdle1BhZ2VUZXh0fSAuICcgJyAuICRQYWdle1BhZ2VDb3VudH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJFBhZ2V7UGFnZUNvdW50fSsrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDE7Cn0KCnN1YiBfSFRNTE1hc2sgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHNob3cgTGFuZ3VhZ2UKICAgIGlmICggJFNlbGYtPntNdWx0aUxhbmd1YWdlfSApIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdMYW5ndWFnZScsCiAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICApOwogICAgfQoKICAgICMgc2hvdyByYXRpbmcKICAgIGlmICggJFNlbGYtPntWb3Rpbmd9ICkgewogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1JhdGluZycsCiAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ1B1YmxpY0ZBUVByaW50JywKICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICk7Cn0KCjE7Cg==
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUVJTUy5wbSAtIHB1YmxpYyBGQVEgZXhwbG9yZXIKIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxMyBPVFJTIEFHLCBodHRwOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6UHVibGljRkFRUlNTOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpGQVE7CnVzZSBLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzOwp1c2UgWE1MOjpSU1M6OlNpbXBsZUdlbiBxdygpOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE9iamVjdCAoCiAgICAgICAgcXcoUGFyYW1PYmplY3QgREJPYmplY3QgTGF5b3V0T2JqZWN0IExvZ09iamVjdCBDb25maWdPYmplY3QpCiAgICAgICAgKQogICAgewogICAgICAgIGlmICggISRTZWxmLT57JE9iamVjdH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RmF0YWxFcnJvciggTWVzc2FnZSA9PiAiR290IG5vICRPYmplY3QhIiApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCBVc2VySUQgdG8gcm9vdCBiZWNhdXNlIGluIHB1YmxpYyBpbnRlcmZhY2UgdGhlcmUgaXMgbm8gdXNlcgogICAgJFNlbGYtPntVc2VySUR9ID0gMTsKCiAgICAjIGNyZWF0ZSBuZWVkZWQgb2JqZWN0cwogICAgJFNlbGYtPntGQVFPYmplY3R9ICAgICAgID0gS2VybmVsOjpTeXN0ZW06OkZBUS0+bmV3KCVQYXJhbSk7CiAgICAkU2VsZi0+e0hUTUxVdGlsc09iamVjdH0gPSBLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzLT5uZXcoJVBhcmFtKTsKICAgICRTZWxmLT57UlNTT2JqZWN0fSAgICAgICA9IFhNTDo6UlNTOjpTaW1wbGVHZW4tPm5ldyggJ2h0dHA6Ly8nIC4gJEVOVntIVFRQX0hPU1R9ICk7CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgJFNlbGYtPntDb25maWd9ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoIkZBUTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgICMgc2V0IGRlZmF1bHQgaW50ZXJmYWNlIHNldHRpbmdzCiAgICAkU2VsZi0+e0ludGVyZmFjZX0gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUdldCgKICAgICAgICBOYW1lICAgPT4gJ3B1YmxpYycsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUxpc3QoCiAgICAgICAgVHlwZXMgID0+ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OlB1YmxpYzo6U3RhdGVUeXBlcycpLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IFJTUyB0eXBlCiAgICBteSAkVHlwZSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1R5cGUnICk7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRUeXBlICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+ICdObyBUeXBlIGlzIGdpdmVuIScsCiAgICAgICAgICAgIENvbW1lbnQgPT4gJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbi4nLAogICAgICAgICk7CiAgICB9CgogICAgIyBjaGVjayB0eXBlCiAgICBpZiAoICRUeXBlICF+IG17IENyZWF0ZWQgfCBDaGFuZ2VkIHwgVG9wMTAgfXhtcyApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GYXRhbEVycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+ICJUeXBlIG11c3QgYmUgZWl0aGVyIExhc3RDcmVhdGUgb3IgTGFzdENoYW5nZSBvciBUb3AxMCEiCiAgICAgICAgKTsKICAgIH0KCiAgICBteSBASXRlbUlEczsKICAgIG15ICRUaXRsZTsKCiAgICAjIGdldCB0aGUgVG9wMTAgRkFRIGFydGljbGVzCiAgICBpZiAoICRUeXBlIGVxICdUb3AxMCcgKSB7CgogICAgICAgICMgaW50ZXJmYWNlIG5lZWRzIHRvIGJlIHRoZSBpbnRlcmZhY2UgbmFtZQogICAgICAgIG15ICRUb3AxMEl0ZW1JRHNSZWYgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUVRvcDEwR2V0KAogICAgICAgICAgICBJbnRlcmZhY2UgPT4gJFNlbGYtPntJbnRlcmZhY2V9LT57TmFtZX0sCiAgICAgICAgICAgIExpbWl0ICAgICA9PiAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpFeHBsb3Jlcjo6VG9wMTA6OkxpbWl0JykgfHwgMTAsCiAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgQEl0ZW1JRHMgPSBtYXAgeyAkXy0+e0l0ZW1JRH0gfSBAeyRUb3AxMEl0ZW1JRHNSZWZ9OwoKICAgICAgICAjIGJ1aWxkIHRoZSB0aXRsZQogICAgICAgICRUaXRsZSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdGQVEgQXJ0aWNsZXMgKFRvcCAxMCknKTsKICAgIH0KCiAgICAjIHNlYXJjaCB0aGUgRkFRIGFydGljbGVzCiAgICBlbHNlIHsKCiAgICAgICAgIyBpbnRlcmZhY2UgbmVlZHMgdG8gYmUgY29tcGxldGUgaW50ZXJmYWNlIGhhc2gKICAgICAgICBASXRlbUlEcyA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRU2VhcmNoKAogICAgICAgICAgICBTdGF0ZXMgICAgICAgICAgID0+ICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSwKICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiBbJFR5cGVdLAogICAgICAgICAgICBPcmRlckJ5RGlyZWN0aW9uID0+IFsnRG93biddLAogICAgICAgICAgICBJbnRlcmZhY2UgICAgICAgID0+ICRTZWxmLT57SW50ZXJmYWNlfSwKICAgICAgICAgICAgTGltaXQgICAgICAgICAgICA9PiAyMCwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBidWlsZCB0aGUgdGl0bGUKICAgICAgICBpZiAoICRUeXBlIGVxICdDcmVhdGVkJyApIHsKICAgICAgICAgICAgJFRpdGxlID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJyk7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJFR5cGUgZXEgJ0NoYW5nZWQnICkgewogICAgICAgICAgICAkVGl0bGUKICAgICAgICAgICAgICAgID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknKTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZW5lcmF0ZSB0aGUgcnNzIHRpdGxlCiAgICAkVGl0bGUgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnUHJvZHVjdE5hbWUnKSAuICcgJyAuICRUaXRsZTsKICAgICRTZWxmLT57UlNTT2JqZWN0fS0+dGl0bGUoJFRpdGxlKTsKCiAgICAjIGdldCB0aGUgRkFRIGRhdGEKICAgIGZvciBteSAkSXRlbUlEIChASXRlbUlEcykgewoKICAgICAgICBteSAlSXRlbURhdGEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUUdldCgKICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkSXRlbUlELAogICAgICAgICAgICBJdGVtRmllbGRzID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgYnVpbGQgYSBwcmV2aWV3IG9mIHRoZSBmaXJzdCB0d28gZmllbGRzCiAgICAgICAgbXkgJFByZXZpZXcgPSAnJzsKICAgICAgICBmb3IgbXkgJENvdW50ICggMSAuLiAyICkgewogICAgICAgICAgICBpZiAoICRJdGVtRGF0YXsiRmllbGQkQ291bnQifSApIHsKICAgICAgICAgICAgICAgICRQcmV2aWV3IC49ICRJdGVtRGF0YXsiRmllbGQkQ291bnQifTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBjb252ZXJ0IHByZXZpZXcgdG8gYXNjaWkKICAgICAgICAkUHJldmlldyA9ICRTZWxmLT57SFRNTFV0aWxzT2JqZWN0fS0+VG9Bc2NpaSggU3RyaW5nID0+ICRQcmV2aWV3ICk7CgogICAgICAgICMgcmVkdWNlIHNpemUgb2YgcHJldmlldwogICAgICAgICRQcmV2aWV3ID1+IHN7IFxBICggLns4MH0gKSAuKiBceiB9eyQxXFtcLlwuXF19Z3htczsKCiAgICAgICAgIyBidWlsZCB0aGUgUlNTIGl0ZW0KICAgICAgICAkU2VsZi0+e1JTU09iamVjdH0tPml0ZW0oCiAgICAgICAgICAgICJodHRwOi8vJEVOVntIVFRQX0hPU1R9JFNlbGYtPntMYXlvdXRPYmplY3R9LT57QmFzZWxpbmt9QWN0aW9uPVB1YmxpY0ZBUVpvb20mSXRlbUlEPSRJdGVtSUQiLAogICAgICAgICAgICAkSXRlbURhdGF7VGl0bGV9LAogICAgICAgICAgICAkUHJldmlldywKICAgICAgICApOwogICAgfQoKICAgICMgY29udmVydCB0byBzdHJpbmcKICAgIG15ICRPdXRwdXQgPSAkU2VsZi0+e1JTU09iamVjdH0tPmFzX3N0cmluZygpOwoKICAgICMgY2hlY2sgZXJyb3IKICAgIGlmICggISRPdXRwdXQgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RmF0YWxFcnJvciggTWVzc2FnZSA9PiAiQ2FuJ3QgY3JlYXRlIFJTUyBmaWxlISIgKTsKICAgIH0KCiAgICAjIHJldHVybiB0aGUgUlNTIGZlZWQKICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkF0dGFjaG1lbnQoCiAgICAgICAgQ29udGVudCAgICAgPT4gJE91dHB1dCwKICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC94bWwnLAogICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgKTsKfQoKMTsK
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUVNlYXJjaC5wbSAtIHB1YmxpYyBGQVEgc2VhcmNoCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OlB1YmxpY0ZBUVNlYXJjaDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBNSU1FOjpCYXNlNjQgcXcoKTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpGQVE7CnVzZSBLZXJuZWw6OlN5c3RlbTo6Q1NWOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgY2hlY2sgbmVlZGVkIG9iamVjdHMKICAgIGZvciAocXcoUGFyYW1PYmplY3QgREJPYmplY3QgTGF5b3V0T2JqZWN0IExvZ09iamVjdCBDb25maWdPYmplY3QpKSB7CiAgICAgICAgaWYgKCAhJFNlbGYtPnskX30gKSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RmF0YWxFcnJvciggTWVzc2FnZSA9PiAiR290IG5vICRfISIgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBzZXQgVXNlcklEIHRvIHJvb3QgYmVjYXVzZSBpbiBwdWJsaWMgaW50ZXJmYWNlIHRoZXJlIGlzIG5vIHVzZXIKICAgICRTZWxmLT57VXNlcklEfSA9IDE7CgogICAgIyBjcmVhdGUgYWRkaXRpb25hbCBvYmplY3RzCiAgICAkU2VsZi0+e0ZBUU9iamVjdH0gPSBLZXJuZWw6OlN5c3RlbTo6RkFRLT5uZXcoJVBhcmFtKTsKICAgICRTZWxmLT57Q1NWT2JqZWN0fSA9IEtlcm5lbDo6U3lzdGVtOjpDU1YtPm5ldyglUGFyYW0pOwoKICAgICMgZ2V0IGNvbmZpZyBmb3IgZnJvbnRlbmQKICAgICRTZWxmLT57Q29uZmlnfSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCJGQVE6OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKTsKCiAgICAjIHNldCBkZWZhdWx0IGludGVyZmFjZSBzZXR0aW5ncwogICAgJFNlbGYtPntJbnRlcmZhY2V9ID0gJFNlbGYtPntGQVFPYmplY3R9LT5TdGF0ZVR5cGVHZXQoCiAgICAgICAgTmFtZSAgID0+ICdwdWJsaWMnLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwogICAgJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9ID0gJFNlbGYtPntGQVFPYmplY3R9LT5TdGF0ZVR5cGVMaXN0KAogICAgICAgIFR5cGVzICA9PiAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpQdWJsaWM6OlN0YXRlVHlwZXMnKSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6TXVsdGlMYW5ndWFnZScpOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRPdXRwdXQ7CgogICAgIyBnZXQgY29uZmlnIGRhdGEKICAgICRTZWxmLT57U3RhcnRIaXR9ID0gaW50KCAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdTdGFydEhpdCcgKSB8fCAxICk7CiAgICAkU2VsZi0+e1NlYXJjaExpbWl0fSAgICAgPSAkU2VsZi0+e0NvbmZpZ30tPntTZWFyY2hMaW1pdH0gICAgIHx8IDIwMDsKICAgICRTZWxmLT57U2VhcmNoUGFnZVNob3dufSA9ICRTZWxmLT57Q29uZmlnfS0+e1NlYXJjaFBhZ2VTaG93bn0gfHwgNDA7CiAgICAkU2VsZi0+e1NvcnRCeX0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdTb3J0QnknICkKICAgICAgICB8fCAkU2VsZi0+e0NvbmZpZ30tPnsnU29ydEJ5OjpEZWZhdWx0J30KICAgICAgICB8fCAnRkFRSUQnOwogICAgJFNlbGYtPntPcmRlckJ5fSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ09yZGVyJyApCiAgICAgICAgfHwgJFNlbGYtPntDb25maWd9LT57J09yZGVyOjpEZWZhdWx0J30KICAgICAgICB8fCAnRG93bic7CgogICAgIyBidWlsZCBvdXRwdXQgZm9yIG9wZW4gc2VhcmNoIGRlc2NyaXB0aW9uIGJ5IEZBUSBudW1iZXIKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXInICkgewogICAgICAgIG15ICRPdXRwdXQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXInLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICApOwogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICdPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIueG1sJywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQveG1sJywKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJE91dHB1dCwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGJ1aWxkIG91dHB1dCBmb3Igb3BlbiBzZWFyY2ggZGVzY3JpcHRpb24gYnkgZnVsbHRleHQKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dCcgKSB7CiAgICAgICAgbXkgJE91dHB1dCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ1B1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGxUZXh0JywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5BdHRhY2htZW50KAogICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQueG1sJywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQveG1sJywKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJE91dHB1dCwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHJlbWVtYmVyIGV4Y2x1ZGUgYXR0cmlidXRlcwogICAgbXkgQEV4Y2x1ZGVzID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldEFycmF5KCBQYXJhbSA9PiAnRXhjbHVkZScgKTsKCiAgICBteSAlR2V0UGFyYW07CgogICAgIyBnZXQgc2luZ2xlIHBhcmFtcwogICAgZm9yIG15ICRQYXJhbU5hbWUgKAogICAgICAgIHF3KE51bWJlciBUaXRsZSBLZXl3b3JkIEZ1bGx0ZXh0IFJlc3VsdEZvcm0gVGltZVNlYXJjaFR5cGUgVm90ZVNlYXJjaCBWb3RlU2VhcmNoVHlwZQogICAgICAgIFZvdGVTZWFyY2hPcHRpb24gUmF0ZVNlYXJjaCBSYXRlU2VhcmNoVHlwZSBSYXRlU2VhcmNoT3B0aW9uCiAgICAgICAgSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdCBJdGVtQ3JlYXRlVGltZVBvaW50CiAgICAgICAgSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0CiAgICAgICAgSXRlbUNyZWF0ZVRpbWVTdGFydCBJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5IEl0ZW1DcmVhdGVUaW1lU3RhcnRNb250aAogICAgICAgIEl0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyCiAgICAgICAgSXRlbUNyZWF0ZVRpbWVTdG9wIEl0ZW1DcmVhdGVUaW1lU3RvcERheSBJdGVtQ3JlYXRlVGltZVN0b3BNb250aAogICAgICAgIEl0ZW1DcmVhdGVUaW1lU3RvcFllYXIKICAgICAgICApCiAgICAgICAgKQogICAgewoKICAgICAgICAjIGdldCBzZWFyY2ggc3RyaW5nIHBhcmFtcyAoZ2V0IHN1Ym1pdHRlZCBwYXJhbXMpCiAgICAgICAgJEdldFBhcmFteyRQYXJhbU5hbWV9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW1OYW1lICk7CgogICAgICAgICMgcmVtb3ZlIHdoaXRlc3BhY2Ugb24gdGhlIHN0YXJ0IGFuZCBlbmQKICAgICAgICBpZiAoICRHZXRQYXJhbXskUGFyYW1OYW1lfSApIHsKICAgICAgICAgICAgJEdldFBhcmFteyRQYXJhbU5hbWV9ID1+IHN7IFxBIFxzKyB9e314bXM7CiAgICAgICAgICAgICRHZXRQYXJhbXskUGFyYW1OYW1lfSA9fiBzeyBccysgXHogfXt9eG1zOwogICAgICAgIH0KCiAgICAgICAgIyBzdG9yZSBub24gZW1wdHkgcGFyYW1ldGVycyBvbiBhIGxvY2FsIHByb2ZpbGUKICAgICAgICBpZiAoICRHZXRQYXJhbXskUGFyYW1OYW1lfSApIHsKICAgICAgICAgICAgJFNlbGYtPntQcm9maWxlfSAuPSAiJFBhcmFtTmFtZT0kR2V0UGFyYW17JFBhcmFtTmFtZX07IjsKICAgICAgICB9CgogICAgfQoKICAgICMgZ2V0IGFycmF5IHBhcmFtcwogICAgZm9yIG15ICRQYXJhbU5hbWUgKHF3KENhdGVnb3J5SURzIExhbmd1YWdlSURzICkpIHsKCiAgICAgICAgIyBnZXQgc2VhcmNoIGFycmF5IHBhcmFtcyAoZ2V0IHN1Ym1pdHRlZCBwYXJhbXMpCiAgICAgICAgbXkgQEFycmF5ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldEFycmF5KCBQYXJhbSA9PiAkUGFyYW1OYW1lICk7CiAgICAgICAgaWYgKEBBcnJheSkgewogICAgICAgICAgICAkR2V0UGFyYW17JFBhcmFtTmFtZX0gPSBcQEFycmF5OwoKICAgICAgICAgICAgIyBzdG9yZSBwYXJhbWV0ZXJzIG9uIGEgbG9jYWwgcHJvZmlsZQogICAgICAgICAgICBmb3IgbXkgJEVsZW1lbnQgKEBBcnJheSkgewogICAgICAgICAgICAgICAgJFNlbGYtPntQcm9maWxlfSAuPSAkUGFyYW1OYW1lIC4gJz0nIC4gJEVsZW1lbnQgLiAnOyc7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBpZiBpdGVtIG5lZWQgdG8gZ2V0IGV4Y2x1ZGVkCiAgICBmb3IgbXkgJEV4Y2x1ZGUgKEBFeGNsdWRlcykgewogICAgICAgIGlmICggJEdldFBhcmFteyRFeGNsdWRlfSApIHsKICAgICAgICAgICAgZGVsZXRlICRHZXRQYXJhbXskRXhjbHVkZX07CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IHZvdGUgb3B0aW9uCiAgICBpZiAoICEkR2V0UGFyYW17Vm90ZVNlYXJjaE9wdGlvbn0gKSB7CiAgICAgICAgJEdldFBhcmFteydWb3RlU2VhcmNoT3B0aW9uOjpOb25lJ30gPSAnY2hlY2tlZD0iY2hlY2tlZCInOwogICAgfQogICAgZWxzaWYgKCAkR2V0UGFyYW17Vm90ZVNlYXJjaE9wdGlvbn0gZXEgJ1ZvdGVQb2ludCcgKSB7CiAgICAgICAgJEdldFBhcmFteydWb3RlU2VhcmNoT3B0aW9uOjpWb3RlUG9pbnQnfSA9ICdjaGVja2VkPSJjaGVja2VkIic7CiAgICB9CgogICAgIyBnZXQgcmF0ZSBvcHRpb24KICAgIGlmICggISRHZXRQYXJhbXtSYXRlU2VhcmNoT3B0aW9ufSApIHsKICAgICAgICAkR2V0UGFyYW17J1JhdGVTZWFyY2hPcHRpb246Ok5vbmUnfSA9ICdjaGVja2VkPSJjaGVja2VkIic7CiAgICB9CiAgICBlbHNpZiAoICRHZXRQYXJhbXtSYXRlU2VhcmNoT3B0aW9ufSBlcSAnUmF0ZVBvaW50JyApIHsKICAgICAgICAkR2V0UGFyYW17J1JhdGVTZWFyY2hPcHRpb246OlJhdGVQb2ludCd9ID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgIH0KCiAgICAjIGdldCB0aW1lIG9wdGlvbgogICAgaWYgKCAhJEdldFBhcmFte1RpbWVTZWFyY2hUeXBlfSApIHsKICAgICAgICAkR2V0UGFyYW17J1RpbWVTZWFyY2hUeXBlOjpOb25lJ30gPSAnY2hlY2tlZD0iY2hlY2tlZCInOwogICAgfQogICAgZWxzaWYgKCAkR2V0UGFyYW17VGltZVNlYXJjaFR5cGV9IGVxICdUaW1lUG9pbnQnICkgewogICAgICAgICRHZXRQYXJhbXsnVGltZVNlYXJjaFR5cGU6OlRpbWVQb2ludCd9ID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgIH0KICAgIGVsc2lmICggJEdldFBhcmFte1RpbWVTZWFyY2hUeXBlfSBlcSAnVGltZVNsb3QnICkgewogICAgICAgICRHZXRQYXJhbXsnVGltZVNlYXJjaFR5cGU6OlRpbWVTbG90J30gPSAnY2hlY2tlZD0iY2hlY2tlZCInOwogICAgfQoKICAgICMgc2V0IHJlc3VsdCBmb3JtIGVudgogICAgaWYgKCAhJEdldFBhcmFte1Jlc3VsdEZvcm19ICkgewogICAgICAgICRHZXRQYXJhbXtSZXN1bHRGb3JtfSA9ICcnOwogICAgfQogICAgaWYgKCAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gZXEgJ1ByaW50JyApIHsKICAgICAgICAkU2VsZi0+e1NlYXJjaFBhZ2VTaG93bn0gPSAkU2VsZi0+e1NlYXJjaExpbWl0fTsKICAgIH0KCiAgICAjIGNoZWNrIHJlcXVlc3QKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdPcGVuU2VhcmNoRGVzY3JpcHRpb24nICkgewogICAgICAgIG15ICRPdXRwdXQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb24nLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4geyVQYXJhbX0sCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5BdHRhY2htZW50KAogICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbCcsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3htbCcsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRPdXRwdXQsCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICk7CiAgICB9CgogICAgIyBzaG93IHJlc3VsdCBwYWdlCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnU2VhcmNoJyAmJiAhJFNlbGYtPntFcmFzZVRlbXBsYXRlfSApIHsKCiAgICAgICAgIyBwcmVwYXJlIGZ1bGx0ZXh0IHNlYXJjaAogICAgICAgIGlmICggJEdldFBhcmFte0Z1bGx0ZXh0fSApIHsKICAgICAgICAgICAgJEdldFBhcmFte0NvbnRlbnRTZWFyY2h9ID0gJ09SJzsKICAgICAgICAgICAgJEdldFBhcmFte1doYXR9ICAgICAgICAgID0gJEdldFBhcmFte0Z1bGx0ZXh0fTsKICAgICAgICB9CgogICAgICAgICMgcHJlcGFyZSB2b3RlcyBzZWFyY2gKICAgICAgICBpZiAoIElzTnVtYmVyKCAkR2V0UGFyYW17Vm90ZVNlYXJjaH0gKSAmJiAkR2V0UGFyYW17Vm90ZVNlYXJjaE9wdGlvbn0gKSB7CiAgICAgICAgICAgICRHZXRQYXJhbXtWb3Rlc30gPSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17Vm90ZVNlYXJjaFR5cGV9ID0+ICRHZXRQYXJhbXtWb3RlU2VhcmNofQogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgIyBwcmVwYXJlIHJhdGUgc2VhcmNoCiAgICAgICAgaWYgKCBJc051bWJlciggJEdldFBhcmFte1JhdGVTZWFyY2h9ICkgJiYgJEdldFBhcmFte1JhdGVTZWFyY2hPcHRpb259ICkgewogICAgICAgICAgICAkR2V0UGFyYW17UmF0ZX0gPSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17UmF0ZVNlYXJjaFR5cGV9ID0+ICRHZXRQYXJhbXtSYXRlU2VhcmNofQogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgbXkgJVRpbWVNYXAgPSAoCiAgICAgICAgICAgIEl0ZW1DcmVhdGUgPT4gJ1RpbWUnLAogICAgICAgICk7CgogICAgICAgIGZvciBteSAkVGltZVR5cGUgKCBzb3J0IGtleXMgJVRpbWVNYXAgKSB7CgogICAgICAgICAgICAjIGdldCBjcmVhdGUgdGltZSBzZXR0aW5ncwogICAgICAgICAgICBpZiAoICEkR2V0UGFyYW17ICRUaW1lTWFweyRUaW1lVHlwZX0gLiAnU2VhcmNoVHlwZScgfSApIHsKCiAgICAgICAgICAgICAgICAjIGRvIG5vdGhpbmcgd2l0aCB0aW1lIHN0dWZmCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lTWFweyRUaW1lVHlwZX0gLiAnU2VhcmNoVHlwZScgfSBlcSAnVGltZVNsb3QnICkgewogICAgICAgICAgICAgICAgZm9yIG15ICRLZXkgKHF3KE1vbnRoIERheSkpIHsKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnQnIC4gJEtleSB9CiAgICAgICAgICAgICAgICAgICAgICAgID0gc3ByaW50ZiggIiUwMmQiLCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnQnIC4gJEtleSB9ICk7CiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3AnIC4gJEtleSB9CiAgICAgICAgICAgICAgICAgICAgICAgID0gc3ByaW50ZiggIiUwMmQiLCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcCcgLiAkS2V5IH0gKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnREYXknIH0KICAgICAgICAgICAgICAgICAgICAmJiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnRNb250aCcgfQogICAgICAgICAgICAgICAgICAgICYmICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydFllYXInIH0KICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZU5ld2VyRGF0ZScgfQogICAgICAgICAgICAgICAgICAgICAgICA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydFllYXInIH0gLiAnLScKICAgICAgICAgICAgICAgICAgICAgICAgLiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnRNb250aCcgfSAuICctJwogICAgICAgICAgICAgICAgICAgICAgICAuICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydERheScgfQogICAgICAgICAgICAgICAgICAgICAgICAuICcgMDA6MDA6MDAnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wRGF5JyB9CiAgICAgICAgICAgICAgICAgICAgJiYgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3BNb250aCcgfQogICAgICAgICAgICAgICAgICAgICYmICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wWWVhcicgfQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lT2xkZXJEYXRlJyB9CiAgICAgICAgICAgICAgICAgICAgICAgID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3BZZWFyJyB9IC4gJy0nCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3BNb250aCcgfSAuICctJwogICAgICAgICAgICAgICAgICAgICAgICAuICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wRGF5JyB9CiAgICAgICAgICAgICAgICAgICAgICAgIC4gJyAyMzo1OTo1OSc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lTWFweyRUaW1lVHlwZX0gLiAnU2VhcmNoVHlwZScgfSBlcSAnVGltZVBvaW50JyApIHsKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH0KICAgICAgICAgICAgICAgICAgICAmJiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRTdGFydCcgfQogICAgICAgICAgICAgICAgICAgICYmICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBteSAkVGltZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0gZXEgJ21pbnV0ZScgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaW1lID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50JyB9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfSBlcSAnaG91cicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaW1lID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50JyB9ICogNjA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9IGVxICdkYXknICkgewogICAgICAgICAgICAgICAgICAgICAgICAkVGltZSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludCcgfSAqIDYwICogMjQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9IGVxICd3ZWVrJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH0gKiA2MCAqIDI0ICogNzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0gZXEgJ21vbnRoJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH0gKiA2MCAqIDI0ICogMzA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9IGVxICd5ZWFyJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH0gKiA2MCAqIDI0ICogMzY1OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludFN0YXJ0JyB9IGVxICdCZWZvcmUnICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBtb3JlIHRoYW4gLi4uIGFnbwogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lT2xkZXJNaW51dGVzJyB9ID0gJFRpbWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50U3RhcnQnIH0gZXEgJ05leHQnICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyB3aXRoaW4gbmV4dAogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lTmV3ZXJNaW51dGVzJyB9ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZU9sZGVyTWludXRlcycgfSA9IC0kVGltZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICMgd2l0aGluIGxhc3QgLi4uCiAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVPbGRlck1pbnV0ZXMnIH0gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lTmV3ZXJNaW51dGVzJyB9ID0gJFRpbWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHBlcmZvcm0gRkFRIHNlYXJjaAogICAgICAgIG15IEBWaWV3YWJsZUZBUUlEcyA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRU2VhcmNoKAogICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgID0+IFsgJFNlbGYtPntTb3J0Qnl9IF0sCiAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gICAgPT4gWyAkU2VsZi0+e09yZGVyQnl9IF0sCiAgICAgICAgICAgIExpbWl0ICAgICAgICAgICAgICAgPT4gJFNlbGYtPntTZWFyY2hMaW1pdH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICBTdGF0ZXMgICAgICAgICAgICAgID0+ICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSwKICAgICAgICAgICAgSW50ZXJmYWNlICAgICAgICAgICA9PiAkU2VsZi0+e0ludGVyZmFjZX0sCiAgICAgICAgICAgIENvbnRlbnRTZWFyY2hQcmVmaXggPT4gJyonLAogICAgICAgICAgICBDb250ZW50U2VhcmNoU3VmZml4ID0+ICcqJywKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICk7CgogICAgICAgICMgQ1NWIG91dHB1dAogICAgICAgIGlmICggJEdldFBhcmFte1Jlc3VsdEZvcm19IGVxICdDU1YnICkgewogICAgICAgICAgICBteSBAQ1NWSGVhZDsKICAgICAgICAgICAgbXkgQENTVkRhdGE7CgogICAgICAgICAgICBmb3IgbXkgJEZBUUlEIChAVmlld2FibGVGQVFJRHMpIHsKCiAgICAgICAgICAgICAgICAjIGdldCBGQVEgZGF0YSBkZXRhaWxzCiAgICAgICAgICAgICAgICBteSAlRkFRRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRR2V0KAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJEZBUUlELAogICAgICAgICAgICAgICAgICAgIEl0ZW1GaWVsZHMgPT4gMCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBmb3JtYXQgdGhlIGNoYW5nZSB0aW1lCiAgICAgICAgICAgICAgICBteSAkQ2hhbmdlZCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICAgICAgICAgIFRlbXBsYXRlID0+ICckVGltZUxvbmd7IiREYXRheyJDaGFuZ2VkIn0ifScsCiAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgPT4gXCVGQVFEYXRhLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGdldCBpbmZvIGZvciBDU1Ygb3V0cHV0CiAgICAgICAgICAgICAgICBteSAlQ1NWSW5mbyA9ICgKICAgICAgICAgICAgICAgICAgICBGQVFOdW1iZXIgPT4gJEZBUURhdGF7TnVtYmVyfSwKICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgPT4gJEZBUURhdGF7VGl0bGV9LAogICAgICAgICAgICAgICAgICAgIENhdGVnb3J5ICA9PiAkRkFRRGF0YXtDYXRlZ29yeU5hbWV9LAogICAgICAgICAgICAgICAgICAgIExhbmd1YWdlICA9PiAkRkFRRGF0YXtMYW5ndWFnZX0sCiAgICAgICAgICAgICAgICAgICAgQ2hhbmdlZCAgID0+ICRDaGFuZ2VkLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGNzdiBxdW90ZQogICAgICAgICAgICAgICAgaWYgKCAhQENTVkhlYWQgKSB7CiAgICAgICAgICAgICAgICAgICAgQENTVkhlYWQgPSBxdyggRkFRTnVtYmVyIFRpdGxlIENhdGVnb3J5KTsKCiAgICAgICAgICAgICAgICAgICAgIyBpbnNlcnQgbGFuZ3VhZ2UgaGVhZGVyCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBDU1ZIZWFkLCAnTGFuZ3VhZ2UnOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgcHVzaCBAQ1NWSGVhZCwgJ0NoYW5nZWQnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbXkgQERhdGE7CiAgICAgICAgICAgICAgICBmb3IgbXkgJEhlYWRlciAoQENTVkhlYWQpIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBEYXRhLCAkQ1NWSW5mb3skSGVhZGVyfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHB1c2ggQENTVkRhdGEsIFxARGF0YTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBjc3YgcXVvdGUKICAgICAgICAgICAgIyB0cmFuc2xhdGUgbm9uIGV4aXN0aW5nIGhlYWRlciBtYXkgcmVzdWx0IGluIGEgZ2FyYmFnZSBmaWxlCiAgICAgICAgICAgIGlmICggIUBDU1ZIZWFkICkgewogICAgICAgICAgICAgICAgQENTVkhlYWQgPSBxdyhGQVFOdW1iZXIgVGl0bGUgQ2F0ZWdvcnkpOwoKICAgICAgICAgICAgICAgICMgaW5zZXJ0IGxhbmd1YWdlIGhlYWRlcgogICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQENTVkhlYWQsICdMYW5ndWFnZSc7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcHVzaCBAQ1NWSGVhZCwgJ0NoYW5nZWQnOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHRyYW5zbGF0ZSBoZWFkZXJzCiAgICAgICAgICAgIGZvciBteSAkSGVhZGVyIChAQ1NWSGVhZCkgewoKICAgICAgICAgICAgICAgICMgcmVwbGFjZSBGQVFOdW1iZXIgaGVhZGVyIHdpdGggdGhlIGN1cnJlbnQgRkFRSG9vayBmcm9tIGNvbmZpZwogICAgICAgICAgICAgICAgaWYgKCAkSGVhZGVyIGVxICdGQVFOdW1iZXInICkgewogICAgICAgICAgICAgICAgICAgICRIZWFkZXIgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpGQVFIb29rJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkSGVhZGVyID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJEhlYWRlcik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgYXNzYWJsZSBDU1YgZGF0YQogICAgICAgICAgICBteSAkQ1NWID0gJFNlbGYtPntDU1ZPYmplY3R9LT5BcnJheTJDU1YoCiAgICAgICAgICAgICAgICBIZWFkICAgICAgPT4gXEBDU1ZIZWFkLAogICAgICAgICAgICAgICAgRGF0YSAgICAgID0+IFxAQ1NWRGF0YSwKICAgICAgICAgICAgICAgIFNlcGFyYXRvciA9PiAkU2VsZi0+e1VzZXJDU1ZTZXBhcmF0b3J9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyByZXR1cm4gY3N2IHRvIGRvd25sb2FkCiAgICAgICAgICAgIG15ICRDU1ZGaWxlID0gJ0ZBUV9zZWFyY2gnOwogICAgICAgICAgICBteSAoICRzLCAkbSwgJGgsICRELCAkTSwgJFkgKSA9ICRTZWxmLT57VGltZU9iamVjdH0tPlN5c3RlbVRpbWUyRGF0ZSgKICAgICAgICAgICAgICAgIFN5c3RlbVRpbWUgPT4gJFNlbGYtPntUaW1lT2JqZWN0fS0+U3lzdGVtVGltZSgpLAogICAgICAgICAgICApOwogICAgICAgICAgICAkTSA9IHNwcmludGYoICIlMDJkIiwgJE0gKTsKICAgICAgICAgICAgJEQgPSBzcHJpbnRmKCAiJTAyZCIsICREICk7CiAgICAgICAgICAgICRoID0gc3ByaW50ZiggIiUwMmQiLCAkaCApOwogICAgICAgICAgICAkbSA9IHNwcmludGYoICIlMDJkIiwgJG0gKTsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QXR0YWNobWVudCgKICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICRDU1ZGaWxlIC4gIl8iIC4gIiRZLSRNLSREIiAuICJfIiAuICIkaC0kbS5jc3YiLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gInRleHQvY3N2OyBjaGFyc2V0PSIgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntVc2VyQ2hhcnNldH0sCiAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAkQ1NWLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXtSZXN1bHRGb3JtfSBlcSAnUHJpbnQnICkgewogICAgICAgICAgICBmb3IgbXkgJEZBUUlEIChAVmlld2FibGVGQVFJRHMpIHsKCiAgICAgICAgICAgICAgICAjIGdldCBGQVEgZGF0YSBkZXRhaWxzCiAgICAgICAgICAgICAgICBteSAlRkFRRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRR2V0KAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJEZBUUlELAogICAgICAgICAgICAgICAgICAgIEl0ZW1GaWVsZHMgPT4gMCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBhZGQgdGFibGUgYmxvY2sKICAgICAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHslRkFRRGF0YX0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgYWRkIGxhbmd1YWdlIGRhdGEKICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntNdWx0aUxhbmd1YWdlfSApIHsKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmRMYW5ndWFnZScsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4geyVGQVFEYXRhfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBvdXRwdXQgaGVhZGVyCiAgICAgICAgICAgIG15ICRPdXRwdXQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPlByaW50SGVhZGVyKCBXaWR0aCA9PiA4MDAgKTsKICAgICAgICAgICAgaWYgKCBzY2FsYXIgQFZpZXdhYmxlRkFRSURzID09ICRTZWxmLT57U2VhcmNoTGltaXR9ICkgewogICAgICAgICAgICAgICAgJFBhcmFte1dhcm5pbmd9ID0gJyRUZXh0eyJSZWFjaGVkIG1heC4gY291bnQgb2YgJXMgc2VhcmNoIGhpdHMhIiwgIicKICAgICAgICAgICAgICAgICAgICAuICRTZWxmLT57U2VhcmNoTGltaXR9IC4gJyJ9JzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBhZGQgbGFuZ3VhZ2UgaGVhZGVyCiAgICAgICAgICAgIGlmICggJFNlbGYtPntNdWx0aUxhbmd1YWdlfSApIHsKICAgICAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnSGVhZGVyTGFuZ3VhZ2UnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdQdWJsaWNGQVFTZWFyY2hSZXN1bHRQcmludCcsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgYWRkIGZvb3RlcgogICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+UHJpbnRGb290ZXIoKTsKCiAgICAgICAgICAgICMgcmV0dXJuIG91dHB1dAogICAgICAgICAgICByZXR1cm4gJE91dHB1dDsKCiAgICAgICAgfQoKICAgICAgICBteSAkQ291bnRlciA9IDA7CgogICAgICAgICMgaWYgdGhlcmUgYXJlIHJlc3VsdHMgdG8gc2hvdwogICAgICAgIGlmIChAVmlld2FibGVGQVFJRHMpIHsKCiAgICAgICAgICAgICMgY3JlYXRlIGJhY2sgbGluayBmb3IgRkFRIFpvb20gc2NyZWVuCiAgICAgICAgICAgIG15ICRab29tQmFja0xpbmsgPSAiQWN0aW9uPVB1YmxpY0ZBUVNlYXJjaDtTdWJhY3Rpb249U2VhcmNoOyIKICAgICAgICAgICAgICAgIC4gJFNlbGYtPntQcm9maWxlfQogICAgICAgICAgICAgICAgLiAiU29ydEJ5PSRTZWxmLT57U29ydEJ5fTtPcmRlcj0kU2VsZi0+e09yZGVyQnl9O1N0YXJ0SGl0PSRTZWxmLT57U3RhcnRIaXR9IjsKCiAgICAgICAgICAgICMgZW5jb2RlIGJhY2sgbGluayB0byBCYXNlNjQgZm9yIGVhc3kgSFRNTCB0cmFuc3BvcnQKICAgICAgICAgICAgJFpvb21CYWNrTGluayA9IE1JTUU6OkJhc2U2NDo6ZW5jb2RlX2Jhc2U2NCgkWm9vbUJhY2tMaW5rKTsKCiAgICAgICAgICAgIGZvciBteSAkRkFRSUQgKEBWaWV3YWJsZUZBUUlEcykgewoKICAgICAgICAgICAgICAgICRDb3VudGVyKys7CgogICAgICAgICAgICAgICAgIyBidWlsZCBzZWFyY2ggcmVzdWx0CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJENvdW50ZXIgPj0gJFNlbGYtPntTdGFydEhpdH0KICAgICAgICAgICAgICAgICAgICAmJiAkQ291bnRlciA8ICggJFNlbGYtPntTZWFyY2hQYWdlU2hvd259ICsgJFNlbGYtPntTdGFydEhpdH0gKQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAgICAgIyBnZXQgRkFRIGRhdGEgZGV0YWlscwogICAgICAgICAgICAgICAgICAgIG15ICVGQVFEYXRhID0gJFNlbGYtPntGQVFPYmplY3R9LT5GQVFHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJEZBUUlELAogICAgICAgICAgICAgICAgICAgICAgICBJdGVtRmllbGRzID0+IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgYWRkIGJsb2NrcyB0byB0ZW1wbGF0ZQogICAgICAgICAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZCcsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJUZBUURhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBab29tQmFja0xpbmsgPT4gJFpvb21CYWNrTGluaywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIGFkZCBsYW5ndWFnZSBkYXRhCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkTGFuZ3VhZ2UnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7JUZBUURhdGF9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBvdGhlcndpc2Ugc2hvdyBhIG5vIGRhdGEgZm91bmQgbXNnCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soIE5hbWUgPT4gJ05vRGF0YUZvdW5kTXNnJyApOwogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgYSBsb29rdXAgdGFibGUgZm9yIGF0dHJpYnV0ZSBzZXR0aW5ncwogICAgICAgIG15ICVBdHRyaWJ1dGVNYXAgPSAoCiAgICAgICAgICAgIE51bWJlciA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6RkFRSG9vaycpLAogICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlID0+IDAsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFRpdGxlID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnVGl0bGUnLAogICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEtleXdvcmQgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdLZXl3b3JkJywKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBGdWxsdGV4dCA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ0Z1bGx0ZXh0JywKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBDYXRlZ29yeUlEcyA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ0NhdGVnb3J5JywKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBMYW5ndWFnZUlEcyA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ0xhbmd1YWdlJywKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBUaW1lU2VhcmNoVHlwZSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ0NyZWF0ZSBUaW1lJywKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBWb3RlU2VhcmNoVHlwZSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1ZvdGVzJywKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBSYXRlU2VhcmNoVHlwZSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1JhdGUnLAogICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBwcmludCBlYWNoIGF0dHJpYnV0ZSBpbiBzZWFyY2ggcmVzdWx0cyBhcmVhLgogICAgICAgIEFUVFJJQlVURToKICAgICAgICBmb3IgbXkgJEF0dHJpYnV0ZSAoIHNvcnQga2V5cyAlQXR0cmlidXRlTWFwICkgewoKICAgICAgICAgICAgIyBjaGVjayBpZiB0aGUgYXR0cmlidXRlIHdhcyBkZWZpbmVkIGJ5IHRoZSB1c2VyCiAgICAgICAgICAgIGlmICggJEdldFBhcmFteyRBdHRyaWJ1dGV9ICkgewoKICAgICAgICAgICAgICAgICMgc2V0IGF0dHJpYnV0ZSBuYW1lIGFuZCB0cmFuc2xhdGUgaXQgaWYgYXBwbGllcwogICAgICAgICAgICAgICAgbXkgJEF0dHJpYnV0ZU5hbWUgPSAkQXR0cmlidXRlTWFweyRBdHRyaWJ1dGV9LT57TmFtZX07CiAgICAgICAgICAgICAgICBpZiAoICRBdHRyaWJ1dGVNYXB7JEF0dHJpYnV0ZX0tPntUcmFuc2xhdGFibGV9ICkgewogICAgICAgICAgICAgICAgICAgICRBdHRyaWJ1dGVOYW1lID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJEF0dHJpYnV0ZU5hbWUpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG15ICRBdHRyaWJ1dGVWYWx1ZTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIHRoZSB2YWx1ZXMgaXMgYW4gYXJyYXkgdG8gcGFyc2UgZWFjaCB2YWx1ZQogICAgICAgICAgICAgICAgaWYgKCByZWYgJEdldFBhcmFteyRBdHRyaWJ1dGV9IGVxICdBUlJBWScgKSB7CgogICAgICAgICAgICAgICAgICAgICMgQ2F0ZWdvcnkgYXR0cmlidXRlCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkQXR0cmlidXRlIGVxICdDYXRlZ29yeUlEcycgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGdldCB0aGUgbG9uZyBuYW1lIGZvciBhbGwgcHVibGljIGNhdGVnb3JpZXMKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJENhdGVnb3J5TGlzdCA9ICRTZWxmLT57RkFRT2JqZWN0fS0+R2V0UHVibGljQ2F0ZWdvcmllc0xvbmdOYW1lcygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICA9PiAncncnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGNvbnZlcnQgZWFjaCBjYXRlZ29yeSBpZCB0byBjYXRlZ29yeSBsb25nIG5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgbXkgQENhdGVnb3J5TmFtZXM7CiAgICAgICAgICAgICAgICAgICAgICAgIENBVEVHT1JZSUQ6CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciBteSAkQ2F0ZWRvcnlJRCAoIEB7ICRHZXRQYXJhbXskQXR0cmlidXRlfSB9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBDQVRFR09SWUlEIGlmICEkQ2F0ZWdvcnlMaXN0LT57JENhdGVkb3J5SUR9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAQ2F0ZWdvcnlOYW1lcywgJENhdGVnb3J5TGlzdC0+eyRDYXRlZG9yeUlEfTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgIyBjcmVhdGUgYSBzdHJpbmcgd2l0aCBhbGwgc2VsZWN0ZWQgY2F0ZWdvcnkgbmFtZXMKICAgICAgICAgICAgICAgICAgICAgICAgJEF0dHJpYnV0ZVZhbHVlID0gam9pbiggIiArICIsIEBDYXRlZ29yeU5hbWVzICk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIExhbmd1YWdlSURzCiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkQXR0cmlidXRlIGVxICdMYW5ndWFnZUlEcycgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGNvbnZlcnQgZWFjaCBsYW5ndWFnZSBpZCB0byBsYW5ndWFnZSBuYW1lCiAgICAgICAgICAgICAgICAgICAgICAgIG15IEBMYW5ndWFnZU5hbWVzOwogICAgICAgICAgICAgICAgICAgICAgICBMQU5HVUFHRUlEOgogICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJExhbmd1YWdlSUQgKCBAeyAkR2V0UGFyYW17JEF0dHJpYnV0ZX0gfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRMYW5ndWFnZU5hbWUgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkxhbmd1YWdlTG9va3VwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhbmd1YWdlSUQgPT4gJExhbmd1YWdlSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBMQU5HVUFHRUlEIGlmICEkTGFuZ3VhZ2VOYW1lOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBATGFuZ3VhZ2VOYW1lcywgJExhbmd1YWdlTmFtZQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAjIGNyZWF0ZSBhIHN0cmluZyB3aXRoIGFsbCBzZWxlY3RlZCBsYW5ndWFnZSBuYW1lcwogICAgICAgICAgICAgICAgICAgICAgICAkQXR0cmlidXRlVmFsdWUgPSBqb2luKCAiICsgIiwgQExhbmd1YWdlTmFtZXMgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBvdGhlcndpc2UgaXMgYW4gc2NhbGFyIGFuZCBjYW4gYmUgc2V0IGRpcmVjdGx5CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkQXR0cmlidXRlVmFsdWUgPSAkR2V0UGFyYW17JEF0dHJpYnV0ZX0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICggJEF0dHJpYnV0ZSBlcSAnVGltZVNlYXJjaFR5cGUnICkgewoKICAgICAgICAgICAgICAgICAgICBpZiAoICRHZXRQYXJhbXtUaW1lU2VhcmNoVHlwZX0gZXEgJ1RpbWVTbG90JyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRTdGFydERhdGUgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkZvcm1hdFRpbWVTdHJpbmcoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17SXRlbUNyZWF0ZVRpbWVTdGFydFllYXJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnLScgLiAkR2V0UGFyYW17SXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRofQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJy0nIC4gJEdldFBhcmFte0l0ZW1DcmVhdGVUaW1lU3RhcnREYXl9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnIDAwOjAwOjAwJywgJ0RhdGVGb3JtYXRTaG9ydCcKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRTdG9wRGF0ZSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+Rm9ybWF0VGltZVN0cmluZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXtJdGVtQ3JlYXRlVGltZVN0b3BZZWFyfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJy0nIC4gJEdldFBhcmFte0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRofQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJy0nIC4gJEdldFBhcmFte0l0ZW1DcmVhdGVUaW1lU3RvcERheX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICcgMDA6MDA6MDAnLCAnRGF0ZUZvcm1hdFNob3J0JwogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgJEF0dHJpYnV0ZSA9ICdDcmVhdGVkIGJldHdlZW4nOwogICAgICAgICAgICAgICAgICAgICAgICAkQXR0cmlidXRlVmFsdWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gJFN0YXJ0RGF0ZSAuICcgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCgnYW5kJykgLiAnICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJFN0b3BEYXRlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRNYXBwaW5nID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0xhc3QnICAgPT4gJ0NyZWF0ZWQgd2l0aGluIHRoZSBsYXN0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdCZWZvcmUnID0+ICdDcmVhdGVkIG1vcmUgdGhhbiAuLi4gYWdvJywKICAgICAgICAgICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICAgICAgICAgICRBdHRyaWJ1dGUgPSAkTWFwcGluZy0+eyAkR2V0UGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0fSB9OwogICAgICAgICAgICAgICAgICAgICAgICAkQXR0cmlidXRlVmFsdWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gJEdldFBhcmFte0l0ZW1DcmVhdGVUaW1lUG9pbnR9IC4gJyAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLT5HZXQoICRHZXRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0fSAuICcocyknICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkQXR0cmlidXRlIGVxICdWb3RlU2VhcmNoVHlwZScgKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBBVFRSSUJVVEUgaWYgISRHZXRQYXJhbXtWb3RlU2VhcmNoT3B0aW9ufTsKICAgICAgICAgICAgICAgICAgICAkQXR0cmlidXRlVmFsdWUKICAgICAgICAgICAgICAgICAgICAgICAgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0KICAgICAgICAgICAgICAgICAgICAgICAgLT5HZXQoICRHZXRQYXJhbXtWb3RlU2VhcmNoVHlwZX0gKSAuICcgJyAuICRHZXRQYXJhbXtWb3RlU2VhcmNofTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJEF0dHJpYnV0ZSBlcSAnUmF0ZVNlYXJjaFR5cGUnICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgQVRUUklCVVRFIGlmICEkR2V0UGFyYW17UmF0ZVNlYXJjaE9wdGlvbn07CiAgICAgICAgICAgICAgICAgICAgJEF0dHJpYnV0ZVZhbHVlCiAgICAgICAgICAgICAgICAgICAgICAgID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9CiAgICAgICAgICAgICAgICAgICAgICAgIC0+R2V0KCAkR2V0UGFyYW17UmF0ZVNlYXJjaFR5cGV9ICkgLiAnICcgLiAkR2V0UGFyYW17UmF0ZVNlYXJjaH0gLiAnJSc7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdTZWFyY2hUZXJtcycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZSA9PiAkQXR0cmlidXRlTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgID0+ICRBdHRyaWJ1dGVWYWx1ZSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBidWlsZCBzZWFyY2ggbmF2aWdhdGlvbiBiYXIKICAgICAgICBteSAlUGFnZU5hdiA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+UGFnZU5hdkJhcigKICAgICAgICAgICAgTGltaXQgICAgID0+ICRTZWxmLT57U2VhcmNoTGltaXR9LAogICAgICAgICAgICBTdGFydEhpdCAgPT4gJFNlbGYtPntTdGFydEhpdH0sCiAgICAgICAgICAgIFBhZ2VTaG93biA9PiAkU2VsZi0+e1NlYXJjaFBhZ2VTaG93bn0sCiAgICAgICAgICAgIEFsbEhpdHMgICA9PiAkQ291bnRlciwKICAgICAgICAgICAgQWN0aW9uICAgID0+ICJBY3Rpb249UHVibGljRkFRU2VhcmNoO1N1YmFjdGlvbj1TZWFyY2giLAogICAgICAgICAgICBMaW5rID0+CiAgICAgICAgICAgICAgICAiJFNlbGYtPntQcm9maWxlfVNvcnRCeT0kU2VsZi0+e1NvcnRCeX07T3JkZXI9JFNlbGYtPntPcmRlckJ5fTsiLAogICAgICAgICAgICBJRFByZWZpeCA9PiAiUHVibGljRkFRU2VhcmNoIiwKICAgICAgICApOwoKICAgICAgICAjIHNob3cgZm9vdGVyIGZpbHRlciAtIHNob3cgb25seSBpZiBtb3JlIHRoZSBvbmUgcGFnZSBpcyBhdmFpbGFibGUKICAgICAgICBpZiAoIGRlZmluZWQgJFBhZ2VOYXZ7VG90YWxIaXRzfSAmJiAoICRQYWdlTmF2e1RvdGFsSGl0c30gPiAkU2VsZi0+e1NlYXJjaFBhZ2VTaG93bn0gKSApIHsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1BhZ2luYXRpb24nLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICVQYWdlTmF2LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgc3RhcnQgaHRtbCBwYWdlCiAgICAgICAgbXkgJE91dHB1dCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Q3VzdG9tZXJIZWFkZXIoKTsKCiAgICAgICAgI1NldCB0aGUgU29ydEJ5IENsYXNzCiAgICAgICAgbXkgJFNvcnRDbGFzczsKCiAgICAgICAgIyB0aGlzIHNldHMgdGhlIG9wcG9zaXRlIHRvIHRoZSBPcmRlckJ5IHBhcmFtZXRlcgogICAgICAgIGlmICggJFNlbGYtPntPcmRlckJ5fSBlcSAnRG93bicgKSB7CiAgICAgICAgICAgICRTb3J0Q2xhc3MgPSAnU29ydEFzY2VuZGluZyc7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJFNlbGYtPntPcmRlckJ5fSBlcSAnVXAnICkgewogICAgICAgICAgICAkU29ydENsYXNzID0gJ1NvcnREZXNjZW5kaW5nJzsKICAgICAgICB9CgogICAgICAgICMgc2V0IHRoZSBTb3J0QnkgQ2xhc3MgdG8gdGhlIGNvcnJlY3QgZmllbGQKICAgICAgICBteSAlQ1NTU29ydDsKICAgICAgICBteSAkU29ydEJ5ID0gJFNlbGYtPntTb3J0Qnl9IC4gJ1NvcnQnOwogICAgICAgICRDU1NTb3J0eyRTb3J0Qnl9ID0gJFNvcnRDbGFzczsKCiAgICAgICAgbXkgJU5ld09yZGVyID0gKAogICAgICAgICAgICBEb3duID0+ICdVcCcsCiAgICAgICAgICAgIFVwICAgPT4gJ0Rvd24nLAogICAgICAgICk7CgogICAgICAgICMgc2hvdyBsYW5ndWFnZSBoZWFkZXIKICAgICAgICBpZiAoICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdIZWFkZXJMYW5ndWFnZScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgJUNTU1NvcnQsCiAgICAgICAgICAgICAgICAgICAgT3JkZXIgPT4gJE5ld09yZGVyeyAkU2VsZi0+e09yZGVyQnl9IH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdQdWJsaWNGQVFTZWFyY2hSZXN1bHRTaG9ydCcsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAlUGFnZU5hdiwKICAgICAgICAgICAgICAgICVDU1NTb3J0LAogICAgICAgICAgICAgICAgT3JkZXIgICA9PiAkTmV3T3JkZXJ7ICRTZWxmLT57T3JkZXJCeX0gfSwKICAgICAgICAgICAgICAgIFByb2ZpbGUgPT4gJFNlbGYtPntQcm9maWxlfSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGJ1aWxkIGZvb3RlcgogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DdXN0b21lckZvb3RlcigpOwogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQoKICAgICMgZW1wdHkgc2VhcmNoIHNpdGUKICAgIGVsc2UgewoKICAgICAgICAjIGdlbmVyYXRlIHNlYXJjaCBtYXNrCiAgICAgICAgbXkgJE91dHB1dCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Q3VzdG9tZXJIZWFkZXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT5NYXNrRm9ybSgKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICBQcm9maWxlID0+ICRTZWxmLT57UHJvZmlsZX0sCiAgICAgICAgICAgIEFyZWEgICAgPT4gJ1B1YmxpYycsCiAgICAgICAgKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Q3VzdG9tZXJGb290ZXIoKTsKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KfQoKc3ViIE1hc2tGb3JtIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbGlzdCB0eXBlCiAgICBteSAkVHJlZVZpZXcgPSAwOwogICAgaWYgKCAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnVGlja2V0OjpGcm9udGVuZDo6TGlzdFR5cGUnKSBlcSAndHJlZScgKSB7CiAgICAgICAgJFRyZWVWaWV3ID0gMTsKICAgIH0KCiAgICAjIHNldCBvdXRwdXQgZm9ybWF0cyBsaXN0CiAgICBteSAlUmVzdWx0Rm9ybSA9ICgKICAgICAgICBOb3JtYWwgPT4gJ05vcm1hbCcsCiAgICAgICAgUHJpbnQgID0+ICdQcmludCcsCiAgICAgICAgQ1NWICAgID0+ICdDU1YnLAogICAgKTsKCiAgICAjIGJ1aWxkIG91dHB1dCBmb3JtYXRzIGxpc3QKICAgICRQYXJhbXtSZXN1bHRGb3JtU3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4geyVSZXN1bHRGb3JtfSwKICAgICAgICBOYW1lICAgICAgID0+ICdSZXN1bHRGb3JtJywKICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtSZXN1bHRGb3JtfSB8fCAnTm9ybWFsJywKICAgICk7CgogICAgIyBnZXQgbGFuZ3VhZ2VzIGxpc3QKICAgIG15ICVMYW5ndWFnZXMgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkxhbmd1YWdlTGlzdCgKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGJ1aWxkIGxhbmd1YWdlcyBvdXRwdXQgbGlzdAogICAgJFBhcmFte0xhbmd1YWdlc1N0cmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgID0+IHslTGFuZ3VhZ2VzfSwKICAgICAgICBOYW1lICAgICAgID0+ICdMYW5ndWFnZUlEcycsCiAgICAgICAgTXVsdGlwbGUgICA9PiAxLAogICAgICAgIFNpemUgICAgICAgPT4gNSwKICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtMYW5ndWFnZUlEc30sCiAgICApOwoKICAgICMgZ2V0IGNhdGVnb3JpZXMgbGlzdAogICAgbXkgJENhdGVnb3JpZXMgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkdldFB1YmxpY0NhdGVnb3JpZXNMb25nTmFtZXMoCiAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICBUeXBlICAgICAgICAgPT4gJ3J3JywKICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGJ1aWxkIGNhdGVnb3JpZXMgb3V0cHV0IGxpc3QKICAgICRQYXJhbXtDYXRlZ29yaWVzU3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4gJENhdGVnb3JpZXMsCiAgICAgICAgTmFtZSAgICAgICA9PiAnQ2F0ZWdvcnlJRHMnLAogICAgICAgIE11bHRpcGxlICAgPT4gMSwKICAgICAgICBTaXplICAgICAgID0+IDUsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17Q2F0ZWdvcnlJRHN9LAogICAgICAgIFRyZWVWaWV3ICAgPT4gJFRyZWVWaWV3LAogICAgKTsKCiAgICBteSAlVm90aW5nT3BlcmF0b3JzID0gKAogICAgICAgIEVxdWFscyAgICAgICAgICAgID0+ICdFcXVhbHMnLAogICAgICAgIEdyZWF0ZXJUaGFuICAgICAgID0+ICdHcmVhdGVyVGhhbicsCiAgICAgICAgR3JlYXRlclRoYW5FcXVhbHMgPT4gJ0dyZWF0ZXJUaGFuRXF1YWxzJywKICAgICAgICBTbWFsbGVyVGhhbiAgICAgICA9PiAnU21hbGxlclRoYW4nLAogICAgICAgIFNtYWxsZXJUaGFuRXF1YWxzID0+ICdTbWFsbGVyVGhhbkVxdWFscycsCiAgICApOwoKICAgICRQYXJhbXtWb3RlU2VhcmNoVHlwZVNlbGVjdGlvblN0cmluZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgID0+IFwlVm90aW5nT3BlcmF0b3JzLAogICAgICAgIE5hbWUgICAgICAgID0+ICdWb3RlU2VhcmNoVHlwZScsCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFBhcmFte1ZvdGVTZWFyY2hUeXBlfSB8fCAnJywKICAgICAgICBTaXplICAgICAgICA9PiAxLAogICAgICAgIFRyYW5zbGF0aW9uID0+IDEsCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMCwKICAgICk7CgogICAgJFBhcmFte1JhdGVTZWFyY2hUeXBlU2VsZWN0aW9uU3RyaW5nfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgPT4gXCVWb3RpbmdPcGVyYXRvcnMsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ1JhdGVTZWFyY2hUeXBlJywKICAgICAgICBTZWxlY3RlZElEICA9PiAkUGFyYW17UmF0ZVNlYXJjaFR5cGV9IHx8ICcnLAogICAgICAgIFNpemUgICAgICAgID0+IDEsCiAgICAgICAgVHJhbnNsYXRpb24gPT4gMSwKICAgICAgICBNdWx0aXBsZSAgICA9PiAwLAogICAgKTsKICAgICRQYXJhbXtSYXRlU2VhcmNoU2VsZWN0aW9uU3RyaW5nfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIDAgICA9PiAnMCUnLAogICAgICAgICAgICAyNSAgPT4gJzI1JScsCiAgICAgICAgICAgIDUwICA9PiAnNTAlJywKICAgICAgICAgICAgNzUgID0+ICc3NSUnLAogICAgICAgICAgICAxMDAgPT4gJzEwMCUnLAogICAgICAgIH0sCiAgICAgICAgU29ydCAgICAgICAgPT4gJ051bWVyaWNLZXknLAogICAgICAgIE5hbWUgICAgICAgID0+ICdSYXRlU2VhcmNoJywKICAgICAgICBTZWxlY3RlZElEICA9PiAkUGFyYW17UmF0ZVNlYXJjaH0gfHwgJycsCiAgICAgICAgU2l6ZSAgICAgICAgPT4gMSwKICAgICAgICBUcmFuc2xhdGlvbiA9PiAwLAogICAgICAgIE11bHRpcGxlICAgID0+IDAsCiAgICApOwoKICAgICRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50fSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgPT4gWyAxIC4uIDU5IF0sCiAgICAgICAgVHJhbnNsYXRpb24gPT4gMCwKICAgICAgICBOYW1lICAgICAgICA9PiAnSXRlbUNyZWF0ZVRpbWVQb2ludCcsCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFBhcmFte0l0ZW1DcmVhdGVUaW1lUG9pbnR9LAogICAgKTsKICAgICRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnR9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgTGFzdCAgID0+ICd3aXRoaW4gdGhlIGxhc3QgLi4uJywKICAgICAgICAgICAgQmVmb3JlID0+ICdtb3JlIHRoYW4gLi4uIGFnbycsCiAgICAgICAgfSwKICAgICAgICBUcmFuc2xhdGlvbiA9PiAxLAogICAgICAgIE5hbWUgICAgICAgID0+ICdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQnLAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnR9IHx8ICdMYXN0JywKICAgICk7CiAgICAkUGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdH0gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBtaW51dGUgPT4gJ21pbnV0ZShzKScsCiAgICAgICAgICAgIGhvdXIgICA9PiAnaG91cihzKScsCiAgICAgICAgICAgIGRheSAgICA9PiAnZGF5KHMpJywKICAgICAgICAgICAgd2VlayAgID0+ICd3ZWVrKHMpJywKICAgICAgICAgICAgbW9udGggID0+ICdtb250aChzKScsCiAgICAgICAgICAgIHllYXIgICA9PiAneWVhcihzKScsCiAgICAgICAgfSwKICAgICAgICBUcmFuc2xhdGlvbiA9PiAxLAogICAgICAgIE5hbWUgICAgICAgID0+ICdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0JywKICAgICAgICBTZWxlY3RlZElEICA9PiAkUGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdH0sCiAgICApOwogICAgJFBhcmFte0l0ZW1DcmVhdGVUaW1lU3RhcnR9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZERhdGVTZWxlY3Rpb24oCiAgICAgICAgJVBhcmFtLAogICAgICAgIFByZWZpeCAgID0+ICdJdGVtQ3JlYXRlVGltZVN0YXJ0JywKICAgICAgICBGb3JtYXQgICA9PiAnRGF0ZUlucHV0Rm9ybWF0JywKICAgICAgICBEaWZmVGltZSA9PiAtKCAoIDYwICogNjAgKiAyNCApICogMzAgKSwKICAgICk7CiAgICAkUGFyYW17SXRlbUNyZWF0ZVRpbWVTdG9wfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGREYXRlU2VsZWN0aW9uKAogICAgICAgICVQYXJhbSwKICAgICAgICBQcmVmaXggPT4gJ0l0ZW1DcmVhdGVUaW1lU3RvcCcsCiAgICAgICAgRm9ybWF0ID0+ICdEYXRlSW5wdXRGb3JtYXQnLAogICAgKTsKCiAgICAjIGh0bWwgc2VhcmNoIG1hc2sgb3V0cHV0CiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ1NlYXJjaCcsCiAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICk7CgogICAgIyBzaG93IGxhbmd1YWdlcyBzZWxlY3QKICAgIGlmICggJFNlbGYtPntNdWx0aUxhbmd1YWdlfSApIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdMYW5ndWFnZScsCiAgICAgICAgICAgIERhdGEgPT4geyVQYXJhbX0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGh0bWwgc2VhcmNoIG1hc2sgb3V0cHV0CiAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdQdWJsaWNGQVFTZWFyY2gnLAogICAgICAgIERhdGEgICAgICAgICA9PiB7JVBhcmFtfSwKICAgICk7Cn0KCjE7Cg==
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUVpvb20ucG0gLSB0byBnZXQgYSBjbG9zZXIgdmlldwojIENvcHlyaWdodCAoQykgMjAwMS0yMDEzIE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpQdWJsaWNGQVFab29tOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIE1JTUU6OkJhc2U2NCBxdygpOwp1c2UgS2VybmVsOjpTeXN0ZW06OkZBUTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYWxpZDsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBjaGVjayBuZWVkZWQgb2JqZWN0cwogICAgZm9yIG15ICRPYmplY3QgKAogICAgICAgIHF3KFBhcmFtT2JqZWN0IERCT2JqZWN0IExheW91dE9iamVjdCBMb2dPYmplY3QgQ29uZmlnT2JqZWN0KQogICAgICAgICkKICAgIHsKICAgICAgICBpZiAoICEkU2VsZi0+eyRPYmplY3R9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZhdGFsRXJyb3IoIE1lc3NhZ2UgPT4gIkdvdCBubyAkT2JqZWN0ISIgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBzZXQgVXNlcklEIHRvIHJvb3QgYmVjYXVzZSBpbiBwdWJsaWMgaW50ZXJmYWNlIHRoZXJlIGlzIG5vIHVzZXIKICAgICRTZWxmLT57VXNlcklEfSA9IDE7CgogICAgIyBjcmVhdGUgbmVlZGVkIG9iamVjdHMKICAgICRTZWxmLT57RkFRT2JqZWN0fSAgID0gS2VybmVsOjpTeXN0ZW06OkZBUS0+bmV3KCVQYXJhbSk7CiAgICAkU2VsZi0+e1ZhbGlkT2JqZWN0fSA9IEtlcm5lbDo6U3lzdGVtOjpWYWxpZC0+bmV3KCVQYXJhbSk7CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgJFNlbGYtPntDb25maWd9ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoIkZBUTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgICMgc2V0IGRlZmF1bHQgaW50ZXJmYWNlIHNldHRpbmdzCiAgICAkU2VsZi0+e0ludGVyZmFjZX0gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUdldCgKICAgICAgICBOYW1lICAgPT4gJ3B1YmxpYycsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUxpc3QoCiAgICAgICAgVHlwZXMgID0+ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OlB1YmxpYzo6U3RhdGVUeXBlcycpLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IGRlZmF1bHQgb3B0aW9ucwogICAgJFNlbGYtPntNdWx0aUxhbmd1YWdlfSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6Ok11bHRpTGFuZ3VhZ2UnKTsKICAgICRTZWxmLT57Vm90aW5nfSAgICAgICAgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpWb3RpbmcnKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBwYXJhbXMKICAgIG15ICVHZXRQYXJhbTsKICAgICRHZXRQYXJhbXtJdGVtSUR9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnSXRlbUlEJyApOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkR2V0UGFyYW17SXRlbUlEfSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DdXN0b21lckZhdGFsRXJyb3IoIE1lc3NhZ2UgPT4gJ05lZWQgSXRlbUlEIScgKTsKICAgIH0KCiAgICAjIGdldCBiYWNrIGxpbmsKICAgICRHZXRQYXJhbXtab29tQmFja0xpbmt9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnWm9vbUJhY2tMaW5rJyApIHx8ICcnOwogICAgaWYgKCAkR2V0UGFyYW17Wm9vbUJhY2tMaW5rfSApIHsKICAgICAgICAkR2V0UGFyYW17Wm9vbUJhY2tMaW5rfSA9IE1JTUU6OkJhc2U2NDo6ZGVjb2RlX2Jhc2U2NCggJEdldFBhcmFte1pvb21CYWNrTGlua30gKTsKICAgIH0KCiAgICAjIGdldCBGQVEgaXRlbSBkYXRhCiAgICBteSAlRkFRRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRR2V0KAogICAgICAgIEl0ZW1JRCAgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgSXRlbUZpZWxkcyA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICggISVGQVFEYXRhICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkN1c3RvbWVyRmF0YWxFcnJvcigpOwogICAgfQoKICAgICMgZ2V0IHRoZSB2YWxpZCBpZHMKICAgIG15IEBWYWxpZElEcyA9ICRTZWxmLT57VmFsaWRPYmplY3R9LT5WYWxpZElEc0dldCgpOwogICAgbXkgJVZhbGlkSURMb29rdXAgPSBtYXAgeyAkXyA9PiAxIH0gQFZhbGlkSURzOwoKICAgICMgcGVybWlzc2lvbiBjaGVjawogICAgaWYgKAogICAgICAgICEkRkFRRGF0YXtBcHByb3ZlZH0KICAgICAgICB8fCAhJFZhbGlkSURMb29rdXB7ICRGQVFEYXRhe1ZhbGlkSUR9IH0KICAgICAgICB8fCAhJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9LT57ICRGQVFEYXRhe1N0YXRlVHlwZUlEfSB9CiAgICAgICAgKQogICAgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkN1c3RvbWVyTm9QZXJtaXNzaW9uKCBXaXRoSGVhZGVyID0+ICd5ZXMnICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgSFRNTFZpZXcgU3ViYWN0aW9uCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0hUTUxWaWV3JyApIHsKCiAgICAgICAgIyBnZXQgcGFyYW1zCiAgICAgICAgbXkgJEZpZWxkID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAiRmllbGQiICk7CgogICAgICAgICMgbmVlZGVkIHBhcmFtcwogICAgICAgIGZvciBteSAkTmVlZGVkIChxdyggSXRlbUlEIEZpZWxkICkpIHsKICAgICAgICAgICAgaWYgKCAhJE5lZWRlZCApIHsKICAgICAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkZWQgUGFyYW06ICROZWVkZWQhIiwKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBnZXQgdGhlIEZpZWxkIGNvbnRlbnQKICAgICAgICBteSAkRmllbGRDb250ZW50ID0gJFNlbGYtPntGQVFPYmplY3R9LT5JdGVtRmllbGRHZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICAgICAgRmllbGQgID0+ICRGaWVsZCwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIHJld3JpdGUgaGFuZGxlIGFuZCBhY3Rpb24KICAgICAgICAkRmllbGRDb250ZW50CiAgICAgICAgICAgID1+IHN7IGluZGV4Wy5dcGwgWz9dIEFjdGlvbj1BZ2VudEZBUVpvb20gfXtwdWJsaWMucGw/QWN0aW9uPVB1YmxpY0ZBUVpvb219Z3htczsKCiAgICAgICAgIyB0YWtlIGNhcmUgb2Ygb2xkIHN0eWxlIGJlZm9yZSBGQVEgMi4wLngKICAgICAgICAkRmllbGRDb250ZW50ID1+IHN7CiAgICAgICAgICAgIGluZGV4Wy5dcGwgWz9dIEFjdGlvbj1BZ2VudEZBUSBbJl0oYW1wOyk/IFN1YmFjdGlvbj1Eb3dubG9hZCBbJl0oYW1wOyk/CiAgICAgICAgfXtwdWJsaWMucGw/QWN0aW9uPVB1YmxpY0ZBUVpvb207U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudDt9Z3htczsKCiAgICAgICAgIyBhZGQgbmVlZGVkIEhUTUwgaGVhZGVycwogICAgICAgICRGaWVsZENvbnRlbnQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPntIVE1MVXRpbHNPYmplY3R9LT5Eb2N1bWVudENvbXBsZXRlKAogICAgICAgICAgICBTdHJpbmcgID0+ICRGaWVsZENvbnRlbnQsCiAgICAgICAgICAgIENoYXJzZXQgPT4gJ3V0Zi04JywKICAgICAgICApOwoKICAgICAgICAjIGJ1aWxkIGJhc2UgdXJsIGZvciBpbmxpbmUgaW1hZ2VzCgogICAgICAgIG15ICRTZXNzaW9uSUQgPSAnJzsKICAgICAgICBpZiAoICRTZWxmLT57U2Vzc2lvbklEfSAmJiAhJFNlbGYtPntTZXNzaW9uSURDb29raWV9ICkgewogICAgICAgICAgICAkU2Vzc2lvbklEID0gJzsnIC4gJFNlbGYtPntTZXNzaW9uTmFtZX0gLiAnPScgLiAkU2VsZi0+e1Nlc3Npb25JRH07CiAgICAgICAgICAgICRGaWVsZENvbnRlbnQgPX4gc3sKICAgICAgICAgICAgICAgIChBY3Rpb249UHVibGljRkFRWm9vbTtTdWJhY3Rpb249RG93bmxvYWRBdHRhY2htZW50O0l0ZW1JRD1cZCs7RmlsZUlEPVxkKykKICAgICAgICAgICAgfXskMSRTZXNzaW9uSUR9Z21zeDsKICAgICAgICB9CgogICAgICAgICMgcmV0dXJuIGNvbXBsZXRlIEhUTUwgYXMgYW4gYXR0YWNobWVudAogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJEZpZWxkQ29udGVudCwKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIERvd25sb2FkQXR0YWNobWVudCBTdWJhY3Rpb24KICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnRG93bmxvYWRBdHRhY2htZW50JyApIHsKCiAgICAgICAgIyBtYW5hZ2UgcGFyYW1ldGVycwogICAgICAgICRHZXRQYXJhbXtGaWxlSUR9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnRmlsZUlEJyApOwogICAgICAgIGlmICggIWRlZmluZWQgJEdldFBhcmFte0ZpbGVJRH0gKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkN1c3RvbWVyRmF0YWxFcnJvciggTWVzc2FnZSA9PiAnTmVlZCBGaWxlSUQnICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBhdHRhY2htZW50cwogICAgICAgIG15ICVGaWxlID0gJFNlbGYtPntGQVFPYmplY3R9LT5BdHRhY2htZW50R2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgIEZpbGVJRCA9PiAkR2V0UGFyYW17RmlsZUlEfSwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwogICAgICAgIGlmICglRmlsZSkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5BdHRhY2htZW50KCVGaWxlKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIHN1Y2ggYXR0YWNobWVudCAoJEdldFBhcmFte0ZpbGVJRH0pISBNYXkgYmUgYW4gYXR0YWNrISEhIiwKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkN1c3RvbWVyRmF0YWxFcnJvcigpOwogICAgICAgIH0KICAgIH0KCiAgICAjIG91dHB1dCBoZWFkZXIKICAgIG15ICRPdXRwdXQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkN1c3RvbWVySGVhZGVyKAogICAgICAgIFZhbHVlID0+ICRGQVFEYXRhe1RpdGxlfSwKICAgICk7CgogICAgIyBwcmVwYXJlIGZpZWxkcyBkYXRhCiAgICBGSUVMRDoKICAgIGZvciBteSAkRmllbGQgKHF3KEZpZWxkMSBGaWVsZDIgRmllbGQzIEZpZWxkNCBGaWVsZDUgRmllbGQ2KSkgewogICAgICAgIG5leHQgRklFTEQgaWYgISRGQVFEYXRheyRGaWVsZH07CgogICAgICAgICMgcmV3cml0ZSBsaW5rcyB0byBlbWJlZGRlZCBpbWFnZXMgZm9yIHB1YmxpYyBpbnRlcmZhY2UKICAgICAgICBpZiAoICRTZWxmLT57SW50ZXJmYWNlfS0+e05hbWV9IGVxICdwdWJsaWMnICkgewoKICAgICAgICAgICAgIyByZXdyaXRlIGhhbmRsZSBhbmQgYWN0aW9uCiAgICAgICAgICAgICRGQVFEYXRheyRGaWVsZH0KICAgICAgICAgICAgICAgID1+IHN7IGluZGV4Wy5dcGwgWz9dIEFjdGlvbj1BZ2VudEZBUVpvb20gfXtwdWJsaWMucGw/QWN0aW9uPVB1YmxpY0ZBUVpvb219Z3htczsKCiAgICAgICAgICAgICMgdGFrZSBjYXJlIG9mIG9sZCBzdHlsZSBiZWZvcmUgRkFRIDIuMC54CiAgICAgICAgICAgICRGQVFEYXRheyRGaWVsZH0gPX4gc3sKICAgICAgICAgICAgICAgIGluZGV4Wy5dcGwgWz9dIEFjdGlvbj1BZ2VudEZBUSBbJl0oYW1wOyk/IFN1YmFjdGlvbj1Eb3dubG9hZCBbJl0oYW1wOyk/CiAgICAgICAgICAgIH17cHVibGljLnBsP0FjdGlvbj1QdWJsaWNGQVFab29tO1N1YmFjdGlvbj1Eb3dubG9hZEF0dGFjaG1lbnQ7fWd4bXM7CiAgICAgICAgfQoKICAgICAgICAjIG5vIHF1b3RpbmcgaWYgaHRtbCB2aWV3IGlzIGVuYWJsZWQKICAgICAgICBuZXh0IEZJRUxEIGlmICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6Okl0ZW06OkhUTUwnKTsKCiAgICAgICAgIyBodG1sIHF1b3RpbmcKICAgICAgICAkRkFRRGF0YXskRmllbGR9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICBOZXdMaW5lICAgICAgICA9PiAwLAogICAgICAgICAgICBUZXh0ICAgICAgICAgICA9PiAkRkFRRGF0YXskRmllbGR9LAogICAgICAgICAgICBWTWF4ICAgICAgICAgICA9PiA1MDAwLAogICAgICAgICAgICBIVE1MUmVzdWx0TW9kZSA9PiAxLAogICAgICAgICAgICBMaW5rRmVhdHVyZSAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgIyBzZXQgdm90aW5nIHJlc3VsdHMKICAgICRQYXJhbXtWb3RpbmdSZXN1bHRDb2xvcn0gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkdldEZBUUl0ZW1Wb3RpbmdSYXRlQ29sb3IoCiAgICAgICAgUmF0ZSA9PiAkRkFRRGF0YXtWb3RlUmVzdWx0fSwKICAgICk7CgogICAgaWYgKCAhJFBhcmFte1ZvdGluZ1Jlc3VsdENvbG9yfSB8fCAkRkFRRGF0YXtWb3Rlc30gZXEgJzAnICkgewogICAgICAgICRQYXJhbXtWb3RpbmdSZXN1bHRDb2xvcn0gPSAnR3JheSc7CiAgICB9CgogICAgIyBzaG93IGJhY2sgbGluawogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdCYWNrJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgIH0sCiAgICApOwoKICAgICMgc2hvdyBsYW5ndWFnZQogICAgaWYgKCAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ICkgewogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0xhbmd1YWdlJywKICAgICAgICAgICAgRGF0YSA9PiB7JUZBUURhdGF9LAogICAgICAgICk7CiAgICB9CgogICAgIyBzaG93IHZvdGVzCiAgICBpZiAoICRTZWxmLT57Vm90aW5nfSApIHsKCiAgICAgICAgIyBhbHdheXMgZGlwbGF5cyBWb3RlcyByZXN1bHQgZXZlbiBpZiBpdHMgMAogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1ZpZXdWb3RlcycsCiAgICAgICAgICAgIERhdGEgPT4geyVGQVFEYXRhfSwKICAgICAgICApOwogICAgfQoKICAgICMgc2hvdyBGQVEgcGF0aAogICAgbXkgJFNob3dGQVFQYXRoID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GQVFQYXRoU2hvdygKICAgICAgICBGQVFPYmplY3QgID0+ICRTZWxmLT57RkFRT2JqZWN0fSwKICAgICAgICBDYXRlZ29yeUlEID0+ICRGQVFEYXRhe0NhdGVnb3J5SUR9LAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICgkU2hvd0ZBUVBhdGgpIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGQVFQYXRoSXRlbUVsZW1lbnQnLAogICAgICAgICAgICBEYXRhID0+IHslRkFRRGF0YX0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNob3cga2V5d29yZHMgYXMgc2VhcmNoIGxpbmtzCiAgICBpZiAoICRGQVFEYXRhe0tleXdvcmRzfSApIHsKCiAgICAgICAgIyByZXBsYWNlIGNvbW1hcyBhbmQgc2VtaWNvbG9ucwogICAgICAgICRGQVFEYXRhe0tleXdvcmRzfSA9fiBzLywvIC9nOwogICAgICAgICRGQVFEYXRhe0tleXdvcmRzfSA9fiBzLzsvIC9nOwoKICAgICAgICBteSBAS2V5d29yZHMgPSBzcGxpdCAvXHMrLywgJEZBUURhdGF7S2V5d29yZHN9OwogICAgICAgIGZvciBteSAkS2V5d29yZCAoQEtleXdvcmRzKSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdLZXl3b3JkcycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBLZXl3b3JkID0+ICRLZXl3b3JkLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBvdXRwdXQgcmF0aW5nIHN0YXJzCiAgICBpZiAoICRTZWxmLT57Vm90aW5nfSApIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZBUVJhdGluZ1N0YXJzU2hvdygKICAgICAgICAgICAgVm90ZVJlc3VsdCA9PiAkRkFRRGF0YXtWb3RlUmVzdWx0fSwKICAgICAgICAgICAgVm90ZXMgICAgICA9PiAkRkFRRGF0YXtWb3Rlc30sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIG91dHB1dCBhdHRhY2htZW50cyBpZiBhbnkKICAgIG15IEBBdHRhY2htZW50SW5kZXggPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkF0dGFjaG1lbnRJbmRleCgKICAgICAgICBJdGVtSUQgICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgIFNob3dJbmxpbmUgPT4gMCwKICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBvdXRwdXQgYXR0YWNobWVudHMKICAgIGlmIChAQXR0YWNobWVudEluZGV4KSB7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnQXR0YWNobWVudEhlYWRlcicsCiAgICAgICAgKTsKICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKEBBdHRhY2htZW50SW5kZXgpIHsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0F0dGFjaG1lbnRSb3cnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJUZBUURhdGEsCiAgICAgICAgICAgICAgICAgICAgJXskQXR0YWNobWVudH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNob3cgRkFRIENvbnRlbnQKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RkFRQ29udGVudFNob3coCiAgICAgICAgRkFRT2JqZWN0ICAgICAgID0+ICRTZWxmLT57RkFRT2JqZWN0fSwKICAgICAgICBJbnRlcmZhY2VTdGF0ZXMgPT4gJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9LAogICAgICAgIEZBUURhdGEgICAgICAgICA9PiB7JUZBUURhdGF9LAogICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgbG9nIGFjY2VzcyB0byB0aGlzIEZBUSBpdGVtCiAgICAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUUxvZ0FkZCgKICAgICAgICBJdGVtSUQgPT4gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnSXRlbUlEJyApLAogICAgICAgIEludGVyZmFjZSA9PiAkU2VsZi0+e0ludGVyZmFjZX0tPntOYW1lfSwKICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIHN0YXJ0IHRlbXBsYXRlIG91dHB1dAogICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ1B1YmxpY0ZBUVpvb20nLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGFkZCBmb290ZXIKICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DdXN0b21lckZvb3RlcigpOwoKICAgIHJldHVybiAkT3V0cHV0Owp9CgoxOwo=
IyAtLQojIEtlcm5lbC9PdXRwdXQvSFRNTC9DdXN0b21lckhlYWRlck1ldGFGQVFTZWFyY2gucG0KIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxMyBPVFJTIEFHLCBodHRwOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpDdXN0b21lckhlYWRlck1ldGFGQVFTZWFyY2g7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBmb3IgKHF3KENvbmZpZ09iamVjdCBMb2dPYmplY3QgTGF5b3V0T2JqZWN0IFRpbWVPYmplY3QpKSB7CiAgICAgICAgJFNlbGYtPnskX30gPSAkUGFyYW17JF99IHx8IGRpZSAiR290IG5vICRfISI7CiAgICB9CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFNlc3Npb24gPSAnJzsKICAgIGlmICggISRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e1Nlc3Npb25JRENvb2tpZX0gKSB7CiAgICAgICAgJFNlc3Npb24gPSAnOycgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntTZXNzaW9uTmFtZX0gLiAnPScKICAgICAgICAgICAgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntTZXNzaW9uSUR9OwogICAgfQoKICAgICMgYnVpbGQgb3BlbiBzZWFyY2ggZGVzY3JpcHRpb24gZm9yIEZBUSBudW1iZXIKICAgIG15ICRUaXRsZSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdQcm9kdWN0TmFtZScpOwoKICAgICRUaXRsZSAuPSAnIC0gQ3VzdG9tZXIgKCcgLiAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpGQVFIb29rJykgLiAnKSc7CiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ01ldGFMaW5rJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgUmVsICAgPT4gJ3NlYXJjaCcsCiAgICAgICAgICAgIFR5cGUgID0+ICdhcHBsaWNhdGlvbi9vcGVuc2VhcmNoZGVzY3JpcHRpb24reG1sJywKICAgICAgICAgICAgVGl0bGUgPT4gJFRpdGxlLAogICAgICAgICAgICBIcmVmICA9PiAnJEVudnsiQmFzZWxpbmsifUFjdGlvbj0nIC4gJFBhcmFte0NvbmZpZ30tPntBY3Rpb259CiAgICAgICAgICAgICAgICAuICc7U3ViYWN0aW9uPU9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcicgLiAkU2Vzc2lvbiwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGJ1aWxkIG9wZW4gc2VhcmNoIGRlc2NyaXB0aW9uIGZvciBGQVEgZnVsbHRleHQKICAgIG15ICRGdWxsdGV4dCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdGQVFGdWxsdGV4dCcpOwogICAgJFRpdGxlID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ1Byb2R1Y3ROYW1lJyk7CiAgICAkVGl0bGUgLj0gJyAtIEN1c3RvbWVyICgnIC4gJEZ1bGx0ZXh0IC4gJyknOwogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdNZXRhTGluaycsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIFJlbCAgID0+ICdzZWFyY2gnLAogICAgICAgICAgICBUeXBlICA9PiAnYXBwbGljYXRpb24vb3BlbnNlYXJjaGRlc2NyaXB0aW9uK3htbCcsCiAgICAgICAgICAgIFRpdGxlID0+ICRUaXRsZSwKICAgICAgICAgICAgSHJlZiAgPT4gJyRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JyAuICRQYXJhbXtDb25maWd9LT57QWN0aW9ufQogICAgICAgICAgICAgICAgLiAnO1N1YmFjdGlvbj1PcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dCcgLiAkU2Vzc2lvbiwKICAgICAgICB9LAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKMTsK
IyAtLQojIEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmRGQVEucG0KIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxMyBPVFJTIEFHLCBodHRwOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpEYXNoYm9hcmRGQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OkZBUTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIGZvciBteSAkT2JqZWN0ICgKICAgICAgICBxdyhDb25maWcgTmFtZSBDb25maWdPYmplY3QgTG9nT2JqZWN0IERCT2JqZWN0IExheW91dE9iamVjdCBQYXJhbU9iamVjdCBVc2VySUQpCiAgICAgICAgKQogICAgewogICAgICAgIGRpZSAiR290IG5vICRPYmplY3QhIiBpZiAoICEkU2VsZi0+eyRPYmplY3R9ICk7CiAgICB9CgogICAgJFNlbGYtPntGQVFPYmplY3R9ID0gS2VybmVsOjpTeXN0ZW06OkZBUS0+bmV3KCVQYXJhbSk7CgogICAgIyBzZXQgZGVmYXVsdCBpbnRlcmZhY2Ugc2V0dGluZ3MKICAgICRTZWxmLT57SW50ZXJmYWNlfSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVUeXBlR2V0KAogICAgICAgIE5hbWUgICA9PiAnaW50ZXJuYWwnLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwogICAgJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9ID0gJFNlbGYtPntGQVFPYmplY3R9LT5TdGF0ZVR5cGVMaXN0KAogICAgICAgIFR5cGVzICA9PiAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpBZ2VudDo6U3RhdGVUeXBlcycpLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFByZWZlcmVuY2VzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuOwp9CgpzdWIgQ29uZmlnIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICgKICAgICAgICAleyAkU2VsZi0+e0NvbmZpZ30gfSwKICAgICk7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZBUVNob3dMYXRlc3ROZXdzQm94KAogICAgICAgIEZBUU9iamVjdCAgICAgICA9PiAkU2VsZi0+e0ZBUU9iamVjdH0sCiAgICAgICAgVHlwZSAgICAgICAgICAgID0+ICRTZWxmLT57Q29uZmlnfS0+e1R5cGV9LAogICAgICAgIE1vZGUgICAgICAgICAgICA9PiAnQWdlbnQnLAogICAgICAgIENhdGVnb3J5SUQgICAgICA9PiAwLAogICAgICAgIEludGVyZmFjZSAgICAgICA9PiAkU2VsZi0+e0ludGVyZmFjZX0sCiAgICAgICAgSW50ZXJmYWNlU3RhdGVzID0+ICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSwKICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIG15ICRDb250ZW50ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudERhc2hib2FyZEZBUU92ZXJ2aWV3JywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICBDYXRlZ29yeUlEICAgPT4gMCwKICAgICAgICAgICAgU2lkZWJhckNsYXNzID0+ICdNZWRpdW0nLAogICAgICAgIH0sCiAgICApOwogICAgcmV0dXJuICRDb250ZW50Owp9CgoxOwo=
IyAtLQojIEtlcm5lbC9PdXRwdXQvSFRNTC9GQVFKb3VybmFsT3ZlcnZpZXdTbWFsbC5wbS5wbQojIENvcHlyaWdodCAoQykgMjAwMS0yMDEzIE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkZBUUpvdXJuYWxPdmVydmlld1NtYWxsOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgZm9yIG15ICRPYmplY3QgKAogICAgICAgIHF3KENvbmZpZ09iamVjdCBMb2dPYmplY3QgREJPYmplY3QgTGF5b3V0T2JqZWN0IFVzZXJJRCBVc2VyT2JqZWN0IE1haW5PYmplY3QpCiAgICAgICAgKQogICAgewogICAgICAgICRTZWxmLT57JE9iamVjdH0gPSAkUGFyYW17JE9iamVjdH0gfHwgZGllICJHb3Qgbm8gJE9iamVjdCEiOwogICAgfQoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRPdXRwdXQ7CiAgICBteSBAU2hvd0NvbHVtbnM7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhQYWdlU2hvd24gU3RhcnRIaXQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBuZWVkIEpvdXJuYWwKICAgIGlmICggISRQYXJhbXtKb3VybmFsfSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgdGhlIEpvdXJuYWwhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHN0b3JlIHRoZSBqb3VybmFsIGxvY2FsbHkKICAgIG15IEBKb3VybmFsRW50cmllczsKICAgIGlmICggJFBhcmFte0pvdXJuYWx9ICYmIHJlZiAkUGFyYW17Sm91cm5hbH0gZXEgJ0FSUkFZJyApIHsKICAgICAgICBASm91cm5hbEVudHJpZXMgPSBAeyAkUGFyYW17Sm91cm5hbH0gfTsKICAgIH0KCiAgICAjIHNob3cgSm91cmFsIEVudHJpZXMgYXMgcm93cwogICAgaWYgKEBKb3VybmFsRW50cmllcykgewoKICAgICAgICAjIGNoZWNrIFNob3dDb2x1bW5zIHBhcmFtZXRlcgogICAgICAgIGlmICggJFBhcmFte1Nob3dDb2x1bW5zfSAmJiByZWYgJFBhcmFte1Nob3dDb2x1bW5zfSBlcSAnQVJSQVknICkgewogICAgICAgICAgICBAU2hvd0NvbHVtbnMgPSBAeyAkUGFyYW17U2hvd0NvbHVtbnN9IH07CiAgICAgICAgfQoKICAgICAgICAjIGJ1aWxkIGNvbHVtbiBoZWFkZXIgYmxvY2tzCiAgICAgICAgaWYgKEBTaG93Q29sdW1ucykgewoKICAgICAgICAgICAgIyBjYWxsIG1haW4gYmxvY2sKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jayggTmFtZSA9PiAnUmVjb3JkRm9ybScgKTsKCiAgICAgICAgICAgIGZvciBteSAkQ29sdW1uIChAU2hvd0NvbHVtbnMpIHsKCiAgICAgICAgICAgICAgICAjIGNhbGwgaGVhZGVyIHNwZWNpZmljIGJsb2NrCiAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZCcgLiAkQ29sdW1uIC4gJ0hlYWRlcicsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJENvdW50ZXIgPSAwOwoKICAgICAgICBKb3VybmFsRW50cnk6CiAgICAgICAgZm9yIG15ICRKb3VybmFsRW50cnkgKEBKb3VybmFsRW50cmllcykgewogICAgICAgICAgICAkQ291bnRlcisrOwogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkQ291bnRlciA+PSAkUGFyYW17U3RhcnRIaXR9CiAgICAgICAgICAgICAgICAmJiAkQ291bnRlciA8ICggJFBhcmFte1BhZ2VTaG93bn0gKyAkUGFyYW17U3RhcnRIaXR9ICkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICMgZ2V0IEZBUSBkYXRhIGZvciBjb3JydXB0aW9uIGNoZWNrCiAgICAgICAgICAgICAgICBteSAlRkFRID0gJFNlbGYtPntGQVFPYmplY3R9LT5GQVFHZXQoCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkSm91cm5hbEVudHJ5LT57SXRlbUlEfSwKICAgICAgICAgICAgICAgICAgICBJdGVtRmllbGRzID0+IDAsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG5leHQgSUQgaWYgISVGQVE7CgogICAgICAgICAgICAgICAgIyBidWlsZCByZWNvcmQgYmxvY2sKICAgICAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAleyRKb3VybmFsRW50cnl9LAogICAgICAgICAgICAgICAgICAgICAgICBDb3VudGVyID0+ICRDb3VudGVyLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgYnVpbGQgY29sdW1uIHJlY29yZCBibG9ja3MKICAgICAgICAgICAgICAgIGlmIChAU2hvd0NvbHVtbnMpIHsKICAgICAgICAgICAgICAgICAgICBDT0xVTU46CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRDb2x1bW4gKEBTaG93Q29sdW1ucykgewogICAgICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJyAuICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJXskSm91cm5hbEVudHJ5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIHNob3cgbGlua3MgaWYgYXZhaWxhYmxlCiAgICAgICAgICAgICAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmQnIC4gJENvbHVtbiAuICdMaW5rU3RhcnQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICV7JEpvdXJuYWxFbnRyeX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJyAuICRDb2x1bW4gLiAnTGlua0VuZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJXskSm91cm5hbEVudHJ5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgb3RoZXJ3aXNlIHNldCBhbiBObyBGQVEgSm91bmFsIG1lc3NhZ2UKICAgIGVsc2UgewogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soIE5hbWUgPT4gJ05vRkFRRm91bmQnICk7CiAgICB9CgogICAgIyB1c2UgdGVtcGxhdGUKICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUUpvdXJuYWxPdmVydmlld1NtYWxsJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICRTZWxmLT57Vmlld1R5cGV9LAogICAgICAgICAgICBDb2x1bW5Db3VudCA9PiBzY2FsYXIgQFNob3dDb2x1bW5zLAogICAgICAgIH0sCiAgICApOwoKICAgIHJldHVybiAkT3V0cHV0Owp9CgoxOwo=
IyAtLQojIEtlcm5lbC9PdXRwdXQvSFRNTC9GQVFNZW51R2VuZXJpYy5wbQojIENvcHlyaWdodCAoQykgMjAwMS0yMDEzIE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkZBUU1lbnVHZW5lcmljOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE9iamVjdCAoCiAgICAgICAgcXcoQ29uZmlnT2JqZWN0IEVuY29kZU9iamVjdCBMb2dPYmplY3QgREJPYmplY3QgTGF5b3V0T2JqZWN0IEZBUU9iamVjdCBVc2VySUQpCiAgICAgICAgKQogICAgewogICAgICAgICRTZWxmLT57JE9iamVjdH0gPSAkUGFyYW17JE9iamVjdH0gfHwgZGllICJHb3Qgbm8gJE9iamVjdCEiOwogICAgfQoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17RkFRSXRlbX0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIEZBUUl0ZW0hJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdyYW50IGFjY2VzcyBieSBkZWZhdWx0CiAgICBteSAkQWNjZXNzID0gMTsKCiAgICAjIGdldCBncm91cHMKICAgIG15ICRBY3Rpb24gPSAkUGFyYW17Q29uZmlnfS0+e0FjdGlvbn07CiAgICBpZiAoICRBY3Rpb24gZXEgJ0FnZW50TGlua09iamVjdCcgKSB7CgogICAgICAgICMgVGhlIExpbmstbGluayBpcyBhIHNwZWNpYWwgY2FzZSwgYXMgaXQgaXMgbm90IHNwZWNpZmljIHRvIEZBUS4KICAgICAgICAjIEFzIGEgd29ya2Fyb3VuZCB3ZSBoYXJkY29kZSB0aGF0IEFnZW50TGlua09iamVjdCBpcyB0cmVhdGVkIGxpa2UgQWdlbnRGQVFFZGl0CiAgICAgICAgJEFjdGlvbiA9ICdBZ2VudEZBUUVkaXQnOwogICAgfQogICAgbXkgJEdyb3Vwc1JvID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0Zyb250ZW5kOjpNb2R1bGUnKS0+eyRBY3Rpb259LT57R3JvdXBSb30gfHwgW107CiAgICBteSAkR3JvdXBzUncgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRnJvbnRlbmQ6Ok1vZHVsZScpLT57JEFjdGlvbn0tPntHcm91cH0gICB8fCBbXTsKCiAgICAjIGNoZWNrIHBlcm1pc3Npb24KICAgIGlmICggJEFjdGlvbiAmJiAoIEB7JEdyb3Vwc1JvfSB8fCBAeyRHcm91cHNSd30gKSApIHsKCiAgICAgICAgIyBkZW55IGFjY2VzcyBieSBkZWZhdWx0LCB3aGVuIHRoZXJlIGFyZSBncm91cHMgdG8gY2hlY2sKICAgICAgICAkQWNjZXNzID0gMDsKCiAgICAgICAgIyBjaGVjayByZWFkIG9ubHkgZ3JvdXBzCiAgICAgICAgUk9HUk9VUDoKICAgICAgICBmb3IgbXkgJFJvR3JvdXAgKCBAeyRHcm91cHNSb30gKSB7CgogICAgICAgICAgICBuZXh0IFJPR1JPVVAgaWYgISRTZWxmLT57TGF5b3V0T2JqZWN0fS0+eyJVc2VySXNHcm91cFJvWyRSb0dyb3VwXSJ9OwogICAgICAgICAgICBuZXh0IFJPR1JPVVAgaWYgJFNlbGYtPntMYXlvdXRPYmplY3R9LT57IlVzZXJJc0dyb3VwUm9bJFJvR3JvdXBdIn0gbmUgJ1llcyc7CgogICAgICAgICAgICAjIHNldCBhY2Nlc3MKICAgICAgICAgICAgJEFjY2VzcyA9IDE7CiAgICAgICAgICAgIGxhc3QgUk9HUk9VUDsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgcmVhZCB3cml0ZSBncm91cHMKICAgICAgICBSV0dST1VQOgogICAgICAgIGZvciBteSAkUndHcm91cCAoIEB7JEdyb3Vwc1J3fSApIHsKCiAgICAgICAgICAgIG5leHQgUldHUk9VUCBpZiAhJFNlbGYtPntMYXlvdXRPYmplY3R9LT57IlVzZXJJc0dyb3VwWyRSd0dyb3VwXSJ9OwogICAgICAgICAgICBuZXh0IFJXR1JPVVAgaWYgJFNlbGYtPntMYXlvdXRPYmplY3R9LT57IlVzZXJJc0dyb3VwWyRSd0dyb3VwXSJ9IG5lICdZZXMnOwoKICAgICAgICAgICAgIyBzZXQgYWNjZXNzCiAgICAgICAgICAgICRBY2Nlc3MgPSAxOwogICAgICAgICAgICBsYXN0IFJXR1JPVVA7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAkUGFyYW17Q291bnRlcn0gaWYgISRBY2Nlc3M7CgogICAgIyBvdXRwdXQgbWVudSBpdGVtCiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ01lbnVJdGVtJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAleyAkUGFyYW17RkFRSXRlbX0gfSwKICAgICAgICAgICAgJXsgJFBhcmFte0NvbmZpZ30gfSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGNoZWNrIGlmIGEgZGlhbG9nIGhhcyB0byBiZSBzaG93bgogICAgaWYgKCAkUGFyYW17Q29uZmlnfS0+e0RpYWxvZ1RpdGxlfSApIHsKCiAgICAgICAgIyBvdXRwdXQgY29uZmlybWF0aW9uIGRpYWxvZwogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1Nob3dDb25maXJtYXRpb25EaWFsb2cnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICV7ICRQYXJhbXtGQVFJdGVtfSB9LAogICAgICAgICAgICAgICAgJXsgJFBhcmFte0NvbmZpZ30gfSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgICRQYXJhbXtDb3VudGVyfSsrOwoKICAgIHJldHVybiAkUGFyYW17Q291bnRlcn07Cn0KCjE7Cg==
IyAtLQojIEtlcm5lbC9PdXRwdXQvSFRNTC9GQVFPdmVydmlld1NtYWxsLnBtLnBtCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6RkFRT3ZlcnZpZXdTbWFsbDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIGZvciBteSAkT2JqZWN0ICgKICAgICAgICBxdyhDb25maWdPYmplY3QgTG9nT2JqZWN0IERCT2JqZWN0IExheW91dE9iamVjdCBVc2VySUQgVXNlck9iamVjdCBNYWluT2JqZWN0KQogICAgICAgICkKICAgIHsKICAgICAgICAkU2VsZi0+eyRPYmplY3R9ID0gJFBhcmFteyRPYmplY3R9IHx8IGRpZSAiR290IG5vICRPYmplY3QhIjsKICAgIH0KCiAgICAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6TXVsdGlMYW5ndWFnZScpOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRPdXRwdXQ7CiAgICBteSBAU2hvd0NvbHVtbnM7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhQYWdlU2hvd24gU3RhcnRIaXQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBuZWVkIEZBUUlEcwogICAgaWYgKCAhJFBhcmFte0ZBUUlEc30gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIHRoZSBGQVFJRHMhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHN0b3JlIHRoZSBGQVFJRHMKICAgIG15IEBJRHM7CiAgICBpZiAoICRQYXJhbXtGQVFJRHN9ICYmIHJlZiAkUGFyYW17RkFRSURzfSBlcSAnQVJSQVknICkgewogICAgICAgIEBJRHMgPSBAeyAkUGFyYW17RkFRSURzfSB9OwogICAgfQoKICAgIGlmIChASURzKSB7CgogICAgICAgICMgY2hlY2sgU2hvd0NvbHVtbnMgcGFyYW1ldGVyCiAgICAgICAgaWYgKCAkUGFyYW17U2hvd0NvbHVtbnN9ICYmIHJlZiAkUGFyYW17U2hvd0NvbHVtbnN9IGVxICdBUlJBWScgKSB7CiAgICAgICAgICAgIEBTaG93Q29sdW1ucyA9IEB7ICRQYXJhbXtTaG93Q29sdW1uc30gfTsKICAgICAgICB9CgogICAgICAgICMgYnVpbGQgY29sdW1uIGhlYWRlciBibG9ja3MKICAgICAgICBpZiAoQFNob3dDb2x1bW5zKSB7CgogICAgICAgICAgICAjIGNhbGwgbWFpbiBibG9jawogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKCBOYW1lID0+ICdSZWNvcmRGb3JtJyApOwoKICAgICAgICAgICAgQ09MVU1OOgogICAgICAgICAgICBmb3IgbXkgJENvbHVtbiAoQFNob3dDb2x1bW5zKSB7CgogICAgICAgICAgICAgICAgbmV4dCBDT0xVTU4gaWYgKCAkQ29sdW1uIGVxICdMYW5ndWFnZScgJiYgISRTZWxmLT57TXVsdGlMYW5ndWFnZX0gKTsKCiAgICAgICAgICAgICAgICAjIGNyZWF0ZSBuZWVkZWQgdmFyaWFibGVzCiAgICAgICAgICAgICAgICBteSAkQ1NTID0gJ092ZXJ2aWV3SGVhZGVyJzsKICAgICAgICAgICAgICAgIG15ICRPcmRlckJ5OwoKICAgICAgICAgICAgICAgICMgcmVtb3ZlIElEIGlmIG5lY2VzYXJ5CiAgICAgICAgICAgICAgICBpZiAoICRQYXJhbXtTb3J0Qnl9ICkgewogICAgICAgICAgICAgICAgICAgICRQYXJhbXtTb3J0Qnl9CiAgICAgICAgICAgICAgICAgICAgICAgID0gJFBhcmFte1NvcnRCeX0gZXEgJ1ByaW9yaXR5SUQnCiAgICAgICAgICAgICAgICAgICAgICAgID8gJ1ByaW9yaXR5JwogICAgICAgICAgICAgICAgICAgICAgICA6ICRQYXJhbXtTb3J0Qnl9IGVxICdDYXRlZ29yeUlEJyA/ICdDYXRlZ29yeScKICAgICAgICAgICAgICAgICAgICAgICAgOiAkUGFyYW17U29ydEJ5fSBlcSAnTGFuZ3VhZ2VJRCcgPyAnTGFuZ3VhZ2UnCiAgICAgICAgICAgICAgICAgICAgICAgIDogJFBhcmFte1NvcnRCeX0gZXEgJ1N0YXRlSUQnICAgID8gJ1N0YXRlJwogICAgICAgICAgICAgICAgICAgICAgICA6ICRQYXJhbXtTb3J0Qnl9IGVxICdGQVFJRCcgICAgICA/ICdOdW1iZXInCiAgICAgICAgICAgICAgICAgICAgICAgIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFBhcmFte1NvcnRCeX07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBzZXQgdGhlIGNvcnJlY3QgU2V0IENTUyBjbGFzcyBhbmQgb3JkZXIgYnkgbGluawogICAgICAgICAgICAgICAgaWYgKCAkUGFyYW17U29ydEJ5fSAmJiAoICRQYXJhbXtTb3J0Qnl9IGVxICRDb2x1bW4gKSApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICRQYXJhbXtPcmRlckJ5fSAmJiAoICRQYXJhbXtPcmRlckJ5fSBlcSAnVXAnICkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRPcmRlckJ5ID0gJ0Rvd24nOwogICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydERlc2NlbmRpbmdMYXJnZSc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkT3JkZXJCeSA9ICdVcCc7CiAgICAgICAgICAgICAgICAgICAgICAgICRDU1MgLj0gJyBTb3J0QXNjZW5kaW5nTGFyZ2UnOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRPcmRlckJ5ID0gJ1VwJzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZCcgLiAkQ29sdW1uIC4gJ0hlYWRlcicsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAkQ291bnRlciA9IDA7CgogICAgICAgIElEOgogICAgICAgIGZvciBteSAkSUQgKEBJRHMpIHsKICAgICAgICAgICAgJENvdW50ZXIrKzsKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJENvdW50ZXIgPj0gJFBhcmFte1N0YXJ0SGl0fQogICAgICAgICAgICAgICAgJiYgJENvdW50ZXIgPCAoICRQYXJhbXtQYWdlU2hvd259ICsgJFBhcmFte1N0YXJ0SGl0fSApCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAjIHRvIHN0b3JlIGFsbCBkYXRhCiAgICAgICAgICAgICAgICBteSAlRGF0YTsKCiAgICAgICAgICAgICAgICAjIGdldCBGQVEgZGF0YQogICAgICAgICAgICAgICAgbXkgJUZBUSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRR2V0KAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJElELAogICAgICAgICAgICAgICAgICAgIEl0ZW1GaWVsZHMgPT4gMCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbmV4dCBJRCBpZiAhJUZBUTsKCiAgICAgICAgICAgICAgICAjIGFkZCBGQVEgZGF0YQogICAgICAgICAgICAgICAgJURhdGEgPSAoICVEYXRhLCAlRkFRICk7CgogICAgICAgICAgICAgICAgIyBidWlsZCByZWNvcmQgYmxvY2sKICAgICAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAlRGF0YSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGJ1aWxkIGNvbHVtbiByZWNvcmQgYmxvY2tzCiAgICAgICAgICAgICAgICBpZiAoQFNob3dDb2x1bW5zKSB7CiAgICAgICAgICAgICAgICAgICAgQ09MVU1OOgogICAgICAgICAgICAgICAgICAgIGZvciBteSAkQ29sdW1uIChAU2hvd0NvbHVtbnMpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgQ09MVU1OIGlmICggJENvbHVtbiBlcSAnTGFuZ3VhZ2UnICYmICEkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ICk7CiAgICAgICAgICAgICAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmQnIC4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGRvIG5vdCBkaXNwbGF5IGNvbHVtbnMgYXMgbGlua3MgaW4gdGhlIGN1c3RvbWVyIGZyb250ZW5kCiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgQ09MVU1OIGlmICRQYXJhbXtGcm9udGVuZH0gZXEgJ0N1c3RvbWVyJzsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgc2hvdyBsaW5rcyBpZiBhdmFpbGFibGUKICAgICAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZCcgLiAkQ29sdW1uIC4gJ0xpbmtTdGFydCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJURhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJyAuICRDb2x1bW4gLiAnTGlua0VuZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJURhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soIE5hbWUgPT4gJ05vRkFRRm91bmQnICk7CiAgICB9CgogICAgIyB1c2UgdGVtcGxhdGUKICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUU92ZXJ2aWV3U21hbGwnLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJFNlbGYtPntWaWV3VHlwZX0sCiAgICAgICAgICAgIENvbHVtbkNvdW50ID0+IHNjYWxhciBAU2hvd0NvbHVtbnMsCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCjE7Cg==
IyAtLQojIEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhRkFRU2VhcmNoLnBtCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SGVhZGVyTWV0YUZBUVNlYXJjaDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIGZvciAocXcoQ29uZmlnT2JqZWN0IExvZ09iamVjdCBMYXlvdXRPYmplY3QgVGltZU9iamVjdCkpIHsKICAgICAgICAkU2VsZi0+eyRffSA9ICRQYXJhbXskX30gfHwgZGllICJHb3Qgbm8gJF8hIjsKICAgIH0KCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkU2Vzc2lvbiA9ICcnOwogICAgaWYgKCAhJFNlbGYtPntMYXlvdXRPYmplY3R9LT57U2Vzc2lvbklEQ29va2llfSApIHsKICAgICAgICAkU2Vzc2lvbiA9ICc7JyAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e1Nlc3Npb25OYW1lfSAuICc9JwogICAgICAgICAgICAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e1Nlc3Npb25JRH07CiAgICB9CgogICAgIyBidWlsZCBvcGVuIHNlYXJjaCBkZXNjcmlwdGlvbiBmb3IgRkFRIG51bWJlcgogICAgbXkgJFRpdGxlID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ1Byb2R1Y3ROYW1lJyk7CgogICAgJFRpdGxlIC49ICcoJyAuICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkZBUUhvb2snKSAuICcpJzsKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnTWV0YUxpbmsnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBSZWwgICA9PiAnc2VhcmNoJywKICAgICAgICAgICAgVHlwZSAgPT4gJ2FwcGxpY2F0aW9uL29wZW5zZWFyY2hkZXNjcmlwdGlvbit4bWwnLAogICAgICAgICAgICBUaXRsZSA9PiAkVGl0bGUsCiAgICAgICAgICAgIEhyZWYgID0+ICckRW52eyJCYXNlbGluayJ9QWN0aW9uPScgLiAkUGFyYW17Q29uZmlnfS0+e0FjdGlvbn0KICAgICAgICAgICAgICAgIC4gJztTdWJhY3Rpb249T3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyJyAuICRTZXNzaW9uLAogICAgICAgIH0sCiAgICApOwoKICAgICMgYnVpbGQgb3BlbiBzZWFyY2ggZGVzY3JpcHRpb24gZm9yIEZBUSBmdWxsdGV4dAogICAgbXkgJEZ1bGx0ZXh0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ0ZBUUZ1bGx0ZXh0Jyk7CiAgICAkVGl0bGUgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnUHJvZHVjdE5hbWUnKTsKICAgICRUaXRsZSAuPSAnKCcgLiAkRnVsbHRleHQgLiAnKSc7CiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ01ldGFMaW5rJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgUmVsICAgPT4gJ3NlYXJjaCcsCiAgICAgICAgICAgIFR5cGUgID0+ICdhcHBsaWNhdGlvbi9vcGVuc2VhcmNoZGVzY3JpcHRpb24reG1sJywKICAgICAgICAgICAgVGl0bGUgPT4gJFRpdGxlLAogICAgICAgICAgICBIcmVmICA9PiAnJEVudnsiQmFzZWxpbmsifUFjdGlvbj0nIC4gJFBhcmFte0NvbmZpZ30tPntBY3Rpb259CiAgICAgICAgICAgICAgICAuICc7U3ViYWN0aW9uPU9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0JyAuICRTZXNzaW9uLAogICAgICAgIH0sCiAgICApOwoKICAgIHJldHVybiAxOwp9CgoxOwo=
IyAtLQojIEtlcm5lbC9PdXRwdXQvSFRNTC9MYXlvdXRGQVEucG0gLSBwcm92aWRlcyBnZW5lcmljIGFnZW50IEhUTUwgb3V0cHV0CiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0RkFROwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXRGQVEgLSBhbGwgRkFRLXJlbGF0ZWQgSFRNTCBmdW5jdGlvbnMKCj1oZWFkMSBTWU5PUFNJUwoKQWxsIEZBUS1yZWxhdGVkIEhUTUwgZnVuY3Rpb25zCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPW92ZXIgNAoKPWN1dAoKPWl0ZW0gR2V0RkFRSXRlbVZvdGluZ1JhdGVDb2xvcigpClJldHVybnMgYSBjb2xvciBkZXBlbnRpbmcgb24gdGhlIEZBUSByYXRlCgogICAgbXkgJFZvdGluZ1Jlc3VsdENvbG9yID0gJExheW91dE9iamVjdC0+R2V0RkFRSXRlbVZvdGluZ1JhdGVDb2xvcigKICAgICAgICBSYXRlID0+ICcyMCcsCiAgICApOwoKUmV0dXJuczoKCiAgICAkVm90aW5nUmVzdWx0Q29sb3IgPSAncmVkJyAgICAgICAgICAjIG9yICdvcmFuZ2UnIG9yICdncmVlbicKCj1jdXQKCnN1YiBHZXRGQVFJdGVtVm90aW5nUmF0ZUNvbG9yIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17UmF0ZX0gKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5GYXRhbEVycm9yKCBNZXNzYWdlID0+ICdOZWVkIHJhdGUhJyApOwogICAgfQogICAgbXkgJENzc1RtcCA9ICcnOwogICAgbXkgJFZvdGluZ1Jlc3VsdENvbG9ycwogICAgICAgID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6RXhwbG9yZXI6Okl0ZW1MaXN0OjpWb3RpbmdSZXN1bHRDb2xvcnMnKTsKCiAgICBmb3IgbXkgJEtleSAoIHNvcnQgeyAkYiA8PT4gJGEgfSBrZXlzICV7JFZvdGluZ1Jlc3VsdENvbG9yc30gKSB7CiAgICAgICAgaWYgKCAkUGFyYW17UmF0ZX0gPD0gJEtleSApIHsKICAgICAgICAgICAgJENzc1RtcCA9ICRWb3RpbmdSZXN1bHRDb2xvcnMtPnskS2V5fTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gJENzc1RtcDsKfQoKPWl0ZW0gRkFRTGlzdFNob3coKQoKUmV0dXJucyBhIGxpc3Qgb2YgRkFRIGl0ZW1zIGFzIHNvcnRhYmxlIGxpc3Qgd2l0aCBwYWdpbmF0aW9uLgoKVGhpcyBmdW5jdGlvbiBpcyBzaW1pbGFyIHRvIEw8S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dFRpY2tldDo6VGlja2V0TGlzdFNob3coKT4KaW4gRjxLZXJuZWwvT3V0cHV0L0hUTUwvTGF5b3V0VGlja2V0LnBtPi4KCiAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+RkFRTGlzdFNob3coCiAgICAgICAgRkFRSURzICAgICA9PiAkRkFRSURzUmVmLCAgICAgICAgICAgICAgICAgICAgICAgICAjIHRvdGFsIGxpc3Qgb2YgRkFRSURzLCB0aGF0IGNhbiBiZSBsaXN0ZWQKICAgICAgICBUb3RhbCAgICAgID0+IHNjYWxhciBAeyAkRkFRSURzUmVmIH0sICAgICAgICAgICAgICMgdG90YWwgbnVtYmVyIG9mIGxpc3QgaXRlbXMsIGluIHRoaXMgY2FzZQogICAgICAgIFZpZXcgICAgICAgPT4gJFNlbGYtPntWaWV3fSwgICAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbCwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgJ1NtYWxsJwogICAgICAgIEZpbHRlciAgICAgPT4gJ0FsbCcsCiAgICAgICAgRmlsdGVycyAgICA9PiBcJU5hdkJhckZpbHRlciwKICAgICAgICBGaWx0ZXJMaW5rID0+ICRMaW5rRmlsdGVyLAogICAgICAgIFRpdGxlTmFtZSAgPT4gJ092ZXJ2aWV3OiBGQVEnLAogICAgICAgIFRpdGxlVmFsdWUgPT4gJFNlbGYtPntGaWx0ZXJ9LAogICAgICAgIEVudiAgICAgICAgPT4gJFNlbGYsCiAgICAgICAgTGlua1BhZ2UgICA9PiAkTGlua1BhZ2UsCiAgICAgICAgTGlua1NvcnQgICA9PiAkTGlua1NvcnQsCiAgICAgICAgRnJvbnRlbmQgICA9PiAnQWdlbnQnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsIChBZ2VudHxDdXN0b21lcnxQdWJsaWMpLCBkZWZhdWx0OiBBZ2VudCwgaW5kaWNhdGVzIGZyb20gd2hpY2ggZnJvbnRlbmQgdGhpcyBmdW5jdGlvbiB3YXMgY2FsbGVkCiAgICApOwoKPWN1dAoKc3ViIEZBUUxpc3RTaG93IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyB0YWtlIG9iamVjdCByZWYgdG8gbG9jYWwsIHJlbW92ZSBpdCBmcm9tICVQYXJhbSAocHJldmVudCBtZW1vcnkgbGVhaykKICAgIG15ICRFbnYgPSBkZWxldGUgJFBhcmFte0Vudn07CgogICAgIyBsb29rdXAgbGF0ZXN0IHVzZWQgdmlldyBtb2RlCiAgICBpZiAoICEkUGFyYW17Vmlld30gJiYgJFNlbGYtPnsgJ1VzZXJGQVFPdmVydmlldycgLiAkRW52LT57QWN0aW9ufSB9ICkgewogICAgICAgICRQYXJhbXtWaWV3fSA9ICRTZWxmLT57ICdVc2VyRkFRT3ZlcnZpZXcnIC4gJEVudi0+e0FjdGlvbn0gfTsKICAgIH0KCiAgICAjIHNldCBmcm9udGVuZAogICAgbXkgJEZyb250ZW5kID0gJFBhcmFte0Zyb250ZW5kfSB8fCAnQWdlbnQnOwoKICAgICMgc2V0IGRlZmF1dCB2aWV3IG1vZGUgdG8gJ3NtYWxsJwogICAgbXkgJFZpZXcgPSAkUGFyYW17Vmlld30gfHwgJ1NtYWxsJzsKCiAgICAjIHN0b3JlIGxhdGVzdCB2aWV3IG1vZGUKICAgICRTZWxmLT57U2Vzc2lvbk9iamVjdH0tPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgIEtleSAgICAgICA9PiAnVXNlckZBUU92ZXJ2aWV3JyAuICRFbnYtPntBY3Rpb259LAogICAgICAgIFZhbHVlICAgICA9PiAkVmlldywKICAgICk7CgogICAgIyBnZXQgYmFja2VuZCBmcm9tIGNvbmZpZwogICAgbXkgJEJhY2tlbmRzID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3Jyk7CiAgICBpZiAoICEkQmFja2VuZHMgKSB7CiAgICAgICAgcmV0dXJuICRFbnYtPntMYXlvdXRPYmplY3R9LT5GYXRhbEVycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+ICdOZWVkIGNvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcnLAogICAgICAgICk7CiAgICB9CgogICAgIyBjaGVjayBmb3IgaGFzaC1yZWYKICAgIGlmICggcmVmICRCYWNrZW5kcyBuZSAnSEFTSCcgKSB7CiAgICAgICAgcmV0dXJuICRFbnYtPntMYXlvdXRPYmplY3R9LT5GYXRhbEVycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+ICdDb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IG5lZWRzIHRvIGJlIGEgSEFTSCByZWYhJywKICAgICAgICApOwogICAgfQoKICAgICMgY2hlY2sgZm9yIGNvbmZpZyBrZXkKICAgIGlmICggISRCYWNrZW5kcy0+eyRWaWV3fSApIHsKICAgICAgICByZXR1cm4gJEVudi0+e0xheW91dE9iamVjdH0tPkZhdGFsRXJyb3IoCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gIk5vIGNvbmZpZyBvcHRpb24gZm91bmQgZm9yIHRoZSB2aWV3ICckVmlldychIiwKICAgICAgICApOwogICAgfQoKICAgICMgbmF2IGJhcgogICAgbXkgJFN0YXJ0SGl0ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKAogICAgICAgIFBhcmFtID0+ICdTdGFydEhpdCcsCiAgICApIHx8IDE7CgogICAgIyBnZXQgcGVyc29uYWwgcGFnZSBzaG93biBjb3VudAogICAgbXkgJFBhZ2VTaG93blByZWZlcmVuY2VzS2V5ID0gJ1VzZXJGQVFPdmVydmlldycgLiAkVmlldyAuICdQYWdlU2hvd24nOwogICAgbXkgJFBhZ2VTaG93biAgICAgICAgICAgICAgID0gJFNlbGYtPnskUGFnZVNob3duUHJlZmVyZW5jZXNLZXl9IHx8IDEwOwogICAgbXkgJEdyb3VwICAgICAgICAgICAgICAgICAgID0gJ0ZBUU92ZXJ2aWV3JyAuICRWaWV3IC4gJ1BhZ2VTaG93bic7CgogICAgIyBjaGVjayBzdGFydCBvcHRpb24sIGlmIGhpZ2hlciB0aGVuIGVsZW1lbnRzIGF2YWlsYWJsZSwgc2V0CiAgICAjIGl0IHRvIHRoZSBsYXN0IG92ZXJ2aWV3IHBhZ2UgKFRoYW5rcyB0byBTdGVmYW4gU2NobWlkdCEpCiAgICBpZiAoICRTdGFydEhpdCA+ICRQYXJhbXtUb3RhbH0gKSB7CiAgICAgICAgbXkgJFBhZ2VzID0gaW50KCAoICRQYXJhbXtUb3RhbH0gLyAkUGFnZVNob3duICkgKyAwLjk5OTk5ICk7CiAgICAgICAgJFN0YXJ0SGl0ID0gKCAoICRQYWdlcyAtIDEgKSAqICRQYWdlU2hvd24gKSArIDE7CiAgICB9CgogICAgIyBnZXQgZGF0YSBzZWxlY3Rpb24KICAgIG15ICVEYXRhOwogICAgbXkgJENvbmZpZyA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdQcmVmZXJlbmNlc0dyb3VwcycpOwogICAgaWYgKCAkQ29uZmlnICYmICRDb25maWctPnskR3JvdXB9ICYmICRDb25maWctPnskR3JvdXB9LT57RGF0YX0gKSB7CiAgICAgICAgJURhdGEgPSAleyAkQ29uZmlnLT57JEdyb3VwfS0+e0RhdGF9IH07CiAgICB9CgogICAgIyBzZXQgcGFnZSBsaW1pdCBhbmQgYnVpbGQgcGFnZSBuYXYKICAgIG15ICRMaW1pdCA9ICRQYXJhbXtMaW1pdH0gfHwgMjBfMDAwOwogICAgbXkgJVBhZ2VOYXYgPSAkRW52LT57TGF5b3V0T2JqZWN0fS0+UGFnZU5hdkJhcigKICAgICAgICBMaW1pdCAgICAgPT4gJExpbWl0LAogICAgICAgIFN0YXJ0SGl0ICA9PiAkU3RhcnRIaXQsCiAgICAgICAgUGFnZVNob3duID0+ICRQYWdlU2hvd24sCiAgICAgICAgQWxsSGl0cyAgID0+ICRQYXJhbXtUb3RhbH0gfHwgMCwKICAgICAgICBBY3Rpb24gICAgPT4gJ0FjdGlvbj0nIC4gJEVudi0+e0xheW91dE9iamVjdH0tPntBY3Rpb259LAogICAgICAgIExpbmsgICAgICA9PiAkUGFyYW17TGlua1BhZ2V9LAogICAgKTsKCiAgICAjIGJ1aWxkIHNob3duIGZhcSBhcnRpY2xlcyBvbiBhIHBhZ2UKICAgICRQYXJhbXtSZXF1ZXN0ZWRVUkx9ICAgID0gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn0iOwogICAgJFBhcmFte0dyb3VwfSAgICAgICAgICAgPSAkR3JvdXA7CiAgICAkUGFyYW17UHJlZmVyZW5jZXNLZXl9ICA9ICRQYWdlU2hvd25QcmVmZXJlbmNlc0tleTsKICAgICRQYXJhbXtQYWdlU2hvd25TdHJpbmd9ID0gJFNlbGYtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIE5hbWUgICAgICAgID0+ICRQYWdlU2hvd25QcmVmZXJlbmNlc0tleSwKICAgICAgICBTZWxlY3RlZElEICA9PiAkUGFnZVNob3duLAogICAgICAgIERhdGEgICAgICAgID0+IFwlRGF0YSwKICAgICAgICBUcmFuc2xhdGlvbiA9PiAwLAogICAgKTsKCiAgICAjIGJ1aWxkIG5hdmJhciBjb250ZW50CiAgICAkRW52LT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXInLAogICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICk7CgogICAgbXkgJExpbmtCYWNrSUQgPSAnRkFRU2VhcmNoJzsKICAgIGlmICggJFBhcmFte05hdn0gJiYgJFBhcmFte05hdn0gZXEgJ05vbmUnICkgewogICAgICAgICRMaW5rQmFja0lEIC49ICdTbWFsbCc7CiAgICB9CgogICAgIyBiYWNrIGxpbmsKICAgIGlmICggJFBhcmFte0xpbmtCYWNrfSApIHsKICAgICAgICAkRW52LT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUJhY2snLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIExpbmtCYWNrSUQgPT4gJExpbmtCYWNrSUQsCiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBmaWx0ZXJzCiAgICBpZiAoICRQYXJhbXtGaWx0ZXJzfSApIHsKCiAgICAgICAgIyBnZXQgZ2l2ZW4gZmlsdGVycwogICAgICAgIG15IEBOYXZCYXJGaWx0ZXJzOwogICAgICAgIGZvciBteSAkUHJpbyAoIHNvcnQga2V5cyAleyAkUGFyYW17RmlsdGVyc30gfSApIHsKICAgICAgICAgICAgcHVzaCBATmF2QmFyRmlsdGVycywgJFBhcmFte0ZpbHRlcnN9LT57JFByaW99OwogICAgICAgIH0KCiAgICAgICAgIyBidWlsZCBmaWx0ZXIgY29udGVudAogICAgICAgICRFbnYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJGaWx0ZXInLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGxvb3Agb3ZlciBmaWx0ZXJzCiAgICAgICAgbXkgJENvdW50ID0gMDsKICAgICAgICBmb3IgbXkgJEZpbHRlciAoQE5hdkJhckZpbHRlcnMpIHsKCiAgICAgICAgICAgICMgaW5jcmVtZW50IGZpbHRlciBjb3VudCBhbmQgYnVpbGQgZmlsdGVyIGl0ZW0KICAgICAgICAgICAgJENvdW50Kys7CiAgICAgICAgICAgICRFbnYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgJXskRmlsdGVyfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGZpbHRlciBpcyBzZWxlY3RlZAogICAgICAgICAgICBpZiAoICRGaWx0ZXItPntGaWx0ZXJ9IGVxICRQYXJhbXtGaWx0ZXJ9ICkgewogICAgICAgICAgICAgICAgJEVudi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbVNlbGVjdGVkJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAleyRGaWx0ZXJ9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRFbnYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhckZpbHRlckl0ZW1TZWxlY3RlZE5vdCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgJXskRmlsdGVyfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBsb29wIG92ZXIgY29uZmlndXJlZCBiYWNrZW5kcwogICAgZm9yIG15ICRCYWNrZW5kICggc29ydCBrZXlzICV7JEJhY2tlbmRzfSApIHsKCiAgICAgICAgIyBidWlsZCBuYXZiYXIgdmlldyBtb2RlCiAgICAgICAgJEVudi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclZpZXdNb2RlJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAleyAkQmFja2VuZHMtPnskQmFja2VuZH0gfSwKICAgICAgICAgICAgICAgIEZpbHRlciA9PiAkUGFyYW17RmlsdGVyfSwKICAgICAgICAgICAgICAgIFZpZXcgICA9PiAkQmFja2VuZCwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGN1cnJlbnQgdmlldyBpcyBjb25maWd1cmVkIGluIGJhY2tlbmQKICAgICAgICBpZiAoICRWaWV3IGVxICRCYWNrZW5kICkgewogICAgICAgICAgICAkRW52LT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclZpZXdNb2RlU2VsZWN0ZWQnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICV7ICRCYWNrZW5kcy0+eyRCYWNrZW5kfSB9LAogICAgICAgICAgICAgICAgICAgIEZpbHRlciA9PiAkUGFyYW17RmlsdGVyfSwKICAgICAgICAgICAgICAgICAgICBWaWV3ICAgPT4gJEJhY2tlbmQsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJEVudi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZU5vdFNlbGVjdGVkJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAleyAkQmFja2VuZHMtPnskQmFja2VuZH0gfSwKICAgICAgICAgICAgICAgICAgICBGaWx0ZXIgPT4gJFBhcmFte0ZpbHRlcn0sCiAgICAgICAgICAgICAgICAgICAgVmlldyAgID0+ICRCYWNrZW5kLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBpZiBwYWdlIG5hdiBpcyBhdmFpbGFibGUKICAgIGlmICglUGFnZU5hdikgewogICAgICAgICRFbnYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlTmF2QmFyJywKICAgICAgICAgICAgRGF0YSA9PiBcJVBhZ2VOYXYsCiAgICAgICAgKTsKCiAgICAgICAgIyBkb24ndCBzaG93IGNvbnRleHQgc2V0dGluZ3MgaW4gQUpBWCBjYXNlIChlLiBnLiBpbiBjdXN0b21lciBGQVEgaGlzdG9yeSksCiAgICAgICAgIyBiZWNhdXNlIHRoZSBzdWJtaXQgd2l0aCBwYWdlIHJlbG9hZCB3aWxsIG5vdCB3b3JrIHRoZXJlCiAgICAgICAgaWYgKCAhJFBhcmFte0FKQVh9ICkgewogICAgICAgICAgICAkRW52LT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZXh0U2V0dGluZ3MnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJVBhZ2VOYXYsCiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBidWlsZCBodG1sIGNvbnRlbnQKICAgIG15ICRPdXRwdXROYXZCYXIgPSAkRW52LT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFPdmVydmlld05hdkJhcicsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgVmlldyA9PiAkVmlldywKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgIH0sCiAgICApOwoKICAgICMgY3JlYXRlIG91dHB1dAogICAgbXkgJE91dHB1dFJhdyA9ICcnOwogICAgaWYgKCAhJFBhcmFte091dHB1dH0gKSB7CiAgICAgICAgJEVudi0+e0xheW91dE9iamVjdH0tPlByaW50KAogICAgICAgICAgICBPdXRwdXQgPT4gXCRPdXRwdXROYXZCYXIsCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRPdXRwdXRSYXcgLj0gJE91dHB1dE5hdkJhcjsKICAgIH0KCiAgICAjIGxvYWQgbW9kdWxlCiAgICBpZiAoICEkU2VsZi0+e01haW5PYmplY3R9LT5SZXF1aXJlKCAkQmFja2VuZHMtPnskVmlld30tPntNb2R1bGV9ICkgKSB7CiAgICAgICAgcmV0dXJuICRFbnYtPntMYXlvdXRPYmplY3R9LT5GYXRhbEVycm9yKCk7CiAgICB9CgogICAgIyBjaGVjayBmb3IgYmFja2VuZCBvYmplY3QKICAgIG15ICRPYmplY3QgPSAkQmFja2VuZHMtPnskVmlld30tPntNb2R1bGV9LT5uZXcoICV7JEVudn0gKTsKICAgIHJldHVybiBpZiAhJE9iamVjdDsKCiAgICAjIHJ1biBtb2R1bGUKICAgIG15ICRPdXRwdXQgPSAkT2JqZWN0LT5SdW4oCiAgICAgICAgJVBhcmFtLAogICAgICAgIExpbWl0ICAgICA9PiAkTGltaXQsCiAgICAgICAgU3RhcnRIaXQgID0+ICRTdGFydEhpdCwKICAgICAgICBQYWdlU2hvd24gPT4gJFBhZ2VTaG93biwKICAgICAgICBBbGxIaXRzICAgPT4gJFBhcmFte1RvdGFsfSB8fCAwLAogICAgICAgIEZyb250ZW5kICA9PiAkRnJvbnRlbmQsCiAgICAgICAgTmF2ICAgICAgID0+ICRQYXJhbXtOYXZ9IHx8ICcnLAogICAgKTsKCiAgICAjIGNyZWF0ZSBvdXRwdXQKICAgIGlmICggISRQYXJhbXtPdXRwdXR9ICkgewogICAgICAgICRFbnYtPntMYXlvdXRPYmplY3R9LT5QcmludCgKICAgICAgICAgICAgT3V0cHV0ID0+IFwkT3V0cHV0LAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkT3V0cHV0UmF3IC49ICRPdXRwdXQ7CiAgICB9CgogICAgIyBjcmVhdGUgb3ZlcnZpZXcgbmF2IGJhcgogICAgJEVudi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyJywKICAgICAgICBEYXRhID0+IHslUGFyYW19LAogICAgKTsKCiAgICAjIHJldHVybiBjb250ZW50IGlmIGF2YWlsYWJsZQogICAgcmV0dXJuICRPdXRwdXRSYXc7Cn0KCj1pdGVtIEZBUUNvbnRlbnRTaG93KCkKCk91dHB1dHMgdGhlIG5lY2Vzc2FyeSBEVEwgYmxvY2tzIHRvIGRpc3BsYXkgdGhlIEZBUSBpdGVtIGZpZWxkcyBmb3IgdGhlIHN1cHBsaWVkIEZBUSBpdGVtIElELgpUaGUgZmllbGRzIGRpc3BsYXllZCBhcmUgYWxzbyByZXN0cmljdGVkIGJ5IHRoZSBwZXJtaXNzaW9ucyByZXByZXNlbnRlZCBieSB0aGUgc3VwcGxpZWQgaW50ZXJmYWNlCgpJZiBleGlzdCBSZXR1cm5Db250ZW50IHBhcmFtZXRlciBpdCByZXR1cm5zIHRoZSBGQVEgaXRlbXMgZmllbGRzIG9uIGEgSFRNTCBmb3JtYXRlZCBzdHJpbmcKCiAgICAkTGF5b3V0T2JqZWN0LT5GQVFDb250ZW50U2hvdygKICAgICAgICBGQVFPYmplY3QgICAgICAgPT4gJEZBUU9iamVjdCwgICAgICAgICAgICAgICAgICMgbmVlZGVkIGZvciBjb3JlIG1vZHVsZSBpbnRlcmFjdGlvbgogICAgICAgIEZBUURhdGEgICAgICAgICA9PiAleyAkRkFRRGF0YSB9LAogICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30sCiAgICAgICAgVXNlcklEICAgICAgICAgID0+IDEsCiAgICApOwoKICAgIG15ICRDb250ZW50ID0gJExheW91dE9iamVjdC0+RkFRQ29udGVudFNob3coCiAgICAgICAgRkFRT2JqZWN0ICAgICAgID0+ICRGQVFPYmplY3QsICAgICAgICAgICAgICAgICAjIG5lZWRlZCBmb3IgY29yZSBtb2R1bGUgaW50ZXJhY3Rpb24KICAgICAgICBGQVFEYXRhICAgICAgICAgPT4gJXsgJEZBUURhdGEgfSwKICAgICAgICBJbnRlcmZhY2VTdGF0ZXMgPT4gJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9LAogICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAxLAogICAgICAgIFJldHVybkNvbnRlbnQgICA9PiAxLAogICAgKTsKPWN1dAoKc3ViIEZBUUNvbnRlbnRTaG93IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBwYXJhbWV0ZXJzCiAgICBmb3IgbXkgJFBhcmFtTmFtZSAocXcoRkFRT2JqZWN0IEZBUURhdGEgSW50ZXJmYWNlU3RhdGVzIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JFBhcmFtTmFtZX0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRQYXJhbU5hbWUhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIHN0b3JlIEZBUSBvYmplY3QgbG9jYWxseQogICAgJFNlbGYtPntGQVFPYmplY3R9ID0gJFBhcmFte0ZBUU9iamVjdH07CgogICAgIyBnZXQgdGhlIGludGVybmFsIHN0YXRlIHR5cGUKICAgIG15ICRJbnRlcm5hbFN0YXRlVHlwZSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVUeXBlR2V0KAogICAgICAgIE5hbWUgICA9PiAnaW50ZXJuYWwnLAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyBnZXQgdGhlIGludGVybmFsIHN0YXRlIHR5cGUgSUQKICAgIG15ICRJbnRlcm5hbFN0YXRlSUQgPSAkSW50ZXJuYWxTdGF0ZVR5cGUtPntTdGF0ZUlEfTsKCiAgICAjIGdldCBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIFRpY2tldCBDb21wb3NlCiAgICBteSAkVGlja2V0Q29tcG9zZUNvbmZpZyA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OlRpY2tldENvbXBvc2UnKTsKCiAgICAjIGdldCB0aGUgY29uZmlnIG9mIEZBUSBmaWVsZHMgdGhhdCBzaG91bGQgYmUgc2hvd24KICAgIG15ICVGaWVsZHM7CiAgICBGSUVMRDoKICAgIGZvciBteSAkTnVtYmVyICggMSAuLiA2ICkgewoKICAgICAgICAjIGdldCBjb25maWcgb2YgRkFRIGZpZWxkCiAgICAgICAgbXkgJENvbmZpZyA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCAnRkFROjpJdGVtOjpGaWVsZCcgLiAkTnVtYmVyICk7CgogICAgICAgICMgc2tpcCBvdmVyIG5vdCBzaG93biBmaWVsZHMKICAgICAgICBuZXh0IEZJRUxEIGlmICEkQ29uZmlnLT57U2hvd307CgogICAgICAgICMgc3RvcmUgb25seSB0aGUgY29uZmlnIG9mIGZpZWxkcyB0aGF0IHNob3VsZCBiZSBzaG93bgogICAgICAgICRGaWVsZHN7ICJGaWVsZCIgLiAkTnVtYmVyIH0gPSAkQ29uZmlnOwogICAgfQoKICAgIG15ICRGdWxsQ29udGVudDsKCiAgICAjIHNvcnQgc2hvd24gZmllbGRzIGJ5IHByaW9yaXR5CiAgICBGSUVMRDoKICAgIGZvciBteSAkRmllbGQgKCBzb3J0IHsgJEZpZWxkc3skYX0tPntQcmlvfSA8PT4gJEZpZWxkc3skYn0tPntQcmlvfSB9IGtleXMgJUZpZWxkcyApIHsKCiAgICAgICAgIyBnZXQgdGhlIHN0YXRlIHR5cGUgZGF0YSBvZiB0aGlzIGZpZWxkCiAgICAgICAgbXkgJFN0YXRlVHlwZURhdGEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUdldCgKICAgICAgICAgICAgTmFtZSAgID0+ICRGaWVsZHN7JEZpZWxkfS0+e1Nob3d9LAogICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBkbyBub3Qgc2hvdyBmaWVsZHMgdGhhdCBhcmUgbm90IGFsbG93ZWQgaW4gdGhlIGdpdmVuIGludGVyZmFjZQogICAgICAgIG5leHQgRklFTEQgaWYgISRQYXJhbXtJbnRlcmZhY2VTdGF0ZXN9LT57ICRTdGF0ZVR5cGVEYXRhLT57U3RhdGVJRH0gfTsKCiAgICAgICAgbXkgJENhcHRpb24gPSAkRmllbGRzeyRGaWVsZH0tPnsnQ2FwdGlvbid9OwogICAgICAgIG15ICRDb250ZW50ID0gJFBhcmFte0ZBUURhdGF9LT57JEZpZWxkfSB8fCAnJzsKCiAgICAgICAgIyByZW1vdmUgYWN0aXZlIGh0bWwgY29udGVudCAoc2NyaXB0cywgYXBwbGV0cywgZXRjLi4uKQogICAgICAgIG15ICVTYWZlQ29udGVudCA9ICRTZWxmLT57SFRNTFV0aWxzT2JqZWN0fS0+U2FmZXR5KAogICAgICAgICAgICBTdHJpbmcgICAgICAgPT4gJENvbnRlbnQsCiAgICAgICAgICAgIE5vQXBwbGV0ICAgICA9PiAxLAogICAgICAgICAgICBOb09iamVjdCAgICAgPT4gMSwKICAgICAgICAgICAgTm9FbWJlZCAgICAgID0+IDEsCiAgICAgICAgICAgIE5vSW50U3JjTG9hZCA9PiAwLAogICAgICAgICAgICBOb0V4dFNyY0xvYWQgPT4gMCwKICAgICAgICAgICAgTm9KYXZhU2NyaXB0ID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyB0YWtlIHRoZSBzYWZlIGNvbnRlbnQgaWYgbmVjY2Vzc2FyeQogICAgICAgIGlmICggJFNhZmVDb250ZW50e1JlcGxhY2V9ICkgewogICAgICAgICAgICAkQ29udGVudCA9ICRTYWZlQ29udGVudHtTdHJpbmd9OwogICAgICAgIH0KCiAgICAgICAgIyBzaG93IHRoZSBmaWVsZAogICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRkFRQ29udGVudCcsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgSXRlbUlEICAgID0+ICRQYXJhbXtGQVFEYXRhfS0+e0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBGaWVsZCAgICAgPT4gJEZpZWxkLAogICAgICAgICAgICAgICAgQ2FwdGlvbiAgID0+ICRDYXB0aW9uLAogICAgICAgICAgICAgICAgU3RhdGVOYW1lID0+ICRTdGF0ZVR5cGVEYXRhLT57TmFtZX0sCiAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gJENvbnRlbnQsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpJdGVtOjpIVE1MJykgKSB7CiAgICAgICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0ZBUUNvbnRlbnRIVE1MJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkUGFyYW17RkFRRGF0YX0tPntJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgIEZpZWxkICA9PiAkRmllbGQsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnRkFRQ29udGVudFBsYWluJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJENvbnRlbnQsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBzdG9yZSB0aGUgZmllbGQgdG8gcmV0dXJuIGFsbCBGQVEgQm9keQogICAgICAgIGlmICggJFBhcmFte1JldHVybkNvbnRlbnR9ICYmICRDb250ZW50ICkgewoKICAgICAgICAgICAgIyBjaGVjayBpZiBjdXJyZW50IGZpZWxkIGlzIGludGVybmFsCiAgICAgICAgICAgIG15ICRJc0ludGVybmFsOwogICAgICAgICAgICBpZiAoICRTdGF0ZVR5cGVEYXRhLT57U3RhdGVJRH0gPT0gJEludGVybmFsU3RhdGVJRCApIHsKICAgICAgICAgICAgICAgICRJc0ludGVybmFsID0gMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBDaGVjayBpZiBmaWVsZCBzaG91bGQgYmUgcGFydCBvZiB0aGUgcmV0dXJuaW5nIHN0cmluZwogICAgICAgICAgICBpZiAoICRUaWNrZXRDb21wb3NlQ29uZmlnLT57SW5jbHVkZUludGVybmFsfSB8fCAhJElzSW50ZXJuYWwgKSB7CgogICAgICAgICAgICAgICAgIyBDaGVjayBpZiBmaWVsZCBuYW1lIHNob3VsZCBiZSByZXR1cm5lZAogICAgICAgICAgICAgICAgaWYgKCAkVGlja2V0Q29tcG9zZUNvbmZpZy0+e1Nob3dGaWVsZE5hbWVzfSApIHsKICAgICAgICAgICAgICAgICAgICAkRnVsbENvbnRlbnQgLj0gJFNlbGYtPntMYW5ndWFnZU9iamVjdH0tPkdldCgkQ2FwdGlvbikgLiAnIDxici8+ICc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkRnVsbENvbnRlbnQgLj0gJENvbnRlbnQgLiAnIDxici8+ICc7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyByZXR1cm4gYWxsIHRoZSAocGVybWl0ZWQpIEZBUSBib2R5CiAgICBpZiAoICRQYXJhbXtSZXR1cm5Db250ZW50fSApIHsKICAgICAgICBpZiAoJEZ1bGxDb250ZW50KSB7CiAgICAgICAgICAgIHJldHVybiAkRnVsbENvbnRlbnQ7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkU2VsZi0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdUaGlzIGFydGljbGUgaXMgZW1wdHkhJyk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIEZBUVBhdGhTaG93KCkKCmlmIGl0cyBhbGxvd2VkIGJ5IHRoZSBjb25maWd1cmF0aW9uLCBvdXRwdXRzIHRoZSBuZWNlc3NhcnkgRFRMIGJsb2NrcyB0byBkaXNwbGF5IHRoZSBGQVEgaXRlbSBwYXRoLAphbmQgcmV0dXJucyB0aGUgdmFsdWUgMS4KCiAgICBteSAkU2hvd1BhdGhPayA9ICRMYXlvdXRPYmplY3QtPkZBUVBhdGhTaG93KAogICAgICAgIEZBUU9iamVjdCAgID0+ICRGQVFPYmplY3QsICAgICAgICAgICAgICAgICAgICMgbmVlZGVkIGZvciBjb3JlIG1vZHVsZSBpbnRlcmFjdGlvbgogICAgICAgIENhdGVnb3J5SUQgID0+IDUsCiAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICBOYXYgICAgICAgICA9PiAnbm9uZScsICAgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsCiAgICApOwoKPWN1dAoKc3ViIEZBUVBhdGhTaG93IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBwYXJhbWV0ZXJzCiAgICBmb3IgbXkgJFBhcmFtTmFtZSAocXcoRkFRT2JqZWN0IFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JFBhcmFtTmFtZX0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRQYXJhbU5hbWUhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIHBhcmFtZXRlcnMKICAgIGlmICggIWRlZmluZWQgJFBhcmFte0NhdGVnb3J5SUR9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBDYXRlZ29yeUlEIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzdG9yZSBGQVEgb2JqZWN0IGxvY2FsbHkKICAgICRTZWxmLT57RkFRT2JqZWN0fSA9ICRQYXJhbXtGQVFPYmplY3R9OwoKICAgICMgb3V0cHV0IGNhdGVnb3J5IHJvb3QKICAgICRTZWxmLT5CbG9jaygKICAgICAgICBOYW1lID0+ICdGQVFQYXRoQ2F0ZWdvcnlFbGVtZW50JywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpEZWZhdWx0OjpSb290Q2F0ZWdvcnlOYW1lJyksCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gMCwKICAgICAgICAgICAgTmF2ICAgICAgICA9PiAkUGFyYW17TmF2fSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGdldCBTaG93IEZBUSBQYXRoIHNldHRpbmcKICAgIG15ICRTaG93UGF0aCA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkV4cGxvcmVyOjpQYXRoOjpTaG93Jyk7CgogICAgIyBkbyBub3QgZGlwbGF5IHRoZSBwYXRoIGlmIHNldHRpbmcgaXMgb2ZmCiAgICByZXR1cm4gaWYgISRTaG93UGF0aDsKCiAgICAjIGdldCBjYXRlZ29yeSBsaXN0IHRvIGNvbnN0cnVjdCB0aGUgcGF0aAogICAgbXkgJENhdGVnb3J5TGlzdCA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRUGF0aExpc3RHZXQoCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkUGFyYW17Q2F0ZWdvcnlJRH0sCiAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyBvdXRwdXQgc3ViY2F0ZWdvcmllcwogICAgZm9yIG15ICRDYXRlZ29yeURhdGEgKCBAeyRDYXRlZ29yeUxpc3R9ICkgewogICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRkFRUGF0aENhdGVnb3J5RWxlbWVudCcsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgTmF2ID0+ICRQYXJhbXtOYXZ9LAogICAgICAgICAgICAgICAgJXskQ2F0ZWdvcnlEYXRhfSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIEZBUVJhdGluZ1N0YXJzU2hvdygpCgpPdXRwdXRzIHRoZSBuZWNlc3NhcnkgRFRMIGJsb2NrcyB0byByZXByZXNlbnQgdGhlIEZBUSBpdGVtIHJhdGluZwphcyAiU3RhcnMiIGluIHRoZSBzY2FsZSBmcm9tIDEgdG8gNS4KCiAgICAkTGF5b3V0T2JqZWN0LT5GQVFSYXRpbmdTdGFyc1Nob3coCiAgICAgICAgVm90ZVJlc3VsdCA9PiAkRkFRRGF0YS0+e1ZvdGVSZXN1bHR9LAogICAgICAgIFZvdGVzICAgICAgPT4gJEZBUURhdGEgLT57Vm90ZXN9LAogICAgKTsKCj1jdXQKCnN1YiBGQVFSYXRpbmdTdGFyc1Nob3cgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIHBhcmFtZXRlcnMKICAgIGZvciBteSAkUGFyYW1OYW1lIChxdyhWb3RlUmVzdWx0IFZvdGVzKSkgewogICAgICAgIGlmICggIWRlZmluZWQgJFBhcmFteyRQYXJhbU5hbWV9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkUGFyYW1OYW1lISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgc3RhcnMgYnkgbXV0aXBseSBieSA1IGFuZCBkaXZpZGUgYnkgMTAwCiAgICAjIDEwMCBiZWNhdXNlIFZvdGUgcmVzdWx0IGlzIGEgJQogICAgIyA1IGJlY2F1c2Ugd2UgaGF2ZSBvbmx5IDUgc3RhcnMKICAgIG15ICRTdGFyQ291bnRlciA9IGludCggJFBhcmFte1ZvdGVSZXN1bHR9ICogMC4wNSApOwogICAgaWYgKCAkU3RhckNvdW50ZXIgPCA1ICkgewoKICAgICAgICAjIGFkZCAxIGJlY2F1c2UgbG93ZXN0IHZhbHVlIHNob3VsZCBiZSAxCiAgICAgICAgJFN0YXJDb3VudGVyKys7CiAgICB9CgogICAgIyB0aGUgbnVtYmVyIG9mIHN0YXJzIGNhbid0IGJlIGdyYXRlciB0aGF0IDUKICAgIGVsc2lmICggJFN0YXJDb3VudGVyID4gNSApIHsKICAgICAgICAkU3RhckNvdW50ZXIgPSA1OwogICAgfQoKICAgICMgb3V0cHV0IHJhdGluZyBibG9jawogICAgJFNlbGYtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ1ZpZXdSYXRpbmcnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgfSwKICAgICk7CgogICAgIyBkbyBub3Qgb3V0cHV0IGFueSBzdGFyIGlmIHRoaXMgRkFRIGhhcyBiZWVuIG5vdCB2b3RlZAogICAgaWYgKCAkUGFyYW17Vm90ZXN9IGVxICcwJyApIHsKICAgICAgICAkU3RhckNvdW50ZXIgPSAwOwogICAgfQoKICAgICMgc2hvdyBzdGFycyBvbmx5IGlmIHRoZSBGQVEgaXRlbSBoYXMgYmVlbiB2b3RlZCBhdCBsZWFzdCBvbmNlIGV2ZW4gaWYgdGhlICRWb3RlUmVzdWx0IGlzIDAKICAgIGVsc2UgewoKICAgICAgICAjIG91dHB1dCBzdGFycwogICAgICAgIGZvciAoIDEgLi4gJFN0YXJDb3VudGVyICkgewogICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdSYXRlU3RhcnMnLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIG91dHB1dCBzdGFycyB0ZXh0CiAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnUmF0ZVN0YXJzQ291bnQnLAogICAgICAgIERhdGEgPT4geyBTdGFycyA9PiAkU3RhckNvdW50ZXIgfSwKICAgICk7Cn0KCj1pdGVtIEZBUVNob3dMYXRlc3ROZXdzQm94KCkKClNob3dzIGFuIGluZm8gYm94IHdpaCB0aGUgbGFzdCB1cGRhdGVkIG9yIGxhc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXMuCkRlcGVuZGluZyBvbiB0aGUgdXNlcyBpbnRlcmZhY2UgKGFnZW50LCBjdXN0b21lciwgcHVibGljKSBvbmx5IHRoZSBhcHByb3ByaWF0ZQphcnRpY2xlcyBhcmUgc2hvd24gaGVyZS4KCiAgICAkTGF5b3V0T2JqZWN0LT5GQVFTaG93TGF0ZXN0TmV3c0JveCgKICAgICAgICBGQVFPYmplY3QgICAgICAgPT4gJEZBUU9iamVjdCwgICAgICAgICAgICAgICAgICMgbmVlZGVkIGZvciBjb3JlIG1vZHVsZSBpbnRlcmFjdGlvbgogICAgICAgIFR5cGUgICAgICAgICAgICA9PiAnTGFzdENyZWF0ZScsICAgICAgICAgICAgICAgIyAoTGFzdENyZWF0ZSB8IExhc3RDaGFuZ2UpCiAgICAgICAgTW9kZSAgICAgICAgICAgID0+ICdQdWJsaWMnLCAgICAgICAgICAgICAgICAgICAjIChBZ2VudCwgQ3VzdG9tZXIsIFB1YmxpYykKICAgICAgICBDYXRlZ29yeUlEICAgICAgPT4gNSwKICAgICAgICBJbnRlcmZhY2UgICAgICAgPT4gJFNlbGYtPntJbnRlcmZhY2V9LAogICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30sCiAgICAgICAgVXNlcklEICAgICAgICAgID0+IDEsCiAgICAgICAgTmF2ICAgICAgICAgICAgID0+ICdub25lJywgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsCiAgICApOwoKPWN1dAoKc3ViIEZBUVNob3dMYXRlc3ROZXdzQm94IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBwYXJhbWV0ZXJzCiAgICBmb3IgbXkgJFBhcmFtTmFtZSAocXcoRkFRT2JqZWN0IFR5cGUgTW9kZSBJbnRlcmZhY2UgSW50ZXJmYWNlU3RhdGVzIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JFBhcmFtTmFtZX0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRQYXJhbU5hbWUhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17Q2F0ZWdvcnlJRH0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIENhdGVnb3J5SUQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHN0b3JlIEZBUSBvYmplY3QgbG9jYWxseQogICAgJFNlbGYtPntGQVFPYmplY3R9ID0gJFBhcmFte0ZBUU9iamVjdH07CgogICAgIyBjaGVjayB0eXBlCiAgICBpZiAoICRQYXJhbXtUeXBlfSAhfiBteyBMYXN0Q3JlYXRlIHwgTGFzdENoYW5nZSB9eG1zICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnVHlwZSBtdXN0IGJlIGVpdGhlciBMYXN0Q3JlYXRlIG9yIExhc3RDaGFuZ2UhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNoZWNrIG1vZGUKICAgIGlmICggJFBhcmFte01vZGV9ICF+IG17IEFnZW50IHwgQ3VzdG9tZXIgfCBQdWJsaWMgfXhtcyApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ01vZGUgbXVzdCBiZSBlaXRoZXIgQWdlbnQsIEN1c3RvbWVyIG9yIFB1YmxpYyEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgQ3VzdG9tZXJVc2VyCiAgICBpZiAoICRQYXJhbXtNb2RlfSBlcSAnQ3VzdG9tZXInICYmICEkUGFyYW17Q3VzdG9tZXJVc2VyfSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgQ3VzdG9tZXJVc2VyIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzZXQgb3JkZXIgYnkgc2VhcmNoIHBhcmFtZXRlciBhbmQgaGVhZGVyIGJhc2VkIG9uIHR5cGUKICAgIG15ICRPcmRlckJ5OwogICAgbXkgJEhlYWRlcjsKICAgIG15ICRSU1NUaXRsZTsKICAgIGlmICggJFBhcmFte1R5cGV9IGVxICdMYXN0Q3JlYXRlJyApIHsKICAgICAgICAkT3JkZXJCeSAgPSAnQ3JlYXRlZCc7CiAgICAgICAgJEhlYWRlciAgID0gJ0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyc7CiAgICAgICAgJFJTU1RpdGxlID0gJ0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJzsKICAgIH0KICAgIGVsc2lmICggJFBhcmFte1R5cGV9IGVxICdMYXN0Q2hhbmdlJyApIHsKICAgICAgICAkT3JkZXJCeSAgPSAnQ2hhbmdlZCc7CiAgICAgICAgJEhlYWRlciAgID0gJ0xhdGVzdCB1cGRhdGVkIEZBUSBhcnRpY2xlcyc7CiAgICAgICAgJFJTU1RpdGxlID0gJ0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknOwogICAgfQoKICAgIG15ICRSZXN1bHQgPSAtMTsKCiAgICAjIHNob3cgbGFzdCBhZGRlZC91cGRhdGVkIGFydGljbGVzCiAgICBteSAkU2hvdyA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCJGQVE6OkV4cGxvcmVyOjokUGFyYW17VHlwZX06OlNob3ciKTsKICAgIGlmICggJFNob3ctPnsgJFBhcmFte0ludGVyZmFjZX0tPntOYW1lfSB9ICkgewoKICAgICAgICAjIHRvIHN0b3JlIHNlYXJjaCBwYXJhbSBmb3IgY2F0ZWdvcmllcwogICAgICAgIG15ICVDYXRlZ29yeVNlYXJjaFBhcmFtOwoKICAgICAgICAjIGlmIHN1YmNhdGVnb3JpZXMgc2hvdWxkIGFsc28gYmUgc2hvd24KICAgICAgICBpZiAoICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCJGQVE6OkV4cGxvcmVyOjokUGFyYW17VHlwZX06OlNob3dTdWJDYXRlZ29yeUl0ZW1zIikgKSB7CgogICAgICAgICAgICAjIGZpbmQgdGhlIHN1YmNhdGVnb3JpZXMgb2YgdGhpcyBjYXRlZ29yeQogICAgICAgICAgICBteSAkU3ViQ2F0ZWdvcnlJRHNSZWYgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkNhdGVnb3J5U3ViQ2F0ZWdvcnlJRExpc3QoCiAgICAgICAgICAgICAgICBQYXJlbnRJRCAgICAgPT4gJFBhcmFte0NhdGVnb3J5SUR9LAogICAgICAgICAgICAgICAgTW9kZSAgICAgICAgID0+ICRQYXJhbXtNb2RlfSwKICAgICAgICAgICAgICAgIEl0ZW1TdGF0ZXMgICA9PiAkUGFyYW17SW50ZXJmYWNlU3RhdGVzfSwKICAgICAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAkUGFyYW17Q3VzdG9tZXJVc2VyfSB8fCAnJywKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc2VhcmNoIGluIHRoZSBnaXZlbiBjYXRlZ29yeSBhbmQgYWRkIHRoZSBzdWJjYXRlZ29yeQogICAgICAgICAgICAkQ2F0ZWdvcnlTZWFyY2hQYXJhbXtDYXRlZ29yeUlEc30gPSBbICRQYXJhbXtDYXRlZ29yeUlEfSwgQHskU3ViQ2F0ZWdvcnlJRHNSZWZ9IF07CiAgICAgICAgfQoKICAgICAgICAjIGEgY2F0ZWdvcnkgaXMgZ2l2ZW4gYW5kIHN1YmNhdGVnb3JpZXMgc2hvdWxkIG5vdCBiZSBzaG93bgogICAgICAgIGVsc2lmICggJFBhcmFte0NhdGVnb3J5SUR9ICkgewoKICAgICAgICAgICAgIyBzZWFyY2ggb25seSBpbiB0aGUgZ2l2ZW4gY2F0ZWdvcnkKICAgICAgICAgICAgJENhdGVnb3J5U2VhcmNoUGFyYW17Q2F0ZWdvcnlJRHN9ID0gWyAkUGFyYW17Q2F0ZWdvcnlJRH0gXTsKICAgICAgICB9CgogICAgICAgICMgc2VhcmNoIHRoZSBGQVEgYXJ0aWNsZXMKICAgICAgICBteSBASXRlbUlEcyA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRU2VhcmNoKAogICAgICAgICAgICBTdGF0ZXMgICAgICAgICAgID0+ICRQYXJhbXtJbnRlcmZhY2VTdGF0ZXN9LAogICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgID0+IFskT3JkZXJCeV0sCiAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gPT4gWydEb3duJ10sCiAgICAgICAgICAgIEludGVyZmFjZSAgICAgICAgPT4gJFBhcmFte0ludGVyZmFjZX0sCiAgICAgICAgICAgIExpbWl0ICA9PiAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgiRkFROjpFeHBsb3Jlcjo6JFBhcmFte1R5cGV9OjpMaW1pdCIpIHx8IDUsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgJUNhdGVnb3J5U2VhcmNoUGFyYW0sCiAgICAgICAgKTsKCiAgICAgICAgIyB0aGVyZSBpcyBzb21ldGhpbmcgdG8gc2hvdwogICAgICAgIGlmIChASXRlbUlEcykgewoKICAgICAgICAgICAgJFJlc3VsdCA9IDE7CgogICAgICAgICAgICAjIHNob3cgdGhlIGluZm8gYm94CiAgICAgICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0luZm9Cb3hGQVFNaW5pTGlzdCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBIZWFkZXIgPT4gJEhlYWRlciwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHNob3cgdGhlIFJTUyBGZWVkIGljb24KICAgICAgICAgICAgaWYgKCAkUGFyYW17TW9kZX0gZXEgJ1B1YmxpYycgKSB7CgogICAgICAgICAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0luZm9Cb3hGQVFNaW5pTGlzdE5ld3NSU1MnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgPT4gJFJTU1RpdGxlLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBmb3IgbXkgJEl0ZW1JRCAoQEl0ZW1JRHMpIHsKCiAgICAgICAgICAgICAgICAjIGdldCBGQVEgZGF0YQogICAgICAgICAgICAgICAgbXkgJUZBUURhdGEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUUdldCgKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgICAgID0+ICRJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgSXRlbUZpZWxkcyA9PiAxLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgc2hvdyB0aGUgYXJ0aWNsZSByb3cKICAgICAgICAgICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdJbmZvQm94RkFRTWluaUxpc3RJdGVtUm93JywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgTmF2ID0+ICRQYXJhbXtOYXZ9LAogICAgICAgICAgICAgICAgICAgICAgICAlRkFRRGF0YSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJFJlc3VsdDsKfQoKPWl0ZW0gRkFRU2hvd1RvcDEwKCkKClNob3dzIGFuIGluZm8gYm94IHdpaCB0aGUgVG9wIDEwIEZBUSBhcnRpY2xlcy4KRGVwZW5kaW5nIG9uIHRoZSB1c2VzIGludGVyZmFjZSAoYWdlbnQsIGN1c3RvbWVyLCBwdWJsaWMpIG9ubHkgdGhlIGFwcHJvcHJpYXRlCmFydGljbGVzIGFyZSBzaG93biBoZXJlLgoKICAgICRMYXlvdXRPYmplY3QtPkZBUVNob3dUb3AxMCgKICAgICAgICBGQVFPYmplY3QgICAgICAgPT4gJEZBUU9iamVjdCwgICAgICAgICAgICAgICAgICMgbmVlZGVkIGZvciBjb3JlIG1vZHVsZSBpbnRlcmFjdGlvbgogICAgICAgIE1vZGUgICAgICAgICAgICA9PiAnUHVibGljJywgICAgICAgICAgICAgICAgICAgIyAoQWdlbnQsIEN1c3RvbWVyLCBQdWJsaWMpCiAgICAgICAgQ2F0ZWdvcnlJRCAgICAgID0+IDUsCiAgICAgICAgSW50ZXJmYWNlICAgICAgID0+ICRTZWxmLT57SW50ZXJmYWNlfSwKICAgICAgICBJbnRlcmZhY2VTdGF0ZXMgPT4gJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9LAogICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAxLAogICAgICAgIE5hdiAgICAgICAgICAgICA9PiAnbm9uZScsICAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbAogICAgKTsKCj1jdXQKCnN1YiBGQVFTaG93VG9wMTAgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIHBhcmFtZXRlcnMKICAgIGZvciBteSAkUGFyYW1OYW1lIChxdyhGQVFPYmplY3QgTW9kZSBJbnRlcmZhY2UgSW50ZXJmYWNlU3RhdGVzIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JFBhcmFtTmFtZX0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRQYXJhbU5hbWUhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17Q2F0ZWdvcnlJRH0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIENhdGVnb3J5SUQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNoZWNrIG1vZGUKICAgIGlmICggJFBhcmFte01vZGV9ICF+IG17IEFnZW50IHwgQ3VzdG9tZXIgfCBQdWJsaWMgfXhtcyApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ01vZGUgbXVzdCBiZSBlaXRoZXIgQWdlbnQsIEN1c3RvbWVyIG9yIFB1YmxpYyEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgQ3VzdG9tZXJVc2VyCiAgICBpZiAoICRQYXJhbXtNb2RlfSBlcSAnQ3VzdG9tZXInICYmICEkUGFyYW17Q3VzdG9tZXJVc2VyfSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgQ3VzdG9tZXJVc2VyIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzdG9yZSBGQVEgb2JqZWN0IGxvY2FsbHkKICAgICRTZWxmLT57RkFRT2JqZWN0fSA9ICRQYXJhbXtGQVFPYmplY3R9OwoKICAgIG15ICRSZXN1bHQgPSAtMTsKCiAgICAjIHNob3cgbGFzdCBhZGRlZC91cGRhdGVkIGFydGljbGVzCiAgICBteSAkU2hvdyA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkV4cGxvcmVyOjpUb3AxMDo6U2hvdycpOwogICAgaWYgKCAkU2hvdy0+eyAkUGFyYW17SW50ZXJmYWNlfS0+e05hbWV9IH0gKSB7CgogICAgICAgICMgdG8gc3RvcmUgc2VhcmNoIHBhcmFtIGZvciBjYXRlZ29yaWVzCiAgICAgICAgbXkgJUNhdGVnb3J5U2VhcmNoUGFyYW07CgogICAgICAgICMgaWYgc3ViY2F0ZWdvcmllcyBzaG91bGQgYWxzbyBiZSBzaG93bgogICAgICAgIGlmICggJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6RXhwbG9yZXI6OlRvcDEwOjpTaG93U3ViQ2F0ZWdvcnlJdGVtcycpICkgewoKICAgICAgICAgICAgIyBmaW5kIHRoZSBzdWJjYXRlZ29yaWVzIG9mIHRoaXMgY2F0ZWdvcnkKICAgICAgICAgICAgbXkgJFN1YkNhdGVnb3J5SURzUmVmID0gJFNlbGYtPntGQVFPYmplY3R9LT5DYXRlZ29yeVN1YkNhdGVnb3J5SURMaXN0KAogICAgICAgICAgICAgICAgUGFyZW50SUQgICAgID0+ICRQYXJhbXtDYXRlZ29yeUlEfSwKICAgICAgICAgICAgICAgIE1vZGUgICAgICAgICA9PiAkUGFyYW17TW9kZX0sCiAgICAgICAgICAgICAgICBJdGVtU3RhdGVzICAgPT4gJFBhcmFte0ludGVyZmFjZVN0YXRlc30sCiAgICAgICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJFBhcmFte0N1c3RvbWVyVXNlcn0gfHwgJycsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHNlYXJjaCBpbiB0aGUgZ2l2ZW4gY2F0ZWdvcnkgYW5kIGFkZCB0aGUgc3ViY2F0ZWdvcnkKICAgICAgICAgICAgJENhdGVnb3J5U2VhcmNoUGFyYW17Q2F0ZWdvcnlJRHN9ID0gWyAkUGFyYW17Q2F0ZWdvcnlJRH0sIEB7JFN1YkNhdGVnb3J5SURzUmVmfSBdOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgdGhlIHRvcCAxMCBhcnRpY2xlcyBmb3IgY2F0ZWdvcmllcyB3aXRoIGF0IGxlYXN0IHJvIHBlcm1pc3Npb25zCiAgICAgICAgbXkgJFRvcDEwSXRlbUlEc1JlZiA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRVG9wMTBHZXQoCiAgICAgICAgICAgIEludGVyZmFjZSA9PiAkUGFyYW17SW50ZXJmYWNlfS0+e05hbWV9LAogICAgICAgICAgICBMaW1pdCAgICAgPT4gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6RXhwbG9yZXI6OlRvcDEwOjpMaW1pdCcpIHx8IDEwLAogICAgICAgICAgICBVc2VySUQgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICVDYXRlZ29yeVNlYXJjaFBhcmFtLAogICAgICAgICk7CgogICAgICAgICMgdGhlcmUgaXMgc29tZXRoaW5nIHRvIHNob3cKICAgICAgICBpZiAoIEB7JFRvcDEwSXRlbUlEc1JlZn0gKSB7CgogICAgICAgICAgICAkUmVzdWx0ID0gMTsKCiAgICAgICAgICAgICMgc2hvdyB0aGUgaW5mbyBib3gKICAgICAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnSW5mb0JveEZBUU1pbmlMaXN0JywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEhlYWRlciA9PiAnVG9wIDEwIEZBUSBhcnRpY2xlcycsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBzaG93IHRoZSBSU1MgRmVlZCBpY29uCiAgICAgICAgICAgIGlmICggJFBhcmFte01vZGV9IGVxICdQdWJsaWMnICkgewoKICAgICAgICAgICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdJbmZvQm94RkFRTWluaUxpc3ROZXdzUlNTJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgPT4gJ1RvcDEwJywKICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgPT4gJ0ZBUSBBcnRpY2xlcyAoVG9wIDEwKScsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICROdW1iZXI7CiAgICAgICAgICAgIGZvciBteSAkVG9wMTBJdGVtICggQHskVG9wMTBJdGVtSURzUmVmfSApIHsKCiAgICAgICAgICAgICAgICAjIGluY3JlYXNlIHRoZSBudW1iZXIKICAgICAgICAgICAgICAgICROdW1iZXIrKzsKCiAgICAgICAgICAgICAgICAjIGdldCBGQVEgZGF0YQogICAgICAgICAgICAgICAgbXkgJUZBUURhdGEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUUdldCgKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgICAgID0+ICRUb3AxMEl0ZW0tPntJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHNob3cgdGhlIGFydGljbGUgcm93CiAgICAgICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnSW5mb0JveEZBUU1pbmlMaXN0SXRlbVJvdycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIE5hdiA9PiAkUGFyYW17TmF2fSwKICAgICAgICAgICAgICAgICAgICAgICAgJUZBUURhdGEsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBzaG93IHRoZSBUb3AxMCBwb3NpdGlvbiBudW1iZXIKICAgICAgICAgICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdJbmZvQm94RkFRTWluaUxpc3RJdGVtUm93UG9zaXRpb25OdW1iZXInLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBOdW1iZXIgPT4gJE51bWJlciwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJFJlc3VsdDsKfQoKPWl0ZW0gRkFRU2hvd1F1aWNrU2VhcmNoKCkKClNob3dzIGFuIGluZm8gYm94IHdpaCB0aGUgUXVpY2sgU2VhcmNoLgoKICAgICRMYXlvdXRPYmplY3QtPkZBUVNob3dRdWlja1NlYXJjaCgKICAgICAgICBNb2RlICAgICAgICAgICAgPT4gJ1B1YmxpYycsICAgICAgICAgICAgICAgICAgICMgKEFnZW50LCBDdXN0b21lciwgUHVibGljKQogICAgICAgIEludGVyZmFjZSAgICAgICA9PiAkU2VsZi0+e0ludGVyZmFjZX0sCiAgICAgICAgSW50ZXJmYWNlU3RhdGVzID0+ICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSwKICAgICAgICBVc2VySUQgICAgICAgICAgPT4gMSwKICAgICAgICBOYXYgICAgICAgICAgICAgPT4gJ25vbmUnLCAgICAgICAgICAgICAgICAgICAgICMgb3B0aW9uYWwKICAgICk7Cgo9Y3V0CgpzdWIgRkFRU2hvd1F1aWNrU2VhcmNoIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBwYXJhbWV0ZXJzCiAgICBmb3IgbXkgJFBhcmFtTmFtZSAocXcoTW9kZSBJbnRlcmZhY2UgSW50ZXJmYWNlU3RhdGVzIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JFBhcmFtTmFtZX0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRQYXJhbU5hbWUhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIG1vZGUKICAgIGlmICggJFBhcmFte01vZGV9ICF+IG17IEFnZW50IHwgQWdlbnRTbWFsbCB8IEN1c3RvbWVyIHwgUHVibGljIH14bXMgKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdNb2RlIG11c3QgYmUgZWl0aGVyIEFnZW50LCBDdXN0b21lciBvciBQdWJsaWMhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHNldCBhY3Rpb24gbW9kdWxlCiAgICBteSAkQWN0aW9uOwogICAgaWYgKCAkUGFyYW17TW9kZX0gZXEgJ0FnZW50U21hbGwnICkgewogICAgICAgICRBY3Rpb24gPSAnQWdlbnRGQVFTZWFyY2hTbWFsbCc7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkQWN0aW9uID0gJFBhcmFte01vZGV9IC4gJ0ZBUVNlYXJjaCc7CiAgICB9CgogICAgIyBjaGVjayBDdXN0b21lclVzZXIKICAgIGlmICggJFBhcmFte01vZGV9IGVxICdDdXN0b21lcicgJiYgISRQYXJhbXtDdXN0b21lclVzZXJ9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBDdXN0b21lclVzZXIhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHNob3cgcXVpY2sgc2VhcmNoCiAgICBteSAkU2hvdyA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkV4cGxvcmVyOjpRdWlja1NlYXJjaDo6U2hvdycpOwogICAgaWYgKCAkU2hvdy0+eyAkUGFyYW17SW50ZXJmYWNlfS0+e05hbWV9IH0gfHwgJFBhcmFte01vZGV9IGVxICdBZ2VudFNtYWxsJyApIHsKCiAgICAgICAgIyBjYWxsIFF1aWNrU2VhcmNoIGJsb2NrCiAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdRdWlja1NlYXJjaCcsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgQWN0aW9uID0+ICRBY3Rpb24sCiAgICAgICAgICAgICAgICBOYXYgPT4gJFBhcmFte05hdn0gfHwgJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKMTsKCj1iYWNrCgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChMPGh0dHA6Ly9vdHJzLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIEw8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0Pi4KCj1jdXQK
IyAtLQojIEtlcm5lbC9PdXRwdXQvSFRNTC9MaW5rT2JqZWN0RkFRLnBtIC0gbGF5b3V0IGJhY2tlbmQgbW9kdWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGlua09iamVjdEZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0OwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6T3V0cHV0OjpIVE1MOjpMaW5rT2JqZWN0RkFRIC0gbGF5b3V0IGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgU1lOT1BTSVMKCkFsbCBsYXlvdXQgZnVuY3Rpb25zIG9mIGxpbmsgb2JqZWN0IChGQVEpCgo9b3ZlciA0Cgo9Y3V0Cgo9aXRlbSBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgICRCYWNrZW5kT2JqZWN0ID0gS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxpbmtPYmplY3RGQVEtPm5ldygKICAgICAgICAlUGFyYW0sCiAgICApOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE9iamVjdCAoCiAgICAgICAgcXcoQ29uZmlnT2JqZWN0IExvZ09iamVjdCBNYWluT2JqZWN0IERCT2JqZWN0IFVzZXJPYmplY3QgRW5jb2RlT2JqZWN0CiAgICAgICAgUXVldWVPYmplY3QgR3JvdXBPYmplY3QgUGFyYW1PYmplY3QgVGltZU9iamVjdCBMYW5ndWFnZU9iamVjdCBVc2VyTGFuZ3VhZ2UgVXNlcklEKQogICAgICAgICkKICAgIHsKICAgICAgICAkU2VsZi0+eyRPYmplY3R9ID0gJFBhcmFteyRPYmplY3R9IHx8IGRpZSAiR290IG5vICRPYmplY3QhIjsKICAgIH0KCiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0gPSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0LT5uZXcoICV7JFNlbGZ9ICk7CgogICAgIyBkZWZpbmUgbmVlZGVkIHZhcmlhYmxlcwogICAgJFNlbGYtPntPYmplY3REYXRhfSA9IHsKICAgICAgICBPYmplY3QgICA9PiAnRkFRJywKICAgICAgICBSZWFsbmFtZSA9PiAnRkFRJywKICAgIH07CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aXRlbSBUYWJsZUNyZWF0ZUNvbXBsZXgoKQoKcmV0dXJuIGFuIGFycmF5IHdpdGggdGhlIGJsb2NrIGRhdGEKCiAgICBteSBAQmxvY2tEYXRhID0gJExpbmtPYmplY3QtPlRhYmxlQ3JlYXRlQ29tcGxleCgKICAgICAgICBPYmplY3RMaW5rTGlzdFdpdGhEYXRhID0+ICRPYmplY3RMaW5rTGlzdFJlZiwKICAgICk7CgphIHJlc3VsdCBjb3VsZCBiZQoKICAgICVCbG9ja0RhdGEgPSAoCiAgICAgICAgewogICAgICAgICAgICBPYmplY3QgICAgPT4gJ0ZBUScsCiAgICAgICAgICAgIEJsb2NrbmFtZSA9PiAnRkFRJywKICAgICAgICAgICAgSGVhZGxpbmUgID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdGQVEjJywKICAgICAgICAgICAgICAgICAgICBXaWR0aCAgID0+IDEzMCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnVGl0bGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdTdGF0ZScsCiAgICAgICAgICAgICAgICAgICAgV2lkdGggICA9PiAxMTAsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0NyZWF0ZWQnLAogICAgICAgICAgICAgICAgICAgIFdpZHRoICAgPT4gMTEwLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSXRlbUxpc3QgPT4gWwogICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgIEtleSAgICAgPT4gJEZBUUlELAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcxMjMxMjMxMjMnLAogICAgICAgICAgICAgICAgICAgICAgICBDc3MgICAgID0+ICdzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2giJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgID0+ICdUaGUgdGl0bGUnLAogICAgICAgICAgICAgICAgICAgICAgICBNYXhMZW5ndGggPT4gNTAsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICA9PiAnaW50ZXJuYWwgKGFnZW50KScsCiAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0ZSA9PiAxLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdUaW1lTG9uZycsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJzIwMDgtMDEtMDEgMTI6MTI6MDAnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgIEtleSAgICAgPT4gJEZBUUlELAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICc0MzQyMzQnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gJ1RoZSB0aXRsZSBvZiBGQVEgMicsCiAgICAgICAgICAgICAgICAgICAgICAgIE1heExlbmd0aCA9PiA1MCwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgID0+ICdwdWJsaWMgKGFsbCknLAogICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGUgPT4gMSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnVGltZUxvbmcnLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcyMDA4LTAxLTAxIDEyOjEyOjAwJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgKTsKCj1jdXQKCnN1YiBUYWJsZUNyZWF0ZUNvbXBsZXggewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte09iamVjdExpbmtMaXN0V2l0aERhdGF9IHx8IHJlZiAkUGFyYW17T2JqZWN0TGlua0xpc3RXaXRoRGF0YX0gbmUgJ0hBU0gnICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBPYmplY3RMaW5rTGlzdFdpdGhEYXRhIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjb252ZXJ0IHRoZSBsaXN0CiAgICBteSAlTGlua0xpc3Q7CiAgICBmb3IgbXkgJExpbmtUeXBlICggc29ydCBrZXlzICV7ICRQYXJhbXtPYmplY3RMaW5rTGlzdFdpdGhEYXRhfSB9ICkgewoKICAgICAgICAjIGV4dHJhY3QgbGluayB0eXBlIExpc3QKICAgICAgICBteSAkTGlua1R5cGVMaXN0ID0gJFBhcmFte09iamVjdExpbmtMaXN0V2l0aERhdGF9LT57JExpbmtUeXBlfTsKCiAgICAgICAgZm9yIG15ICREaXJlY3Rpb24gKCBzb3J0IGtleXMgJXskTGlua1R5cGVMaXN0fSApIHsKCiAgICAgICAgICAgICMgZXh0cmFjdCBkaXJlY3Rpb24gbGlzdAogICAgICAgICAgICBteSAkRGlyZWN0aW9uTGlzdCA9ICRQYXJhbXtPYmplY3RMaW5rTGlzdFdpdGhEYXRhfS0+eyRMaW5rVHlwZX0tPnskRGlyZWN0aW9ufTsKCiAgICAgICAgICAgIGZvciBteSAkRkFRSUQgKCBzb3J0IGtleXMgJXskRGlyZWN0aW9uTGlzdH0gKSB7CgogICAgICAgICAgICAgICAgJExpbmtMaXN0eyRGQVFJRH0tPntEYXRhfSA9ICREaXJlY3Rpb25MaXN0LT57JEZBUUlEfTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGNyZWF0ZSB0aGUgaXRlbSBsaXN0CiAgICBteSBASXRlbUxpc3Q7CiAgICBmb3IgbXkgJEZBUUlEICggc29ydCB7ICRhIDw9PiAkYiB9IGtleXMgJUxpbmtMaXN0ICkgewoKICAgICAgICAjIGV4dHJhY3QgZmFxIGRhdGEKICAgICAgICBteSAkRkFRID0gJExpbmtMaXN0eyRGQVFJRH0tPntEYXRhfTsKCiAgICAgICAgbXkgQEl0ZW1Db2x1bW5zID0gKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdMaW5rJywKICAgICAgICAgICAgICAgIEtleSAgICAgPT4gJEZBUUlELAogICAgICAgICAgICAgICAgQ29udGVudCA9PiAkRkFRLT57TnVtYmVyfSwKICAgICAgICAgICAgICAgIExpbmsgICAgPT4gJyRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249QWdlbnRGQVFab29tO0l0ZW1JRD0nIC4gJEZBUUlELAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgQ29udGVudCAgID0+ICRGQVEtPntUaXRsZX0sCiAgICAgICAgICAgICAgICBNYXhMZW5ndGggPT4gNTAsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gJEZBUS0+e1N0YXRlfSwKICAgICAgICAgICAgICAgIFRyYW5zbGF0ZSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdUaW1lTG9uZycsCiAgICAgICAgICAgICAgICBDb250ZW50ID0+ICRGQVEtPntDcmVhdGVkfSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBwdXNoIEBJdGVtTGlzdCwgXEBJdGVtQ29sdW1uczsKICAgIH0KCiAgICByZXR1cm4gaWYgIUBJdGVtTGlzdDsKCiAgICAjIGRlZmluZSB0aGUgYmxvY2sgZGF0YQogICAgbXkgJEZBUUhvb2sgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpGQVFIb29rJyk7CiAgICBteSAlQmxvY2sgICA9ICgKICAgICAgICBPYmplY3QgICAgPT4gJFNlbGYtPntPYmplY3REYXRhfS0+e09iamVjdH0sCiAgICAgICAgQmxvY2tuYW1lID0+ICRTZWxmLT57T2JqZWN0RGF0YX0tPntSZWFsbmFtZX0sCiAgICAgICAgSGVhZGxpbmUgID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ29udGVudCA9PiAkRkFRSG9vaywKICAgICAgICAgICAgICAgIFdpZHRoICAgPT4gMTMwLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdUaXRsZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ1N0YXRlJywKICAgICAgICAgICAgICAgIFdpZHRoICAgPT4gMTEwLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdDcmVhdGVkJywKICAgICAgICAgICAgICAgIFdpZHRoICAgPT4gMTMwLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICAgICAgSXRlbUxpc3QgPT4gXEBJdGVtTGlzdCwKICAgICk7CgogICAgcmV0dXJuICggXCVCbG9jayApOwp9Cgo9aXRlbSBUYWJsZUNyZWF0ZVNpbXBsZSgpCgpyZXR1cm4gYSBoYXNoIHdpdGggdGhlIGxpbmsgb3V0cHV0IGRhdGEKCiAgICBteSAlTGlua091dHB1dERhdGEgPSAkTGlua09iamVjdC0+VGFibGVDcmVhdGVTaW1wbGUoCiAgICAgICAgT2JqZWN0TGlua0xpc3RXaXRoRGF0YSA9PiAkT2JqZWN0TGlua0xpc3RSZWYsCiAgICApOwoKYSByZXN1bHQgY291bCBiZSBSZXR1cm4KCiAgICAlTGlua091dHB1dERhdGEgPSAoCiAgICAgICAgTm9ybWFsOjpTb3VyY2UgPT4gewogICAgICAgICAgICBUaWNrZXQgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ0xpbmsnLAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0Y6NTU1NTUnLAogICAgICAgICAgICAgICAgICAgIFRpdGxlICAgPT4gJ0ZBUSM1NTU1NTU6IFRoZSBGQVEgdGl0bGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdMaW5rJywKICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdGOjIyMjIyJywKICAgICAgICAgICAgICAgICAgICBUaXRsZSAgID0+ICdGQVEjMjIyMjI6IFRpdGxlIG9mIEZBUSAyMjIyMicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUGFyZW50Q2hpbGQ6OlRhcmdldCA9PiB7CiAgICAgICAgICAgIFRpY2tldCA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnTGluaycsCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnRjo3Nzc3NycsCiAgICAgICAgICAgICAgICAgICAgVGl0bGUgICA9PiAnRkFRIzc3Nzc3OiBGQVEgdGl0bGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgKTsKCj1jdXQKCnN1YiBUYWJsZUNyZWF0ZVNpbXBsZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17T2JqZWN0TGlua0xpc3RXaXRoRGF0YX0gfHwgcmVmICRQYXJhbXtPYmplY3RMaW5rTGlzdFdpdGhEYXRhfSBuZSAnSEFTSCcgKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIE9iamVjdExpbmtMaXN0V2l0aERhdGEhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkRkFRSG9vayA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkZBUUhvb2snKTsKICAgIG15ICVMaW5rT3V0cHV0RGF0YTsKICAgIGZvciBteSAkTGlua1R5cGUgKCBzb3J0IGtleXMgJXsgJFBhcmFte09iamVjdExpbmtMaXN0V2l0aERhdGF9IH0gKSB7CgogICAgICAgICMgZXh0cmFjdCBsaW5rIHR5cGUgTGlzdAogICAgICAgIG15ICRMaW5rVHlwZUxpc3QgPSAkUGFyYW17T2JqZWN0TGlua0xpc3RXaXRoRGF0YX0tPnskTGlua1R5cGV9OwoKICAgICAgICBmb3IgbXkgJERpcmVjdGlvbiAoIHNvcnQga2V5cyAleyRMaW5rVHlwZUxpc3R9ICkgewoKICAgICAgICAgICAgIyBleHRyYWN0IGRpcmVjdGlvbiBsaXN0CiAgICAgICAgICAgIG15ICREaXJlY3Rpb25MaXN0ID0gJFBhcmFte09iamVjdExpbmtMaXN0V2l0aERhdGF9LT57JExpbmtUeXBlfS0+eyREaXJlY3Rpb259OwoKICAgICAgICAgICAgbXkgQEl0ZW1MaXN0OwogICAgICAgICAgICBmb3IgbXkgJEZBUUlEICggc29ydCB7ICRhIDw9PiAkYiB9IGtleXMgJXskRGlyZWN0aW9uTGlzdH0gKSB7CgogICAgICAgICAgICAgICAgIyBleHRyYWN0IHRpY2t0IGRhdGEKICAgICAgICAgICAgICAgIG15ICRGQVEgPSAkRGlyZWN0aW9uTGlzdC0+eyRGQVFJRH07CgogICAgICAgICAgICAgICAgIyBkZWZpbmUgaXRlbSBkYXRhCiAgICAgICAgICAgICAgICBteSAlSXRlbSA9ICgKICAgICAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdMaW5rJywKICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdGOicgLiAkRkFRLT57TnVtYmVyfSwKICAgICAgICAgICAgICAgICAgICBUaXRsZSAgID0+ICIkRkFRSG9vayRGQVEtPntOdW1iZXJ9OiAkRkFRLT57VGl0bGV9IiwKICAgICAgICAgICAgICAgICAgICBMaW5rICAgID0+ICckRW52eyJCYXNlbGluayJ9QWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9JyAuICRGQVFJRCwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBwdXNoIEBJdGVtTGlzdCwgXCVJdGVtOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGFkZCBpdGVtIGxpc3QgdG8gbGluayBvdXRwdXQgZGF0YQogICAgICAgICAgICAkTGlua091dHB1dERhdGF7ICRMaW5rVHlwZSAuICc6OicgLiAkRGlyZWN0aW9uIH0tPntGQVF9ID0gXEBJdGVtTGlzdDsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICVMaW5rT3V0cHV0RGF0YTsKfQoKPWl0ZW0gQ29udGVudFN0cmluZ0NyZWF0ZSgpCgpyZXR1cm4gYSBvdXRwdXQgc3RyaW5nCgogICAgbXkgJFN0cmluZyA9ICRMYXlvdXRPYmplY3QtPkNvbnRlbnRTdHJpbmdDcmVhdGUoCiAgICAgICAgQ29udGVudERhdGEgPT4gJEhhc2hSZWYsCiAgICApOwoKPWN1dAoKc3ViIENvbnRlbnRTdHJpbmdDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0NvbnRlbnREYXRhfSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgQ29udGVudERhdGEhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICByZXR1cm47Cn0KCj1pdGVtIFNlbGVjdGFibGVPYmplY3RMaXN0KCkKCnJldHVybiBhbiBhcnJheSBoYXNoIHdpdGggc2VsZWN0YWJsZSBvYmplY3RzCgogICAgbXkgQFNlbGVjdGFibGVPYmplY3RMaXN0ID0gJExpbmtPYmplY3QtPlNlbGVjdGFibGVPYmplY3RMaXN0KAogICAgICAgIFNlbGVjdGVkID0+ICRJZGVudGlmaWVyLCAgIyAob3B0aW9uYWwpCiAgICApOwoKYSByZXN1bHQgY291bGQgYmUKCiAgICBAU2VsZWN0YWJsZU9iamVjdExpc3QgPSAoCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnRkFRJywKICAgICAgICAgICAgVmFsdWUgPT4gJ0ZBUScsCiAgICAgICAgfSwKICAgICk7Cgo9Y3V0CgpzdWIgU2VsZWN0YWJsZU9iamVjdExpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkU2VsZWN0ZWQ7CiAgICBpZiAoICRQYXJhbXtTZWxlY3RlZH0gJiYgJFBhcmFte1NlbGVjdGVkfSBlcSAkU2VsZi0+e09iamVjdERhdGF9LT57T2JqZWN0fSApIHsKICAgICAgICAkU2VsZWN0ZWQgPSAxOwogICAgfQoKICAgICMgb2JqZWN0IHNlbGVjdCBsaXN0CiAgICBteSBAT2JqZWN0U2VsZWN0TGlzdCA9ICgKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgICAgID0+ICRTZWxmLT57T2JqZWN0RGF0YX0tPntPYmplY3R9LAogICAgICAgICAgICBWYWx1ZSAgICA9PiAkU2VsZi0+e09iamVjdERhdGF9LT57UmVhbG5hbWV9LAogICAgICAgICAgICBTZWxlY3RlZCA9PiAkU2VsZWN0ZWQsCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuIEBPYmplY3RTZWxlY3RMaXN0Owp9Cgo9aXRlbSBTZWFyY2hPcHRpb25MaXN0KCkKCnJldHVybiBhbiBhcnJheSBoYXNoIHdpdGggc2VhcmNoIG9wdGlvbnMKCiAgICBteSBAU2VhcmNoT3B0aW9uTGlzdCA9ICRMaW5rT2JqZWN0LT5TZWFyY2hPcHRpb25MaXN0KAogICAgICAgIFN1Yk9iamVjdCA9PiAnQmxhJywgICMgKG9wdGlvbmFsKQogICAgKTsKCmEgcmVzdWx0IGNvdWxkIGJlCgogICAgQFNlYXJjaE9wdGlvbkxpc3QgPSAoCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICAgPT4gJ051bWJlcicsCiAgICAgICAgICAgIE5hbWUgICAgICA9PiAnRkFRIycsCiAgICAgICAgICAgIElucHV0U3RyZyA9PiAkRm9ybVN0cmluZywKICAgICAgICAgICAgRm9ybURhdGEgID0+ICcxMjM0JywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgICAgID0+ICdUaXRsZScsCiAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGl0bGUnLAogICAgICAgICAgICBJbnB1dFN0cmcgPT4gJEZvcm1TdHJpbmcsCiAgICAgICAgICAgIEZvcm1EYXRhICA9PiAnQmxhQmxhJywKICAgICAgICB9LAogICAgKTsKCj1jdXQKCnN1YiBTZWFyY2hPcHRpb25MaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBzZWFyY2ggb3B0aW9uIGxpc3QKICAgIG15ICRGQVFIb29rICAgICAgICAgID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6RkFRSG9vaycpOwogICAgbXkgQFNlYXJjaE9wdGlvbkxpc3QgPSAoCiAgICAgICAgewogICAgICAgICAgICBLZXkgID0+ICdOdW1iZXInLAogICAgICAgICAgICBOYW1lID0+ICRGQVFIb29rLAogICAgICAgICAgICBUeXBlID0+ICdUZXh0JywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICA9PiAnVGl0bGUnLAogICAgICAgICAgICBOYW1lID0+ICdUaXRsZScsCiAgICAgICAgICAgIFR5cGUgPT4gJ1RleHQnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgID0+ICdXaGF0JywKICAgICAgICAgICAgTmFtZSA9PiAnRnVsbHRleHQnLAogICAgICAgICAgICBUeXBlID0+ICdUZXh0JywKICAgICAgICB9LAogICAgKTsKCiAgICAjIGFkZCBmb3Jta2V5CiAgICBmb3IgbXkgJFJvdyAoQFNlYXJjaE9wdGlvbkxpc3QpIHsKICAgICAgICAkUm93LT57Rm9ybUtleX0gPSAnU0VBUkNIOjonIC4gJFJvdy0+e0tleX07CiAgICB9CgogICAgIyBhZGQgZm9ybSBkYXRhIGFuZCBpbnB1dCBzdHJpbmcKICAgIFJPVzoKICAgIGZvciBteSAkUm93IChAU2VhcmNoT3B0aW9uTGlzdCkgewoKICAgICAgICAjIHByZXBhcmUgdGV4dCBpbnB1dCBmaWVsZHMKICAgICAgICBpZiAoICRSb3ctPntUeXBlfSBlcSAnVGV4dCcgKSB7CgogICAgICAgICAgICAjIGdldCBmb3JtIGRhdGEKICAgICAgICAgICAgJFJvdy0+e0Zvcm1EYXRhfSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJFJvdy0+e0Zvcm1LZXl9ICk7CgogICAgICAgICAgICAjIHBhcnNlIHRoZSBpbnB1dCB0ZXh0IGJsb2NrCiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdJbnB1dFRleHQnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICRSb3ctPntGb3JtS2V5fSwKICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkUm93LT57Rm9ybURhdGF9IHx8ICcnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgYWRkIHRoZSBpbnB1dCBzdHJpbmcKICAgICAgICAgICAgJFJvdy0+e0lucHV0U3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnTGlua09iamVjdCcsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IFJPVzsKICAgICAgICB9CgogICAgICAgICMgcHJlcGFyZSBsaXN0IGJveGVzCiAgICAgICAgaWYgKCAkUm93LT57VHlwZX0gZXEgJ0xpc3QnICkgewoKICAgICAgICAgICAgIyBnZXQgZm9ybSBkYXRhCiAgICAgICAgICAgIG15IEBGb3JtRGF0YSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRBcnJheSggUGFyYW0gPT4gJFJvdy0+e0Zvcm1LZXl9ICk7CiAgICAgICAgICAgICRSb3ctPntGb3JtRGF0YX0gPSBcQEZvcm1EYXRhOwoKICAgICAgICAgICAgbXkgJUxpc3REYXRhOwogICAgICAgICAgICBpZiAoICRSb3ctPntLZXl9IGVxICdTdGF0ZUlEcycgKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgc3RhdGUgbGlzdAogICAgICAgICAgICAgICAgJUxpc3REYXRhID0gJFNlbGYtPntTdGF0ZU9iamVjdH0tPlN0YXRlTGlzdCgKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBhZGQgdGhlIGlucHV0IHN0cmluZwogICAgICAgICAgICAkUm93LT57SW5wdXRTdHJnfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgICAgICBEYXRhICAgICAgID0+IFwlTGlzdERhdGEsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgID0+ICRSb3ctPntGb3JtS2V5fSwKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgPT4gJFJvdy0+e0Zvcm1EYXRhfSwKICAgICAgICAgICAgICAgIFNpemUgICAgICAgPT4gMywKICAgICAgICAgICAgICAgIE11bHRpcGxlICAgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgUk9XOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gQFNlYXJjaE9wdGlvbkxpc3Q7Cn0KCjE7Cgo9YmFjawoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoaHR0cDovL290cnMub3JnLykuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dD4uCgo9Y3V0Cg==
IyAtLQojIEtlcm5lbC9PdXRwdXQvSFRNTC9PdXRwdXRGaWx0ZXJGQVEucG0gLSBPdXRwdXQgZmlsdGVyIGZvciBGQVEgbW9kdWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6T3V0cHV0RmlsdGVyRkFROwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgZm9yIG15ICRPYmplY3QgKHF3KFBhcmFtT2JqZWN0IENvbmZpZ09iamVjdCBNYWluT2JqZWN0IExvZ09iamVjdCBMYXlvdXRPYmplY3QpKSB7CiAgICAgICAgJFNlbGYtPnskT2JqZWN0fSA9ICRQYXJhbXskT2JqZWN0fSB8fCBkaWUgIkdvdCBubyAkT2JqZWN0ISI7CiAgICB9CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBkYXRhCiAgICByZXR1cm4gaWYgISRQYXJhbXtEYXRhfTsKICAgIHJldHVybiBpZiByZWYgJFBhcmFte0RhdGF9IG5lICdTQ0FMQVInOwogICAgcmV0dXJuIGlmICEkeyAkUGFyYW17RGF0YX0gfTsKICAgIHJldHVybiBpZiAhJFBhcmFte1RlbXBsYXRlRmlsZX07CgogICAgIyBjaGVjayBwZXJtaXNzaW9uCiAgICByZXR1cm4gaWYgISRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0VudlJlZn0tPnsnVXNlcklzR3JvdXBSb1tmYXFdJ307CgogICAgIyBnZXQgYWxsb3dlZCB0ZW1wbGF0ZSBuYW1lcwogICAgbXkgJFZhbGlkVGVtcGxhdGVzCiAgICAgICAgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRnJvbnRlbmQ6Ok91dHB1dDo6RmlsdGVyRWxlbWVudFBvc3QnKS0+e0ZBUX0tPntUZW1wbGF0ZXN9OwoKICAgICMgY2hlY2sgdGVtcGxhdGUgbmFtZQogICAgcmV0dXJuIGlmICEkVmFsaWRUZW1wbGF0ZXMtPnsgJFBhcmFte1RlbXBsYXRlRmlsZX0gfTsKCiAgICAjIGlmIG5vIHNlc3Npb24gY29va2llcyBhcmUgdXNlZCB3ZSBhdHRhY2ggdGhlIHNlc3Npb24gYXMgVVJMIHBhcmFtZXRlcgogICAgbXkgJFNlc3Npb25TdHJpbmcgPSAnJzsKICAgIGlmICggISRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdTZXNzaW9uVXNlQ29va2llJykgKSB7CiAgICAgICAgbXkgJFNlc3Npb25JRAogICAgICAgICAgICA9ICRQYXJhbXtTZXNzaW9uSUR9CiAgICAgICAgICAgIHx8ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ1Nlc3Npb25OYW1lJykgKQogICAgICAgICAgICB8fCAnJzsKICAgICAgICAkU2Vzc2lvblN0cmluZyA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdTZXNzaW9uTmFtZScpIC4gJz0nIC4gJFNlc3Npb25JRCAuICc7JzsKICAgIH0KCiAgICBteSAkU3RhcnRQYXR0ZXJuICAgID0gJzwhLS0gWyBdIE91dHB1dEZpbHRlckhvb2tfVGlja2V0T3B0aW9uc0VuZCBbIF0gLS0+IC4rPyc7CiAgICBteSAkRkFRVHJhbnNsYXRhYmxlID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ0ZBUScpOwoKICAgICMgYWRkIEZBUSBsaW5rIHRvIGFuIGV4aXN0aW5nIE9wdGlvbnMgYmxvY2sKICAgICMkRmluaXNoUGF0dGVybiB3aWxsIGJlIHJlcGxhY2VkIGJ5ICRSZXBsYWNlCiAgICBpZiAoICR7ICRQYXJhbXtEYXRhfSB9ID1+IG17ICRTdGFydFBhdHRlcm4gfWl4bXMgKSB7CgogICAgICAgIG15ICRGaW5pc2hQYXR0ZXJuID0gJzwvZGl2Pic7CiAgICAgICAgbXkgJFJlcGxhY2UgICAgICAgPSA8PCJFTkQiOwogICAgICAgICAgICAgICAgICAgICAgICA8YSAgaHJlZj1cIiNcIiBpZD1cIk9wdGlvbkZBUVwiPlsgJEZBUVRyYW5zbGF0YWJsZSBdPC9hPgoKPCEtLWR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZS0tPgo8c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIj4vLzwhW0NEQVRBWwovKmdsb2JhbCBGQVE6IHRydWUgKi8KRkFRLkFnZW50LlRpY2tldENvbXBvc2UuSW5pdEZBUVRpY2tldENvbXBvc2UoXCQoJyNSaWNoVGV4dCcpKTsKXCQoJyNPcHRpb25GQVEnKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uIChldmVudCkgewogICAgdmFyIEZBUUlGcmFtZSA9ICc8aWZyYW1lIGNsYXNzPVwiVGV4dE9wdGlvbiBGQVFcIiBzcmM9XCInICsgQ29yZS5Db25maWcuR2V0KCdDR0lIYW5kbGUnKSArICc/JyArICckU2Vzc2lvblN0cmluZycgKyAnQWN0aW9uPUFnZW50RkFRRXhwbG9yZXI7TmF2PU5vbmU7U3ViamVjdD07V2hhdD1cIj48L2lmcmFtZT4nOwogICAgQ29yZS5VSS5EaWFsb2cuU2hvd0NvbnRlbnREaWFsb2coRkFRSUZyYW1lLCAnJywgJzEwcHgnLCAnQ2VudGVyJywgdHJ1ZSk7CiAgICByZXR1cm4gZmFsc2U7Cn0pOwovL11dPjwvc2NyaXB0Pgo8IS0tZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlLS0+CgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgpFTkQKICAgICAgICAkeyAkUGFyYW17RGF0YX0gfSA9fiBzeyAoJFN0YXJ0UGF0dGVybikgJEZpbmlzaFBhdHRlcm4gfXskMSRSZXBsYWNlfWl4bXM7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgIyBhZGQgRkFRIGxpbmsgYW5kIGl0cyBvd24gYmxvY2ssIGlmIHRoZXJlIG5vIFRpY2tldE9wdGlvbnMgYmxvY2sgd2FzIGNhbGxlZAogICAgJFN0YXJ0UGF0dGVybiA9ICc8IS0tIFsgXSBPdXRwdXRGaWx0ZXJIb29rX05vVGlja2V0T3B0aW9uc0ZhbGxiYWNrIFsgXSAtLT4gLis/JzsKICAgIG15ICRPcHRpb25zVHJhbnNsYXRhYmxlID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ09wdGlvbnMnKTsKICAgIG15ICRSZXBsYWNlICAgICAgICAgICAgID0gPDwiRU5EIjsKPCEtLSBPdXRwdXRGaWx0ZXJIb29rX05vVGlja2V0T3B0aW9uc0ZhbGxiYWNrIC0tPgogICAgICAgICAgICAgICAgICAgIDxsYWJlbD4kT3B0aW9uc1RyYW5zbGF0YWJsZTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgIGhyZWY9XCIjXCIgaWQ9XCJPcHRpb25GQVFcIj5bICRGQVFUcmFuc2xhdGFibGUgXTwvYT4KCjwhLS1kdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUtLT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCi8qZ2xvYmFsIEZBUTogdHJ1ZSAqLwpGQVEuQWdlbnQuVGlja2V0Q29tcG9zZS5Jbml0RkFRVGlja2V0Q29tcG9zZShcJCgnI1JpY2hUZXh0JykpOwpcJCgnI09wdGlvbkZBUScpLmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICB2YXIgRkFRSUZyYW1lID0gJzxpZnJhbWUgY2xhc3M9IlRleHRPcHRpb24gRkFRIiBzcmM9IicgKyBDb3JlLkNvbmZpZy5HZXQoJ0NHSUhhbmRsZScpICsgJz8nICsgJyRTZXNzaW9uU3RyaW5nJyArICdBY3Rpb249QWdlbnRGQVFFeHBsb3JlcjtOYXY9Tm9uZTtTdWJqZWN0PTtXaGF0PSI+PC9pZnJhbWU+JzsKICAgIENvcmUuVUkuRGlhbG9nLlNob3dDb250ZW50RGlhbG9nKEZBUUlGcmFtZSwgJycsICcxMHB4JywgJ0NlbnRlcicsIHRydWUpOwogICAgcmV0dXJuIGZhbHNlOwp9KTsKLy9dXT48L3NjcmlwdD4KPCEtLWR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZS0tPgoKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiQ2xlYXJcIj48L2Rpdj4KRU5ECiAgICAkeyAkUGFyYW17RGF0YX0gfSA9fiBzeyAoJFN0YXJ0UGF0dGVybikgfXskUmVwbGFjZX1peG1zOwogICAgcmV0dXJuIDE7Cn0KCjE7Cg==
IyAtLQojIEtlcm5lbC9PdXRwdXQvSFRNTC9QdWJsaWNIZWFkZXJNZXRhRkFRU2VhcmNoLnBtCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6UHVibGljSGVhZGVyTWV0YUZBUVNlYXJjaDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIGZvciAocXcoQ29uZmlnT2JqZWN0IExvZ09iamVjdCBMYXlvdXRPYmplY3QgVGltZU9iamVjdCkpIHsKICAgICAgICAkU2VsZi0+eyRffSA9ICRQYXJhbXskX30gfHwgZGllICJHb3Qgbm8gJF8hIjsKICAgIH0KCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkU2Vzc2lvbiA9ICcnOwogICAgaWYgKCAhJFNlbGYtPntMYXlvdXRPYmplY3R9LT57U2Vzc2lvbklEQ29va2llfSApIHsKICAgICAgICAkU2Vzc2lvbiA9ICc7JyAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e1Nlc3Npb25OYW1lfSAuICc9JwogICAgICAgICAgICAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e1Nlc3Npb25JRH07CiAgICB9CgogICAgIyBidWlsZCBvcGVuIHNlYXJjaCBkZXNjcmlwdGlvbiBmb3IgRkFRIG51bWJlcgogICAgbXkgJFRpdGxlID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ1Byb2R1Y3ROYW1lJyk7CgogICAgJFRpdGxlIC49ICcgLSBQdWJsaWMgKCcgLiAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpGQVFIb29rJykgLiAnKSc7CiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ01ldGFMaW5rJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgUmVsICAgPT4gJ3NlYXJjaCcsCiAgICAgICAgICAgIFR5cGUgID0+ICdhcHBsaWNhdGlvbi9vcGVuc2VhcmNoZGVzY3JpcHRpb24reG1sJywKICAgICAgICAgICAgVGl0bGUgPT4gJFRpdGxlLAogICAgICAgICAgICBIcmVmICA9PiAnJEVudnsiQmFzZWxpbmsifUFjdGlvbj0nIC4gJFBhcmFte0NvbmZpZ30tPntBY3Rpb259CiAgICAgICAgICAgICAgICAuICc7U3ViYWN0aW9uPU9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcicgLiAkU2Vzc2lvbiwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGJ1aWxkIG9wZW4gc2VhcmNoIGRlc2NyaXB0aW9uIGZvciBGQVEgZnVsbHRleHQKICAgIG15ICRGdWxsdGV4dCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdGQVFGdWxsdGV4dCcpOwogICAgJFRpdGxlID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ1Byb2R1Y3ROYW1lJyk7CiAgICAkVGl0bGUgLj0gJyAtIFB1YmxpYyAoJyAuICRGdWxsdGV4dCAuICcpJzsKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnTWV0YUxpbmsnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBSZWwgICA9PiAnc2VhcmNoJywKICAgICAgICAgICAgVHlwZSAgPT4gJ2FwcGxpY2F0aW9uL29wZW5zZWFyY2hkZXNjcmlwdGlvbit4bWwnLAogICAgICAgICAgICBUaXRsZSA9PiAkVGl0bGUsCiAgICAgICAgICAgIEhyZWYgID0+ICckRW52eyJCYXNlbGluayJ9QWN0aW9uPScgLiAkUGFyYW17Q29uZmlnfS0+e0FjdGlvbn0KICAgICAgICAgICAgICAgIC4gJztTdWJhY3Rpb249T3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQnIC4gJFNlc3Npb24sCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==
IyAtLQojIEFnZW50RkFRQWRkLmR0bCAtIHByb3ZpZGVzIEhUTUwgZm9ybSBmb3IgQWdlbnRGQVFBZGQKIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxMyBPVFJTIEFHLCBodHRwOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgo8ZGl2IGNsYXNzPSJNYWluQm94IEFSSUFSb2xlTWFpbiBGb3JtU2NyZWVuIE5vU2lkZWJhciI+CgogICAgPGgxPiRUZXh0eyJBZGQgRkFRIEFydGljbGUifTwvaDE+CiAgICA8cCBjbGFzcz0iQXN0ZXJpc2tFeHBsYW5hdGlvbiI+JFRleHR7IkFsbCBmaWVsZHMgbWFya2VkIHdpdGggYW4gYXN0ZXJpc2sgKCopIGFyZSBtYW5kYXRvcnkuIn08L3A+CgogICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+Cgo8IS0tIGR0bDpibG9jazpGQVFBZGQgLS0+CiAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CgogICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiRFbnZ7IkNHSUhhbmRsZSJ9IiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIGNsYXNzPSJWYWxpZGF0ZSBQcmV2ZW50TXVsdGlwbGVTdWJtaXRzIj4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IiRFbnZ7IkFjdGlvbiJ9Ii8+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJTYXZlIi8+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJGb3JtSUQiIHZhbHVlPSIkUURhdGF7IkZvcm1JRCJ9Ii8+CgogICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UiPgoKICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJUaXRsZSI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+KiA8L3NwYW4+JFRleHR7IlRpdGxlIn06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJUaXRsZSIgaWQ9IlRpdGxlIiB2YWx1ZT0iJFFEYXRheyJUaXRsZSJ9IiBjbGFzcz0iVzUwcGMgVmFsaWRhdGVfUmVxdWlyZWQgJFFEYXRheyJUaXRsZVNlcnZlckVycm9yIn0iIG1heGxlbmd0aD0iMjAwIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlRpdGxlRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD4kVGV4dHsiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4ifTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iVGl0bGVTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPiRUZXh0eyJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiJ9PC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iS2V5d29yZHMiPiRUZXh0eyJLZXl3b3JkcyJ9OjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iS2V5d29yZHMiIGlkPSJLZXl3b3JkcyIgdmFsdWU9IiRRRGF0YXsiS2V5d29yZHMifSIgY2xhc3M9Ilc1MHBjIiBtYXhsZW5ndGg9IjIwMCIvPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iQ2F0ZWdvcnlJRCI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+KiA8L3NwYW4+JFRleHR7IkNhdGVnb3J5In06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICREYXRheyJDYXRlZ29yeU9wdGlvbiJ9CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkNhdGVnb3J5SURFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+JFRleHR7IkEgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuIn08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJDYXRlZ29yeUlEU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPiRUZXh0eyJBIGNhdGVnb3J5IGlzIHJlcXVpcmVkLiJ9PC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlN0YXRlSUQiPiRUZXh0eyJTdGF0ZSJ9OjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAkRGF0YXsiU3RhdGVPcHRpb24ifQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iVmFsaWRJRCI+JFRleHR7IlZhbGlkaXR5In06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICREYXRheyJWYWxpZE9wdGlvbiJ9CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKPCEtLSBkdGw6YmxvY2s6TGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTGFuZ3VhZ2VJRCI+JFRleHR7Ikxhbmd1YWdlIn06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICREYXRheyJMYW5ndWFnZU9wdGlvbiJ9CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgo8IS0tIGR0bDpibG9jazpMYW5ndWFnZSAtLT4KCjwhLS0gZHRsOmJsb2NrOk5vTGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iTGFuZ3VhZ2VJRCIgdmFsdWU9IiRRRGF0YXsiTGFuZ3VhZ2VJRCJ9Ii8+CjwhLS0gZHRsOmJsb2NrOk5vTGFuZ3VhZ2UgLS0+CgoKPCEtLSBkdGw6YmxvY2s6QXBwcm92YWwgLS0+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iQXBwcm92ZWQiPiRUZXh0eyJBcHByb3ZhbCJ9OjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAkRGF0YXsiQXBwcm92YWxPcHRpb24ifQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPCEtLSBkdGw6YmxvY2s6QXBwcm92YWwgLS0+Cgo8IS0tIGR0bDpibG9jazpBdHRhY2htZW50VXBsb2FkIC0tPgogICAgICAgICAgICAgICAgICAgIDxsYWJlbD4kVGV4dHsiQXR0YWNobWVudCJ9OjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICA8dWw+CjwhLS0gZHRsOmJsb2NrOkF0dGFjaG1lbnQgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFFEYXRheyJGaWxlbmFtZSJ9ICgkUURhdGF7IkZpbGVzaXplIn0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGlkPSJBdHRhY2htZW50RGVsZXRlJFFEYXRheyJGaWxlSUQifSIgbmFtZT0iQXR0YWNobWVudERlbGV0ZSRRRGF0YXsiRmlsZUlEIn0iIHZhbHVlPSIkVGV4dHsiRGVsZXRlIn0iPiRUZXh0eyJEZWxldGUifTwvYnV0dG9uPgo8IS0tZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlLS0+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwogICAgJCgnI0F0dGFjaG1lbnREZWxldGUkUURhdGF7IkZpbGVJRCJ9JykuYmluZCgnY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgQ29yZS5Gb3JtLlZhbGlkYXRlLkRpc2FibGVWYWxpZGF0aW9uKCQoJyNBdHRhY2htZW50RGVsZXRlJFFEYXRheyJGaWxlSUQifScpLmNsb3Nlc3QoJ2Zvcm0nKSk7CiAgICB9KTsKLy9dXT48L3NjcmlwdD4KPCEtLWR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZS0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KPCEtLSBkdGw6YmxvY2s6QXR0YWNobWVudCAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT0iRmlsZVVwbG9hZCIgaWQ9IkZpbGVVcGxvYWQiIHR5cGU9ImZpbGUiIHNpemU9IjQwIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IkF0dGFjaG1lbnRVcGxvYWQiIG5hbWU9IkF0dGFjaG1lbnRVcGxvYWQiIHZhbHVlPSIwIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+Cgo8IS0tZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlLS0+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwogICAgJCgnI0ZpbGVVcGxvYWQnKS5iaW5kKCdjaGFuZ2UnLCBmdW5jdGlvbiAoRXZlbnQpIHsKICAgICAgICB2YXIgJEZvcm0gPSAkKCcjRmlsZVVwbG9hZCcpLmNsb3Nlc3QoJ2Zvcm0nKTsKICAgICAgICBDb3JlLkZvcm0uVmFsaWRhdGUuRGlzYWJsZVZhbGlkYXRpb24oJEZvcm0pOwogICAgICAgICRGb3JtLmZpbmQoJyNBdHRhY2htZW50VXBsb2FkJykudmFsKCcxJykuZW5kKCkuc3VibWl0KCk7CiAgICB9KTsKLy9dXT48L3NjcmlwdD4KPCEtLWR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZS0tPgoKPCEtLSBkdGw6YmxvY2s6QXR0YWNobWVudFVwbG9hZCAtLT4KCjwhLS0gZHRsOmJsb2NrOlJpY2hUZXh0IC0tPgokSW5jbHVkZXsiUmljaFRleHRFZGl0b3IifQo8IS0tIGR0bDpibG9jazpSaWNoVGV4dCAtLT4KCjwhLS0gZHRsOmJsb2NrOkZBUUNvbnRlbnQgLS0+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iJFFEYXRheyJGaWVsZCJ9Ij4kVGV4dHsiJERhdGF7IkNhcHRpb24ifSJ9Ojxici8+PHNwYW4gY2xhc3M9IkZBUVN0YXRlTmFtZSI+KCRUZXh0eyIkRGF0YXsiU3RhdGVOYW1lIn0ifSk8L3NwYW4+PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSaWNoVGV4dEZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGlkPSIkUURhdGF7IkZpZWxkIn0iIGNsYXNzPSJSaWNoVGV4dCIgbmFtZT0iJFFEYXRheyJGaWVsZCJ9IiByb3dzPSIxNSIgY29scz0iNzAiPiRRRGF0YXsiQ29udGVudCJ9PC90ZXh0YXJlYT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CjwhLS0gZHRsOmJsb2NrOkZBUUNvbnRlbnQgLS0+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIFNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJQcmltYXJ5IENhbGxGb3JBY3Rpb24iIGlkPSJGQVFTdWJtaXQiIHR5cGU9ImJ1dHRvbiIgdmFsdWU9IiRUZXh0eyJDcmVhdGUifSI+PHNwYW4+PGkgY2xhc3M9Imljb24tY2hlY2siPjwvaT4gJFRleHR7IkNyZWF0ZSJ9PC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAkVGV4dHsib3IifQogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPUFnZW50RkFRRXhwbG9yZXI7Q2F0ZWdvcnlJRD0kTFFEYXRheyJDYXRlZ29yeUlEIn0iPiRUZXh0eyJDYW5jZWwifTwvYT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgoKICAgICAgICAgICAgPC9mb3JtPgogICAgICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpGQVFBZGQgLS0+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPC9kaXY+CjwhLS1kdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUtLT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiQoJyNGQVFTdWJtaXQnKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewogICAgLy8gcHJldmVudCB0b28gZmFzdCBzdWJtaXRpb25zIHRoYXQgY291bGQgbGVhZCBpbnRvIG5vIGNoYW5nZXMgc2VudCB0byBzZXJ2ZXIsIGR1ZSB0byBSVEUgdG8KICAgIC8vIHRleHRhcmVhIGRhdGEgdHJhbnNmZXIKICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAkKCcjRkFRU3VibWl0JykuY2xvc2VzdCgnZm9ybScpLnN1Ym1pdCgpOwogICAgfSwgMjUwKTsKfSk7Ci8vXV0+PC9zY3JpcHQ+CjwhLS1kdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUtLT4K
IyAtLQojIEFnZW50RGFzaGJvYXJkRkFRT3ZlcnZpZXcuZHRsIC0gcHJvdmlkZXMgSFRNTCBmb3IgZ2xvYmFsIGRhc2hib2FyZAojIENvcHlyaWdodCAoQykgMjAwMS0yMDEzIE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCjwhLS0gZHRsOmJsb2NrOkluZm9Cb3hGQVFNaW5pTGlzdCAtLT4KPHRhYmxlIGNsYXNzPSJEYXRhVGFibGUiPgogICAgPHRib2R5Pgo8IS0tIGR0bDpibG9jazpJbmZvQm94RkFRTWluaUxpc3RJdGVtUm93IC0tPgogICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPSRMUURhdGF7Ikl0ZW1JRCJ9IiBjbGFzcz0iQXNCbG9jayIgdGl0bGU9IiRRRGF0YXsiVGl0bGUifSAoJExRRGF0YXsiQ2F0ZWdvcnlOYW1lIn0pIj4KICAgICAgICAgICAgICAgICAgICAkUURhdGF7IlRpdGxlIiwiNTAifQogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPHNwYW4+CiAgICAgICAgICAgICAgICAgICAgJFFEYXRheyJDYXRlZ29yeVNob3J0TmFtZSJ9IC0gJFRpbWVTaG9ydHsiJERhdGF7IkNoYW5nZWQifSJ9CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6SW5mb0JveEZBUU1pbmlMaXN0SXRlbVJvdyAtLT4KICAgIDwvdGJvZHk+CjwvdGFibGU+CjwhLS0gZHRsOmJsb2NrOkluZm9Cb3hGQVFNaW5pTGlzdCAtLT4K
IyAtLQojIEFnZW50RkFRQ2F0ZWdvcnkuZHRsIC0gcHJvdmlkZXMgSFRNTCBmcm9tIGZvciBBZ2VudEZBUUxhYWd1YWdlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXcgLS0+CjxkaXYgY2xhc3M9Ik1haW5Cb3ggQVJJQVJvbGVNYWluIExheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyRmlyc3QiPgogICAgPGgxPiRUZXh0eyJGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCJ9PC9oMT4KICAgIDxkaXYgY2xhc3M9IlNpZGViYXJDb2x1bW4iPgo8IS0tIGR0bDpibG9jazpBY3Rpb25MaXN0IC0tPgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+JFRleHR7IkFjdGlvbnMifTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQWN0aW9uTGlzdCI+CjwhLS0gZHRsOmJsb2NrOkFjdGlvbk92ZXJ2aWV3IC0tPgogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifSIgY2xhc3M9IkNhbGxGb3JBY3Rpb24iPjxzcGFuPiRUZXh0eyJHbyB0byBvdmVydmlldyJ9PC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgo8IS0tIGR0bDpibG9jazpBY3Rpb25PdmVydmlldyAtLT4KCjwhLS0gZHRsOmJsb2NrOkFjdGlvbkFkZCAtLT4KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JEVudnsiQWN0aW9uIn07U3ViYWN0aW9uPUFkZCIgY2xhc3M9IkNhbGxGb3JBY3Rpb24gUGx1cyI+PHNwYW4+JFRleHR7IkFkZCBjYXRlZ29yeSJ9PC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgo8IS0tIGR0bDpibG9jazpBY3Rpb25BZGQgLS0+CgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CjwhLS0gZHRsOmJsb2NrOkFjdGlvbkxpc3QgLS0+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkNvbnRlbnRDb2x1bW4iPgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+Cgo8IS0tIGR0bDpibG9jazpPdmVydmlld1Jlc3VsdCAtLT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj4kVGV4dHsiTGlzdCJ9PC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJEYXRhVGFibGUgVmFyaWFibGVXaWR0aCIgc3VtbWFyeT0iRkFRIGNhdGVnb3JpZXMiPgogICAgICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPiRUZXh0eyJOYW1lIn08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPiRUZXh0eyJWYWxpZGl0eSJ9PC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4kVGV4dHsiRGVsZXRlIn08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgPHRib2R5Pgo8IS0tIGR0bDpibG9jazpOb0RhdGFGb3VuZE1zZyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUZXh0eyJObyBkYXRhIGZvdW5kLiJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgo8IS0tIGR0bDpibG9jazpOb0RhdGFGb3VuZE1zZyAtLT4KPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdSZXN1bHRSb3cgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YSBjbGFzcz0iQXNCbG9jayIgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTtTdWJhY3Rpb249Q2hhbmdlO0NhdGVnb3J5SUQ9JExRRGF0YXsiQ2F0ZWdvcnlJRCJ9Ij4kUURhdGF7Ik5hbWUifTwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRUZXh0eyIkRGF0YXsiVmFsaWQifSJ9PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2VudGVyIExhc3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGlkPSJEZWxldGVDYXRlZ29yeUlEJFFEYXRheyJDYXRlZ29yeUlEIn0iIGNsYXNzPSJUcmFzaENhbiIgaHJlZj0iIyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUZXh0eyJEZWxldGUifTogJFFEYXRheyJOYW1lIn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgo8IS0tZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlLS0+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwovKmdsb2JhbCBGQVE6IHRydWUgKi8KICAgIEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cuQmluZENvbmZpcm1hdGlvbkRpYWxvZyh7CiAgICAgICAgRWxlbWVudElEOiAgICAgICAgICAgICAgICAgICdEZWxldGVDYXRlZ29yeUlEJFFEYXRheyJDYXRlZ29yeUlEIn0nLAogICAgICAgIEVsZW1lbnRTZWxlY3RvcjogICAgICAgICAgICAnI0RlbGV0ZUNhdGVnb3J5SUQkUURhdGF7IkNhdGVnb3J5SUQifScsCiAgICAgICAgRGlhbG9nQ29udGVudFF1ZXJ5U3RyaW5nOiAgICdBY3Rpb249QWdlbnRGQVFDYXRlZ29yeTtTdWJhY3Rpb249RGVsZXRlO0NhdGVnb3J5SUQ9JExRRGF0YXsiQ2F0ZWdvcnlJRCJ9JywKICAgICAgICBDb25maXJtZWRBY3Rpb25RdWVyeVN0cmluZzogJ0FjdGlvbj1BZ2VudEZBUUNhdGVnb3J5O1N1YmFjdGlvbj1EZWxldGVBY3Rpb247Q2F0ZWdvcnlJRD0kTFFEYXRheyJDYXRlZ29yeUlEIn0nLAogICAgICAgIERpYWxvZ1RpdGxlOiAgICAgICAgICAgICAgICAnJEpTVGV4dHsiRGVsZXRlIENhdGVnb3J5In0nLAogICAgICAgIFRyYW5zbGF0ZWRUZXh0OiAgICAgICAgICAgICB7CiAgICAgICAgICAgIFllczogJyRKU1RleHR7IlllcyJ9JywKICAgICAgICAgICAgTm86ICAnJEpTVGV4dHsiTm8ifScsCiAgICAgICAgICAgIE9rOiAgJyRKU1RleHR7Ik9rIn0nCiAgICAgICAgfQogICAgfSk7Ci8vXV0+PC9zY3JpcHQ+CjwhLS1kdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUtLT4KCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3UmVzdWx0Um93IC0tPgogICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdSZXN1bHQgLS0+Cgo8IS0tIGR0bDpibG9jazpPdmVydmlld1VwZGF0ZSAtLT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KPCEtLSBkdGw6YmxvY2s6SGVhZGVyQWRkIC0tPgogICAgICAgICAgICAgICAgPGgyPiRUZXh0eyJBZGQgQ2F0ZWdvcnkifTwvaDI+CjwhLS0gZHRsOmJsb2NrOkhlYWRlckFkZCAtLT4KPCEtLSBkdGw6YmxvY2s6SGVhZGVyRWRpdCAtLT4KICAgICAgICAgICAgICAgIDxoMj4kVGV4dHsiRWRpdCBDYXRlZ29yeSJ9PC9oMj4KPCEtLSBkdGw6YmxvY2s6SGVhZGVyRWRpdCAtLT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSIkRW52eyJDR0lIYW5kbGUifSIgbWV0aG9kPSJwb3N0IiBjbGFzcz0iVmFsaWRhdGUiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IiRFbnZ7IkFjdGlvbiJ9Ii8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iJExRRGF0YXsiQWN0aW9uIn1BY3Rpb24iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDYXRlZ29yeUlEIiB2YWx1ZT0iJFFEYXRheyJDYXRlZ29yeUlEIn0iLz4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJOYW1lIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiAkVGV4dHsiTmFtZSJ9OjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJOYW1lIiBpZD0iTmFtZSIgdmFsdWU9IiRRRGF0YXsiTmFtZSJ9IiBjbGFzcz0iVzUwcGMgVmFsaWRhdGVfUmVxdWlyZWQgJFFEYXRheyJOYW1lU2VydmVyRXJyb3IifSIgbWF4bGVuZ3RoPSI1MCIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTmFtZUVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+JFRleHR7IlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIn08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5hbWVTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPiRUZXh0eyIkRGF0YXsiTmFtZVNlcnZlckVycm9yTWVzc2FnZSJ9In08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlBhcmVudElEIj4kVGV4dHsiU3ViY2F0ZWdvcnkgb2YifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRGF0YXsiQ2F0ZWdvcnlPcHRpb24ifQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iQ29tbWVudCI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gJFRleHR7IkNvbW1lbnQifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iQ29tbWVudCIgaWQ9IkNvbW1lbnQiIHZhbHVlPSIkUURhdGF7IkNvbW1lbnQifSIgY2xhc3M9Ilc1MHBjIFZhbGlkYXRlX1JlcXVpcmVkICRRRGF0YXsiQ29tbWVudFNlcnZlckVycm9yIn0iIG1heGxlbmd0aD0iODAiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkNvbW1lbnRFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPiRUZXh0eyJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiJ9PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJDb21tZW50U2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4kVGV4dHsiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4ifTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+JFRleHR7IldpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4ifTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iVmFsaWRJRCI+JFRleHR7IlZhbGlkaXR5In06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJERhdGF7IlZhbGlkT3B0aW9uIn0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IlBlcm1pc3Npb25Hcm91cHMiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+ICRUZXh0eyJQZXJtaXNzaW9uIn06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJERhdGF7Ikdyb3VwT3B0aW9uIn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlBlcm1pc3Npb25Hcm91cHNFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPiRUZXh0eyJQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwLiJ9PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJQZXJtaXNzaW9uR3JvdXBzU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4kVGV4dHsiUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4ifTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+JFRleHR7IkFnZW50IGdyb3VwcyB0aGF0IGNhbiBhY2Nlc3MgYXJ0aWNsZXMgaW4gdGhpcyBjYXRlZ29yeS4ifTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQgU3BhY2luZ1RvcCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJQcmltYXJ5IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSIkVGV4dHsiU3VibWl0In0iPiRUZXh0eyJTdWJtaXQifTwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRleHR7Im9yIn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JEVudnsiQWN0aW9uIn0iPiRUZXh0eyJDYW5jZWwifTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgPC9kaXY+CjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3VXBkYXRlIC0tPgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CjwvZGl2Pgo8IS0tIGR0bDpibG9jazpPdmVydmlldyAtLT4KCgo8IS0tIGR0bDpibG9jazpEZWxldGUgLS0+Cgo8IS0tIGR0bDpibG9jazpOb0FmZmVjdGVkIC0tPgo8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBXMzAwcHgiPgogICAgPGxhYmVsPiRUZXh0eyJDYXRlZ29yeSJ9OjwvbGFiZWw+CiAgICA8cCBjbGFzcz0iVmFsdWUiPgogICAgICAgICRRRGF0YXsiTmFtZSJ9CiAgICA8L3A+CiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CjwvZmllbGRzZXQ+CjxwIGNsYXNzPSJTcGFjaW5nVG9wIENlbnRlciI+CiAgICAkVGV4dHsiRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5PyJ9CjwvcD4KPCEtLSBkdGw6YmxvY2s6Tm9BZmZlY3RlZCAtLT4KCjwhLS0gZHRsOmJsb2NrOkFmZmVjdGVkIC0tPgo8cD4KICAgICRUZXh0eyJZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBjYXRlZ29yeS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUgYW5kL29yIGlzIHBhcmVudCBvZiBhdCBsZWFzdCBvbmUgb3RoZXIgY2F0ZWdvcnkifQo8L3A+CjwhLS0gZHRsOmJsb2NrOkFmZmVjdGVkIC0tPgoKPCEtLSBkdGw6YmxvY2s6QWZmZWN0ZWRJdGVtcyAtLT4KPHAgY2xhc3M9IlNwYWNpbmdUb3AgU3BhY2luZ0JvdHRvbSI+CiAgICAkVGV4dHsiVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocykifToKPC9wPgo8dWw+CjwhLS0gZHRsOmJsb2NrOkFmZmVjdGVkSXRlbXNSb3cgLS0+CiAgICA8bGkgY2xhc3M9IkluZGVudCBTcGFjaW5nQm90dG9tU21hbGwiPgogICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn0kRGF0YXsiTGluayJ9O0FjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPSRMUURhdGF7Ikl0ZW1JRCJ9Ij4KICAgICAgICAgICAgJENvbmZpZ3siRkFROjpGQVFIb29rIn06JFFEYXRheyJOdW1iZXIifTxzcGFuPiZuYnNwOyZtZGFzaDs8L3NwYW4+ICRRRGF0YXsiVGl0bGUiLCAiNjAifQogICAgICAgIDwvYT4KICAgIDwvbGk+CjwhLS0gZHRsOmJsb2NrOkFmZmVjdGVkSXRlbXNSb3cgLS0+CjwvdWw+CjwhLS0gZHRsOmJsb2NrOkFmZmVjdGVkSXRlbXMgLS0+Cgo8IS0tIGR0bDpibG9jazpBZmZlY3RlZFN1YkNhdGVnb3JpZXMgLS0+CjxwIGNsYXNzPSJTcGFjaW5nVG9wIFNwYWNpbmdCb3R0b20iPgogICAgJFRleHR7IlRoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyJ9Ogo8L3A+Cjx1bD4KPCEtLSBkdGw6YmxvY2s6QWZmZWN0ZWRTdWJDYXRlZ29yaWVzUm93IC0tPgogICAgPGxpIGNsYXNzPSJJbmRlbnQgU3BhY2luZ0JvdHRvbVNtYWxsIj4KICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9JERhdGF7IkxpbmsifTtBY3Rpb249QWdlbnRGQVFFeHBsb3JlcjtDYXRlZ29yeUlEPSRMUURhdGF7IkNhdGVnb3J5SUQifSI+CiAgICAgICAgICAgICRRRGF0YXsiTG9uZ05hbWUifQogICAgICAgIDwvYT4KICAgIDwvbGk+CjwhLS0gZHRsOmJsb2NrOkFmZmVjdGVkU3ViQ2F0ZWdvcmllc1JvdyAtLT4KPC91bD4KPCEtLSBkdGw6YmxvY2s6QWZmZWN0ZWRTdWJDYXRlZ29yaWVzIC0tPgoKPCEtLSBkdGw6YmxvY2s6RGVsZXRlIC0tPgo=
IyAtLQojIEFnZW50RkFRRGVsZXRlLmR0bCAtIHByb3ZpZGVzIEhUTUwgZm9ybSBmb3IgQWdlbnRGQVFEZWxldGUKIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxMyBPVFJTIEFHLCBodHRwOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgo8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBXMzAwcHgiPgogICAgPGxhYmVsPiRUZXh0eyJUaXRsZSJ9OjwvbGFiZWw+CiAgICA8cCBjbGFzcz0iVmFsdWUiPgogICAgICAgICRRRGF0YXsiVGl0bGUifQogICAgPC9wPgogICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgo8L2ZpZWxkc2V0Pgo8cCBjbGFzcz0iU3BhY2luZ1RvcCBDZW50ZXIiPgogICAgJFRleHR7IkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGQVEgYXJ0aWNsZT8ifQo8L3A+Cg==
IyAtLQojIEFnZW50RkFRRWRpdC5kdGwgLSBwcm92aWRlcyBIVE1MIGZvcm0gZm9yIEFnZW50RkFRRWRpdAojIENvcHlyaWdodCAoQykgMjAwMS0yMDEzIE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCjxmb3JtIGFjdGlvbj0iJEVudnsiQ0dJSGFuZGxlIn0iIG1ldGhvZD0icG9zdCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgY2xhc3M9IlZhbGlkYXRlIFByZXZlbnRNdWx0aXBsZVN1Ym1pdHMiPgoKPCEtLWR0bDpibG9jazpTdGFydE5vcm1hbC0tPgogICAgPGRpdiBjbGFzcz0iTWFpbkJveCBBUklBUm9sZU1haW4gRm9ybVNjcmVlbiBOb1NpZGViYXIiPgogICAgICAgIDxoMT4kVGV4dHsiRWRpdCJ9OiAkVGV4dHsiRkFRIn06ICRRRGF0YXsiTnVtYmVyIn08L2gxPgogICAgICAgIDxwIGNsYXNzPSJBc3Rlcmlza0V4cGxhbmF0aW9uIj4kVGV4dHsiQWxsIGZpZWxkcyBtYXJrZWQgd2l0aCBhbiBhc3RlcmlzayAoKikgYXJlIG1hbmRhdG9yeS4ifTwvcD4KCiAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+CjwhLS1kdGw6YmxvY2s6U3RhcnROb3JtYWwtLT4KCjwhLS1kdGw6YmxvY2s6U3RhcnRTbWFsbC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJMYXlvdXRQb3B1cCBBUklBUm9sZU1haW4iPgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgxPiRUZXh0eyJFZGl0In06ICRUZXh0eyJGQVEifTogJFFEYXRheyJOdW1iZXIifTwvaDE+CiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkFzdGVyaXNrRXhwbGFuYXRpb24iPiRUZXh0eyJBbGwgZmllbGRzIG1hcmtlZCB3aXRoIGFuIGFzdGVyaXNrICgqKSBhcmUgbWFuZGF0b3J5LiJ9PC9wPgogICAgICAgICAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iQ2FuY2VsQ2xvc2VQb3B1cCI+JFRleHR7IkNhbmNlbCAmIGNsb3NlIHdpbmRvdyJ9PC9hPgogICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CjwhLS1kdGw6YmxvY2s6U3RhcnRTbWFsbC0tPgoKPCEtLSBkdGw6YmxvY2s6RkFRRWRpdCAtLT4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSIkRW52eyJBY3Rpb24ifSIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlNhdmUiLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJGb3JtSUQiIHZhbHVlPSIkUURhdGF7IkZvcm1JRCJ9Ii8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iSXRlbUlEIiB2YWx1ZT0iJFFEYXRheyJJdGVtSUQifSIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlNjcmVlblR5cGUiIHZhbHVlPSIkUURhdGF7IlNjcmVlblR5cGUifSIvPgoKICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSAkUURhdGF7IkZpZWxkc2V0Q2xhc3MifSI+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJUaXRsZSI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+KiA8L3NwYW4+JFRleHR7IlRpdGxlIn06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IlRpdGxlIiBpZD0iVGl0bGUiIHZhbHVlPSIkUURhdGF7IlRpdGxlIn0iIGNsYXNzPSJXNTBwYyBWYWxpZGF0ZV9SZXF1aXJlZCAkUURhdGF7IlRpdGxlU2VydmVyRXJyb3IifSIgbWF4bGVuZ3RoPSIyMDAiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlRpdGxlRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD4kVGV4dHsiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4ifTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlRpdGxlU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD4kVGV4dHsiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4ifTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IktleXdvcmRzIj4kVGV4dHsiS2V5d29yZHMifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iS2V5d29yZHMiIGlkPSJLZXl3b3JkcyIgdmFsdWU9IiRRRGF0YXsiS2V5d29yZHMifSIgY2xhc3M9Ilc1MHBjIiBtYXhsZW5ndGg9IjIwMCIvPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iQ2F0ZWdvcnlJRCI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+KiA8L3NwYW4+JFRleHR7IkNhdGVnb3J5In06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJERhdGF7IkNhdGVnb3J5T3B0aW9uIn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkNhdGVnb3J5SURFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPiRUZXh0eyJBIGNhdGVnb3J5IGlzIHJlcXVpcmVkLiJ9PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJDYXRlZ29yeUlEU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4kVGV4dHsiQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4ifTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iU3RhdGVJRCI+JFRleHR7IlN0YXRlIn06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJERhdGF7IlN0YXRlT3B0aW9uIn0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlZhbGlkSUQiPiRUZXh0eyJWYWxpZGl0eSJ9OjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICREYXRheyJWYWxpZE9wdGlvbiJ9CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+Cgo8IS0tIGR0bDpibG9jazpMYW5ndWFnZSAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTGFuZ3VhZ2VJRCI+JFRleHR7Ikxhbmd1YWdlIn06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJERhdGF7Ikxhbmd1YWdlT3B0aW9uIn0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPCEtLSBkdGw6YmxvY2s6TGFuZ3VhZ2UgLS0+Cgo8IS0tIGR0bDpibG9jazpOb0xhbmd1YWdlIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJMYW5ndWFnZUlEIiB2YWx1ZT0iJFFEYXRheyJMYW5ndWFnZUlEIn0iLz4KPCEtLSBkdGw6YmxvY2s6Tm9MYW5ndWFnZSAtLT4KCjwhLS0gZHRsOmJsb2NrOkFwcHJvdmFsIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJBcHByb3ZlZCI+JFRleHR7IkFwcHJvdmFsIn06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJERhdGF7IkFwcHJvdmFsT3B0aW9uIn0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPCEtLSBkdGw6YmxvY2s6QXBwcm92YWwgLS0+Cgo8IS0tIGR0bDpibG9jazpBdHRhY2htZW50VXBsb2FkIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+JFRleHR7IkF0dGFjaG1lbnQifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CjwhLS0gZHRsOmJsb2NrOkF0dGFjaG1lbnQgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUURhdGF7IkZpbGVuYW1lIn0gKCRRRGF0YXsiRmlsZXNpemUifSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGlkPSJBdHRhY2htZW50RGVsZXRlJFFEYXRheyJGaWxlSUQifSIgbmFtZT0iQXR0YWNobWVudERlbGV0ZSRRRGF0YXsiRmlsZUlEIn0iIHZhbHVlPSIkVGV4dHsiRGVsZXRlIn0iPiRUZXh0eyJEZWxldGUifTwvYnV0dG9uPgo8IS0tZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlLS0+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwokKCcjQXR0YWNobWVudERlbGV0ZSRRRGF0YXsiRmlsZUlEIn0nKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKQ29yZS5Gb3JtLlZhbGlkYXRlLkRpc2FibGVWYWxpZGF0aW9uKCQoJyNBdHRhY2htZW50RGVsZXRlJFFEYXRheyJGaWxlSUQifScpLmNsb3Nlc3QoJ2Zvcm0nKSk7Cn0pOwovL11dPjwvc2NyaXB0Pgo8IS0tZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KPCEtLSBkdGw6YmxvY2s6QXR0YWNobWVudCAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPSJGaWxlVXBsb2FkIiBpZD0iRmlsZVVwbG9hZCIgdHlwZT0iZmlsZSIgc2l6ZT0iNDAiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IkF0dGFjaG1lbnRVcGxvYWQiIG5hbWU9IkF0dGFjaG1lbnRVcGxvYWQiIHZhbHVlPSIwIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKPCEtLWR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZS0tPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ly88IVtDREFUQVsKJCgnI0ZpbGVVcGxvYWQnKS5iaW5kKCdjaGFuZ2UnLCBmdW5jdGlvbiAoRXZlbnQpIHsKdmFyICRGb3JtID0gJCgnI0ZpbGVVcGxvYWQnKS5jbG9zZXN0KCdmb3JtJyk7CkNvcmUuRm9ybS5WYWxpZGF0ZS5EaXNhYmxlVmFsaWRhdGlvbigkRm9ybSk7CiRGb3JtLmZpbmQoJyNBdHRhY2htZW50VXBsb2FkJykudmFsKCcxJykuZW5kKCkuc3VibWl0KCk7Cn0pOwovL11dPjwvc2NyaXB0Pgo8IS0tZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlLS0+Cgo8IS0tIGR0bDpibG9jazpBdHRhY2htZW50VXBsb2FkIC0tPgoKPCEtLSBkdGw6YmxvY2s6UmljaFRleHQgLS0+CiRJbmNsdWRleyJSaWNoVGV4dEVkaXRvciJ9CjwhLS0gZHRsOmJsb2NrOlJpY2hUZXh0IC0tPgoKPCEtLSBkdGw6YmxvY2s6RkFRQ29udGVudCAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iJFFEYXRheyJGaWVsZCJ9Ij4kVGV4dHsiJERhdGF7IkNhcHRpb24ifSJ9Ojxici8+PHNwYW4gY2xhc3M9IkZBUVN0YXRlTmFtZSI+KCRUZXh0eyIkRGF0YXsiU3RhdGVOYW1lIn0ifSk8L3NwYW4+PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iUmljaFRleHRGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgaWQ9IiRRRGF0YXsiRmllbGQifSIgY2xhc3M9IlJpY2hUZXh0IiBuYW1lPSIkUURhdGF7IkZpZWxkIn0iIHJvd3M9IjE1IiBjb2xzPSI3MCI+JFFEYXRheyJDb250ZW50In08L3RleHRhcmVhPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgo8IS0tIGR0bDpibG9jazpGQVFDb250ZW50IC0tPgoKPCEtLSBkdGw6YmxvY2s6RW5kTm9ybWFsIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCBTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IlByaW1hcnkgQ2FsbEZvckFjdGlvbiIgaWQ9IkZBUVN1Ym1pdCIgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iJFRleHR7IlVwZGF0ZSJ9Ij48c3Bhbj48aSBjbGFzcz0iaWNvbi1jaGVjayI+PC9pPiAkVGV4dHsiVXBkYXRlIn08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpFbmROb3JtYWwgLS0+CgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CjwhLS0gZHRsOmJsb2NrOkZBUUVkaXQgLS0+CiAgICAgICAgICAgICAgICA8L2Rpdj4KCjwhLS0gZHRsOmJsb2NrOkVuZFNtYWxsIC0tPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRm9vdGVyIj4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJQcmltYXJ5IENhbGxGb3JBY3Rpb24iIGlkPSJGQVFTdWJtaXQiIHR5cGU9ImJ1dHRvbiIgdmFsdWU9IiRUZXh0eyJVcGRhdGUifSI+PHNwYW4+PGkgY2xhc3M9Imljb24tY2hlY2siPjwvaT4gJFRleHR7IlVwZGF0ZSJ9PC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgPC9kaXY+CjwhLS0gZHRsOmJsb2NrOkVuZFNtYWxsIC0tPgoKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9mb3JtPgo8IS0tZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlLS0+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwokKCcjRkFRU3VibWl0JykuYmluZCgnY2xpY2snLCBmdW5jdGlvbiAoRXZlbnQpIHsKICAgIC8vIHByZXZlbnQgdG9vIGZhc3Qgc3VibWl0aW9ucyB0aGF0IGNvdWxkIGxlYWQgaW50byBubyBjaGFuZ2VzIHNlbnQgdG8gc2VydmVyLCBkdWUgdG8gUlRFIHRvCiAgICAvLyB0ZXh0YXJlYSBkYXRhIHRyYW5zZmVyCiAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgJCgnI0ZBUVN1Ym1pdCcpLmNsb3Nlc3QoJ2Zvcm0nKS5zdWJtaXQoKTsKICAgIH0sIDI1MCk7Cn0pOwovL11dPjwvc2NyaXB0Pgo8IS0tZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlLS0+Cg==
IyAtLQojIEFnZW50RkFRRXhwbG9yZXIuZHRsIC0gcHJvdmlkZXMgSFRNTCBmb3IgQWdlbnRGQVFFeHBsb3Jlci5wbQojIENvcHlyaWdodCAoQykgMjAwMS0yMDEzIE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCjxkaXYgY2xhc3M9Ik1haW5Cb3ggQVJJQVJvbGVNYWluIEZBUSI+CiAgICA8ZGl2IGNsYXNzPSJDbGVhckxlZnQiPjwvZGl2PgogICAgPGgxPiRUZXh0eyJGQVEgRXhwbG9yZXIifTwvaDE+CgogICAgPGRpdiBjbGFzcz0iRkFRUGF0aENhdGVnb3J5Ij4KICAgICAgICA8aDM+CjwhLS0gZHRsOmJsb2NrOkZBUVBhdGhDYXRlZ29yeUVsZW1lbnQgLS0+CiAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249QWdlbnRGQVFFeHBsb3JlcjtDYXRlZ29yeUlEPSRMUURhdGF7IkNhdGVnb3J5SUQifTtOYXY9JExRRGF0YXsiTmF2In0iPgogICAgICAgICAgICAgICAgJFFEYXRheyJOYW1lIn0KICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8c3Bhbj4kQ29uZmlneyJGQVE6OkV4cGxvcmVyOjpQYXRoOjpTZXBhcmF0b3IifTwvc3Bhbj4KPCEtLSBkdGw6YmxvY2s6RkFRUGF0aENhdGVnb3J5RWxlbWVudCAtLT4KICAgICAgICA8L2gzPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgIDxkaXYgY2xhc3M9IkxheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyTGFzdCI+CiAgICAgICAgPGRpdiBjbGFzcz0iU2lkZWJhckNvbHVtbiAkUURhdGF7IlNpZGViYXJDbGFzcyJ9Ij4KCjwhLS0gZHRsOmJsb2NrOlF1aWNrU2VhcmNoIC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8aDM+JFRleHR7IlNlYXJjaCJ9PC9oMz4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQWN0aW9ubGlzdCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGNsYXNzPSJTZWFyY2hCb3giIGFjdGlvbj0iJEVudnsiQ0dJSGFuZGxlIn0iIG1ldGhvZD0icG9zdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iJFFEYXRheyJBY3Rpb24ifSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlNlYXJjaCIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ik5hdiIgdmFsdWU9IiRRRGF0YXsiTmF2In0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iRnVsbHRleHQiIHZhbHVlPSIkUURhdGF7IlNlYXJjaCJ9IiBpZD0iU2VhcmNoIiB0aXRsZT0iJFRleHR7IlNlYXJjaCJ9Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIHZhbHVlPSIkVGV4dHsiU2VhcmNoIn0iPjxzcGFuPjxpIGNsYXNzPSJpY29uLWJvbHQiPjwvaT4gJFRleHR7IlF1aWNrIFNlYXJjaCJ9PHNwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRleHR7IldpbGRjYXJkcyBhcmUgYWxsb3dlZC4ifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEZBUVNlYXJjaEJ1dHRvbiBTcGFjaW5nVG9wIiBpZD0iJExRRGF0YXsiQWN0aW9uIn0iIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JExRRGF0YXsiQWN0aW9uIn07TmF2PSRMUURhdGF7Ik5hdiJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0iaWNvbi1zZWFyY2giPjwvaT4gJFRleHR7IkFkdmFuY2VkIFNlYXJjaCJ9PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CjwhLS1kdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUtLT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiAgICAkKCcjQWdlbnRGQVFTZWFyY2gnKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgIENvcmUuQWdlbnQuU2VhcmNoLk9wZW5TZWFyY2hEaWFsb2coJ0FnZW50RkFRU2VhcmNoJyk7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSk7Ci8vXV0+PC9zY3JpcHQ+CjwhLS1kdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUtLT4KCjwhLS0gZHRsOmJsb2NrOlF1aWNrU2VhcmNoIC0tPgoKPCEtLSBkdGw6YmxvY2s6SW5mb0JveEZBUU1pbmlMaXN0IC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8aDI+JFRleHR7IiREYXRheyJIZWFkZXIifSJ9PC9oMj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJUYWJsZWxpa2UgRkFRTWluaUxpc3QiPgo8IS0tIGR0bDpibG9jazpJbmZvQm94RkFRTWluaUxpc3RJdGVtUm93IC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+CjwhLS0gZHRsOmJsb2NrOkluZm9Cb3hGQVFNaW5pTGlzdEl0ZW1Sb3dQb3NpdGlvbk51bWJlciAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRRRGF0YXsiTnVtYmVyIn0uCjwhLS0gZHRsOmJsb2NrOkluZm9Cb3hGQVFNaW5pTGlzdEl0ZW1Sb3dQb3NpdGlvbk51bWJlciAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249QWdlbnRGQVFab29tO0l0ZW1JRD0kTFFEYXRheyJJdGVtSUQifTtOYXY9JExRRGF0YXsiTmF2In0iIHRpdGxlPSIkUURhdGF7IlRpdGxlIn0gKCRRRGF0YXsiQ2F0ZWdvcnlOYW1lIn0pIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUURhdGF7IlRpdGxlIiwiNTAifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFFEYXRheyJDYXRlZ29yeVNob3J0TmFtZSIsIjE1In0gLSAkUURhdGF7Ikxhbmd1YWdlIn0gLSAkVGV4dHsiJERhdGF7IlN0YXRlIn0ifSAtICRUaW1lU2hvcnR7IiREYXRheyJDcmVhdGVkIn0ifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgo8IS0tIGR0bDpibG9jazpJbmZvQm94RkFRTWluaUxpc3RJdGVtUm93IC0tPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CjwhLS0gZHRsOmJsb2NrOkluZm9Cb3hGQVFNaW5pTGlzdCAtLT4KCiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+Cgo8IS0tIGR0bDpibG9jazpTdWJjYXRlZ29yaWVzIC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgo8IS0tIGR0bDpibG9jazpPdmVydmlld1Jlc3VsdCAtLT4KCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxoMj4kVGV4dHsiU3ViY2F0ZWdvcmllcyJ9PC9oMj4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iRGF0YVRhYmxlIiBzdW1tYXJ5PSJGQVEgY2F0ZWdvcmllcyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+JFRleHR7Ik5hbWUifTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPiRUZXh0eyJDb21tZW50In08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4kVGV4dHsiU3ViY2F0ZWdvcmllcyJ9PC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+JFRleHR7IkZBUSBBcnRpY2xlcyJ9PC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KPCEtLSBkdGw6YmxvY2s6Tm9EYXRhRm91bmRNc2cgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGV4dHsiTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4ifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgo8IS0tIGR0bDpibG9jazpOb0RhdGFGb3VuZE1zZyAtLT4KPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdSZXN1bHRSb3cgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9Ik1hc3RlckFjdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxhIGNsYXNzPSJBc0Jsb2NrIE1hc3RlckFjdGlvbkxpbmsiIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JEVudnsiQWN0aW9uIn07Q2F0ZWdvcnlJRD0kTFFEYXRheyJDYXRlZ29yeUlEIn07TmF2PSRMUURhdGF7Ik5hdiJ9Ij4kUURhdGF7Ik5hbWUifTwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kUURhdGF7IkNvbW1lbnQifTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRRRGF0YXsiU3ViQ2F0ZWdvcnlDb3VudCJ9PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JFFEYXRheyJBcnRpY2xlQ291bnQifTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgo8IS0tIGR0bDpibG9jazpPdmVydmlld1Jlc3VsdFJvdyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgPC9kaXY+CjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3UmVzdWx0IC0tPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgo8IS0tIGR0bDpibG9jazpTdWJjYXRlZ29yaWVzIC0tPgoKPCEtLSBkdGw6YmxvY2s6RkFRSXRlbUxpc3QgLS0+CiREYXRheyJGQVFJdGVtTGlzdEhUTUwifQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CjwhLS0gZHRsOmJsb2NrOkZBUUl0ZW1MaXN0IC0tPgoKICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICA8L2Rpdj4KPC9kaXY+Cgo8IS0tIGR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZSAtLT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiAgICAkKCcuTWFzdGVyQWN0aW9uJykuYmluZCgnY2xpY2snLCBmdW5jdGlvbiAoRXZlbnQpIHsKICAgICAgICB2YXIgJE1hc3RlckFjdGlvbkxpbmsgPSAkKHRoaXMpLmZpbmQoJy5NYXN0ZXJBY3Rpb25MaW5rJyk7CiAgICAgICAgLy8gb25seSBhY3QgaWYgdGhlIGxpbmsgd2FzIG5vdCBjbGlja2VkIGRpcmVjdGx5CiAgICAgICAgaWYgKEV2ZW50LnRhcmdldCAhPT0gJE1hc3RlckFjdGlvbkxpbmsuZ2V0KDApKSB7CiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICRNYXN0ZXJBY3Rpb25MaW5rLmF0dHIoJ2hyZWYnKTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgIH0pOwovL11dPjwvc2NyaXB0Pgo8IS0tIGR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZSAtLT4K
IyAtLQojIEFnZW50RkFRSGlzdG9yeS5kdGwgLSBwcm92aWRlcyBIVE1MIGZvcm0gZm9yIEFnZW50RkFRSGlzdG9yeQojIENvcHlyaWdodCAoQykgMjAwMS0yMDEzIE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCjxkaXYgY2xhc3M9IkxheW91dFBvcHVwIEFSSUFSb2xlTWFpbiI+CgogICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICA8aDE+CiAgICAgICAgICAgICRUZXh0eyJIaXN0b3J5IG9mIn0gJENvbmZpZ3siRkFROjpGQVFIb29rIn06ICRRRGF0YXsiTnVtYmVyIn0gLSAkUURhdGF7IlRpdGxlIiwiNjAifQogICAgICAgIDwvaDE+CiAgICAgICAgPHA+CiAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJDYW5jZWxDbG9zZVBvcHVwIj4kVGV4dHsiQ2FuY2VsICYgY2xvc2Ugd2luZG93In08L2E+CiAgICAgICAgPC9wPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj4KICAgICAgICAgICAgICAgICAgICAkVGV4dHsiSGlzdG9yeSBDb250ZW50In0KICAgICAgICAgICAgICAgIDwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iRGF0YVRhYmxlIiBzdW1tYXJ5PSJGQVEgaGlzdG9yeSBkYXRhIHRhYmxlIj4KICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4kVGV4dHsiQWN0aW9uIn08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPiRUZXh0eyJVc2VyIn08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPiRUZXh0eyJDcmVhdGV0aW1lIn08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgPHRib2R5PgoKPCEtLSBkdGw6YmxvY2s6Um93IC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRleHR7IiREYXRheyJOYW1lIn0ifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUURhdGF7IkNyZWF0ZWRCeSJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUaW1lTG9uZ3siJERhdGF7IkNyZWF0ZWQifSJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgo8IS0tIGR0bDpibG9jazpSb3cgLS0+CgogICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iRm9vdGVyIj4KICAgIDwvZGl2Pgo8L2Rpdj4K
IyAtLQojIEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwuZHRsIC0gaHRtbCBmb3IgY2hhbmdlIG92ZXJ2aWV3IHRhYmxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKPCEtLSBkdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUgLS0+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwogICAgQ29yZS5VSS5BY3Rpb25Sb3cuSW5pdCgpOwovL11dPjwvc2NyaXB0Pgo8IS0tIGR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZSAtLT4KCjxkaXYgaWQ9Ik92ZXJ2aWV3Qm9keSIgY2xhc3M9Ik92ZXJ2aWV3IFRpY2tldExpc3QiPgo8IS0tIGR0bDpibG9jazpOb0ZBUUZvdW5kIC0tPgogICAgPGRpdiBpZD0iRW1wdHlNZXNzYWdlU21hbGwiPgogICAgICAgICRUZXh0eyJObyBGQVEgSm91cm5hbCBkYXRhIGZvdW5kLiJ9CiAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6Tm9GQVFGb3VuZCAtLT4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkRm9ybSAtLT4KICAgIDx0YWJsZSBjbGFzcz0iVGFibGVTbWFsbCBOb0NlbGxzcGFjaW5nIiBzdW1tYXJ5PSJBIGdlbmVyaWMgRkFRIHRhYmxlIj4KICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgIDx0cj4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkTnVtYmVySGVhZGVyIC0tPgogICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJGQVFOdW1iZXIgT3ZlcnZpZXdIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxzcGFuPiRDb25maWd7IkZBUTo6RkFRSG9vayJ9PC9zcGFuPgogICAgICAgICAgICAgICAgPC90aD4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkTnVtYmVySGVhZGVyIC0tPgo8IS0tIGR0bDpibG9jazpSZWNvcmRUaXRsZUhlYWRlciAtLT4KICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iVGl0bGUgT3ZlcnZpZXdIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxzcGFuPiRUZXh0eyJUaXRsZSJ9PC9zcGFuPgogICAgICAgICAgICAgICAgPC90aD4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkVGl0bGVIZWFkZXIgLS0+CjwhLS0gZHRsOmJsb2NrOlJlY29yZENhdGVnb3J5SGVhZGVyIC0tPgogICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJDYXRlZ29yeSBPdmVydmlld0hlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+JFRleHR7IkNhdGVnb3J5In08L3NwYW4+CiAgICAgICAgICAgICAgICA8L3RoPgo8IS0tIGR0bDpibG9jazpSZWNvcmRDYXRlZ29yeUhlYWRlciAtLT4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkTmFtZUhlYWRlciAtLT4KICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQWN0aW9uIE92ZXJ2aWV3SGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8c3Bhbj4kVGV4dHsiQWN0aW9uIn08L3NwYW4+CiAgICAgICAgICAgICAgICA8L3RoPgo8IS0tIGR0bDpibG9jazpSZWNvcmROYW1lSGVhZGVyIC0tPgo8IS0tIGR0bDpibG9jazpSZWNvcmRUaW1lSGVhZGVyIC0tPgogICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJUaW1lIE92ZXJ2aWV3SGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8c3Bhbj4kVGV4dHsiVGltZSJ9PC9zcGFuPgogICAgICAgICAgICAgICAgPC90aD4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkVGltZUhlYWRlciAtLT4KICAgICAgICAgICAgPC90cj4KICAgICAgICA8L3RoZWFkPgogICAgICAgIDx0Ym9keT4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkIC0tPgogICAgICAgICAgICA8dHIgaWQ9Ikl0ZW1JRF8kUURhdGF7Ikl0ZW1JRCJ9XyRRRGF0YXsiQ291bnRlciJ9IiBjbGFzcz0iTWFzdGVyQWN0aW9uIj4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkTnVtYmVyIC0tPgogICAgICAgICAgICAgICAgPHRkPgo8IS0tIGR0bDpibG9jazpSZWNvcmROdW1iZXJMaW5rU3RhcnQgLS0+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPSRMUURhdGF7Ikl0ZW1JRCJ9IiB0aXRsZT0iJExRRGF0YXsiTnVtYmVyIn0iIGNsYXNzPSJNYXN0ZXJBY3Rpb25MaW5rIj4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkTnVtYmVyTGlua1N0YXJ0IC0tPgogICAgICAgICAgICAgICAgICAgICAgICAkUURhdGF7Ik51bWJlciJ9CjwhLS0gZHRsOmJsb2NrOlJlY29yZE51bWJlckxpbmtFbmQgLS0+CiAgICAgICAgICAgICAgICAgICAgPC9hPgo8IS0tIGR0bDpibG9jazpSZWNvcmROdW1iZXJMaW5rRW5kIC0tPgogICAgICAgICAgICAgICAgPC90ZD4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkTnVtYmVyIC0tPgo8IS0tIGR0bDpibG9jazpSZWNvcmRUaXRsZSAtLT4KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSIkUURhdGF7IlN1YmplY3QifSI+JFFEYXRheyJTdWJqZWN0IiwiNDAifTwvZGl2PgogICAgICAgICAgICAgICAgPC90ZD4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkVGl0bGUgLS0+CjwhLS0gZHRsOmJsb2NrOlJlY29yZENhdGVnb3J5IC0tPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IiRUZXh0eyIkRGF0YXsiQ2F0ZWdvcnkifSJ9Ij4kVGV4dHsiJERhdGF7IkNhdGVnb3J5In0ifTwvZGl2PgogICAgICAgICAgICAgICAgPC90ZD4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkQ2F0ZWdvcnkgLS0+CjwhLS0gZHRsOmJsb2NrOlJlY29yZE5hbWUgLS0+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iJFRleHR7IiREYXRheyJBY3Rpb24ifSJ9Ij4kVGV4dHsiJERhdGF7IkFjdGlvbiJ9In08L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGQ+CjwhLS0gZHRsOmJsb2NrOlJlY29yZE5hbWUgLS0+CjwhLS0gZHRsOmJsb2NrOlJlY29yZFRpbWUgLS0+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iJFRpbWVMb25neyIkUURhdGF7IkNyZWF0ZWQifSJ9Ij4kVGltZUxvbmd7IiRRRGF0YXsiQ3JlYXRlZCJ9In08L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGQ+CjwhLS0gZHRsOmJsb2NrOlJlY29yZFRpbWUgLS0+CiAgICAgICAgICAgIDwvdHI+CjwhLS0gZHRsOmJsb2NrOlJlY29yZCAtLT4KICAgICAgICA8L3Rib2R5PgogICAgPC90YWJsZT4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkRm9ybSAtLT4KPC9kaXY+CjwhLS0gZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlIC0tPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ly88IVtDREFUQVsKICAgICQoJy5NYXN0ZXJBY3Rpb24nKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgIHZhciAkTWFzdGVyQWN0aW9uTGluayA9ICQodGhpcykuZmluZCgnLk1hc3RlckFjdGlvbkxpbmsnKTsKICAgICAgICAvLyBvbmx5IGFjdCBpZiB0aGUgbGluayB3YXMgbm90IGNsaWNrZWQgZGlyZWN0bHkKICAgICAgICBpZiAoRXZlbnQudGFyZ2V0ICE9PSAkTWFzdGVyQWN0aW9uTGluay5nZXQoMCkpIHsKICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gJE1hc3RlckFjdGlvbkxpbmsuYXR0cignaHJlZicpOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgfSk7Ci8vXV0+PC9zY3JpcHQ+CjwhLS0gZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlIC0tPgo=
IyAtLQojIEFnZW50RkFRTGFuZ3VhZ2UuZHRsIC0gcHJvdmlkZXMgSFRNTCBmcm9tIGZvciBBZ2VudEZBUUxhYWd1YWdlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXcgLS0+CjxkaXYgY2xhc3M9Ik1haW5Cb3ggQVJJQVJvbGVNYWluIExheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyRmlyc3QiPgoKICAgIDxoMT4kVGV4dHsiRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQifTwvaDE+CgogICAgPGRpdiBjbGFzcz0iU2lkZWJhckNvbHVtbiI+Cgo8IS0tIGR0bDpibG9jazpEaXNhYmxlZCAtLT4KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPiRUZXh0eyJOb3RpY2UifTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50IEFjdGlvbkxpc3QiPgogICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSIkRW52eyJDR0lIYW5kbGUifSIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJBZG1pblN5c0NvbmZpZyIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IkVkaXQiLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTeXNDb25maWdHcm91cCIgdmFsdWU9IkZBUSIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN5c0NvbmZpZ1N1Ykdyb3VwIiB2YWx1ZT0iQ29yZSIvPgogICAgICAgICAgICAgICAgICAgIDxoMz4kVGV4dHsiVGhpcyBmZWF0dXJlIGlzIGRpc2FibGVkISJ9PC9oMz4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUZXh0eyJVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWdlcy4ifQogICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIFNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iJFRleHR7IkVuYWJsZSBpdCBoZXJlISJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4kVGV4dHsiRW5hYmxlIGl0IGhlcmUhIn08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6RGlzYWJsZWQgLS0+Cgo8IS0tIGR0bDpibG9jazpBY3Rpb25MaXN0IC0tPgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPiRUZXh0eyJBY3Rpb25zIn08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IkFjdGlvbkxpc3QiPgo8IS0tIGR0bDpibG9jazpBY3Rpb25PdmVydmlldyAtLT4KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JEVudnsiQWN0aW9uIn0iIGNsYXNzPSJDYWxsRm9yQWN0aW9uIj48c3Bhbj4kVGV4dHsiR28gdG8gb3ZlcnZpZXcifTwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KPCEtLSBkdGw6YmxvY2s6QWN0aW9uT3ZlcnZpZXcgLS0+Cgo8IS0tIGR0bDpibG9jazpBY3Rpb25BZGQgLS0+CiAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7IkFjdGlvbiJ9O1N1YmFjdGlvbj1BZGQiIGNsYXNzPSJDYWxsRm9yQWN0aW9uIFBsdXMiPjxzcGFuPiRUZXh0eyJBZGQgbGFuZ3VhZ2UifTwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KPCEtLSBkdGw6YmxvY2s6QWN0aW9uQWRkIC0tPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CjwhLS0gZHRsOmJsb2NrOkFjdGlvbkxpc3QgLS0+CiAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdSZXN1bHQgLS0+CiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPiRUZXh0eyJMaXN0In08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CgogICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJEYXRhVGFibGUgVmFyaWFibGVXaWR0aCIgc3VtbWFyeT0iRkFRIGxhbmd1YWdlcyI+CiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+JFRleHR7Ik5hbWUifTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+JFRleHR7IkRlbGV0ZSJ9PC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KPCEtLSBkdGw6YmxvY2s6Tm9EYXRhRm91bmRNc2cgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGV4dHsiTm8gZGF0YSBmb3VuZC4ifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6Tm9EYXRhRm91bmRNc2cgLS0+CjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3UmVzdWx0Um93IC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGEgY2xhc3M9IkFzQmxvY2siIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JEVudnsiQWN0aW9uIn07U3ViYWN0aW9uPUNoYW5nZTtMYW5ndWFnZUlEPSRMUURhdGF7Ikxhbmd1YWdlSUQifSI+JFFEYXRheyJOYW1lIn08L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2VudGVyIExhc3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGlkPSJEZWxldGVMYW5ndWFnZUlEJFFEYXRheyJMYW5ndWFnZUlEIn0iIGNsYXNzPSJUcmFzaENhbiIgaHJlZj0iIyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUZXh0eyJEZWxldGUifTogJFFEYXRheyJOYW1lIn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgo8IS0tZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlLS0+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwovKmdsb2JhbCBGQVE6IHRydWUgKi8KICAgIEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cuQmluZENvbmZpcm1hdGlvbkRpYWxvZyh7CiAgICAgICAgRWxlbWVudElEOiAgICAgICAgICAgICAgICAgICdEZWxldGVMYW5ndWFnZUlEJFFEYXRheyJMYW5ndWFnZUlEIn0nLAogICAgICAgIEVsZW1lbnRTZWxlY3RvcjogICAgICAgICAgICAnI0RlbGV0ZUxhbmd1YWdlSUQkUURhdGF7Ikxhbmd1YWdlSUQifScsCiAgICAgICAgRGlhbG9nQ29udGVudFF1ZXJ5U3RyaW5nOiAgICdBY3Rpb249QWdlbnRGQVFMYW5ndWFnZTtTdWJhY3Rpb249RGVsZXRlO0xhbmd1YWdlSUQ9JExRRGF0YXsiTGFuZ3VhZ2VJRCJ9JywKICAgICAgICBDb25maXJtZWRBY3Rpb25RdWVyeVN0cmluZzogJ0FjdGlvbj1BZ2VudEZBUUxhbmd1YWdlO1N1YmFjdGlvbj1EZWxldGVBY3Rpb247TGFuZ3VhZ2VJRD0kTFFEYXRheyJMYW5ndWFnZUlEIn0nLAogICAgICAgIERpYWxvZ1RpdGxlOiAgICAgICAgICAgICAgICAnJEpTVGV4dHsiRGVsZXRlIExhbmd1YWdlIn0gJFFEYXRheyJOYW1lIn0nLAogICAgICAgIFRyYW5zbGF0ZWRUZXh0OiAgICAgICAgICAgICB7CiAgICAgICAgICAgIFllczogJyRKU1RleHR7IlllcyJ9JywKICAgICAgICAgICAgTm86ICAnJEpTVGV4dHsiTm8ifScsCiAgICAgICAgICAgIE9rOiAgJyRKU1RleHR7Ik9rIn0nCiAgICAgICAgfQogICAgfSk7Ci8vXV0+PC9zY3JpcHQ+CjwhLS1kdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdSZXN1bHRSb3cgLS0+CiAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpPdmVydmlld1Jlc3VsdCAtLT4KCjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3VXBkYXRlIC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KPCEtLSBkdGw6YmxvY2s6SGVhZGVyQWRkIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8aDI+JFRleHR7IkFkZCBMYW5ndWFnZSJ9PC9oMj4KPCEtLSBkdGw6YmxvY2s6SGVhZGVyQWRkIC0tPgo8IS0tIGR0bDpibG9jazpIZWFkZXJFZGl0IC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8aDI+JFRleHR7IkVkaXQgTGFuZ3VhZ2UifTwvaDI+CjwhLS0gZHRsOmJsb2NrOkhlYWRlckVkaXQgLS0+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iJEVudnsiQ0dJSGFuZGxlIn0iIG1ldGhvZD0icG9zdCIgY2xhc3M9IlZhbGlkYXRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IiRFbnZ7IkFjdGlvbiJ9Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSIkTFFEYXRheyJBY3Rpb24ifUFjdGlvbiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iTGFuZ3VhZ2VJRCIgdmFsdWU9IiRRRGF0YXsiTGFuZ3VhZ2VJRCJ9Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iTmFtZSI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gJFRleHR7Ik5hbWUifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ik5hbWUiIGlkPSJOYW1lIiB2YWx1ZT0iJFFEYXRheyJOYW1lIn0iIGNsYXNzPSJXNTBwYyBWYWxpZGF0ZV9SZXF1aXJlZCAkUURhdGF7Ik5hbWVTZXJ2ZXJFcnJvciJ9IiBtYXhsZW5ndGg9IjUwIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5hbWVFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+JFRleHR7IlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIn08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOYW1lU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPiRUZXh0eyIkRGF0YXsiTmFtZVNlcnZlckVycm9yTWVzc2FnZSJ9In08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCBTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iUHJpbWFyeSIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iJFRleHR7IlN1Ym1pdCJ9Ij4kVGV4dHsiU3VibWl0In08L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRleHR7Im9yIn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifSI+JFRleHR7IkNhbmNlbCJ9PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdVcGRhdGUgLS0+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPC9kaXY+CjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3IC0tPgoKPCEtLSBkdGw6YmxvY2s6RGVsZXRlIC0tPgo8IS0tIGR0bDpibG9jazpOb0FmZmVjdGVkSXRlbXMgLS0+CjxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIFczMDBweCI+CiAgICA8bGFiZWw+JFRleHR7Ikxhbmd1YWdlIn06PC9sYWJlbD4KICAgIDxwIGNsYXNzPSJWYWx1ZSI+CiAgICAgICAgJFFEYXRheyJOYW1lIn0KICAgIDwvcD4KICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPC9maWVsZHNldD4KPHAgY2xhc3M9IlNwYWNpbmdUb3AgQ2VudGVyIj4KICAgICRUZXh0eyJEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/In0KPC9wPgo8IS0tIGR0bDpibG9jazpOb0FmZmVjdGVkSXRlbXMgLS0+Cgo8IS0tIGR0bDpibG9jazpBZmZlY3RlZEl0ZW1zIC0tPgo8cD4KICAgICRUZXh0eyJZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBsYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUhIn0KPC9wPgo8cCBjbGFzcz0iU3BhY2luZ1RvcCBTcGFjaW5nQm90dG9tIj4KICAgICRUZXh0eyJUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSJ9Ogo8L3A+Cgo8dWw+CjwhLS0gZHRsOmJsb2NrOkFmZmVjdGVkSXRlbXNSb3cgLS0+CiAgICA8bGkgY2xhc3M9IkluZGVudCBTcGFjaW5nQm90dG9tU21hbGwiPgogICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn0kRGF0YXsiTGluayJ9O0FjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPSRMUURhdGF7Ikl0ZW1JRCJ9Ij4KICAgICAgICAgICAgJENvbmZpZ3siRkFROjpGQVFIb29rIn06JFFEYXRheyJOdW1iZXIifTxzcGFuPiZuYnNwOyZtZGFzaDs8L3NwYW4+ICRRRGF0YXsiVGl0bGUiLCAiNjAifQogICAgICAgIDwvYT4KICAgIDwvbGk+CjwhLS0gZHRsOmJsb2NrOkFmZmVjdGVkSXRlbXNSb3cgLS0+CjwvdWw+Cgo8IS0tIGR0bDpibG9jazpBZmZlY3RlZEl0ZW1zIC0tPgo8IS0tIGR0bDpibG9jazpEZWxldGUgLS0+Cg==
IyAtLQojIEFnZW50RkFRTGFuZ3VhZ2UuZHRsIC0gcHJvdmlkZXMgSFRNTCBmcm9tIGZvciBBZ2VudEZBUUxhYWd1YWdlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXcgLS0+CjxkaXYgY2xhc3M9Ik1haW5Cb3ggQVJJQVJvbGVNYWluIExheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyRmlyc3QiPgoKICAgIDxoMT4kVGV4dHsiRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQifTwvaDE+CgogICAgPGRpdiBjbGFzcz0iU2lkZWJhckNvbHVtbiI+Cgo8IS0tIGR0bDpibG9jazpEaXNhYmxlZCAtLT4KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPiRUZXh0eyJOb3RpY2UifTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50IEFjdGlvbkxpc3QiPgogICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSIkRW52eyJDR0lIYW5kbGUifSIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJBZG1pblN5c0NvbmZpZyIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IkVkaXQiLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTeXNDb25maWdHcm91cCIgdmFsdWU9IkZBUSIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN5c0NvbmZpZ1N1Ykdyb3VwIiB2YWx1ZT0iQ29yZSIvPgogICAgICAgICAgICAgICAgICAgIDxoMz4kVGV4dHsiVGhpcyBmZWF0dXJlIGlzIGRpc2FibGVkISJ9PC9oMz4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUZXh0eyJVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWdlcy4ifQogICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIFNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iJFRleHR7IkVuYWJsZSBpdCBoZXJlISJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4kVGV4dHsiRW5hYmxlIGl0IGhlcmUhIn08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6RGlzYWJsZWQgLS0+Cgo8IS0tIGR0bDpibG9jazpBY3Rpb25MaXN0IC0tPgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPiRUZXh0eyJBY3Rpb25zIn08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IkFjdGlvbkxpc3QiPgo8IS0tIGR0bDpibG9jazpBY3Rpb25PdmVydmlldyAtLT4KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JEVudnsiQWN0aW9uIn0iIGNsYXNzPSJDYWxsRm9yQWN0aW9uIj48c3Bhbj4kVGV4dHsiR28gdG8gb3ZlcnZpZXcifTwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KPCEtLSBkdGw6YmxvY2s6QWN0aW9uT3ZlcnZpZXcgLS0+Cgo8IS0tIGR0bDpibG9jazpBY3Rpb25BZGQgLS0+CiAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7IkFjdGlvbiJ9O1N1YmFjdGlvbj1BZGQiIGNsYXNzPSJDYWxsRm9yQWN0aW9uIFBsdXMiPjxzcGFuPiRUZXh0eyJBZGQgbGFuZ3VhZ2UifTwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KPCEtLSBkdGw6YmxvY2s6QWN0aW9uQWRkIC0tPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CjwhLS0gZHRsOmJsb2NrOkFjdGlvbkxpc3QgLS0+CiAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdSZXN1bHQgLS0+CiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPiRUZXh0eyJMaXN0In08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CgogICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJEYXRhVGFibGUgVmFyaWFibGVXaWR0aCIgc3VtbWFyeT0iRkFRIGxhbmd1YWdlcyI+CiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+JFRleHR7Ik5hbWUifTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+JFRleHR7IkRlbGV0ZSJ9PC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KPCEtLSBkdGw6YmxvY2s6Tm9EYXRhRm91bmRNc2cgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGV4dHsiTm8gZGF0YSBmb3VuZC4ifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6Tm9EYXRhRm91bmRNc2cgLS0+CjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3UmVzdWx0Um93IC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGEgY2xhc3M9IkFzQmxvY2siIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JEVudnsiQWN0aW9uIn07U3ViYWN0aW9uPUNoYW5nZTtMYW5ndWFnZUlEPSRMUURhdGF7Ikxhbmd1YWdlSUQifSI+JFFEYXRheyJOYW1lIn08L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2VudGVyIExhc3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGlkPSJEZWxldGVMYW5ndWFnZUlEJFFEYXRheyJMYW5ndWFnZUlEIn0iIGNsYXNzPSJUcmFzaENhbiIgaHJlZj0iIyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUZXh0eyJEZWxldGUifTogJFFEYXRheyJOYW1lIn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgo8IS0tZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlLS0+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwovKmdsb2JhbCBGQVE6IHRydWUgKi8KICAgIEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cuQmluZENvbmZpcm1hdGlvbkRpYWxvZyh7CiAgICAgICAgRWxlbWVudElEOiAgICAgICAgICAgICAgICAgICdEZWxldGVMYW5ndWFnZUlEJFFEYXRheyJMYW5ndWFnZUlEIn0nLAogICAgICAgIEVsZW1lbnRTZWxlY3RvcjogICAgICAgICAgICAnI0RlbGV0ZUxhbmd1YWdlSUQkUURhdGF7Ikxhbmd1YWdlSUQifScsCiAgICAgICAgRGlhbG9nQ29udGVudFF1ZXJ5U3RyaW5nOiAgICdBY3Rpb249QWdlbnRGQVFMYW5ndWFnZTtTdWJhY3Rpb249RGVsZXRlO0xhbmd1YWdlSUQ9JExRRGF0YXsiTGFuZ3VhZ2VJRCJ9JywKICAgICAgICBDb25maXJtZWRBY3Rpb25RdWVyeVN0cmluZzogJ0FjdGlvbj1BZ2VudEZBUUxhbmd1YWdlO1N1YmFjdGlvbj1EZWxldGVBY3Rpb247TGFuZ3VhZ2VJRD0kTFFEYXRheyJMYW5ndWFnZUlEIn0nLAogICAgICAgIERpYWxvZ1RpdGxlOiAgICAgICAgICAgICAgICAnJEpTVGV4dHsiRGVsZXRlIExhbmd1YWdlIn0gJFFEYXRheyJOYW1lIn0nLAogICAgICAgIFRyYW5zbGF0ZWRUZXh0OiAgICAgICAgICAgICB7CiAgICAgICAgICAgIFllczogJyRKU1RleHR7IlllcyJ9JywKICAgICAgICAgICAgTm86ICAnJEpTVGV4dHsiTm8ifScsCiAgICAgICAgICAgIE9rOiAgJyRKU1RleHR7Ik9rIn0nCiAgICAgICAgfQogICAgfSk7Ci8vXV0+PC9zY3JpcHQ+CjwhLS1kdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdSZXN1bHRSb3cgLS0+CiAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpPdmVydmlld1Jlc3VsdCAtLT4KCjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3VXBkYXRlIC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KPCEtLSBkdGw6YmxvY2s6SGVhZGVyQWRkIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8aDI+JFRleHR7IkFkZCBMYW5ndWFnZSJ9PC9oMj4KPCEtLSBkdGw6YmxvY2s6SGVhZGVyQWRkIC0tPgo8IS0tIGR0bDpibG9jazpIZWFkZXJFZGl0IC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8aDI+JFRleHR7IkVkaXQgTGFuZ3VhZ2UifTwvaDI+CjwhLS0gZHRsOmJsb2NrOkhlYWRlckVkaXQgLS0+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iJEVudnsiQ0dJSGFuZGxlIn0iIG1ldGhvZD0icG9zdCIgY2xhc3M9IlZhbGlkYXRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IiRFbnZ7IkFjdGlvbiJ9Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSIkTFFEYXRheyJBY3Rpb24ifUFjdGlvbiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iTGFuZ3VhZ2VJRCIgdmFsdWU9IiRRRGF0YXsiTGFuZ3VhZ2VJRCJ9Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iTmFtZSI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gJFRleHR7Ik5hbWUifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ik5hbWUiIGlkPSJOYW1lIiB2YWx1ZT0iJFFEYXRheyJOYW1lIn0iIGNsYXNzPSJXNTBwYyBWYWxpZGF0ZV9SZXF1aXJlZCAkUURhdGF7Ik5hbWVTZXJ2ZXJFcnJvciJ9IiBtYXhsZW5ndGg9IjUwIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5hbWVFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+JFRleHR7IlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIn08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOYW1lU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPiRUZXh0eyIkRGF0YXsiTmFtZVNlcnZlckVycm9yTWVzc2FnZSJ9In08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCBTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iUHJpbWFyeSIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iJFRleHR7IlN1Ym1pdCJ9Ij4kVGV4dHsiU3VibWl0In08L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRleHR7Im9yIn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifSI+JFRleHR7IkNhbmNlbCJ9PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdVcGRhdGUgLS0+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPC9kaXY+CjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3IC0tPgoKPCEtLSBkdGw6YmxvY2s6RGVsZXRlIC0tPgo8IS0tIGR0bDpibG9jazpOb0FmZmVjdGVkSXRlbXMgLS0+CjxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIFczMDBweCI+CiAgICA8bGFiZWw+JFRleHR7Ikxhbmd1YWdlIn06PC9sYWJlbD4KICAgIDxwIGNsYXNzPSJWYWx1ZSI+CiAgICAgICAgJFFEYXRheyJOYW1lIn0KICAgIDwvcD4KICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPC9maWVsZHNldD4KPHAgY2xhc3M9IlNwYWNpbmdUb3AgQ2VudGVyIj4KICAgICRUZXh0eyJEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/In0KPC9wPgo8IS0tIGR0bDpibG9jazpOb0FmZmVjdGVkSXRlbXMgLS0+Cgo8IS0tIGR0bDpibG9jazpBZmZlY3RlZEl0ZW1zIC0tPgo8cD4KICAgICRUZXh0eyJZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBsYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUhIn0KPC9wPgo8cCBjbGFzcz0iU3BhY2luZ1RvcCBTcGFjaW5nQm90dG9tIj4KICAgICRUZXh0eyJUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSJ9Ogo8L3A+Cgo8dWw+CjwhLS0gZHRsOmJsb2NrOkFmZmVjdGVkSXRlbXNSb3cgLS0+CiAgICA8bGkgY2xhc3M9IkluZGVudCBTcGFjaW5nQm90dG9tU21hbGwiPgogICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn0kRGF0YXsiTGluayJ9O0FjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPSRMUURhdGF7Ikl0ZW1JRCJ9Ij4KICAgICAgICAgICAgJENvbmZpZ3siRkFROjpGQVFIb29rIn06JFFEYXRheyJOdW1iZXIifTxzcGFuPiZuYnNwOyZtZGFzaDs8L3NwYW4+ICRRRGF0YXsiVGl0bGUiLCAiNjAifQogICAgICAgIDwvYT4KICAgIDwvbGk+CjwhLS0gZHRsOmJsb2NrOkFmZmVjdGVkSXRlbXNSb3cgLS0+CjwvdWw+Cgo8IS0tIGR0bDpibG9jazpBZmZlY3RlZEl0ZW1zIC0tPgo8IS0tIGR0bDpibG9jazpEZWxldGUgLS0+Cg==
IyAtLQojIEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIuZHRsIC0gaHRtbCBmb3IgY2hhbmdlIG92ZXJ2aWV3IHRhYmxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdOYXZCYXIgLS0+CjxkaXYgY2xhc3M9Ik92ZXJ2aWV3Qm94IEFSSUFSb2xlTWFpbiAkUURhdGF7IlZpZXcifSI+CiAgICA8aDE+JFRleHR7IiREYXRheyJUaXRsZU5hbWUifSJ9OiAkVGV4dHsiJERhdGF7IlRpdGxlVmFsdWUifSJ9PC9oMT4KCiREYXRheyJEYXRhSW5UaGVNaWRkbGUifQoKICAgIDxkaXYgY2xhc3M9Ik92ZXJ2aWV3Q29udHJvbCIgaWQ9Ik92ZXJ2aWV3Q29udHJvbCI+CiAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udHJvbFJvdyI+CjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3TmF2QmFyRmlsdGVyIC0tPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJUYWJzIj4KPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtIC0tPgo8IS0tIGR0bDpibG9jazpPdmVydmlld05hdkJhckZpbHRlckl0ZW1TZWxlY3RlZCAtLT4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkFjdGl2ZSAkUURhdGF7IkNTUyJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTskRGF0YXsiRmlsdGVyTGluayJ9RmlsdGVyPSRMUURhdGF7IkZpbHRlciJ9Ij4kVGV4dHsiJERhdGF7Ik5hbWUifSJ9PHNwYW4+JFFEYXRheyJDb3VudCJ9PC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgo8IS0tIGR0bDpibG9jazpPdmVydmlld05hdkJhckZpbHRlckl0ZW1TZWxlY3RlZCAtLT4KPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtU2VsZWN0ZWROb3QgLS0+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSIkUURhdGF7IkNTUyJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTskRGF0YXsiRmlsdGVyTGluayJ9RmlsdGVyPSRMUURhdGF7IkZpbHRlciJ9Ij4kVGV4dHsiJERhdGF7Ik5hbWUifSJ9PHNwYW4+JFFEYXRheyJDb3VudCJ9PC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgo8IS0tIGR0bDpibG9jazpPdmVydmlld05hdkJhckZpbHRlckl0ZW1TZWxlY3RlZE5vdCAtLT4KPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtU3BsaXQgLS0+CiAgICAgICAgICAgICAgICAgICAgLQo8IS0tIGR0bDpibG9jazpPdmVydmlld05hdkJhckZpbHRlckl0ZW1TcGxpdCAtLT4KPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtIC0tPgogICAgICAgICAgICAgICAgPC91bD4KPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdOYXZCYXJGaWx0ZXIgLS0+CjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3TmF2QmFyUGFnZUJhY2sgLS0+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IlRhYnMiPgogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaWQ9IiRMUURhdGF7IkxpbmtCYWNrSUQifSIgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTskUURhdGF7IkxpbmtCYWNrIn0iPiRUZXh0eyJDaGFuZ2Ugc2VhcmNoIG9wdGlvbnMifTwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KPCEtLWR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZS0tPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ly88IVtDREFUQVsKICAgICQoJyNGQVFTZWFyY2gnKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgIENvcmUuQWdlbnQuU2VhcmNoLk9wZW5TZWFyY2hEaWFsb2coICdBZ2VudEZBUVNlYXJjaCcsICIkUURhdGF7IlByb2ZpbGUifSIgKTsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9KTsKLy9dXT48L3NjcmlwdD4KPCEtLWR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZS0tPgo8IS0tIGR0bDpibG9jazpPdmVydmlld05hdkJhclBhZ2VCYWNrIC0tPgoKPCEtLSBkdGw6YmxvY2s6Q29udGV4dFNldHRpbmdzIC0tPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJDb250ZXh0RnVuY3Rpb25zIj4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkNvbnRleHRTZXR0aW5ncyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGlkPSJTaG93Q29udGV4dFNldHRpbmdzRGlhbG9nIiB0aXRsZT0iJFRleHR7IkNvbnRleHQgU2V0dGluZ3MifSI+PHNwYW4+JFRleHR7IkNvbnRleHQgU2V0dGluZ3MifTwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICAgICAgPGRpdiBpZD0iQ29udGV4dFNldHRpbmdzRGlhbG9nQ29udGFpbmVyIiBjbGFzcz0iSGlkZGVuIj4KICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiRFbnZ7IkNHSUhhbmRsZSJ9IiBtZXRob2Q9InBvc3QiIGlkPSJDb250ZXh0U2V0dGluZ3NEaWFsb2ciPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJBZ2VudFByZWZlcmVuY2VzIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlVwZGF0ZSIvPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJHcm91cCIgdmFsdWU9IiRRRGF0YXsiR3JvdXAifSIvPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJSZWRpcmVjdFVSTCIgdmFsdWU9IiRRRGF0YXsiUmVxdWVzdGVkVVJMIn0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iJFFEYXRheyJQcmVmZXJlbmNlc0tleSJ9Ij4kVGV4dHsiRkFRIGFydGljbGVzIHBlciBwYWdlIn06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRGF0YXsiUGFnZVNob3duU3RyaW5nIn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgIDwvZGl2PgoKPCEtLSBkdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUgLS0+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwogICAgLy8gYmluZCB0aGUgQ29udGV4dFNldHRpbmdzRGlhbG9nQ29udGFpbmVyCiAgICAkKCcjU2hvd0NvbnRleHRTZXR0aW5nc0RpYWxvZycpLmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24gKEV2ZW50KSB7CiAgICAgICAgQ29yZS5VSS5EaWFsb2cuU2hvd0NvbnRlbnREaWFsb2coJCgnI0NvbnRleHRTZXR0aW5nc0RpYWxvZ0NvbnRhaW5lcicpLCAnJEpTVGV4dHsiU2V0dGluZ3MifScsICcyMCUnLCAnQ2VudGVyJywgdHJ1ZSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIExhYmVsOiAnJEpTVGV4dHsiU3VibWl0In0nLAogICAgICAgICAgICAgICAgICAgIFR5cGU6ICdTdWJtaXQnLAogICAgICAgICAgICAgICAgICAgIENsYXNzOiAnUHJpbWFyeScKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXQogICAgICAgICk7CiAgICAgICAgRXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICBFdmVudC5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9KTsKLy9dXT48L3NjcmlwdD4KPCEtLSBkdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUgLS0+CjwhLS0gZHRsOmJsb2NrOkNvbnRleHRTZXR0aW5ncyAtLT4KCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJBY3Rpb25Sb3ciPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iT3ZlcnZpZXdBY3Rpb25zIj4KICAgICAgICAgICAgICAgICAgICAkRGF0YXsiQWN0aW9uUm93In0KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Ik92ZXJ2aWV3Wm9vbSI+Cgo8IS0tIGR0bDpibG9jazpPdmVydmlld05hdkJhclZpZXdNb2RlIC0tPgo8IS0tIGR0bDpibG9jazpPdmVydmlld05hdkJhclZpZXdNb2RlU2VsZWN0ZWQgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iQWN0aXZlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSIkUURhdGF7Ik5hbWUifSIgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTtGaWx0ZXI9JExRRGF0YXsiRmlsdGVyIn07Vmlldz0kTFFEYXRheyJWaWV3In07JFFEYXRheyJMaW5rRmlsdGVyIn0iIHRpdGxlPSIkVGV4dHsiJERhdGF7Ik5hbWUifSJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iSW1hZ2VNb2RlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Ik5hbWVTaG9ydCI+JFRleHR7IiREYXRheyJOYW1lU2hvcnQifSJ9PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iTmFtZUxvbmciPiRUZXh0eyIkRGF0YXsiTmFtZSJ9In08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgo8IS0tIGR0bDpibG9jazpPdmVydmlld05hdkJhclZpZXdNb2RlU2VsZWN0ZWQgLS0+CjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3TmF2QmFyVmlld01vZGVOb3RTZWxlY3RlZCAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IiRRRGF0YXsiTmFtZSJ9IiBuYW1lPSJPdmVydmlld0NvbnRyb2wiIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JEVudnsiQWN0aW9uIn07RmlsdGVyPSRMUURhdGF7IkZpbHRlciJ9O1ZpZXc9JExRRGF0YXsiVmlldyJ9OyREYXRheyJMaW5rRmlsdGVyIn0iIHRpdGxlPSIkVGV4dHsiJERhdGF7Ik5hbWUifSJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iSW1hZ2VNb2RlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Ik5hbWVTaG9ydCI+JFRleHR7IiREYXRheyJOYW1lU2hvcnQifSJ9PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iTmFtZUxvbmciPiRUZXh0eyIkRGF0YXsiTmFtZSJ9In08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgo8IS0tIGR0bDpibG9jazpPdmVydmlld05hdkJhclZpZXdNb2RlTm90U2VsZWN0ZWQgLS0+CjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3TmF2QmFyVmlld01vZGUgLS0+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iUGFnaW5hdGlvbiI+CjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3TmF2QmFyUGFnZU5hdkJhciAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgJERhdGF7IlJlc3VsdExvbmcifQogICAgICAgICAgICAgICAgICAgICAgICAkRGF0YXsiU2l0ZU5hdkJhckxvbmcifQo8IS0tIGR0bDpibG9jazpPdmVydmlld05hdkJhclBhZ2VOYXZCYXIgLS0+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyTGVmdCI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KIyBzb3J0IG9yZGVyIGJhciBpZiBuZWVkZWQKICAgICAgICAgICAgICAgICREYXRheyJTb3J0T3JkZXJCYXIifQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pgo8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdOYXZCYXIgLS0+Cg==
IyAtLQojIEFnZW50RkFRT3ZlcnZpZXdTbWFsbC5kdGwgLSBodG1sIGZvciBjaGFuZ2Ugb3ZlcnZpZXcgdGFibGUKIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxMyBPVFJTIEFHLCBodHRwOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgo8IS0tIGR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZSAtLT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiAgICBDb3JlLlVJLkFjdGlvblJvdy5Jbml0KCk7Ci8vXV0+PC9zY3JpcHQ+CjwhLS0gZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlIC0tPgoKPGRpdiBpZD0iT3ZlcnZpZXdCb2R5IiBjbGFzcz0iT3ZlcnZpZXcgVGlja2V0TGlzdCI+CjwhLS0gZHRsOmJsb2NrOk5vRkFRRm91bmQgLS0+CiAgICA8ZGl2IGlkPSJFbXB0eU1lc3NhZ2VTbWFsbCI+CiAgICAgICAgJFRleHR7Ik5vIEZBUSBkYXRhIGZvdW5kLiJ9CiAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6Tm9GQVFGb3VuZCAtLT4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkRm9ybSAtLT4KICAgIDx0YWJsZSBjbGFzcz0iVGFibGVTbWFsbCBOb0NlbGxzcGFjaW5nIiBzdW1tYXJ5PSIkVGV4dHsiQSBnZW5lcmljIEZBUSB0YWJsZSJ9Ij4KICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgIDx0cj4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkTnVtYmVySGVhZGVyIC0tPgogICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJGQVFOdW1iZXIgJFFEYXRheyJDU1MifSI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTskRGF0YXsiTGlua1NvcnQifTtTb3J0Qnk9RkFRSUQ7T3JkZXJCeT0kTFFEYXRheyJPcmRlckJ5In0iPiRDb25maWd7IkZBUTo6RkFRSG9vayJ9PC9hPgogICAgICAgICAgICAgICAgPC90aD4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkTnVtYmVySGVhZGVyIC0tPgo8IS0tIGR0bDpibG9jazpSZWNvcmRUaXRsZUhlYWRlciAtLT4KICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iVGl0bGUgJFFEYXRheyJDU1MifSI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTskRGF0YXsiTGlua1NvcnQifTtTb3J0Qnk9VGl0bGU7T3JkZXJCeT0kTFFEYXRheyJPcmRlckJ5In0iPiRUZXh0eyJUaXRsZSJ9PC9hPgogICAgICAgICAgICAgICAgPC90aD4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkVGl0bGVIZWFkZXIgLS0+CjwhLS0gZHRsOmJsb2NrOlJlY29yZENhdGVnb3J5SGVhZGVyIC0tPgogICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJDYXRlZ29yeSAkUURhdGF7IkNTUyJ9Ij4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7IkFjdGlvbiJ9OyREYXRheyJMaW5rU29ydCJ9O1NvcnRCeT1DYXRlZ29yeTtPcmRlckJ5PSRMUURhdGF7Ik9yZGVyQnkifSI+JFRleHR7IkNhdGVnb3J5In08L2E+CiAgICAgICAgICAgICAgICA8L3RoPgo8IS0tIGR0bDpibG9jazpSZWNvcmRDYXRlZ29yeUhlYWRlciAtLT4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkTGFuZ3VhZ2VIZWFkZXIgLS0+CiAgICAgICAgICAgICAgICA8dGggY2xhc3M9Ikxhbmd1YWdlICRRRGF0YXsiQ1NTIn0iPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JEVudnsiQWN0aW9uIn07JERhdGF7IkxpbmtTb3J0In07U29ydEJ5PUxhbmd1YWdlO09yZGVyQnk9JExRRGF0YXsiT3JkZXJCeSJ9Ij4kVGV4dHsiTGFuZ3VhZ2UifTwvYT4KICAgICAgICAgICAgICAgIDwvdGg+CjwhLS0gZHRsOmJsb2NrOlJlY29yZExhbmd1YWdlSGVhZGVyIC0tPgo8IS0tIGR0bDpibG9jazpSZWNvcmRTdGF0ZUhlYWRlciAtLT4KICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iU3RhdGUgJFFEYXRheyJDU1MifSI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTskRGF0YXsiTGlua1NvcnQifTtTb3J0Qnk9U3RhdGU7T3JkZXJCeT0kTFFEYXRheyJPcmRlckJ5In0iPiRUZXh0eyJTdGF0ZSJ9PC9hPgogICAgICAgICAgICAgICAgPC90aD4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkU3RhdGVIZWFkZXIgLS0+CjwhLS0gZHRsOmJsb2NrOlJlY29yZFZhbGlkSGVhZGVyIC0tPgogICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJTdGF0ZSAkUURhdGF7IkNTUyJ9Ij4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7IkFjdGlvbiJ9OyREYXRheyJMaW5rU29ydCJ9O1NvcnRCeT1WYWxpZDtPcmRlckJ5PSRMUURhdGF7Ik9yZGVyQnkifSI+JFRleHR7IlZhbGlkaXR5In08L2E+CiAgICAgICAgICAgICAgICA8L3RoPgo8IS0tIGR0bDpibG9jazpSZWNvcmRWYWxpZEhlYWRlciAtLT4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkQ2hhbmdlZEhlYWRlciAtLT4KICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQ2hhbmdlZCAkUURhdGF7IkNTUyJ9Ij4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7IkFjdGlvbiJ9OyREYXRheyJMaW5rU29ydCJ9O1NvcnRCeT1DaGFuZ2VkO09yZGVyQnk9JExRRGF0YXsiT3JkZXJCeSJ9Ij4kVGV4dHsiQ2hhbmdlZCJ9PC9hPgogICAgICAgICAgICAgICAgPC90aD4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkQ2hhbmdlZEhlYWRlciAtLT4KICAgICAgICAgICAgPC90cj4KICAgICAgICA8L3RoZWFkPgogICAgICAgIDx0Ym9keT4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkIC0tPgogICAgICAgICAgICA8dHIgaWQ9Ikl0ZW1JRF8kUURhdGF7Ikl0ZW1JRCJ9XyRRRGF0YXsiQ291bnRlciJ9IiBjbGFzcz0iTWFzdGVyQWN0aW9uIj4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkTnVtYmVyIC0tPgogICAgICAgICAgICAgICAgPHRkPgo8IS0tIGR0bDpibG9jazpSZWNvcmROdW1iZXJMaW5rU3RhcnQgLS0+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPSRMUURhdGF7Ikl0ZW1JRCJ9O05hdj0kTFFEYXRheyJOYXYifSIgdGl0bGU9IiRMUURhdGF7Ik51bWJlciJ9IiBjbGFzcz0iTWFzdGVyQWN0aW9uTGluayI+CjwhLS0gZHRsOmJsb2NrOlJlY29yZE51bWJlckxpbmtTdGFydCAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgJFFEYXRheyJOdW1iZXIifQo8IS0tIGR0bDpibG9jazpSZWNvcmROdW1iZXJMaW5rRW5kIC0tPgogICAgICAgICAgICAgICAgICAgIDwvYT4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkTnVtYmVyTGlua0VuZCAtLT4KICAgICAgICAgICAgICAgIDwvdGQ+CjwhLS0gZHRsOmJsb2NrOlJlY29yZE51bWJlciAtLT4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkVGl0bGUgLS0+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iJFFEYXRheyJUaXRsZSJ9Ij4kUURhdGF7IlRpdGxlIiwiNDAifTwvZGl2PgogICAgICAgICAgICAgICAgPC90ZD4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkVGl0bGUgLS0+CjwhLS0gZHRsOmJsb2NrOlJlY29yZENhdGVnb3J5IC0tPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IiRUZXh0eyIkRGF0YXsiQ2F0ZWdvcnlOYW1lIn0ifSI+JFRleHR7IiREYXRheyJDYXRlZ29yeU5hbWUifSIsIjUwIn08L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGQ+CjwhLS0gZHRsOmJsb2NrOlJlY29yZENhdGVnb3J5IC0tPgo8IS0tIGR0bDpibG9jazpSZWNvcmRMYW5ndWFnZSAtLT4KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICA8ZGl2PiRUZXh0eyIkRGF0YXsiTGFuZ3VhZ2UifSJ9PC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgo8IS0tIGR0bDpibG9jazpSZWNvcmRMYW5ndWFnZSAtLT4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkU3RhdGUgLS0+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgPGRpdj4kVGV4dHsiJERhdGF7IlN0YXRlIn0ifTwvZGl2PgogICAgICAgICAgICAgICAgPC90ZD4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkU3RhdGUgLS0+CjwhLS0gZHRsOmJsb2NrOlJlY29yZFZhbGlkIC0tPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxkaXY+JFRleHR7IiREYXRheyJWYWxpZCJ9In08L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGQ+CjwhLS0gZHRsOmJsb2NrOlJlY29yZFZhbGlkIC0tPgo8IS0tIGR0bDpibG9jazpSZWNvcmRDaGFuZ2VkIC0tPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxkaXY+JFRpbWVTaG9ydHsiJERhdGF7IkNoYW5nZWQifSJ9PC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgo8IS0tIGR0bDpibG9jazpSZWNvcmRDaGFuZ2VkIC0tPgogICAgICAgICAgICA8L3RyPgo8IS0tIGR0bDpibG9jazpSZWNvcmQgLS0+CiAgICAgICAgPC90Ym9keT4KICAgIDwvdGFibGU+CjwhLS0gZHRsOmJsb2NrOlJlY29yZEZvcm0gLS0+CjwvZGl2Pgo8IS0tIGR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZSAtLT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiAgICAkKCcuTWFzdGVyQWN0aW9uJykuYmluZCgnY2xpY2snLCBmdW5jdGlvbiAoRXZlbnQpIHsKICAgICAgICAgdmFyICRNYXN0ZXJBY3Rpb25MaW5rID0gJCh0aGlzKS5maW5kKCcuTWFzdGVyQWN0aW9uTGluaycpOwogICAgICAgIC8vIG9ubHkgYWN0IGlmIHRoZSBsaW5rIHdhcyBub3QgY2xpY2tlZCBkaXJlY3RseQogICAgICAgIGlmIChFdmVudC50YXJnZXQgIT09ICRNYXN0ZXJBY3Rpb25MaW5rLmdldCgwKSkgewogICAgICAgICAgICB3aW5kb3cubG9jYXRpb24gPSAkTWFzdGVyQWN0aW9uTGluay5hdHRyKCdocmVmJyk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICB9KTsKLy9dXT48L3NjcmlwdD4KPCEtLSBkdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUgLS0+Cg==
IyAtLQojIEFnZW50RkFRUHJpbnQuZHRsIC0gcHJvdmlkZXMgSFRNTCBwcmludCB2aWV3CiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjEiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSI+CiAgICA8dHI+CiAgICAgICAgPHRkIGNsYXNzPSJtYWluaGVhZCI+JENvbmZpZ3siRkFROjpGQVFIb29rIn06ICRRRGF0YXsiTnVtYmVyIn0gLyAkUURhdGF7IlRpdGxlIn08L3RkPgogICAgPC90cj4KPC90YWJsZT4KPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjEiIGNlbGxwYWRkaW5nPSIxMCIgd2lkdGg9IjEwMCUiPgogICAgPHRyPgogICAgICAgIDx0ZCBjbGFzcz0iY29udGVudGtleSI+CiAgICAgICAgICAgICRUZXh0eyJGQVEtSW5mbyJ9OgogICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjUwJSIgdmFsaWduPSJ0b3AiPgogICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMyIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnRrZXkiPiRUZXh0eyJDYXRlZ29yeSJ9OiA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4kRGF0YXsiQ2F0ZWdvcnlOYW1lIn08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnRrZXkiPiRUZXh0eyJTdGF0ZSJ9OiA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4kVGV4dHsiJERhdGF7IlN0YXRlIn0ifTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgo8IS0tIGR0bDpibG9jazpMYW5ndWFnZSAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnRrZXkiPiRUZXh0eyJMYW5ndWFnZSJ9OiA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4kRGF0YXsiTGFuZ3VhZ2UifTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgo8IS0tIGR0bDpibG9jazpMYW5ndWFnZSAtLT4KCjwhLS0gZHRsOmJsb2NrOlByaW50QXBwcm92YWwgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50a2V5Ij4kVGV4dHsiQXBwcm92YWwifTo8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4gPGRpdiB0aXRsZT0iJFRleHR7IiREYXRheyJBcHByb3ZhbCJ9In0iPiRUZXh0eyIkRGF0YXsiQXBwcm92YWwifSJ9PC9kaXY+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CjwhLS0gZHRsOmJsb2NrOlByaW50QXBwcm92YWwgLS0+CgogICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI1MCUiIHZhbGlnbj0idG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSI+Cgo8IS0tIGR0bDpibG9jazpSYXRpbmcgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50a2V5Ij4kVGV4dHsiVm90ZXMifTogPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnR2YWx1ZSI+ICRRRGF0YXsiVm90ZXMifTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudGtleSI+JFRleHR7IlJlc3VsdCJ9OiA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4gJFFEYXRheyJWb3RlUmVzdWx0In0gJiMzNzs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6UmF0aW5nIC0tPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnRrZXkiPiRUZXh0eyJMYXN0IHVwZGF0ZSJ9OiA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4kVGltZUxvbmd7IiREYXRheyJDaGFuZ2VkIn0ifTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8YnIvPgogICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMyIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEwJSIgY2xhc3M9ImNvbnRlbnRrZXkiPiRUZXh0eyJLZXl3b3JkcyJ9OiA8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iOTAlIiBjbGFzcz0iY29udGVudHZhbHVlIj4kUURhdGF7IktleXdvcmRzIn08L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgICA8dGQ+CiAgICAgICAgICAgIDxocj4KICAgICAgICA8L3RkPgogICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6RkFRQ29udGVudCAtLT4KICAgIDx0cj4KICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnRrZXkiPgogICAgICAgICAgICAkVGV4dHsiJERhdGF7IkNhcHRpb24ifSJ9OiAgPHNwYW4gY2xhc3M9InNtYWxsIj4oJFRleHR7IiREYXRheyJTdGF0ZU5hbWUifSJ9KSA8L3NwYW4+CiAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIxMCIgY2VsbFBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnR2YWx1ZSI+JERhdGF7IkNvbnRlbnQifTwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICAgIDx0ZD4KICAgICAgICAgICAgPGhyPgogICAgICAgIDwvdGQ+CiAgICA8L3RyPgo8IS0tIGR0bDpibG9jazpGQVFDb250ZW50IC0tPgoKPCEtLSBkdGw6YmxvY2s6TGluayAtLT4KICAgIDx0cj4KICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnRrZXkiPgogICAgICAgICAgICAkVGV4dHsiTGlua2VkLU9iamVjdCJ9OgogICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjUwJSIgdmFsaWduPSJ0b3AiPgogICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMyIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KPCEtLSBkdGw6YmxvY2s6TGlua1R5cGUgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgdmFsaWduPSJ0b3AiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudGtleSIgd2lkdGg9IjIwJSI+JFRleHR7IiREYXRheyJMaW5rVHlwZU5hbWUifSJ9OjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50dmFsdWUiPgo8IS0tIGR0bDpibG9jazpMaW5rVHlwZVJvdyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJERhdGF7IkxpbmtTdHJnIn08YnIvPgo8IS0tIGR0bDpibG9jazpMaW5rVHlwZVJvdyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6TGlua1R5cGUgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC90ZD4KICAgIDwvdHI+CjwhLS0gZHRsOmJsb2NrOkxpbmsgLS0+Cgo8L3RhYmxlPgo=
IyAtLQojIEFnZW50RkFRU2VhcmNoLmR0bCAtIHByb3ZpZGVzIEhUTUwgZm9ybSBmb3IgQWdlbnRGQVFTZWFyY2gKIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxMyBPVFJTIEFHLCBodHRwOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgo8IS0tIGR0bDpibG9jazpTZWFyY2hBSkFYIC0tPgo8ZGl2IGNsYXNzPSJJbm5lckNvbnRlbnQiPgogICAgPGZvcm0gYWN0aW9uPSIkRW52eyJDR0lIYW5kbGUifSIgbWV0aG9kPSJwb3N0IiBpZD0iU2VhcmNoRm9ybSI+CiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iJEVudnsiQWN0aW9uIn0iIGlkPSJTZWFyY2hBY3Rpb24iLz4KICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJTZWFyY2giLz4KICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJFbXB0eVNlYXJjaCIgdmFsdWU9IiRRRGF0YXsiRW1wdHlTZWFyY2gifSIgaWQ9IkVtcHR5U2VhcmNoIi8+CiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iTmF2IiB2YWx1ZT0iJFFEYXRheyJOYXYifSIvPgogICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICA8bGFiZWw+JFRleHR7IlNlYXJjaCB0ZW1wbGF0ZSJ9OjwvbGFiZWw+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICREYXRheyJQcm9maWxlc1N0cmcifQoKICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9IlNlYXJjaFByb2ZpbGVOZXciIHZhbHVlPSIkVGV4dHsiQ3JlYXRlIE5ldyJ9Ij4kVGV4dHsiQ3JlYXRlIE5ldyJ9PC9idXR0b24+CgogICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0iU2VhcmNoUHJvZmlsZURlbGV0ZSIgY2xhc3M9IkhpZGRlbiIgdmFsdWU9IiRUZXh0eyJEZWxldGUifSI+JFRleHR7IkRlbGV0ZSJ9PC9idXR0b24+CiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJTZWFyY2hQcm9maWxlQWRkQmxvY2siPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJOYW1lIiBpZD0iU2VhcmNoUHJvZmlsZUFkZE5hbWUiLz4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgdGl0bGU9IiRUZXh0eyJDcmVhdGUgVGVtcGxhdGUifSIgaWQ9IlNlYXJjaFByb2ZpbGVBZGRBY3Rpb24iPiRUZXh0eyJBZGQifTwvYnV0dG9uPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgIDxsYWJlbD4kVGV4dHsiU2F2ZSBjaGFuZ2VzIGluIHRlbXBsYXRlIn06PC9sYWJlbD4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJTYXZlUHJvZmlsZSIgaWQ9IlNhdmVQcm9maWxlIiB2YWx1ZT0iMSIvPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIiBpZD0iU2VhcmNoSW5zZXJ0Ij48L2ZpZWxkc2V0PgogICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICA8bGFiZWw+JFRleHR7IkFkZCBhbm90aGVyIGF0dHJpYnV0ZSJ9OjwvbGFiZWw+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICREYXRheyJBdHRyaWJ1dGVzU3RyZyJ9CiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9IkFkZCIgdmFsdWU9IkFkZCIgdGl0bGU9IkFkZCBlbnRyeSI+JFRleHR7IkFkZCJ9PC9idXR0b24+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgIDxsYWJlbD4kVGV4dHsiT3V0cHV0In06PC9sYWJlbD4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgJERhdGF7IlJlc3VsdEZvcm1TdHJnIn0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9maWVsZHNldD4KICAgIDwvZm9ybT4KCiAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBIaWRkZW4iIGlkPSJTZWFyY2hBdHRyaWJ1dGVzSGlkZGVuIj4KCiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgIDxsYWJlbCBmb3I9IkZ1bGx0ZXh0ImlkPSJMYWJlbEZ1bGx0ZXh0Ij4kVGV4dHsiRnVsbHRleHQifTo8L2xhYmVsPgogICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IkZ1bGx0ZXh0IiB2YWx1ZT0iJFFEYXRheyJGdWxsdGV4dCJ9IiBjbGFzcz0iVzUwcGMiIC8+CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iUmVtb3ZlIiB2YWx1ZT0iUmVtb3ZlIiB0aXRsZT0iJFRleHR7IlJlbW92ZSB0aGlzIGVudHJ5In0iPiRUZXh0eyJSZW1vdmUifTwvYnV0dG9uPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPGxhYmVsIGZvcj0iTnVtYmVyIiBpZD0iTGFiZWxOdW1iZXIiPiRDb25maWd7IkZBUTo6RkFRSG9vayJ9ICRUZXh0eyIoZS4gZy4gMTAqNTE1NSBvciAxMDU2NTgqKSJ9OjwvbGFiZWw+CiAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iTnVtYmVyIiB2YWx1ZT0iJFFEYXRheyJOdW1iZXIifSIgY2xhc3M9Ilc1MHBjIi8+CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iUmVtb3ZlIiB2YWx1ZT0iUmVtb3ZlIiB0aXRsZT0iJFRleHR7IlJlbW92ZSB0aGlzIGVudHJ5In0iPiRUZXh0eyJSZW1vdmUifTwvYnV0dG9uPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPGxhYmVsIGZvcj0iVGl0bGUiIGlkPSJMYWJlbFRpdGxlIj4kVGV4dHsiVGl0bGUifTo8L2xhYmVsPgogICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IlRpdGxlIiB2YWx1ZT0iJFFEYXRheyJUaXRsZSJ9IiBjbGFzcz0iVzUwcGMiLz4KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJSZW1vdmUiIHZhbHVlPSJSZW1vdmUiIHRpdGxlPSIkVGV4dHsiUmVtb3ZlIHRoaXMgZW50cnkifSI+JFRleHR7IlJlbW92ZSJ9PC9idXR0b24+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8bGFiZWwgZm9yPSJLZXl3b3JkIiBpZD0iTGFiZWxLZXl3b3JkIj4kVGV4dHsiS2V5d29yZCJ9OjwvbGFiZWw+CiAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iS2V5d29yZCIgdmFsdWU9IiRRRGF0YXsiS2V5d29yZCJ9IiBjbGFzcz0iVzUwcGMiLz4KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJSZW1vdmUiIHZhbHVlPSJSZW1vdmUiIHRpdGxlPSIkVGV4dHsiUmVtb3ZlIHRoaXMgZW50cnkifSI+JFRleHR7IlJlbW92ZSJ9PC9idXR0b24+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8bGFiZWwgZm9yPSJWYWxpZElEcyIgaWQ9IkxhYmVsVmFsaWRJRHMiPiRUZXh0eyJWYWxpZGl0eSJ9OjwvbGFiZWw+CiAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAkRGF0YXsiVmFsaWRTZWxlY3Rpb25TdHJnIn0KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJSZW1vdmUiIHZhbHVlPSJSZW1vdmUiIHRpdGxlPSIkVGV4dHsiUmVtb3ZlIHRoaXMgZW50cnkifSI+JFRleHR7IlJlbW92ZSJ9PC9idXR0b24+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8bGFiZWwgZm9yPSJMYW5ndWFnZUlEcyIgaWQ9IkxhYmVsTGFuZ3VhZ2VJRHMiPiRUZXh0eyJMYW5ndWFnZSJ9OjwvbGFiZWw+CiAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAkRGF0YXsiTGFuZ3VhZ2VzU2VsZWN0aW9uU3RyZyJ9CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iUmVtb3ZlIiB2YWx1ZT0iUmVtb3ZlIiB0aXRsZT0iJFRleHR7IlJlbW92ZSB0aGlzIGVudHJ5In0iPiRUZXh0eyJSZW1vdmUifTwvYnV0dG9uPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPGxhYmVsIGZvcj0iQ2F0ZWdvcnlJRHMiIGlkPSJMYWJlbENhdGVnb3J5SURzIj4kVGV4dHsiQ2F0ZWdvcnkifTo8L2xhYmVsPgogICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgJERhdGF7IkNhdGVnb3JpZXNTZWxlY3Rpb25TdHJnIn0KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJSZW1vdmUiIHZhbHVlPSJSZW1vdmUiIHRpdGxlPSIkVGV4dHsiUmVtb3ZlIHRoaXMgZW50cnkifSI+JFRleHR7IlJlbW92ZSJ9PC9idXR0b24+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8bGFiZWwgZm9yPSJTdGF0ZUlEcyIgaWQ9IkxhYmVsU3RhdGVJRHMiPiRUZXh0eyJTdGF0ZSJ9OjwvbGFiZWw+CiAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAkRGF0YXsiU3RhdGVTZWxlY3Rpb25TdHJnIn0KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJSZW1vdmUiIHZhbHVlPSJSZW1vdmUiIHRpdGxlPSIkVGV4dHsiUmVtb3ZlIHRoaXMgZW50cnkifSI+JFRleHR7IlJlbW92ZSJ9PC9idXR0b24+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8bGFiZWwgZm9yPSJWb3RlU2VhcmNoVHlwZSIgaWQ9IkxhYmVsVm90ZVNlYXJjaFR5cGUiPiRUZXh0eyJWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApIn06PC9sYWJlbD4KICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICREYXRheyJWb3RlU2VhcmNoVHlwZVNlbGVjdGlvblN0cmcifQogICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iVm90ZVNlYXJjaCIgdmFsdWU9IiRRRGF0YXsiVm90ZVNlYXJjaCJ9IiBjbGFzcz0iVzI1cGMiLz4KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJSZW1vdmUiIHZhbHVlPSJSZW1vdmUiIHRpdGxlPSIkVGV4dHsiUmVtb3ZlIHRoaXMgZW50cnkifSI+JFRleHR7IlJlbW92ZSJ9PC9idXR0b24+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8bGFiZWwgZm9yPSJSYXRlU2VhcmNoVHlwZSIgaWQ9IkxhYmVsUmF0ZVNlYXJjaFR5cGUiPiRUZXh0eyJSYXRlIChlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSkifTo8L2xhYmVsPgogICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgJERhdGF7IlJhdGVTZWFyY2hUeXBlU2VsZWN0aW9uU3RyZyJ9CiAgICAgICAgICAgICREYXRheyJSYXRlU2VhcmNoU2VsZWN0aW9uU3RyZyJ9CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iUmVtb3ZlIiB2YWx1ZT0iUmVtb3ZlIiB0aXRsZT0iJFRleHR7IlJlbW92ZSB0aGlzIGVudHJ5In0iPiRUZXh0eyJSZW1vdmUifTwvYnV0dG9uPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPGxhYmVsIGZvcj0iQXBwcm92ZWRTZWFyY2giIGlkPSJMYWJlbEFwcHJvdmVkU2VhcmNoIj4kVGV4dHsiQXBwcm92ZWQifTo8L2xhYmVsPgogICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgJERhdGF7IkFwcHJvdmVkU3RyZyJ9CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iUmVtb3ZlIiB2YWx1ZT0iUmVtb3ZlIiB0aXRsZT0iJFRleHR7IlJlbW92ZSB0aGlzIGVudHJ5In0iPiRUZXh0eyJSZW1vdmUifTwvYnV0dG9uPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPGxhYmVsIGZvcj0iQ3JlYXRlZFVzZXJJRHMiIGlkPSJMYWJlbENyZWF0ZWRVc2VySURzIj4kVGV4dHsiQ3JlYXRlZCBieSJ9ICRUZXh0eyJBZ2VudCJ9OjwvbGFiZWw+CiAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAkRGF0YXsiQ3JlYXRlZFVzZXJTdHJnIn0KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJSZW1vdmUiIHZhbHVlPSJSZW1vdmUiIHRpdGxlPSIkVGV4dHsiUmVtb3ZlIHRoaXMgZW50cnkifSI+JFRleHR7IlJlbW92ZSJ9PC9idXR0b24+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8bGFiZWwgZm9yPSJMYXN0Q2hhbmdlZFVzZXJJRHMiIGlkPSJMYWJlbExhc3RDaGFuZ2VkVXNlcklEcyI+JFRleHR7Ikxhc3QgY2hhbmdlZCBieSJ9ICRUZXh0eyJBZ2VudCJ9OjwvbGFiZWw+CiAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAkRGF0YXsiTGFzdENoYW5nZWRVc2VyU3RyZyJ9CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iUmVtb3ZlIiB2YWx1ZT0iUmVtb3ZlIiB0aXRsZT0iJFRleHR7IlJlbW92ZSB0aGlzIGVudHJ5In0iPiRUZXh0eyJSZW1vdmUifTwvYnV0dG9uPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPGxhYmVsIGZvcj0iSXRlbUNyZWF0ZVRpbWVQb2ludCIgaWQ9IkxhYmVsSXRlbUNyZWF0ZVRpbWVQb2ludCI+JFRleHR7IkZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpIn06PC9sYWJlbD4KICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlRpbWVTZWFyY2hUeXBlIiB2YWx1ZT0iVGltZVBvaW50IiAkRGF0YXsiVGltZVNlYXJjaFR5cGU6OlRpbWVQb2ludCJ9Lz4KICAgICAgICAgICAgJERhdGF7Ikl0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydFN0cmcifSAkRGF0YXsiSXRlbUNyZWF0ZVRpbWVQb2ludFN0cmcifSAkRGF0YXsiSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdFN0cmcifQogICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9IlJlbW92ZSIgdmFsdWU9IlJlbW92ZSIgdGl0bGU9IiRUZXh0eyJSZW1vdmUgdGhpcyBlbnRyeSJ9Ij4kVGV4dHsiUmVtb3ZlIn08L2J1dHRvbj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgIDxsYWJlbCBmb3I9Ikl0ZW1DcmVhdGVUaW1lU2xvdCIgaWQ9IkxhYmVsSXRlbUNyZWF0ZVRpbWVTbG90Ij4kVGV4dHsiRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJldHdlZW4pIn06PC9sYWJlbD4KICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlRpbWVTZWFyY2hUeXBlIiB2YWx1ZT0iVGltZVNsb3QiICREYXRheyJUaW1lU2VhcmNoVHlwZTo6VGltZVNsb3QifS8+CiAgICAgICAgICAgICREYXRheyJJdGVtQ3JlYXRlVGltZVN0YXJ0U3RyZyJ9ICRUZXh0eyJhbmQifSAkRGF0YXsiSXRlbUNyZWF0ZVRpbWVTdG9wU3RyZyJ9CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iUmVtb3ZlIiB2YWx1ZT0iUmVtb3ZlIiB0aXRsZT0iJFRleHR7IlJlbW92ZSB0aGlzIGVudHJ5In0iPiRUZXh0eyJSZW1vdmUifTwvYnV0dG9uPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPGxhYmVsIGZvcj0iSXRlbUNoYW5nZVRpbWVQb2ludCIgaWQ9IkxhYmVsSXRlbUNoYW5nZVRpbWVQb2ludCI+JFRleHR7IkZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpIn06PC9sYWJlbD4KICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkNoYW5nZVRpbWVTZWFyY2hUeXBlIiB2YWx1ZT0iVGltZVBvaW50IiAkRGF0YXsiQ2hhbmdlVGltZVNlYXJjaFR5cGU6OlRpbWVQb2ludCJ9Lz4KICAgICAgICAgICAgJERhdGF7Ikl0ZW1DaGFuZ2VUaW1lUG9pbnRTdGFydFN0cmcifSAkRGF0YXsiSXRlbUNoYW5nZVRpbWVQb2ludFN0cmcifSAkRGF0YXsiSXRlbUNoYW5nZVRpbWVQb2ludEZvcm1hdFN0cmcifQogICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9IlJlbW92ZSIgdmFsdWU9IlJlbW92ZSIgdGl0bGU9IiRUZXh0eyJSZW1vdmUgdGhpcyBlbnRyeSJ9Ij4kVGV4dHsiUmVtb3ZlIn08L2J1dHRvbj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgIDxsYWJlbCBmb3I9Ikl0ZW1DaGFuZ2VUaW1lU2xvdCIgaWQ9IkxhYmVsSXRlbUNoYW5nZVRpbWVTbG90Ij4kVGV4dHsiRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJldHdlZW4pIn06PC9sYWJlbD4KICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkNoYW5nZVRpbWVTZWFyY2hUeXBlIiB2YWx1ZT0iVGltZVNsb3QiICREYXRheyJDaGFuZ2VUaW1lU2VhcmNoVHlwZTo6VGltZVNsb3QifS8+CiAgICAgICAgICAgICREYXRheyJJdGVtQ2hhbmdlVGltZVN0YXJ0U3RyZyJ9ICRUZXh0eyJhbmQifSAkRGF0YXsiSXRlbUNoYW5nZVRpbWVTdG9wU3RyZyJ9CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iUmVtb3ZlIiB2YWx1ZT0iUmVtb3ZlIiB0aXRsZT0iJFRleHR7IlJlbW92ZSB0aGlzIGVudHJ5In0iPiRUZXh0eyJSZW1vdmUifTwvYnV0dG9uPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgJERhdGF7IkF0dHJpYnV0ZXNPcmlnU3RyZyJ9CgogICAgPC9maWVsZHNldD4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJDb250ZW50Rm9vdGVyIENlbnRlciI+CiAgICA8YnV0dG9uIGlkPSJTZWFyY2hGb3JtU3VibWl0IiBjbGFzcz0iUHJpbWFyeSBDYWxsRm9yQWN0aW9uIiB2YWx1ZT0iUnVuIFNlYXJjaCI+PHNwYW4+PGkgY2xhc3M9Imljb24tc2VhcmNoIj48L2k+ICRUZXh0eyJSdW4gU2VhcmNoIn08L3NwYW4+PC9idXR0b24+CjwvZGl2PgoKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbiAoKXsKPCEtLSBkdGw6YmxvY2s6U2VhcmNoQUpBWFNob3cgLS0+CiAgICAgICAgQ29yZS5BZ2VudC5TZWFyY2guU2VhcmNoQXR0cmlidXRlQWRkKCIkUURhdGF7IkF0dHJpYnV0ZSJ9Iik7CjwhLS0gZHRsOmJsb2NrOlNlYXJjaEFKQVhTaG93IC0tPgogICAgICAgIENvcmUuQWdlbnQuU2VhcmNoLkFkZGl0aW9uYWxBdHRyaWJ1dGVTZWxlY3Rpb25SZWJ1aWxkKCk7CiAgICB9LCAwKTsKLy9dXT48L3NjcmlwdD4KCjwhLS0gZHRsOmJsb2NrOlNlYXJjaEFKQVggLS0+Cgo8IS0tIGR0bDpibG9jazpTZWFyY2ggLS0+Cgo8IS0tZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlLS0+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwogICAgQ29yZS5BZ2VudC5TZWFyY2guT3BlblNlYXJjaERpYWxvZyggJyRFbnZ7IkFjdGlvbiJ9JyApOwovL11dPjwvc2NyaXB0Pgo8IS0tZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlLS0+Cgo8IS0tIGR0bDpibG9jazpTZWFyY2ggLS0+Cg==
IyAtLQojIEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyLmR0bCAtIHByb3ZpZGVzIG9wZW5zZWFyY2ggZm9ybSBmb3IgQWdlbnRGQVFTZWFyY2gKIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxMyBPVFJTIEFHLCBodHRwOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/Pgo8T3BlblNlYXJjaERlc2NyaXB0aW9uIHhtbG5zPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iIHhtbG5zOmllPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL1NlYXJjaC8yMDA4LyI+CjxTaG9ydE5hbWU+JFF1b3RleyIkQ29uZmlneyJQcm9kdWN0TmFtZSJ9In0gKCRRdW90ZXsiJENvbmZpZ3siRkFROjpGQVFIb29rIn0ifSk8L1Nob3J0TmFtZT4KPERlc2NyaXB0aW9uPiRRdW90ZXsiJENvbmZpZ3siUHJvZHVjdE5hbWUifSJ9ICgkUXVvdGV7IiRDb25maWd7IkZBUTo6RkFRSG9vayJ9In0pPC9EZXNjcmlwdGlvbj4KPElucHV0RW5jb2Rpbmc+JEVudnsiVXNlckNoYXJzZXQifTwvSW5wdXRFbmNvZGluZz4KPFVybCB0eXBlPSJ0ZXh0L2h0bWwiIHRlbXBsYXRlPSIkQ29uZmlneyJIdHRwVHlwZSJ9Oi8vJEVudnsiSFRUUF9IT1NUIn0kRW52eyJCYXNlbGluayJ9QWN0aW9uPUFnZW50RkFRU2VhcmNoO1N1YmFjdGlvbj1TZWFyY2g7TnVtYmVyPXtzZWFyY2hUZXJtc30iIC8+CjxJbWFnZSBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIHR5cGU9ImltYWdlL3gtaWNvbiI+JENvbmZpZ3siSHR0cFR5cGUifTovLyRFbnZ7IkhUVFBfSE9TVCJ9JENvbmZpZ3siRnJvbnRlbmQ6OkltYWdlUGF0aCJ9aWNvbnMvcHJvZHVjdC5pY288L0ltYWdlPgo8L09wZW5TZWFyY2hEZXNjcmlwdGlvbj4K
IyAtLQojIEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQuZHRsIC0gcHJvdmlkZXMgb3BlbnNlYXJjaCBmb3JtIGZvciBBZ2VudEZBUVNlYXJjaAojIENvcHlyaWdodCAoQykgMjAwMS0yMDEzIE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxPcGVuU2VhcmNoRGVzY3JpcHRpb24geG1sbnM9Imh0dHA6Ly9hOS5jb20vLS9zcGVjL29wZW5zZWFyY2gvMS4xLyIgeG1sbnM6aWU9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vU2VhcmNoLzIwMDgvIj4KPFNob3J0TmFtZT4kUXVvdGV7IiRDb25maWd7IlByb2R1Y3ROYW1lIn0ifSAoJFRleHR7IkZBUUZ1bGx0ZXh0In0pPC9TaG9ydE5hbWU+CjxEZXNjcmlwdGlvbj4kUXVvdGV7IiRDb25maWd7IlByb2R1Y3ROYW1lIn0ifSAoJFRleHR7IkZBUUZ1bGx0ZXh0In0pPC9EZXNjcmlwdGlvbj4KPElucHV0RW5jb2Rpbmc+JEVudnsiVXNlckNoYXJzZXQifTwvSW5wdXRFbmNvZGluZz4KPFVybCB0eXBlPSJ0ZXh0L2h0bWwiIHRlbXBsYXRlPSIkQ29uZmlneyJIdHRwVHlwZSJ9Oi8vJEVudnsiSFRUUF9IT1NUIn0kRW52eyJCYXNlbGluayJ9QWN0aW9uPUFnZW50RkFRU2VhcmNoO1N1YmFjdGlvbj1TZWFyY2g7RnVsbHRleHQ9e3NlYXJjaFRlcm1zfSIgLz4KPEltYWdlIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgdHlwZT0iaW1hZ2UveC1pY29uIj4kQ29uZmlneyJIdHRwVHlwZSJ9Oi8vJEVudnsiSFRUUF9IT1NUIn0kQ29uZmlneyJGcm9udGVuZDo6SW1hZ2VQYXRoIn1pY29ucy9wcm9kdWN0LmljbzwvSW1hZ2U+CjwvT3BlblNlYXJjaERlc2NyaXB0aW9uPgo=
IyAtLQojIEFnZW50RkFRU2VhcmNoUmVzdWx0UHJpbnQuZHRsIC0gaHRtbCBmb3IgcHJpbnRpbmcgRkFRIHNlYXJjaCByZXN1bHRzCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKPCEtLSBzdGFydCBmb3JtIC0tPgo8aT4kRGF0YXsiV2FybmluZyJ9PC9pPgo8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMSIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KICAgIDx0cj4KICAgICAgICA8dGQgY2xhc3M9Im1haW5oZWFkIj4kVGV4dHsiU2VhcmNoIn08L3RkPgogICAgPC90cj4KPC90YWJsZT4KPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iNCI+CiAgICA8dHI+CiAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50Ym9keSI+CiAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjMiPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTAlIiBjbGFzcz0iY29udGVudGtleSI+JENvbmZpZ3siRkFROjpGQVFIb29rIn08L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzUlIiBjbGFzcz0iY29udGVudGtleSI+JFRleHR7IlRpdGxlIn08L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTAlIiBjbGFzcz0iY29udGVudGtleSI+JFRleHR7IkNhdGVnb3J5In08L3RkPgoKPCEtLSBkdGw6YmxvY2s6SGVhZGVyTGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMCUiIGNsYXNzPSJjb250ZW50a2V5Ij4kVGV4dHsiTGFuZ3VhZ2UifTwvdGQ+CjwhLS0gZHRsOmJsb2NrOkhlYWRlckxhbmd1YWdlIC0tPgoKICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE1JSIgY2xhc3M9ImNvbnRlbnRrZXkiPiRUZXh0eyJTdGF0ZSJ9PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgY2xhc3M9ImNvbnRlbnRrZXkiPiRUZXh0eyJDaGFuZ2VkIn08L3RkPgogICAgICAgICAgICAgICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkIC0tPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4kUURhdGF7Ik51bWJlciJ9PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnR2YWx1ZSI+JFFEYXRheyJUaXRsZSIsIjQwIn08L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4kUURhdGF7IkNhdGVnb3J5TmFtZSIsIjMwIn08L3RkPgoKPCEtLSBkdGw6YmxvY2s6UmVjb3JkTGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50dmFsdWUiPiRRRGF0YXsiTGFuZ3VhZ2UifTwvdGQ+CjwhLS0gZHRsOmJsb2NrOlJlY29yZExhbmd1YWdlIC0tPgoKICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnR2YWx1ZSI+JFRleHR7IiREYXRheyJTdGF0ZSJ9In08L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4kVGltZUxvbmd7IiREYXRheyJDaGFuZ2VkIn0ifTwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgo8IS0tIGR0bDpibG9jazpSZWNvcmQgLS0+CiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC90ZD4KICAgIDwvdHI+CjwvdGFibGU+CjwhLS0gZW5kIGZvcm0gLS0+Cg==
IyAtLQojIEFnZW50RkFRU2VhcmNoU21hbGwuZHRsIC0gcHJvdmlkZXMgSFRNTCBmb3JtIGZvciBDdXN0b21lckZBUVNlYXJjaC5wbQojIENvcHlyaWdodCAoQykgMjAwMS0yMDEzIE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCjwhLS0gZHRsOmJsb2NrOlNlYXJjaCAtLT4KPGRpdiBjbGFzcz0iTWFpbkJveCBBUklBUm9sZU1haW4iPgogICAgPGgxPiRUZXh0eyJGQVEgU2VhcmNoIn08L2gxPgogICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIENvbGxhcHNlZCI+CiAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0QWN0aW9uIFRvZ2dsZSI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiB0aXRsZT0iJFRleHR7IlNob3cgb3IgaGlkZSB0aGUgY29udGVudCJ9Ij48aSBjbGFzcz0iaWNvbi1jYXJldC1yaWdodCI+PC9pPjxpIGNsYXNzPSJpY29uLWNhcmV0LWRvd24iPjwvaT48L2E+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8aDI+JFRleHR7IlByb2ZpbGUgU2VsZWN0aW9uIn08L2gyPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICA8dWwgY2xhc3M9IkFjdGlvbkxpc3QiPgogICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iJEVudnsiQ0dJSGFuZGxlIn0iIG1ldGhvZD0icG9zdCIgbmFtZT0iY29tcG9zZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IiRFbnZ7IkFjdGlvbiJ9Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IkxvYWRQcm9maWxlIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ik5hdiIgdmFsdWU9IiRRRGF0YXsiTmF2In0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iUHJvZmlsZSI+JFRleHR7IlNlYXJjaCB0ZW1wbGF0ZSJ9PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgJERhdGF7IlByb2ZpbGVzU3RyZyJ9CiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IkNhbGxGb3JBY3Rpb24gU3BhY2luZ1RvcCIgbmFtZT0iU2VsZWN0VGVtcGxhdGUiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IiRUZXh0eyJTZWxlY3QifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0iaWNvbi1jaGVjayI+PC9pPiAkVGV4dHsiU2VsZWN0In08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJDYWxsRm9yQWN0aW9uIFNwYWNpbmdUb3AiIG5hbWU9IkVyYXNlVGVtcGxhdGUiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IiRUZXh0eyJEZWxldGUifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0iaWNvbi10cmFzaCI+PC9pPiAkVGV4dHsiRGVsZXRlIn08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJDYWxsRm9yQWN0aW9uIFNwYWNpbmdUb3AiIG5hbWU9IlNlYXJjaFRlbXBsYXRlIiB0eXBlPSJzdWJtaXQiIHZhbHVlPSIkVGV4dHsiU2VhcmNoIn0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PGkgY2xhc3M9Imljb24tc2VhcmNoIj48L2k+ICRUZXh0eyJTZWFyY2gifTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8L3VsPgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KICAgICAgICA8Zm9ybSBhY3Rpb249IiRFbnZ7IkNHSUhhbmRsZSJ9IiBtZXRob2Q9InBvc3QiIG5hbWU9ImNvbXBvc2UiPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSIkRW52eyJBY3Rpb24ifSIvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJTZWFyY2giLz4KICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iTmF2IiB2YWx1ZT0iJFFEYXRheyJOYXYifSIvPgogICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBUYWJsZVNtYWxsIj4KICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkZ1bGx0ZXh0IiBpZD0iTGFiZWxGdWxsdGV4dCI+JFRleHR7IkZ1bGx0ZXh0In06PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iRnVsbHRleHQiIHZhbHVlPSIkUURhdGF7IkZ1bGx0ZXh0In0iIGNsYXNzPSJXNTBwYyIgLz4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik51bWJlciI+JENvbmZpZ3siRkFROjpGQVFIb29rIn08L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iJENvbmZpZ3siRkFROjpGQVFIb29rIn0iIHR5cGU9InRleHQiIG5hbWU9Ik51bWJlciIgaWQ9Ik51bWJlciIgY2xhc3M9Ilc1MHBjIiB2YWx1ZT0iJFFEYXRheyJOdW1iZXIifSIvPgogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4kVGV4dHsiZS4gZy4gMTAqNTE1NSBvciAxMDU2NTgqIn08L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJUaXRsZSI+JFRleHR7IlRpdGxlIn08L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iJFRleHR7IlRpdGxlIn0iIHR5cGU9InRleHQiIGlkPSJUaXRsZSIgbmFtZT0iVGl0bGUiIHZhbHVlPSIkUURhdGF7IlRpdGxlIn0iIGNsYXNzPSJXNTBwYyIgLz4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IktleXdvcmQiPiRUZXh0eyJLZXl3b3JkIn08L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iJFRleHR7IktleXdvcmQifSIgdHlwZT0idGV4dCIgaWQ9IktleXdvcmQiIG5hbWU9IktleXdvcmQiIHZhbHVlPSIkUURhdGF7IktleXdvcmQifSIgY2xhc3M9Ilc1MHBjIiAvPgogICAgICAgICAgICAgICAgPC9kaXY+Cgo8IS0tIGR0bDpibG9jazpMYW5ndWFnZSAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J0NsZWFyJz48L2Rpdj4KICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ikxhbmd1YWdlSURzIj4kVGV4dHsiTGFuZ3VhZ2UifTwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgJERhdGF7Ikxhbmd1YWdlc1NlbGVjdGlvblN0cmcifQogICAgICAgICAgICAgICAgPC9kaXY+CjwhLS0gZHRsOmJsb2NrOkxhbmd1YWdlIC0tPgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J0NsZWFyJz48L2Rpdj4KICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkNhdGVnb3J5SURzIj4kVGV4dHsiQ2F0ZWdvcnkifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICREYXRheyJDYXRlZ29yaWVzU2VsZWN0aW9uU3RyZyJ9CiAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdDbGVhcic+PC9kaXY+CiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJWYWxpZElEcyI+JFRleHR7IlZhbGlkaXR5In06PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAkRGF0YXsiVmFsaWRTZWxlY3Rpb25TdHJnIn0KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J0NsZWFyJz48L2Rpdj4KICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlN0YXRlSURzIj4kVGV4dHsiU3RhdGUifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICREYXRheyJTdGF0ZVNlbGVjdGlvblN0cmcifQogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nQ2xlYXInPjwvZGl2PgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iQXBwcm92ZWRTZWFyY2giID4kVGV4dHsiQXBwcm92ZWQifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICREYXRheyJBcHByb3ZlZFN0cmcifQogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nQ2xlYXInPjwvZGl2PgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTm9Wb3RlU2V0Ij4kVGV4dHsiVm90ZSJ9OjwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSIkVGV4dHsiTm8gdm90ZSBzZXR0aW5ncyJ9IiB0eXBlPSJyYWRpbyIgIGlkPSJOb1ZvdGVTZXQiIG5hbWU9IlZvdGVTZWFyY2hPcHRpb24iIHZhbHVlPSIiICREYXRheyJWb3RlU2VhcmNoT3B0aW9uOjpOb25lIn0gLz4KICAgICAgICAgICAgICAgICAgICAkVGV4dHsiQWxsIn0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0kVGV4dHsiU3BlY2lmaWMgdm90ZXMifSB0eXBlPSJyYWRpbyIgaWQ9IlZvdGVQb2ludCIgbmFtZT0iVm90ZVNlYXJjaE9wdGlvbiIgIHZhbHVlPSJWb3RlUG9pbnQiICREYXRheyJWb3RlU2VhcmNoT3B0aW9uOjpWb3RlUG9pbnQifSAvPgogICAgICAgICAgICAgICAgICAgICREYXRheyJWb3RlU2VhcmNoVHlwZVNlbGVjdGlvblN0cmcifQogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJWb3RlU2VhcmNoIiB2YWx1ZT0iJFFEYXRheyJWb3RlU2VhcmNoIn0iIGNsYXNzPSJXMjVwYyIvPgogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4kVGV4dHsiZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwIn08L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdDbGVhcic+PC9kaXY+CiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOb1JhdGVTZXQiPiRUZXh0eyJSYXRlIn06PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IiRUZXh0eyJObyByYXRlIHNldHRpbmdzIn0iIHR5cGU9InJhZGlvIiAgaWQ9Ik5vUmF0ZVNldCIgbmFtZT0iUmF0ZVNlYXJjaE9wdGlvbiIgdmFsdWU9IiIgJERhdGF7IlJhdGVTZWFyY2hPcHRpb246Ok5vbmUifSAvPgogICAgICAgICAgICAgICAgICAgICRUZXh0eyJBbGwifQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSRUZXh0eyJTcGVjaWZpYyByYXRlIn0gdHlwZT0icmFkaW8iIGlkPSJSYXRlUG9pbnQiIG5hbWU9IlJhdGVTZWFyY2hPcHRpb24iICB2YWx1ZT0iUmF0ZVBvaW50IiAkRGF0YXsiUmF0ZVNlYXJjaE9wdGlvbjo6Vm90ZVBvaW50In0gLz4KICAgICAgICAgICAgICAgICAgICAkRGF0YXsiUmF0ZVNlYXJjaFR5cGVTZWxlY3Rpb25TdHJnIn0KICAgICAgICAgICAgICAgICAgICAkRGF0YXsiUmF0ZVNlYXJjaFNlbGVjdGlvblN0cmcifQogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4kVGV4dHsiZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUifTwvcD4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J0NsZWFyJz48L2Rpdj4KICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkNyZWF0ZWRVc2VySURzIj4kVGV4dHsiQ3JlYXRlZCBieSJ9ICRUZXh0eyJBZ2VudCJ9OjwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgJERhdGF7IkNyZWF0ZWRVc2VyU3RyZyJ9CiAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdDbGVhcic+PC9kaXY+CiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJMYXN0Q2hhbmdlZFVzZXJJRHMiPiRUZXh0eyJMYXN0IGNoYW5nZWQgYnkifSAkVGV4dHsiQWdlbnQifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICREYXRheyJMYXN0Q2hhbmdlZFVzZXJTdHJnIn0KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J0NsZWFyJz48L2Rpdj4KICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlRpbWVTZWFyY2hUeXBlIj4kVGV4dHsiRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iJFRleHR7Ik5vIHRpbWUgc2V0dGluZ3MifSIgdHlwZT0icmFkaW8iIGlkPSJOb1RpbWVTZXQiIG5hbWU9IlRpbWVTZWFyY2hUeXBlIiB2YWx1ZT0iIiAkRGF0YXsiVGltZVNlYXJjaFR5cGU6Ok5vbmUifSAvPgogICAgICAgICAgICAgICAgICAgICRUZXh0eyJBbGwifQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSIkVGV4dHsiU3BlY2lmaWMgZGF0ZSJ9IiB0eXBlPSJyYWRpbyIgaWQ9IkRhdGVQb2ludCIgbmFtZT0iVGltZVNlYXJjaFR5cGUiICB2YWx1ZT0iVGltZVBvaW50IiAkRGF0YXsiVGltZVNlYXJjaFR5cGU6OlRpbWVQb2ludCJ9IC8+CiAgICAgICAgICAgICAgICAgICAgJERhdGF7Ikl0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydFN0cmcifSAkRGF0YXsiSXRlbUNyZWF0ZVRpbWVQb2ludFN0cmcifSAkRGF0YXsiSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdFN0cmcifQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSIkVGV4dHsiRGF0ZSByYW5nZSJ9IiB0eXBlPSJyYWRpbyIgaWQ9IkRhdGVSYW5nZSIgbmFtZT0iVGltZVNlYXJjaFR5cGUiIHZhbHVlPSJUaW1lU2xvdCIgJERhdGF7IlRpbWVTZWFyY2hUeXBlOjpUaW1lU2xvdCJ9IC8+CiAgICAgICAgICAgICAgICAgICAgJERhdGF7Ikl0ZW1DcmVhdGVUaW1lU3RhcnRTdHJnIn0gJFRleHR7ImFuZCJ9ICREYXRheyJJdGVtQ3JlYXRlVGltZVN0b3BTdHJnIn0KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J0NsZWFyJz48L2Rpdj4KICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkNoYW5nZVRpbWVTZWFyY2hUeXBlIj4kVGV4dHsiRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iJFRleHR7Ik5vIHRpbWUgc2V0dGluZ3MifSIgdHlwZT0icmFkaW8iIGlkPSJOb0NoYW5nZVRpbWVTZXQiIG5hbWU9IkNoYW5nZVRpbWVTZWFyY2hUeXBlIiB2YWx1ZT0iIiAkRGF0YXsiQ2hhbmdlVGltZVNlYXJjaFR5cGU6Ok5vbmUifSAvPgogICAgICAgICAgICAgICAgICAgICRUZXh0eyJBbGwifQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSIkVGV4dHsiU3BlY2lmaWMgZGF0ZSJ9IiB0eXBlPSJyYWRpbyIgaWQ9IkNoYW5nZURhdGVQb2ludCIgbmFtZT0iQ2hhbmdlVGltZVNlYXJjaFR5cGUiIHZhbHVlPSJUaW1lUG9pbnQiICREYXRheyJDaGFuZ2VUaW1lU2VhcmNoVHlwZTo6VGltZVBvaW50In0gLz4KICAgICAgICAgICAgICAgICAgICAkRGF0YXsiSXRlbUNoYW5nZVRpbWVQb2ludFN0YXJ0U3RyZyJ9ICREYXRheyJJdGVtQ2hhbmdlVGltZVBvaW50U3RyZyJ9ICREYXRheyJJdGVtQ2hhbmdlVGltZVBvaW50Rm9ybWF0U3RyZyJ9CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IiRUZXh0eyJEYXRlIHJhbmdlIn0iIHR5cGU9InJhZGlvIiBpZD0iQ2hhbmdlRGF0ZVJhbmdlIiBuYW1lPSJDaGFuZ2VUaW1lU2VhcmNoVHlwZSIgdmFsdWU9IlRpbWVTbG90IiAkRGF0YXsiQ2hhbmdlVGltZVNlYXJjaFR5cGU6OlRpbWVTbG90In0gLz4KICAgICAgICAgICAgICAgICAgICAkRGF0YXsiSXRlbUNoYW5nZVRpbWVTdGFydFN0cmcifSAkVGV4dHsiYW5kIn0gJERhdGF7Ikl0ZW1DaGFuZ2VUaW1lU3RvcFN0cmcifQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIFRhYmxlU21hbGwiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iVzc1cGMgU3BhY2luZ1RvcCBGQVFEaXZpZGVyIj48L2Rpdj4KICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlNhdmVQcm9maWxlIj4kVGV4dHsiU2F2ZSBhcyBUZW1wbGF0ZT8ifTwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJTYXZlIGFzIFRlbXBsYXRlIiB0eXBlPSJjaGVja2JveCIgaWQ9IlNhdmVQcm9maWxlIiBuYW1lPSJTYXZlUHJvZmlsZSIgLz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iUHJvZmlsZSI+JFRleHR7IlRlbXBsYXRlIE5hbWUifTwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJQaWNrIGEgcHJvZmlsZSBuYW1lIiB0eXBlPSJ0ZXh0IiBpZD0iUHJvZmlsZSIgbmFtZT0iUHJvZmlsZSIgdmFsdWU9IiRRRGF0YXsiUHJvZmlsZSJ9IiAvPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgIDxkaXYgaWQ9IkJvdHRvbUFjdGlvblJvdyIgY2xhc3M9IkNlbnRlciBTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9IlN1Ym1pdCIgdHlwZT0ic3VibWl0IiBjbGFzcz0iUHJpbWFyeSBDYWxsRm9yQWN0aW9uIiB2YWx1ZT0iJFRleHR7IlNlYXJjaCJ9Ij48c3Bhbj48aSBjbGFzcz0iaWNvbi1zZWFyY2giPjwvaT4gJFRleHR7IlNlYXJjaCJ9PC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Zvcm0+CiAgICA8L2Rpdj4KPC9kaXY+CjwhLS0gZHRsOmJsb2NrOlNlYXJjaCAtLT4K
IyAtLQojIEFnZW50RkFRWm9vbS5kdGwgLSBwcm92aWRlcyBIVE1MIGZvciBBZ2VudEZBUVpvb20ucG0KIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxMyBPVFJTIEFHLCBodHRwOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgo8ZGl2IGNsYXNzPSJNYWluQm94IEFSSUFSb2xlTWFpbiI+CiAgICA8ZGl2IGNsYXNzPSJDbGVhckxlZnQiPjwvZGl2PgogICAgPGRpdiBjbGFzcz0iSGVhZGxpbmUiPgogICAgICAgIDxoMSB0aXRsZT0iJENvbmZpZ3siRkFROjpGQVFIb29rIn06ICRRRGF0YXsiTnVtYmVyIn0gJm5kYXNoOyAkUURhdGF7IlRpdGxlIiwgIjQwIn0iPgogICAgICAgICAgICAkQ29uZmlneyJGQVE6OkZBUUhvb2sifTogJERhdGF7Ik51bWJlciJ9IDxzcGFuPiZtZGFzaDs8L3NwYW4+ICRRRGF0YXsiVGl0bGUiLCAiNjAifQogICAgICAgIDwvaDE+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJGQVFQYXRoQ2F0ZWdvcnkiPgogICAgICAgIDxoMz4KPCEtLSBkdGw6YmxvY2s6RkFRUGF0aENhdGVnb3J5RWxlbWVudCAtLT4KICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj1BZ2VudEZBUUV4cGxvcmVyO0NhdGVnb3J5SUQ9JExRRGF0YXsiQ2F0ZWdvcnlJRCJ9O05hdj0kTFFEYXRheyJOYXYifSI+CiAgICAgICAgICAgICAgICAkUURhdGF7Ik5hbWUifQogICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDxzcGFuPiRDb25maWd7IkZBUTo6RXhwbG9yZXI6OlBhdGg6OlNlcGFyYXRvciJ9PC9zcGFuPgo8IS0tIGR0bDpibG9jazpGQVFQYXRoQ2F0ZWdvcnlFbGVtZW50IC0tPgogICAgICAgIDwvaDM+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJMYXlvdXRGaXhlZFNpZGViYXIgU2lkZWJhckxhc3QiPgogICAgICAgIDxkaXYgY2xhc3M9IlNpZGViYXJDb2x1bW4iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8aDI+JFRleHR7IkZBUSBJbmZvcm1hdGlvbiJ9PC9oMj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgRml4ZWRMYWJlbFNtYWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPiRUZXh0eyJDYXRlZ29yeSJ9OjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSIgdGl0bGU9IiRUZXh0eyIkRGF0YXsiQ2F0ZWdvcnlOYW1lIn0ifSI+JFRleHR7IiREYXRheyJDYXRlZ29yeU5hbWUifSIsIjE4In08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIEZpeGVkTGFiZWxTbWFsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD4kVGV4dHsiS2V5d29yZHMifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiPgo8IS0tIGR0bDpibG9jazpLZXl3b3JkcyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249QWdlbnRGQVFTZWFyY2g7U3ViYWN0aW9uPVNlYXJjaDtLZXl3b3JkPSRMUURhdGF7IktleXdvcmQifSIgdGl0bGU9IiRRRGF0YXsiS2V5d29yZCJ9Ij4kUURhdGF7IktleXdvcmQifTwvYT4KPCEtLSBkdGw6YmxvY2s6S2V5d29yZHMgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgRml4ZWRMYWJlbFNtYWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPiRUZXh0eyJTdGF0ZSJ9OjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSIgdGl0bGU9IiRUZXh0eyIkRGF0YXsiU3RhdGUifSJ9Ij4kVGV4dHsiJERhdGF7IlN0YXRlIn0iLCIyNSJ9PC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+JFRleHR7IlZhbGlkaXR5In06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIiB0aXRsZT0iJFRleHR7IiREYXRheyJWYWxpZCJ9In0iPiRUZXh0eyIkRGF0YXsiVmFsaWQifSIsIjI1In08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPCEtLSBkdGw6YmxvY2s6TGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD4kVGV4dHsiTGFuZ3VhZ2UifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiIHRpdGxlPSIkVGV4dHsiJERhdGF7Ikxhbmd1YWdlIn0ifSI+JFRleHR7IiREYXRheyJMYW5ndWFnZSJ9IiwiMTgifTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgo8IS0tIGR0bDpibG9jazpMYW5ndWFnZSAtLT4KCjwhLS0gZHRsOmJsb2NrOlZpZXdBcHByb3ZhbCAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPiRUZXh0eyJBcHByb3ZhbCJ9OjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSIgdGl0bGU9IiRUZXh0eyIkRGF0YXsiQXBwcm92YWwifSJ9Ij4kVGV4dHsiJERhdGF7IkFwcHJvdmFsIn0iLCIxOCJ9PC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CjwhLS0gZHRsOmJsb2NrOlZpZXdBcHByb3ZhbCAtLT4KCjwhLS0gZHRsOmJsb2NrOlZpZXdSYXRpbmcgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD4kVGV4dHsiUmF0aW5nIn06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iVmFsdWUiIHRpdGxlPSIkVGV4dHsiUmF0aW5nICREYXRheyJWb3RlUmVzdWx0In0lIn0iPgoKPCEtLSBkdGw6YmxvY2s6UmF0ZVN0YXJzIC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iUmF0ZVN0YXIiPjxpIGNsYXNzPSJpY29uLXN0YXIiPjwvaT48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6UmF0ZVN0YXJzIC0tPgo8IS0tIGR0bDpibG9jazpSYXRlU3RhcnNDb3VudCAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJhdGVTdGFyVGV4dCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFFEYXRheyJTdGFycyJ9ICRUZXh0eyJvdXQgb2YgNSJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6UmF0ZVN0YXJzQ291bnQgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CjwhLS0gZHRsOmJsb2NrOlZpZXdSYXRpbmcgLS0+Cgo8IS0tIGR0bDpibG9jazpWaWV3Vm90ZXMgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD4kVGV4dHsiVm90ZXMifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiIHRpdGxlPSIkVGV4dHsiJERhdGF7IlZvdGVzIn0ifSI+JFRleHR7IiREYXRheyJWb3RlcyJ9IiwiMTgifTwvcD4KPCEtLSBkdGw6YmxvY2s6Vmlld1ZvdGVzIC0tPgo8IS0tIGR0bDpibG9jazpWaWV3Tm9Wb3RlcyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPiRUZXh0eyJWb3RlcyJ9OjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSIgdGl0bGU9IiRUZXh0eyJObyB2b3RlcyBmb3VuZCEifSI+JFRleHR7Ik5vIHZvdGVzIGZvdW5kISBCZSB0aGUgZmlyc3Qgb25lIHRvIHJhdGUgdGhpcyBGQVEgYXJ0aWNsZS4ifTwvcD4KPCEtLSBkdGw6YmxvY2s6Vmlld05vVm90ZXMgLS0+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+JFRleHR7IkNyZWF0ZWQifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiPiRUaW1lU2hvcnR7IiREYXRheyJDcmVhdGVkIn0ifSAgKCREYXRheyJDcmVhdGVkQnlVc2VyIn0pPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+JFRleHR7IkNoYW5nZWQifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiPiRUaW1lU2hvcnR7IiREYXRheyJDaGFuZ2VkIn0ifSAgKCREYXRheyJDaGFuZ2VkQnlVc2VyIn0pPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCjwhLS0gZHRsOmJsb2NrOkxpbmtUYWJsZVNpbXBsZSAtLT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIERvbnRQcmludCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxoMj4kVGV4dHsiTGlua2VkIE9iamVjdHMifTwvaDI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICREYXRheyJMaW5rVGFibGVTdHJnIn0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6TGlua1RhYmxlU2ltcGxlIC0tPgoKICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udHJvbFJvdyI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJBZGRpdGlvbmFsSW5mb3JtYXRpb24iPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iQWN0aW9uUm93Ij4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQWN0aW9ucyI+Cgo8IS0tIGR0bDpibG9jazpNZW51SXRlbSAtLT4KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn0kRGF0YXsiTGluayJ9IiBpZD0iJFFEYXRheyJNZW51SUQifSIgY2xhc3M9IiRRRGF0YXsiQ2xhc3MifSIgJERhdGF7IkxpbmtQYXJhbSJ9IHRpdGxlPSIkVGV4dHsiJERhdGF7IkRlc2NyaXB0aW9uIn0ifSI+JFRleHR7IiREYXRheyJOYW1lIn0ifTwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgoKPCEtLSBkdGw6YmxvY2s6U2hvd0NvbmZpcm1hdGlvbkRpYWxvZyAtLT4KPCEtLWR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZS0tPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ly88IVtDREFUQVsKLypnbG9iYWwgRkFROiB0cnVlICovCiAgICBGQVEuQWdlbnQuQ29uZmlybWF0aW9uRGlhbG9nLkJpbmRDb25maXJtYXRpb25EaWFsb2coewogICAgICAgIEVsZW1lbnRJRDogICAgICAgICAgICAgICAgICAnJERhdGF7Ik1lbnVJRCJ9JywKICAgICAgICBFbGVtZW50U2VsZWN0b3I6ICAgICAgICAgICAgJyREYXRheyJFbGVtZW50U2VsZWN0b3IifScsCiAgICAgICAgRGlhbG9nQ29udGVudFF1ZXJ5U3RyaW5nOiAgICckRGF0YXsiRGlhbG9nQ29udGVudFF1ZXJ5U3RyaW5nIn0nLAogICAgICAgIENvbmZpcm1lZEFjdGlvblF1ZXJ5U3RyaW5nOiAnJERhdGF7IkNvbmZpcm1lZEFjdGlvblF1ZXJ5U3RyaW5nIn0nLAogICAgICAgIERpYWxvZ1RpdGxlOiAgICAgICAgICAgICAgICAnJERhdGF7IkRpYWxvZ1RpdGxlIn0nLAogICAgICAgIFRyYW5zbGF0ZWRUZXh0OiAgICAgICAgICAgICB7CiAgICAgICAgICAgIFllczogJyRKU1RleHR7IlllcyJ9JywKICAgICAgICAgICAgTm86ICAnJEpTVGV4dHsiTm8ifScsCiAgICAgICAgICAgIE9rOiAgJyRKU1RleHR7Ik9rIn0nCiAgICAgICAgfQogICAgfSk7Ci8vXV0+PC9zY3JpcHQ+CjwhLS1kdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUtLT4KPCEtLSBkdGw6YmxvY2s6U2hvd0NvbmZpcm1hdGlvbkRpYWxvZyAtLT4KCjwhLS0gZHRsOmJsb2NrOk1lbnVJdGVtIC0tPgoKICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJTcGFjaW5nVG9wIj48L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgaWQ9IkZBUUJvZHkiPgoKPCEtLSBkdGw6YmxvY2s6QXR0YWNobWVudEhlYWRlciAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldEJveCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRkFRQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkFydGljbGVGQVFIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPiRUZXh0eyJBdHRhY2htZW50cyJ9OjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJBcnRpY2xlRkFRQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtZXNzYWdlIj4KCjwhLS0gZHRsOmJsb2NrOkF0dGFjaG1lbnRSb3cgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkRvd25sb2FkQXR0YWNobWVudCIgdGl0bGU9IiRUZXh0eyJEb3dubG9hZCBBdHRhY2htZW50In0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7IkFjdGlvbiJ9O1N1YmFjdGlvbj1Eb3dubG9hZEF0dGFjaG1lbnQ7SXRlbUlEPSRMUURhdGF7Ikl0ZW1JRCJ9O0ZpbGVJRD0kTFFEYXRheyJGaWxlSUQifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUURhdGF7IkZpbGVuYW1lIn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsICRRRGF0YXsiRmlsZXNpemUifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIvPgo8IS0tIGR0bDpibG9jazpBdHRhY2htZW50Um93IC0tPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpBdHRhY2htZW50SGVhZGVyIC0tPgoKPCEtLSBkdGw6YmxvY2s6RkFRQ29udGVudCAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0QWN0aW9uIFRvZ2dsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPUFnZW50VGlja2V0Wm9vbTtUaWNrZXRJRD0kTFFEYXRheyJUaWNrZXRJRCJ9O0FydGljbGVJRD0kTFFEYXRheyJBcnRpY2xlSUQifSIgdGl0bGU9IiRUZXh0eyJTaG93IG9yIGhpZGUgdGhlIGNvbnRlbnQifSI+PGkgY2xhc3M9Imljb24tY2FyZXQtcmlnaHQiPjwvaT48aSBjbGFzcz0iaWNvbi1jYXJldC1kb3duIj48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGgyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRleHR7IiREYXRheyJDYXB0aW9uIn0ifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkZBUVN0YXRlTmFtZSI+KCRUZXh0eyIkRGF0YXsiU3RhdGVOYW1lIn0ifSk8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvaDI+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CjwhLS0gZHRsOmJsb2NrOkZBUUNvbnRlbnRIVE1MIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgojIFVzZSB0aGUgSFRNTDUgc2FuZGJveCBhdHRyaWJ1dGUgdG8gcHJldmVudCBwbHVnaW5zIGFuZCBzY3JpcHRzIGZyb20gYmVpbmcgZXhlY3V0ZWQgaW4gdGhlIGJyb3dzZXIuCiMgVXNlIElFJ3MgKG5vbi1zdGFuZGFyZCkgc2VjdXJpdHkgYXR0cmlidXRlIHRvIGFjaGlldmUgc29tZXRoaW5nIHNpbWlsYXIgaW4gb2xkZXIgSUUgYnJvd3NlcnMuIEFwcGVuZCBzZXNzaW9uIGluZm8gdG8gVVJMIGJlY2F1c2UgSUUgd2lsbCBub3Qgc2VuZCBjb29raWVzLgojIFNldCAnYWxsb3ctcG9wdXBzJyB0byBhbGxvdyBJRTEwKyB0byBvcGVuIGxpbmtzLiByZWY6IGh0dHA6Ly93d3cudzMub3JnL2h0bWwvd2cvd2lraS9DaGFuZ2VQcm9wb3NhbHMvc2FuZGJveF9hbGxvd19wb3B1cHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpZnJhbWUgc2FuZGJveD0iYWxsb3ctc2FtZS1vcmlnaW4gYWxsb3ctcG9wdXBzIiBzZWN1cml0eT0icmVzdHJpY3RlZCIgY2xhc3M9IkZBUUZpZWxkIiBpZD0iSWZyYW1lRkFRJFFEYXRheyJGaWVsZCJ9IiBvbmxvYWQ9ImlmICh0eXBlb2YgRkFRID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgRkFRLkFnZW50ID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgRkFRLkFnZW50LkZBUVpvb20gPT09ICdvYmplY3QnKSB7IEZBUS5BZ2VudC5GQVFab29tLklmcmFtZUF1dG9IZWlnaHQoJCgnI0lmcmFtZUZBUSRRRGF0YXsiRmllbGQifScpKTsgfTsiIHNyYz0iIyIgZGF0YS1zcmM9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249QWdlbnRGQVFab29tO1N1YmFjdGlvbj1IVE1MVmlldztJdGVtSUQ9JFFEYXRheyJJdGVtSUQifTtGaWVsZD0kUURhdGF7IkZpZWxkIn07JFFFbnZ7IlNlc3Npb25OYW1lIn09JFFFbnZ7IlNlc3Npb25JRCJ9Ij48L2lmcmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CjwhLS0gZHRsOmJsb2NrOkZBUUNvbnRlbnRIVE1MIC0tPgo8IS0tIGR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZSAtLT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCgogICAgQ29yZS5Db25maWcuU2V0KCdGQVE6OkZyb250ZW5kOjpBZ2VudEhUTUxGaWVsZEhlaWdodERlZmF1bHQnLCBwYXJzZUludCgiJENvbmZpZ3siRkFROjpGcm9udGVuZDo6QWdlbnRIVE1MRmllbGRIZWlnaHREZWZhdWx0In0iIHx8IDAsIDEwKSk7CiAgICBDb3JlLkNvbmZpZy5TZXQoJ0ZBUTo6RnJvbnRlbmQ6OkFnZW50SFRNTEZpZWxkSGVpZ2h0TWF4JywgcGFyc2VJbnQoIiRDb25maWd7IkZBUTo6RnJvbnRlbmQ6OkFnZW50SFRNTEZpZWxkSGVpZ2h0TWF4In0iIHx8IDAsIDEwKSk7CgogICAgLy8gY29weSBkYXRhLXNyYyBhdHRyaWJ1dGUgdG8gc3JjIGF0dHJpYnV0ZSBmb3IgYWxsIGlmcmFtZXMgdG8gY29ycmVjdGx5IGRpc3BsYXkgaXRzIGNvbnRlbnRzIGFmdGVyIEpTIGlzIGZ1bGx5IGxvYWRlZAogICAgJCgnaWZyYW1lJykuZWFjaChmdW5jdGlvbigpewogICAgICAgICQodGhpcykuYXR0cigic3JjIiwgJCh0aGlzKS5hdHRyKCJkYXRhLXNyYyIpICk7CiAgICB9KTsKLy9dXT48L3NjcmlwdD4KPCEtLSBkdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUgLS0+CjwhLS0gZHRsOmJsb2NrOkZBUUNvbnRlbnRQbGFpbiAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQXJ0aWNsZUZBUUNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJERhdGF7IkNvbnRlbnQifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpGQVFDb250ZW50UGxhaW4gLS0+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6RkFRQ29udGVudCAtLT4KCjwhLS0gZHRsOmJsb2NrOkZBUVZvdGluZyAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0QWN0aW9uIFRvZ2dsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPUFnZW50VGlja2V0Wm9vbTtUaWNrZXRJRD0kTFFEYXRheyJUaWNrZXRJRCJ9O0FydGljbGVJRD0kTFFEYXRheyJBcnRpY2xlSUQifSIgdGl0bGU9IiRUZXh0eyJTaG93IG9yIGhpZGUgdGhlIGNvbnRlbnQifSI+PGkgY2xhc3M9Imljb24tY2FyZXQtcmlnaHQiPjwvaT48aSBjbGFzcz0iaWNvbi1jYXJldC1kb3duIj48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGgyPiRUZXh0eyJSYXRpbmcifTwvaDI+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRkFRVm90aW5nIENvbnRlbnQiIGlkPSJGQVFWb3RpbmciPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJBcnRpY2xlRkFRQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iQ2VudGVyIj4kVGV4dHsiSG93IGhlbHBmdWwgd2FzIHRoaXMgYXJ0aWNsZT8gUGxlYXNlIGdpdmUgdXMgeW91ciByYXRpbmcgYW5kIGhlbHAgdG8gaW1wcm92ZSB0aGUgRkFRIERhdGFiYXNlLiBUaGFuayBZb3UhIn08L3A+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSIkRW52eyJDR0lIYW5kbGUifSIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBuYW1lPSJGQVFWb3RlIiBjbGFzcz0iRkFRVm90ZUZvcm0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iUmF0ZUJ1dHRvbnMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+JFRleHR7Im5vdCBoZWxwZnVsIn08L2xpPgo8IS0tIGR0bDpibG9jazpGQVFWb3RpbmdSYXRlUm93IC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgaWQ9IlJhdGVCdXR0b24kRGF0YXsiVmFsdWUifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iUmF0ZUJ1dHRvbiBSYXRlVW5DaGVja2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iaWNvbi1zdGFyLWVtcHR5Ij48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tc3RhciI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRRRGF0YXsiVGl0bGUifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgo8IS0tIGR0bDpibG9jazpGQVFWb3RpbmdSYXRlUm93IC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+JFRleHR7InZlcnkgaGVscGZ1bCJ9PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiciBjbGFzcz0iQ2xlYXIiIC8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iUHJpbWFyeSBDYWxsRm9yQWN0aW9uIEhpZGRlbiIgaWQ9IlJhdGVTdWJtaXRCdXR0b24iIG5hbWU9ImJ0biIgdmFsdWU9IiRUZXh0eyJWb3RlIn0iPjxzcGFuPjxpIGNsYXNzPSJpY29uLWNoZWNrIj48L2k+ICRUZXh0eyJWb3RlIn08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iQWdlbnRGQVFab29tIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iVm90ZSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkNhdGVnb3J5SUQiIHZhbHVlPSIkUURhdGF7IkNhdGVnb3J5SUQifSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ikl0ZW1JRCIgdmFsdWU9IiRRRGF0YXsiSXRlbUlEIn0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJSYXRlIiB2YWx1ZT0iIiBpZD0iUmF0ZVZhbHVlIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CjwhLS0gZHRsOmJsb2NrOkZBUVZvdGluZyAtLT4KCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CjwhLS0gZHRsOmJsb2NrOkxpbmtUYWJsZUNvbXBsZXggLS0+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgJERhdGF7IkxpbmtUYWJsZVN0cmcifQogICAgICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6TGlua1RhYmxlQ29tcGxleCAtLT4KCiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgPC9kaXY+CjwvZGl2PgoKPCEtLSBkdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUgLS0+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwogICAgJCgndWwuQWN0aW9ucyBhLkFzUG9wdXAnKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgIENvcmUuVUkuUG9wdXAuT3BlblBvcHVwICgkKHRoaXMpLmF0dHIoJ2hyZWYnKSwgJ0FjdGlvbicpOwogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0pOwoKICAgICQoJy5SYXRlQnV0dG9uJykuYmluZCgnY2xpY2snLCBmdW5jdGlvbiAoRXZlbnQpIHsKICAgICAgICB2YXIgUmF0ZU51bWJlciA9IHBhcnNlSW50KCQodGhpcykuY2xvc2VzdCgnbGknKS5hdHRyKCdpZCcpLnJlcGxhY2UoL1JhdGVCdXR0b24vLCAnJyksIDEwKTsKICAgICAgICAkKCcjUmF0ZVZhbHVlJykudmFsKFJhdGVOdW1iZXIpOwogICAgICAgICQoJyNSYXRlU3VibWl0QnV0dG9uJykuZmFkZUluKDI1MCk7CiAgICAgICAgJCgnI0ZBUVZvdGluZycpLmZpbmQoJy5SYXRlQnV0dG9uJykuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIEl0ZW1SYXRlTnVtYmVyID0gcGFyc2VJbnQoJCh0aGlzKS5jbG9zZXN0KCdsaScpLmF0dHIoJ2lkJykucmVwbGFjZSgvUmF0ZUJ1dHRvbi8sICcnKSwgMTApOwogICAgICAgICAgICBpZiAoIEl0ZW1SYXRlTnVtYmVyIDw9IFJhdGVOdW1iZXIgKSB7CiAgICAgICAgICAgICAgICAkKHRoaXMpLmFkZENsYXNzKCdSYXRlQ2hlY2tlZCcpOwogICAgICAgICAgICAgICAgJCh0aGlzKS5yZW1vdmVDbGFzcygnUmF0ZVVuQ2hlY2tlZCcpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygnUmF0ZVVuQ2hlY2tlZCcpOwogICAgICAgICAgICAgICAgJCh0aGlzKS5yZW1vdmVDbGFzcygnUmF0ZUNoZWNrZWQnKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfSk7Ci8vXV0+PC9zY3JpcHQ+CjwhLS0gZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlIC0tPgo=
IyAtLQojIEFnZW50RkFRWm9vbVNtYWxsLmR0bCAtIHByb3ZpZGVzIEhUTUwgc21hbGwgZm9yIEFnZW50RkFRWm9vbS5wbQojIENvcHlyaWdodCAoQykgMjAwMS0yMDEzIE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCjxkaXYgY2xhc3M9Ik1haW5Cb3ggQVJJQVJvbGVNYWluIj4KICAgIDxkaXYgY2xhc3M9IkNsZWFyTGVmdCI+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJIZWFkbGluZSI+CiAgICAgICAgPGgxIHRpdGxlPSIkVGV4dHsiWm9vbSJ9ICRDb25maWd7IkZBUTo6RkFRSG9vayJ9OiAkUURhdGF7Ik51bWJlciJ9ICZuZGFzaDsgJFFEYXRheyJUaXRsZSIsICI0MCJ9Ij4KICAgICAgICAgICAgJENvbmZpZ3siRkFROjpGQVFIb29rIn06ICREYXRheyJOdW1iZXIifSA8c3Bhbj4mbWRhc2g7PC9zcGFuPiAkUURhdGF7IlRpdGxlIiwgIjYwIn0KICAgICAgICA8L2gxPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iRkFRUGF0aENhdGVnb3J5Ij4KICAgICAgICA8aDM+Cgo8IS0tIGR0bDpibG9jazpGQVFQYXRoQ2F0ZWdvcnlFbGVtZW50IC0tPgogICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPUFnZW50RkFRRXhwbG9yZXI7Q2F0ZWdvcnlJRD0kTFFEYXRheyJDYXRlZ29yeUlEIn07TmF2PSRMUURhdGF7Ik5hdiJ9Ij4KICAgICAgICAgICAgICAgICRRRGF0YXsiTmFtZSJ9CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPHNwYW4+JENvbmZpZ3siRkFROjpFeHBsb3Jlcjo6UGF0aDo6U2VwYXJhdG9yIn08L3NwYW4+CjwhLS0gZHRsOmJsb2NrOkZBUVBhdGhDYXRlZ29yeUVsZW1lbnQgLS0+CgogICAgICAgIDwvaDM+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkxheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyTGFzdCI+CiAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxoMj4kVGV4dHsiRkFRIEluZm9ybWF0aW9uIn08L2gyPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZExhYmVsU21hbGwiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+JFRleHR7IkNhdGVnb3J5In06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIiB0aXRsZT0iJFRleHR7IiREYXRheyJDYXRlZ29yeU5hbWUifSJ9Ij4kVGV4dHsiJERhdGF7IkNhdGVnb3J5TmFtZSJ9In08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIEZpeGVkTGFiZWxTbWFsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD4kVGV4dHsiS2V5d29yZHMifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiPgo8IS0tIGR0bDpibG9jazpLZXl3b3JkcyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249QWdlbnRGQVFTZWFyY2hTbWFsbDtTdWJhY3Rpb249U2VhcmNoO0tleXdvcmQ9JExRRGF0YXsiS2V5d29yZCJ9IiB0aXRsZT0iJFFEYXRheyJLZXl3b3JkIn0iPiRRRGF0YXsiS2V5d29yZCJ9PC9hPgo8IS0tIGR0bDpibG9jazpLZXl3b3JkcyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZExhYmVsU21hbGwiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+JFRleHR7IlN0YXRlIn06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIiB0aXRsZT0iJFRleHR7IiREYXRheyJTdGF0ZSJ9In0iPiRUZXh0eyIkRGF0YXsiU3RhdGUifSJ9PC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+JFRleHR7IlZhbGlkaXR5In06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIiB0aXRsZT0iJFRleHR7IiREYXRheyJWYWxpZCJ9In0iPiRUZXh0eyIkRGF0YXsiVmFsaWQifSIsIjI1In08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCjwhLS0gZHRsOmJsb2NrOkxhbmd1YWdlIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+JFRleHR7Ikxhbmd1YWdlIn06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIiB0aXRsZT0iJFRleHR7IiREYXRheyJMYW5ndWFnZSJ9In0iPiRUZXh0eyIkRGF0YXsiTGFuZ3VhZ2UifSJ9PC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CjwhLS0gZHRsOmJsb2NrOkxhbmd1YWdlIC0tPgoKPCEtLSBkdGw6YmxvY2s6Vmlld0FwcHJvdmFsIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+JFRleHR7IkFwcHJvdmFsIn06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIiB0aXRsZT0iJFRleHR7IiREYXRheyJBcHByb3ZhbCJ9In0iPiRUZXh0eyIkRGF0YXsiQXBwcm92YWwifSJ9PC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CjwhLS0gZHRsOmJsb2NrOlZpZXdBcHByb3ZhbCAtLT4KCjwhLS0gZHRsOmJsb2NrOlZpZXdSYXRpbmcgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD4kVGV4dHsiUmF0aW5nIn06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iVmFsdWUiIHRpdGxlPSIkVGV4dHsiUmF0aW5nICREYXRheyJWb3RlUmVzdWx0In0lIn0iPgo8IS0tIGR0bDpibG9jazpSYXRlU3RhcnMgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJSYXRlU3RhciI+U3Rhcjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpSYXRlU3RhcnMgLS0+CjwhLS0gZHRsOmJsb2NrOlJhdGVTdGFyc0NvdW50IC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iUmF0ZVN0YXJUZXh0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUURhdGF7IlN0YXJzIn0gJFRleHR7Im91dCBvZiA1In0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpSYXRlU3RhcnNDb3VudCAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPCEtLSBkdGw6YmxvY2s6Vmlld1JhdGluZyAtLT4KCjwhLS0gZHRsOmJsb2NrOlZpZXdWb3RlcyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPiRUZXh0eyJWb3RlcyJ9OjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSI+JFFEYXRheyJWb3RlcyJ9PC9wPgo8IS0tIGR0bDpibG9jazpWaWV3Vm90ZXMgLS0+CjwhLS0gZHRsOmJsb2NrOlZpZXdOb1ZvdGVzIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+JFRleHR7IlZvdGVzIn06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIiB0aXRsZT0iJFRleHR7Ik5vIHZvdGVzIGZvdW5kISJ9Ij4kVGV4dHsiTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLiJ9PC9wPgo8IS0tIGR0bDpibG9jazpWaWV3Tm9Wb3RlcyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPiRUZXh0eyJDcmVhdGVkIn06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIiB0aXRsZT0iJFRpbWVMb25neyIkRGF0YXsiQ3JlYXRlZCJ9In0gKCRRRGF0YXsiQ3JlYXRlZEJ5TG9naW4ifSkiPiRUaW1lU2hvcnR7IiREYXRheyJDcmVhdGVkIn0ifSAgKCRRRGF0YXsiQ3JlYXRlZEJ5TG9naW4ifSk8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD4kVGV4dHsiQ2hhbmdlZCJ9OjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSIgdGl0bGU9IiRUaW1lTG9uZ3siJERhdGF7IkNoYW5nZWQifSJ9ICgkUURhdGF7IkNyZWF0ZWRCeUxvZ2luIn0pIj4kVGltZVNob3J0eyIkRGF0YXsiQ2hhbmdlZCJ9In0gICgkUURhdGF7IkNyZWF0ZWRCeUxvZ2luIn0pPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+CiAgICAgICAgICAgIDxkaXY+CjwhLS0gZHRsOmJsb2NrOkZBUUNvbnRlbnQgLS0+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMj4kVGV4dHsiJERhdGF7IkNhcHRpb24ifSJ9PC9oMj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KPCEtLSBkdGw6YmxvY2s6RkFRQ29udGVudEhUTUwgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiMgVXNlIHRoZSBIVE1MNSBzYW5kYm94IGF0dHJpYnV0ZSB0byBwcmV2ZW50IHBsdWdpbnMgYW5kIHNjcmlwdHMgZnJvbSBiZWluZyBleGVjdXRlZCBpbiB0aGUgYnJvd3Nlci4KIyBVc2UgSUUncyAobm9uLXN0YW5kYXJkKSBzZWN1cml0eSBhdHRyaWJ1dGUgdG8gYWNoaWV2ZSBzb21ldGhpbmcgc2ltaWxhciBpbiBvbGRlciBJRSBicm93c2Vycy4gQXBwZW5kIHNlc3Npb24gaW5mbyB0byBVUkwgYmVjYXVzZSBJRSB3aWxsIG5vdCBzZW5kIGNvb2tpZXMuCiMgU2V0ICdhbGxvdy1wb3B1cHMnIHRvIGFsbG93IElFMTArIHRvIG9wZW4gbGlua3MuIHJlZjogaHR0cDovL3d3dy53My5vcmcvaHRtbC93Zy93aWtpL0NoYW5nZVByb3Bvc2Fscy9zYW5kYm94X2FsbG93X3BvcHVwcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zYW1lLW9yaWdpbiBhbGxvdy1wb3B1cHMiIHNlY3VyaXR5PSJyZXN0cmljdGVkIiBjbGFzcz0iRkFRRmllbGQiIGlkPSJJZnJhbWVGQVEkUURhdGF7IkZpZWxkIn0iIG9ubG9hZD0iaWYgKHR5cGVvZiBGQVEgPT09ICdvYmplY3QnICYmIHR5cGVvZiBGQVEuQWdlbnQgPT09ICdvYmplY3QnICYmIHR5cGVvZiBGQVEuQWdlbnQuRkFRWm9vbSA9PT0gJ29iamVjdCcpIHsgRkFRLkFnZW50LkZBUVpvb20uSWZyYW1lQXV0b0hlaWdodCgkKCcjSWZyYW1lRkFRJFFEYXRheyJGaWVsZCJ9JykpOyB9OyIgc3JjPSIjIiBkYXRhLXNyYz0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj1BZ2VudEZBUVpvb207U3ViYWN0aW9uPUhUTUxWaWV3O0l0ZW1JRD0kUURhdGF7Ikl0ZW1JRCJ9O0ZpZWxkPSRRRGF0YXsiRmllbGQifTskUUVudnsiU2Vzc2lvbk5hbWUifT0kUUVudnsiU2Vzc2lvbklEIn0iPjwvaWZyYW1lPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6RkFRQ29udGVudEhUTUwgLS0+CjwhLS0gZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlIC0tPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ly88IVtDREFUQVsKCiAgICBDb3JlLkNvbmZpZy5TZXQoJ0ZBUTo6RnJvbnRlbmQ6OkFnZW50SFRNTEZpZWxkSGVpZ2h0RGVmYXVsdCcsIHBhcnNlSW50KCIkQ29uZmlneyJGQVE6OkZyb250ZW5kOjpBZ2VudEhUTUxGaWVsZEhlaWdodERlZmF1bHQifSIgfHwgMCwgMTApKTsKICAgIENvcmUuQ29uZmlnLlNldCgnRkFROjpGcm9udGVuZDo6QWdlbnRIVE1MRmllbGRIZWlnaHRNYXgnLCBwYXJzZUludCgiJENvbmZpZ3siRkFROjpGcm9udGVuZDo6QWdlbnRIVE1MRmllbGRIZWlnaHRNYXgifSIgfHwgMCwgMTApKTsKCiAgICAvLyBjb3B5IGRhdGEtc3JjIGF0dHJpYnV0ZSB0byBzcmMgYXR0cmlidXRlIGZvciBhbGwgaWZyYW1lcyB0byBjb3JyZWN0bHkgZGlzcGxheSBpdHMgY29udGVudHMgYWZ0ZXIgSlMgaXMgZnVsbHkgbG9hZGVkCiAgICAkKCdpZnJhbWUnKS5lYWNoKGZ1bmN0aW9uKCl7CiAgICAgICAgJCh0aGlzKS5hdHRyKCJzcmMiLCAkKHRoaXMpLmF0dHIoImRhdGEtc3JjIikgKTsKICAgIH0pOwovL11dPjwvc2NyaXB0Pgo8IS0tIGR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZSAtLT4KPCEtLSBkdGw6YmxvY2s6RkFRQ29udGVudFBsYWluIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJBcnRpY2xlRkFRQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRGF0YXsiQ29udGVudCJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CjwhLS0gZHRsOmJsb2NrOkZBUUNvbnRlbnRQbGFpbiAtLT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpGQVFDb250ZW50IC0tPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgIDwvZGl2PgogICAgPGlucHV0IGlkPSJGQVFJRCIgdHlwZT0iaGlkZGVuIiBuYW1lPSJGQVFJRCIgdmFsdWU9IiRRRGF0YXsiSUQifSI+CiAgICA8aW5wdXQgaWQ9IkZBUVRpdGxlIiB0eXBlPSJoaWRkZW4iIG5hbWU9IlRpdGxlIiB2YWx1ZT0iJFFEYXRheyJUaXRsZSJ9Ij4KICAgIDxpbnB1dCBpZD0iRkFRQm9keSIgdHlwZT0iaGlkZGVuIiBuYW1lPSJCb2R5IiB2YWx1ZT0iJFFEYXRheyJGdWxsQm9keSJ9Ij4KICAgIDxpbnB1dCBpZD0iRkFRUHVibGljTGluayIgdHlwZT0iaGlkZGVuIiBuYW1lPSJMaW5rIiAgdmFsdWU9IiREYXRheyJQdWJsaWNsaW5rIn0iPgoKPC9kaXY+Cgo8ZGl2IGNsYXNzPSJab29tU21hbGxGb290ZXIiPgo8IS0tIGR0bDpibG9jazpJbnNlcnRUZXh0IC0tPgogICAgPGJ1dHRvbiBpZD0iSW5zZXJ0VGV4dCIgY2xhc3M9IlByaW1hcnkgQ2FsbEZvckFjdGlvbiBab29tU21hbGxCdXR0b24iPjxzcGFuPiRUZXh0eyJJbnNlcnQgRkFRIFRleHQifTwvc3Bhbj48L2J1dHRvbj4KPCEtLSBkdGw6YmxvY2s6SW5zZXJ0VGV4dCAtLT4KCjwhLS0gZHRsOmJsb2NrOkluc2VydEZ1bGwgLS0+CiAgICA8YnV0dG9uIGlkPSJJbnNlcnRGdWxsIiBjbGFzcz0iUHJpbWFyeSBDYWxsRm9yQWN0aW9uIFpvb21TbWFsbEJ1dHRvbiI+PHNwYW4+JFRleHR7Ikluc2VydCBGdWxsIEZBUSJ9PC9zcGFuPjwvYnV0dG9uPgo8IS0tIGR0bDpibG9jazpJbnNlcnRGdWxsIC0tPgoKPCEtLSBkdGw6YmxvY2s6SW5zZXJ0TGluayAtLT4KICAgIDxidXR0b24gaWQ9Ikluc2VydExpbmsiIGNsYXNzPSJQcmltYXJ5IENhbGxGb3JBY3Rpb24gWm9vbVNtYWxsQnV0dG9uIj48c3Bhbj4kVGV4dHsiSW5zZXJ0IEZBUSBMaW5rIn08L3NwYW4+PC9idXR0b24+CjwhLS0gZHRsOmJsb2NrOkluc2VydExpbmsgLS0+Cgo8IS0tIGR0bDpibG9jazpJbnNlcnRUZXh0QW5kTGluayAtLT4KICAgIDxidXR0b24gaWQ9Ikluc2VydFRleHRBbmRMaW5rIiBjbGFzcz0iUHJpbWFyeSBDYWxsRm9yQWN0aW9uIFpvb21TbWFsbEJ1dHRvbiI+PHNwYW4+JFRleHR7Ikluc2VydCBGQVEgVGV4dCAmIExpbmsifTwvc3Bhbj48L2J1dHRvbj4KPCEtLSBkdGw6YmxvY2s6SW5zZXJ0VGV4dEFuZExpbmsgLS0+Cgo8IS0tIGR0bDpibG9jazpJbnNlcnRGdWxsQW5kTGluayAtLT4KICAgIDxidXR0b24gaWQ9Ikluc2VydEZ1bGxBbmRMaW5rIiBjbGFzcz0iUHJpbWFyeSBDYWxsRm9yQWN0aW9uIFpvb21TbWFsbEJ1dHRvbiI+PHNwYW4+JFRleHR7Ikluc2VydCBGdWxsIEZBUSAmIExpbmsifTwvc3Bhbj48L2J1dHRvbj4KPCEtLSBkdGw6YmxvY2s6SW5zZXJ0RnVsbEFuZExpbmsgLS0+Cgo8IS0tIGR0bDpibG9jazpPciAtLT4KICAgICRUZXh0eyJvciJ9CjwhLS0gZHRsOmJsb2NrOk9yIC0tPgoKICAgIDxhIGlkPSJDYW5jZWwiIGNsYXNzPSIkUURhdGF7IkNhbmNlbEJ1dHRvbkNsYXNzIn0iIGhyZWY9IiMiPiRUZXh0eyJDYW5jZWwgJiBjbG9zZSB3aW5kb3cifTwvYT4KCiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICA8YnIgLz4KCjwvZGl2PgoKPCEtLWR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZS0tPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ly88IVtDREFUQVsKLypnbG9iYWwgRkFROiB0cnVlICovCiQoJyNDYW5jZWwnKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uIChldmVudCkgewogICAgcGFyZW50LkNvcmUuVUkuRGlhbG9nLkNsb3NlRGlhbG9nKCQoJy5EaWFsb2cnLCBwYXJlbnQuZG9jdW1lbnQpKTsKfSk7CgokKCcjSW5zZXJ0VGV4dCcpLmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICB2YXIgSW5zZXJ0VGV4dCA9IDEsCiAgICAgICAgSW5zZXJ0TGluayA9IDA7CgogICAgRkFRLkFnZW50LlRpY2tldENvbXBvc2UuU2V0VGV4dChJbnNlcnRUZXh0LCBJbnNlcnRMaW5rKTsKfSk7CgokKCcjSW5zZXJ0TGluaycpLmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICB2YXIgSW5zZXJ0VGV4dCA9IDAsCiAgICAgICAgSW5zZXJ0TGluayA9IDE7CgogICAgRkFRLkFnZW50LlRpY2tldENvbXBvc2UuU2V0VGV4dChJbnNlcnRUZXh0LCBJbnNlcnRMaW5rKTsKfSk7CgokKCcjSW5zZXJ0VGV4dEFuZExpbmsnKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uIChldmVudCkgewogICAgdmFyIEluc2VydFRleHQgPSAxLAogICAgICAgIEluc2VydExpbmsgPSAxOwoKICAgIEZBUS5BZ2VudC5UaWNrZXRDb21wb3NlLlNldFRleHQoSW5zZXJ0VGV4dCwgSW5zZXJ0TGluayk7Cn0pOwoKJCgnI0luc2VydEZ1bGwnKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uIChldmVudCkgewogICAgdmFyIEluc2VydFRleHQgPSAxLAogICAgICAgIEluc2VydExpbmsgPSAwOwoKICAgIEZBUS5BZ2VudC5UaWNrZXRDb21wb3NlLlNldEZ1bGxGQVEoSW5zZXJ0VGV4dCwgSW5zZXJ0TGluayk7Cn0pOwoKJCgnI0luc2VydEZ1bGxBbmRMaW5rJykuYmluZCgnY2xpY2snLCBmdW5jdGlvbiAoZXZlbnQpIHsKICAgIHZhciBJbnNlcnRUZXh0ID0gMSwKICAgICAgICBJbnNlcnRMaW5rID0gMTsKCiAgICBGQVEuQWdlbnQuVGlja2V0Q29tcG9zZS5TZXRGdWxsRkFRKEluc2VydFRleHQsIEluc2VydExpbmspOwp9KTsKLy9dXT48L3NjcmlwdD4KPCEtLWR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZS0tPgo=
IyAtLQojIEN1c3RvbWVyRkFRRXhwbG9yZXIuZHRsIC0gcHJvdmlkZXMgSFRNTCBmb3IgQ3VzdG9tZXJGQVFFeHBsb3Jlci5wbQojIENvcHlyaWdodCAoQykgMjAwMS0yMDEzIE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCjxkaXYgaWQ9Ik1haW5Cb3giIGNsYXNzPSJBUklBUm9sZU1haW4iPgoKICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgIDxkaXYgY2xhc3M9IkZBUUhlYWRlciI+CiAgICAgICAgICAgIDxoMiB0aXRsZT0iJFFEYXRheyJUaXRsZSJ9Ij4KICAgICAgICAgICAgICAgICRRRGF0YXsiVGl0bGUiLCI0MCJ9CiAgICAgICAgICAgIDwvaDI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iRkFRUGF0aENhdGVnb3J5Ij4KICAgICAgICAgICAgPGgzPgo8IS0tIGR0bDpibG9jazpGQVFQYXRoQ2F0ZWdvcnlFbGVtZW50IC0tPgogICAgICAgICAgICAgICAgJENvbmZpZ3siRkFROjpFeHBsb3Jlcjo6UGF0aDo6U2VwYXJhdG9yIn0KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249Q3VzdG9tZXJGQVFFeHBsb3JlcjtDYXRlZ29yeUlEPSRMUURhdGF7IkNhdGVnb3J5SUQifSI+CiAgICAgICAgICAgICAgICAgICAgJFFEYXRheyJOYW1lIn0KICAgICAgICAgICAgICAgIDwvYT4KPCEtLSBkdGw6YmxvY2s6RkFRUGF0aENhdGVnb3J5RWxlbWVudCAtLT4KICAgICAgICAgICAgPC9oMz4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IkxheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyTGFzdCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IlNpZGViYXJDb2x1bW4gTGFyZ2UiPgoKPCEtLSBkdGw6YmxvY2s6UXVpY2tTZWFyY2ggLS0+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMz4kVGV4dHsiU2VhcmNoIn08L2gzPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQWN0aW9uTGlzdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gY2xhc3M9IlNlYXJjaEJveCIgYWN0aW9uPSIkRW52eyJDR0lIYW5kbGUifSIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iJFFEYXRheyJBY3Rpb24ifSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJTZWFyY2giLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iTmF2IiB2YWx1ZT0iJFFEYXRheyJOYXYifSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iRnVsbHRleHQiIHZhbHVlPSIkUURhdGF7IlNlYXJjaCJ9IiBpZD0iU2VhcmNoIiB0aXRsZT0iJFRleHR7IlNlYXJjaCJ9Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiB2YWx1ZT0iJFRleHR7IlNlYXJjaCJ9Ij4kVGV4dHsiUXVpY2sgU2VhcmNoIn08L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGV4dHsiV2lsZGNhcmRzIGFyZSBhbGxvd2VkLiJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhICBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGQVFTZWFyY2hCdXR0b24gU3BhY2luZ1RvcCIgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kTFFEYXRheyJBY3Rpb24ifTsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4kVGV4dHsiQWR2YW5jZWQgU2VhcmNoIn08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpRdWlja1NlYXJjaCAtLT4KCjwhLS0gZHRsOmJsb2NrOkluZm9Cb3hGQVFNaW5pTGlzdCAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMz4kVGV4dHsiJERhdGF7IkhlYWRlciJ9In08L2gzPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IlRhYmxlbGlrZSBGQVFNaW5pTGlzdCI+CjwhLS0gZHRsOmJsb2NrOkluZm9Cb3hGQVFNaW5pTGlzdEl0ZW1Sb3cgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CjwhLS0gZHRsOmJsb2NrOkluZm9Cb3hGQVFNaW5pTGlzdEl0ZW1Sb3dQb3NpdGlvbk51bWJlciAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUURhdGF7Ik51bWJlciJ9Lgo8IS0tIGR0bDpibG9jazpJbmZvQm94RkFRTWluaUxpc3RJdGVtUm93UG9zaXRpb25OdW1iZXIgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj1DdXN0b21lckZBUVpvb207SXRlbUlEPSRMUURhdGF7Ikl0ZW1JRCJ9IiB0aXRsZT0iJFFEYXRheyJUaXRsZSJ9ICgkUURhdGF7IkNhdGVnb3J5TmFtZSJ9KSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRRRGF0YXsiVGl0bGUiLCI1MCJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUURhdGF7IkNhdGVnb3J5U2hvcnROYW1lIiwiMTUifSAtICRRRGF0YXsiTGFuZ3VhZ2UifSAtICRUZXh0eyIkRGF0YXsiU3RhdGUifSJ9IC0gJFRpbWVTaG9ydHsiJERhdGF7IkNyZWF0ZWQifSJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KPCEtLSBkdGw6YmxvY2s6SW5mb0JveEZBUU1pbmlMaXN0SXRlbVJvdyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPCEtLSBkdGw6YmxvY2s6SW5mb0JveEZBUU1pbmlMaXN0IC0tPgoKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnRDb2x1bW4iPgoKPCEtLSBkdGw6YmxvY2s6U3ViY2F0ZWdvcmllcyAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3UmVzdWx0IC0tPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMz4kVGV4dHsiU3ViY2F0ZWdvcmllcyJ9PC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KCiAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iT3ZlcnZpZXciIHN1bW1hcnk9IkZBUSBjYXRlZ29yaWVzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48YSBocmVmPSIjIj4kVGV4dHsiTmFtZSJ9PC9hPjwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48YSBocmVmPSIjIj4kVGV4dHsiQ29tbWVudCJ9PC9hPjwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48YSBocmVmPSIjIj4kVGV4dHsiU3ViY2F0ZWdvcmllcyJ9PC9hPjwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48YSBocmVmPSIjIj4kVGV4dHsiRkFRIEFydGljbGVzIn08L2E+PC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KPCEtLSBkdGw6YmxvY2s6Tm9DYXRlZ29yeURhdGFGb3VuZE1zZyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiPiRUZXh0eyJObyBzdWJjYXRlZ29yaWVzIGZvdW5kLiJ9PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CjwhLS0gZHRsOmJsb2NrOk5vQ2F0ZWdvcnlEYXRhRm91bmRNc2cgLS0+CjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3UmVzdWx0Um93IC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxhIGNsYXNzPSJBc0Jsb2NrIiBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7IkFjdGlvbiJ9O0NhdGVnb3J5SUQ9JExRRGF0YXsiQ2F0ZWdvcnlJRCJ9Ij4kUURhdGF7Ik5hbWUifTwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JFFEYXRheyJDb21tZW50In08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JFFEYXRheyJTdWJDYXRlZ29yeUNvdW50In08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JFFEYXRheyJBcnRpY2xlQ291bnQifTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdSZXN1bHRSb3cgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpPdmVydmlld1Jlc3VsdCAtLT4KICAgICAgICAgICAgICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpTdWJjYXRlZ29yaWVzIC0tPgoKCjwhLS0gZHRsOmJsb2NrOkZBUUl0ZW1MaXN0IC0tPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGgzPiRUZXh0eyJGQVEgQXJ0aWNsZXMifTwvaDM+CjwhLS0gZHRsOmJsb2NrOlBhZ2luYXRpb24gLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlBhZ2luYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz4kUURhdGF7IlJlc3VsdCJ9PC9zdHJvbmc+ICRUZXh0eyJvZiJ9IDxzdHJvbmc+JFFEYXRheyJUb3RhbEhpdHMifTwvc3Ryb25nPiAtICRUZXh0eyJQYWdlIn06ICREYXRheyJTaXRlTmF2QmFyIn0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CjwhLS0gZHRsOmJsb2NrOlBhZ2luYXRpb24gLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iT3ZlcnZpZXciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJGQVFOdW1iZXIgJERhdGF7IkZBUUlEU29ydCJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JEVudnsiQWN0aW9uIn07Q2F0ZWdvcnlJRD0kTFFEYXRheyJDYXRlZ29yeUlEIn07U29ydEJ5PUZBUUlEO09yZGVyPSRMUURhdGF7Ik9yZGVyIn0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRDb25maWd7IkZBUTo6RkFRSG9vayJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iVGl0bGUgJERhdGF7IlRpdGxlU29ydCJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JEVudnsiQWN0aW9uIn07Q2F0ZWdvcnlJRD0kTFFEYXRheyJDYXRlZ29yeUlEIn07U29ydEJ5PVRpdGxlO09yZGVyPSRMUURhdGF7Ik9yZGVyIn0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUZXh0eyJUaXRsZSJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQ2F0ZWdvcnkgJERhdGF7IkNhdGVnb3J5U29ydCJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JEVudnsiQWN0aW9uIn07Q2F0ZWdvcnlJRD0kTFFEYXRheyJDYXRlZ29yeUlEIn07U29ydEJ5PUNhdGVnb3J5O09yZGVyPSRMUURhdGF7Ik9yZGVyIn0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUZXh0eyJDYXRlZ29yeSJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CjwhLS0gZHRsOmJsb2NrOkhlYWRlckxhbmd1YWdlIC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9Ikxhbmd1YWdlICREYXRheyJMYW5ndWFnZVNvcnQifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7IkFjdGlvbiJ9O0NhdGVnb3J5SUQ9JExRRGF0YXsiQ2F0ZWdvcnlJRCJ9O1NvcnRCeT1MYW5ndWFnZTtPcmRlcj0kTFFEYXRheyJPcmRlciJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGV4dHsiTGFuZ3VhZ2UifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgo8IS0tIGR0bDpibG9jazpIZWFkZXJMYW5ndWFnZSAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJTdGF0ZSAkRGF0YXsiU3RhdGVTb3J0In0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTtDYXRlZ29yeUlEPSRMUURhdGF7IkNhdGVnb3J5SUQifTtTb3J0Qnk9U3RhdGU7T3JkZXI9JExRRGF0YXsiT3JkZXIifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRleHR7IlN0YXRlIn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KPCEtLSBkdGw6YmxvY2s6Tm9GQVFEYXRhRm91bmRNc2cgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iNSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIj4kVGV4dHsiTm8gRkFRIGFydGljbGVzIGZvdW5kLiJ9PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CjwhLS0gZHRsOmJsb2NrOk5vRkFRRGF0YUZvdW5kTXNnIC0tPgo8IS0tIGR0bDpibG9jazpSZWNvcmQgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkZBUU51bWJlciIgdGl0bGU9IiRRRGF0YXsiTnVtYmVyIn0iPjxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249Q3VzdG9tZXJGQVFab29tO0l0ZW1JRD0kTFFEYXRheyJGQVFJRCJ9Ij4kUURhdGF7Ik51bWJlciJ9PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iVGl0bGUiIHRpdGxlPSIkUURhdGF7IlRpdGxlIn0iPiRRRGF0YXsiVGl0bGUiLCI2MCJ9PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDYXRlZ29yeSIgdGl0bGU9IiRRRGF0YXsiQ2F0ZWdvcnlOYW1lIn0iPiRRRGF0YXsiQ2F0ZWdvcnlOYW1lIiwiNDUifTwvdGQ+CjwhLS0gZHRsOmJsb2NrOlJlY29yZExhbmd1YWdlIC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9Ikxhbmd1YWdlIiB0aXRsZT0iJFFEYXRheyJMYW5ndWFnZSJ9Ij4kUURhdGF7Ikxhbmd1YWdlIiwiNSJ9PC90ZD4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkTGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iU3RhdGUiPiRUZXh0eyIkRGF0YXsiU3RhdGUifSJ9PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgo8IS0tIGR0bDpibG9jazpSZWNvcmQgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgo8IS0tIGR0bDpibG9jazpCb3R0b21TdWJOYXZpZ2F0aW9uIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJQYWdpbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+JFFEYXRheyJSZXN1bHQifTwvc3Ryb25nPiAkVGV4dHsib2YifSA8c3Ryb25nPiRRRGF0YXsiVG90YWxIaXRzIn08L3N0cm9uZz4gLSAkVGV4dHsiUGFnZSJ9OiAkRGF0YXsiU2l0ZU5hdkJhciJ9CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CjwhLS0gZHRsOmJsb2NrOkJvdHRvbVN1Yk5hdmlnYXRpb24gLS0+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6RkFRSXRlbUxpc3QgLS0+CgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pgo8L2Rpdj4KCjwhLS0gZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlIC0tPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci8vIG1ha2Ugd2hvbGUgRkFRIEl0ZW0gcm93IGNsaWNrYWJsZSwgYnV0IG5vdCB0aGUgaGVhZGVycywgY2FuJ3QgdXNlIENvcmUuQ3VzdG9tZXIuQ2xpY2thYmxlUm93KCkKLy8gc2luY2UgaXQgdXNlcyAidGFibGUgdHIiIGFzIHNlbGVjdG9yLCBzZWUgYnVnIzkzMjkKJCgidGJvZHkgdHIiKS5jbGljayhmdW5jdGlvbigpewogICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAkKCJhIiwgdGhpcykuYXR0cigiaHJlZiIpOwogICAgcmV0dXJuIGZhbHNlOwp9KTsKPC9zY3JpcHQ+CjwhLS0gZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlIC0tPgo=
IyAtLQojIEN1c3RvbWVyRkFRUHJpbnQuZHRsIC0gcHJvdmlkZXMgSFRNTCBwcmludCB2aWV3CiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjEiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSI+CiAgICA8dHI+CiAgICAgICAgPHRkIGNsYXNzPSJtYWluaGVhZCI+JENvbmZpZ3siRkFROjpGQVFIb29rIn06ICRRRGF0YXsiTnVtYmVyIn0gLyAkUURhdGF7IlRpdGxlIn08L3RkPgogICAgPC90cj4KPC90YWJsZT4KPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjEiIGNlbGxwYWRkaW5nPSIxMCIgd2lkdGg9IjEwMCUiPgogICAgPHRyPgogICAgICAgIDx0ZCBjbGFzcz0iY29udGVudGtleSI+CiAgICAgICAgICAgICRUZXh0eyJGQVEtSW5mbyJ9OgogICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjUwJSIgdmFsaWduPSJ0b3AiPgogICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMyIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnRrZXkiPiRUZXh0eyJDYXRlZ29yeSJ9OiA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4kUURhdGF7IkNhdGVnb3J5TmFtZSJ9PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50a2V5Ij4kVGV4dHsiU3RhdGUifTogPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnR2YWx1ZSI+JFRleHR7IiREYXRheyJTdGF0ZSJ9In08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6TGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50a2V5Ij4kVGV4dHsiTGFuZ3VhZ2UifTogPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnR2YWx1ZSI+JFFEYXRheyJMYW5ndWFnZSJ9PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CjwhLS0gZHRsOmJsb2NrOkxhbmd1YWdlIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI1MCUiIHZhbGlnbj0idG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSI+Cgo8IS0tIGR0bDpibG9jazpSYXRpbmcgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50a2V5Ij4kVGV4dHsiVm90ZXMifTogPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnR2YWx1ZSI+ICRRRGF0YXsiVm90ZXMifTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudGtleSI+JFRleHR7IlJlc3VsdCJ9OiA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4gJFFEYXRheyJWb3RlUmVzdWx0In0gJiMzNzs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6UmF0aW5nIC0tPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnRrZXkiPiRUZXh0eyJMYXN0IHVwZGF0ZSJ9OiA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4kVGltZUxvbmd7IiREYXRheyJDaGFuZ2VkIn0ifTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8YnIvPgogICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMyIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEwJSIgY2xhc3M9ImNvbnRlbnRrZXkiPiRUZXh0eyJLZXl3b3JkcyJ9OiA8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iOTAlIiBjbGFzcz0iY29udGVudHZhbHVlIj4kRGF0YXsiS2V5d29yZHMifTwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICAgIDx0ZD4KICAgICAgICAgICAgPGhyPgogICAgICAgIDwvdGQ+CiAgICA8L3RyPgo8IS0tIGR0bDpibG9jazpGQVFDb250ZW50IC0tPgogICAgPHRyPgogICAgICAgIDx0ZCBjbGFzcz0iY29udGVudGtleSI+CiAgICAgICAgICAgICRUZXh0eyIkRGF0YXsiQ2FwdGlvbiJ9In06ICA8c3BhbiBjbGFzcz0ic21hbGwiPigkVGV4dHsiJERhdGF7IlN0YXRlTmFtZSJ9In0pIDwvc3Bhbj4KICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjEwIiBjZWxsUGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4kRGF0YXsiQ29udGVudCJ9PC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgICAgPHRkPgogICAgICAgICAgICA8aHI+CiAgICAgICAgPC90ZD4KICAgIDwvdHI+CjwhLS0gZHRsOmJsb2NrOkZBUUNvbnRlbnQgLS0+Cgo8L3RhYmxlPgo=
IyAtLQojIEN1c3RvbWVyRkFRU2VhcmNoLmR0bCAtIHByb3ZpZGVzIEhUTUwgZm9ybSBmb3IgQ3VzdG9tZXJGQVFTZWFyY2gucG0KIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxMyBPVFJTIEFHLCBodHRwOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgo8IS0tIGR0bDpibG9jazpTZWFyY2ggLS0+CjxkaXYgaWQ9Ik1haW5Cb3giIGNsYXNzPSJTZWFyY2ggQVJJQVJvbGVNYWluIj4KICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgIDxmb3JtIGFjdGlvbj0iJEVudnsiQ0dJSGFuZGxlIn0iIG1ldGhvZD0icG9zdCIgbmFtZT0iY29tcG9zZSI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IiRFbnZ7IkFjdGlvbiJ9Ii8+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IkxvYWRQcm9maWxlIi8+CiAgICAgICAgICAgIDxmaWVsZHNldD4KICAgICAgICAgICAgICAgIDxoMj4kVGV4dHsiUHJvZmlsZSJ9PC9oMj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iUHJvZmlsZSI+JFRleHR7IlNlYXJjaCB0ZW1wbGF0ZSJ9PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAkRGF0YXsiUHJvZmlsZXNTdHJnIn0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3ciPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBuYW1lPSJTZWxlY3RUZW1wbGF0ZSIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iJFRleHR7IlNlbGVjdCJ9Ij4kVGV4dHsiU2VsZWN0In08L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxidXR0b24gbmFtZT0iRXJhc2VUZW1wbGF0ZSIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iJFRleHR7IkRlbGV0ZSJ9Ij4kVGV4dHsiRGVsZXRlIn08L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxidXR0b24gbmFtZT0iU2VhcmNoVGVtcGxhdGUiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IiRUZXh0eyJTZWFyY2gifSI+JFRleHR7IlNlYXJjaCJ9PC9idXR0b24+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZm9ybT4KCiAgICAgICAgPGZvcm0gYWN0aW9uPSIkRW52eyJDR0lIYW5kbGUifSIgbWV0aG9kPSJwb3N0IiBuYW1lPSJjb21wb3NlIj4KICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iJEVudnsiQWN0aW9uIn0iLz4KICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iU2VhcmNoIi8+CiAgICAgICAgICAgIDxmaWVsZHNldD4KICAgICAgICAgICAgICAgIDxoMj4kQ29uZmlneyJGQVE6OkZBUUhvb2sifTwvaDI+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik51bWJlciI+JENvbmZpZ3siRkFROjpGQVFIb29rIn08L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iJENvbmZpZ3siRkFROjpGQVFIb29rIn0iIHR5cGU9InRleHQiIG5hbWU9Ik51bWJlciIgaWQ9Ik51bWJlciIgc2l6ZT0iMzAiIHZhbHVlPSIkUURhdGF7Ik51bWJlciJ9Ii8+CiAgICAgICAgICAgICAgICAgICAgPHA+JFRleHR7ImUuIGcuIDEwKjUxNTUgb3IgMTA1NjU4KiJ9PC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgIDxmaWVsZHNldD4KICAgICAgICAgICAgICAgIDxoMj4kVGV4dHsiRnVsbHRleHQgc2VhcmNoIGluIEZBUSBhcnRpY2xlcyAoZS4gZy4gIkpvaG4qbiIgb3IgIldpbGwqIikifTwvaDI+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlRpdGxlIj4kVGV4dHsiRnVsbHRleHQifTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSIkVGV4dHsiRnVsbHRleHQifSIgdHlwZT0idGV4dCIgaWQ9IkZ1bGxUZXh0IiBuYW1lPSJGdWxsdGV4dCIgdmFsdWU9IiRRRGF0YXsiRnVsbHRleHQifSIgc2l6ZT0iMjAiIC8+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iVGl0bGUiPiRUZXh0eyJUaXRsZSJ9PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IiRUZXh0eyJUaXRsZSJ9IiB0eXBlPSJ0ZXh0IiBpZD0iVGl0bGUiIG5hbWU9IlRpdGxlIiB2YWx1ZT0iJFFEYXRheyJUaXRsZSJ9IiBzaXplPSIyMCIgLz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJLZXl3b3JkIj4kVGV4dHsiS2V5d29yZCJ9PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IiRUZXh0eyJLZXl3b3JkIn0iIHR5cGU9InRleHQiIGlkPSJLZXl3b3JkIiBuYW1lPSJLZXl3b3JkIiB2YWx1ZT0iJFFEYXRheyJLZXl3b3JkIn0iIHNpemU9IjIwIiAvPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZmllbGRzZXQ+CjwhLS0gZHRsOmJsb2NrOkxhbmd1YWdlIC0tPgogICAgICAgICAgICA8ZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8aDI+JFRleHR7Ikxhbmd1YWdlIn06PC9oMj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgJERhdGF7Ikxhbmd1YWdlc1N0cmcifQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZmllbGRzZXQ+CjwhLS0gZHRsOmJsb2NrOkxhbmd1YWdlIC0tPgogICAgICAgICAgICA8ZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8aDI+JFRleHR7IkNhdGVnb3J5In06PC9oMj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgJERhdGF7IkNhdGVnb3JpZXNTdHJnIn0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRpbWVTZWFyY2hUeXBlIj4KICAgICAgICAgICAgICAgIDxoMj4kVGV4dHsiVm90ZSByZXN0cmljdGlvbnMifTwvaDI+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iJFRleHR7Ik5vIHZvdGUgc2V0dGluZ3MifSIgdHlwZT0icmFkaW8iICBpZD0iTm9Wb3RlU2V0IiBuYW1lPSJWb3RlU2VhcmNoT3B0aW9uIiB2YWx1ZT0iIiAkRGF0YXsiVm90ZVNlYXJjaE9wdGlvbjo6Tm9uZSJ9IC8+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTm9UVm90ZVNldCI+JFRleHR7IkFsbCJ9PC9sYWJlbD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9JFRleHR7IlNwZWNpZmljIHZvdGVzIn0gdHlwZT0icmFkaW8iIGlkPSJWb3RlUG9pbnQiIG5hbWU9IlZvdGVTZWFyY2hPcHRpb24iICB2YWx1ZT0iVm90ZVBvaW50IiAkRGF0YXsiVm90ZVNlYXJjaE9wdGlvbjo6Vm90ZVBvaW50In0gLz4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJWb3RlUG9pbnQiPiRUZXh0eyJPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHZvdGVzLi4uIn08L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICREYXRheyJWb3RlU2VhcmNoVHlwZVNlbGVjdGlvblN0cmluZyJ9CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IlZvdGVTZWFyY2giIHZhbHVlPSIkUURhdGF7IlZvdGVTZWFyY2gifSIgY2xhc3M9IlcyNXBjIi8+CiAgICAgICAgICAgICAgICAgICAgPHA+JFRleHR7ImUuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCJ9PC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZmllbGRzZXQ+CgogICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRpbWVTZWFyY2hUeXBlIj4KICAgICAgICAgICAgICAgIDxoMj4kVGV4dHsiUmF0ZSByZXN0cmljdGlvbnMifTwvaDI+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iJFRleHR7Ik5vIHJhdGUgc2V0dGluZ3MifSIgdHlwZT0icmFkaW8iICBpZD0iTm9SYXRlU2V0IiBuYW1lPSJSYXRlU2VhcmNoT3B0aW9uIiB2YWx1ZT0iIiAkRGF0YXsiUmF0ZVNlYXJjaE9wdGlvbjo6Tm9uZSJ9IC8+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTm9SYXRlU2V0Ij4kVGV4dHsiQWxsIn08L2xhYmVsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0kVGV4dHsiU3BlY2lmaWMgcmF0ZSJ9IHR5cGU9InJhZGlvIiBpZD0iUmF0ZVBvaW50IiBuYW1lPSJSYXRlU2VhcmNoT3B0aW9uIiB2YWx1ZT0iUmF0ZVBvaW50IiAkRGF0YXsiUmF0ZVNlYXJjaE9wdGlvbjo6UmF0ZVBvaW50In0gLz4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJSYXRlUG9pbnQiPiRUZXh0eyJPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHJhdGUuLi4ifTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgJERhdGF7IlJhdGVTZWFyY2hUeXBlU2VsZWN0aW9uU3RyaW5nIn0KICAgICAgICAgICAgICAgICAgICAkRGF0YXsiUmF0ZVNlYXJjaFNlbGVjdGlvblN0cmluZyJ9CiAgICAgICAgICAgICAgICAgICAgPHA+JFRleHR7ImUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlIn08L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9maWVsZHNldD4KCiAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGltZVNlYXJjaFR5cGUiPgogICAgICAgICAgICAgICAgPGgyPiRUZXh0eyJUaW1lIHJlc3RyaWN0aW9ucyJ9PC9oMj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSIkVGV4dHsiTm8gdGltZSBzZXR0aW5ncyJ9IiB0eXBlPSJyYWRpbyIgIGlkPSJOb1RpbWVTZXQiIG5hbWU9IlRpbWVTZWFyY2hUeXBlIiB2YWx1ZT0iIiAkRGF0YXsiVGltZVNlYXJjaFR5cGU6Ok5vbmUifSAvPgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik5vVGltZVNldCI+JFRleHR7IkFsbCJ9PC9sYWJlbD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IiRUZXh0eyJTcGVjaWZpYyBkYXRlIn0iIHR5cGU9InJhZGlvIiBpZD0iRGF0ZSIgbmFtZT0iVGltZVNlYXJjaFR5cGUiIHZhbHVlPSJUaW1lUG9pbnQiICREYXRheyJUaW1lU2VhcmNoVHlwZTo6VGltZVBvaW50In0gLz4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJEYXRlIj4kVGV4dHsiT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCJ9PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAkRGF0YXsiSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0In0gJERhdGF7Ikl0ZW1DcmVhdGVUaW1lUG9pbnQifSAkRGF0YXsiSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdCJ9CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSIkVGVzdCJ7RGF0ZSByYW5nZSJ9IiB0eXBlPSJyYWRpbyIgaWQ9IkRhdGVSYW5nZSIgbmFtZT0iVGltZVNlYXJjaFR5cGUiIHZhbHVlPSJUaW1lU2xvdCIgJERhdGF7IlRpbWVTZWFyY2hUeXBlOjpUaW1lU2xvdCJ9IC8+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iRGF0ZVJhbmdlIj4kVGV4dHsiT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCBiZXR3ZWVuIn08L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICREYXRheyJJdGVtQ3JlYXRlVGltZVN0YXJ0In0gJFRleHR7ImFuZCJ9ICREYXRheyJJdGVtQ3JlYXRlVGltZVN0b3AifQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZmllbGRzZXQ+CgogICAgICAgICAgICA8ZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8aDI+JFRleHR7IlNlYXJjaC1Qcm9maWxlIGFzIFRlbXBsYXRlPyJ9PC9oMj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iU2F2ZVByb2ZpbGUiPiRUZXh0eyJTYXZlIGFzIFRlbXBsYXRlPyJ9PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IlNhdmUgYXMgVGVtcGxhdGUiIHR5cGU9ImNoZWNrYm94IiBpZD0iU2F2ZVByb2ZpbGUiIG5hbWU9IlNhdmVQcm9maWxlIiAvPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlByb2ZpbCI+JFRleHR7IlRlbXBsYXRlIE5hbWUifTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJQaWNrIGEgcHJvZmlsIG5hbWUiIHR5cGU9InRleHQiIGlkPSJQcm9maWwiIG5hbWU9IlByb2ZpbGUiIHNpemU9IjMwIiB2YWx1ZT0iJFFEYXRheyJQcm9maWxlIn0iIC8+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgPGRpdiBpZD0iQm90dG9tQWN0aW9uUm93IiBjbGFzcz0iQWN0aW9uUm93Ij4KICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9IlN1Ym1pdCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iJFRleHR7IlNlYXJjaCJ9Ij4kVGV4dHsiU2VhcmNoIn08L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxzcGFuPiRUZXh0eyJPdXRwdXQgdG8ifTwvc3Bhbj4KICAgICAgICAgICAgICAgICREYXRheyJSZXN1bHRGb3JtU3RyZyJ9CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZm9ybT4KICAgIDwvZGl2Pgo8L2Rpdj4KPCEtLSBkdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUgLS0+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICAgIENvcmUuQ3VzdG9tZXIuSW5pdEZvY3VzKCk7Cjwvc2NyaXB0Pgo8IS0tIGR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZSAtLT4KPCEtLSBkdGw6YmxvY2s6U2VhcmNoIC0tPgo=
IyAtLQojIEN1c3RvbWVyRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyLmR0bCAtIHByb3ZpZGVzIG9wZW5zZWFyY2ggZm9ybSBmb3IgQ3VzdG9tZXJGQVFTZWFyY2gKIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxMyBPVFJTIEFHLCBodHRwOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/Pgo8T3BlblNlYXJjaERlc2NyaXB0aW9uIHhtbG5zPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iIHhtbG5zOmllPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL1NlYXJjaC8yMDA4LyI+CjxTaG9ydE5hbWU+JFF1b3RleyIkQ29uZmlneyJQcm9kdWN0TmFtZSJ9In0gLSAkVGV4dHsiQ3VzdG9tZXIifSAoJFF1b3RleyIkQ29uZmlneyJGQVE6OkZBUUhvb2sifSJ9KTwvU2hvcnROYW1lPgo8RGVzY3JpcHRpb24+JFF1b3RleyIkQ29uZmlneyJQcm9kdWN0TmFtZSJ9In0gLSAkVGV4dHsiQ3VzdG9tZXIifSAoJFF1b3RleyIkQ29uZmlneyJGQVE6OkZBUUhvb2sifSJ9KTwvRGVzY3JpcHRpb24+CjxJbnB1dEVuY29kaW5nPiRFbnZ7IlVzZXJDaGFyc2V0In08L0lucHV0RW5jb2Rpbmc+CjxVcmwgdHlwZT0idGV4dC9odG1sIiB0ZW1wbGF0ZT0iJENvbmZpZ3siSHR0cFR5cGUifTovLyRFbnZ7IkhUVFBfSE9TVCJ9JEVudnsiQmFzZWxpbmsifUFjdGlvbj1DdXN0b21lckZBUVNlYXJjaDtTdWJhY3Rpb249U2VhcmNoO051bWJlcj17c2VhcmNoVGVybXN9IiAvPgo8SW1hZ2UgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiB0eXBlPSJpbWFnZS94LWljb24iPiRDb25maWd7Ikh0dHBUeXBlIn06Ly8kRW52eyJIVFRQX0hPU1QifSRDb25maWd7IkZyb250ZW5kOjpJbWFnZVBhdGgifWljb25zL3Byb2R1Y3QuaWNvPC9JbWFnZT4KPC9PcGVuU2VhcmNoRGVzY3JpcHRpb24+Cg==
IyAtLQojIEN1c3RvbWVyRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbFRleHQuZHRsIC0gcHJvdmlkZXMgb3BlbnNlYXJjaCBmb3JtIGZvciBDdXN0b21lckZBUVNlYXJjaAojIENvcHlyaWdodCAoQykgMjAwMS0yMDEzIE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxPcGVuU2VhcmNoRGVzY3JpcHRpb24geG1sbnM9Imh0dHA6Ly9hOS5jb20vLS9zcGVjL29wZW5zZWFyY2gvMS4xLyIgeG1sbnM6aWU9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vU2VhcmNoLzIwMDgvIj4KPFNob3J0TmFtZT4kUXVvdGV7IiRDb25maWd7IlByb2R1Y3ROYW1lIn0ifSAtICRUZXh0eyJDdXN0b21lciJ9ICgkVGV4dHsiRkFRRnVsbHRleHQifSk8L1Nob3J0TmFtZT4KPERlc2NyaXB0aW9uPiRRdW90ZXsiJENvbmZpZ3siUHJvZHVjdE5hbWUifSJ9IC0gJFRleHR7IkN1c3RvbWVyIn0gKCRUZXh0eyJGQVFGdWxsdGV4dCJ9KTwvRGVzY3JpcHRpb24+CjxJbnB1dEVuY29kaW5nPiRFbnZ7IlVzZXJDaGFyc2V0In08L0lucHV0RW5jb2Rpbmc+CjxVcmwgdHlwZT0idGV4dC9odG1sIiB0ZW1wbGF0ZT0iJENvbmZpZ3siSHR0cFR5cGUifTovLyRFbnZ7IkhUVFBfSE9TVCJ9JEVudnsiQmFzZWxpbmsifUFjdGlvbj1DdXN0b21lckZBUVNlYXJjaDtTdWJhY3Rpb249U2VhcmNoO0Z1bGx0ZXh0PXtzZWFyY2hUZXJtc30iIC8+CjxJbWFnZSBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIHR5cGU9ImltYWdlL3gtaWNvbiI+JENvbmZpZ3siSHR0cFR5cGUifTovLyRFbnZ7IkhUVFBfSE9TVCJ9JENvbmZpZ3siRnJvbnRlbmQ6OkltYWdlUGF0aCJ9aWNvbnMvcHJvZHVjdC5pY288L0ltYWdlPgo8L09wZW5TZWFyY2hEZXNjcmlwdGlvbj4K
IyAtLQojIEN1c3RvbWVyRkFRU2VhcmNoUmVzdWx0UHJpbnQuZHRsIC0gaHRtbCBmb3IgcHJpbnRpbmcgRkFRIHNlYXJjaCByZXN1bHRzCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKPCEtLSBzdGFydCBmb3JtIC0tPgo8aT4kRGF0YXsiV2FybmluZyJ9PC9pPgo8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMSIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KICAgIDx0cj4KICAgICAgICA8dGQgY2xhc3M9Im1haW5oZWFkIj4kVGV4dHsiU2VhcmNoIn08L3RkPgogICAgPC90cj4KPC90YWJsZT4KPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iNCI+CiAgICA8dHI+CiAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50Ym9keSI+CiAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjMiPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTAlIiBjbGFzcz0iY29udGVudGtleSI+JENvbmZpZ3siRkFROjpGQVFIb29rIn08L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzUlIiBjbGFzcz0iY29udGVudGtleSI+JFRleHR7IlRpdGxlIn08L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTAlIiBjbGFzcz0iY29udGVudGtleSI+JFRleHR7IkNhdGVnb3J5In08L3RkPgo8IS0tIGR0bDpibG9jazpIZWFkZXJMYW5ndWFnZSAtLT4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEwJSIgY2xhc3M9ImNvbnRlbnRrZXkiPiRUZXh0eyJMYW5ndWFnZSJ9PC90ZD4KPCEtLSBkdGw6YmxvY2s6SGVhZGVyTGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNSUiIGNsYXNzPSJjb250ZW50a2V5Ij4kVGV4dHsiU3RhdGUifTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIGNsYXNzPSJjb250ZW50a2V5Ij4kVGV4dHsiQ2hhbmdlZCJ9PC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CjwhLS0gZHRsOmJsb2NrOlJlY29yZCAtLT4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnR2YWx1ZSI+JFFEYXRheyJOdW1iZXIifTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50dmFsdWUiPiRRRGF0YXsiVGl0bGUiLCI0MCJ9PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnR2YWx1ZSI+JFFEYXRheyJDYXRlZ29yeU5hbWUiLCIzMCJ9PC90ZD4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkTGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50dmFsdWUiPiRRRGF0YXsiTGFuZ3VhZ2UifTwvdGQ+CjwhLS0gZHRsOmJsb2NrOlJlY29yZExhbmd1YWdlIC0tPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4kVGV4dHsiJERhdGF7IlN0YXRlIn0ifTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50dmFsdWUiPiRUaW1lTG9uZ3siJERhdGF7IkNoYW5nZWQifSJ9PC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CjwhLS0gZHRsOmJsb2NrOlJlY29yZCAtLT4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L3RkPgogICAgPC90cj4KPC90YWJsZT4KPCEtLSBlbmQgZm9ybSAtLT4K
IyAtLQojIEN1c3RvbWVyRkFRU2VhcmNoUmVzdWx0U2hvcnQuZHRsIC0gaHRtbCBmb3IgRkFRIHNlYXJjaCByZXN1bHRzCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKPGRpdiBpZD0iTWFpbkJveCIgY2xhc3M9IlRpY2tldFZpZXcgQVJJQVJvbGVNYWluIFNlYXJjaFJlc3VsdHMgJENvbmZpZ3siVGlja2V0OjpGcm9udGVuZDo6Q3VzdG9tZXJUaWNrZXRPdmVydmlld1NvcnRhYmxlIn0gU29ydGFibGUiPgogICAgPGRpdiBjbGFzcz0iQWN0aW9uUm93Ij4KICAgICAgICA8dWwgY2xhc3M9IlRhYnMiPgogICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7IkFjdGlvbiJ9O1N1YmFjdGlvbj1Mb2FkUHJvZmlsZTskUURhdGF7IkxpbmsifSI+CiAgICAgICAgICAgICAgICAgICAgJmxhcnI7ICRUZXh0eyJDaGFuZ2Ugc2VhcmNoIG9wdGlvbnMifQogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L2xpPgogICAgICAgIDwvdWw+CjwhLS0gZHRsOmJsb2NrOlBhZ2luYXRpb24gLS0+CiAgICAgICAgPGRpdiBjbGFzcz0iVGFicyBQYWdpbmF0aW9uIj4KICAgICAgICAgICAgPHN0cm9uZz4kUURhdGF7IlJlc3VsdCJ9PC9zdHJvbmc+ICRUZXh0eyJvZiJ9IDxzdHJvbmc+JFFEYXRheyJUb3RhbEhpdHMifTwvc3Ryb25nPiAtICRUZXh0eyJQYWdlIn06ICREYXRheyJTaXRlTmF2QmFyIn0KICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6UGFnaW5hdGlvbiAtLT4KICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iU2VhcmNoVGVybXMiPgogICAgICAgICAgICA8aDI+JFRleHR7IlNlYXJjaCBSZXN1bHRzIGZvciJ9OjwvaDI+CjwhLS0gZHRsOmJsb2NrOlNlYXJjaFRlcm1zIC0tPgogICAgICAgICAgICA8c3Bhbj4KICAgICAgICAgICAgICAgICRRRGF0YXsiQXR0cmlidXRlIn06ICRRRGF0YXsiVmFsdWUifQojIGhpZGUgcmVtb3ZlIGxpbmssIGZ1bmN0aW9uYWxpdHkgaXMgbm90IHlldCBpbXBsZW1lbnRlZAojICAgICAgICAgICAgICAgIDxhIHRpdGxlPSIkVGV4dHsiUmVtb3ZlIHRoaXMgU2VhcmNoIFRlcm0uIn0iIGhyZWY9IiREYXRheyJTZWFyY2hWYWx1ZSJ9Ij4mdGltZXM7PC9hPgogICAgICAgICAgICA8L3NwYW4+CjwhLS0gZHRsOmJsb2NrOlNlYXJjaFRlcm1zIC0tPgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICA8dGFibGUgY2xhc3M9Ik92ZXJ2aWV3Ij4KICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iRkFRTnVtYmVyICREYXRheyJGQVFJRFNvcnQifSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JEVudnsiQWN0aW9uIn07U3ViYWN0aW9uPVNlYXJjaDtTb3J0Qnk9RkFRSUQ7T3JkZXI9JExRRGF0YXsiT3JkZXIifTtQcm9maWxlPSRMUURhdGF7IlByb2ZpbGUifTtUYWtlTGFzdFNlYXJjaD0xO0ZpbHRlcj0kTFFEYXRheyJGaWx0ZXIifTtMaW1pdD0kTFFEYXRheyJMaW1pdCJ9O1R5cGU9JExRRGF0YXsiVHlwZSJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRDb25maWd7IkZBUTo6RkFRSG9vayJ9CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iVGl0bGUgJERhdGF7IlRpdGxlU29ydCJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTtTdWJhY3Rpb249U2VhcmNoO1NvcnRCeT1UaXRsZTtPcmRlcj0kTFFEYXRheyJPcmRlciJ9O1Byb2ZpbGU9JExRRGF0YXsiUHJvZmlsZSJ9O1Rha2VMYXN0U2VhcmNoPTE7RmlsdGVyPSRMUURhdGF7IkZpbHRlciJ9O0xpbWl0PSRMUURhdGF7IkxpbWl0In07VHlwZT0kTFFEYXRheyJUeXBlIn0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRleHR7IlRpdGxlIn0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJDYXRlZ29yeSAkRGF0YXsiQ2F0ZWdvcnlTb3J0In0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7IkFjdGlvbiJ9O1N1YmFjdGlvbj1TZWFyY2g7U29ydEJ5PUNhdGVnb3J5O09yZGVyPSRMUURhdGF7Ik9yZGVyIn07UHJvZmlsZT0kTFFEYXRheyJQcm9maWxlIn07VGFrZUxhc3RTZWFyY2g9MTtGaWx0ZXI9JExRRGF0YXsiRmlsdGVyIn07TGltaXQ9JExRRGF0YXsiTGltaXQifTtUeXBlPSRMUURhdGF7IlR5cGUifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGV4dHsiQ2F0ZWdvcnkifQogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KPCEtLSBkdGw6YmxvY2s6SGVhZGVyTGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJMYW5ndWFnZSAkRGF0YXsiTGFuZ3VhZ2VTb3J0In0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7IkFjdGlvbiJ9O1N1YmFjdGlvbj1TZWFyY2g7U29ydEJ5PUxhbmd1YWdlO09yZGVyPSRMUURhdGF7Ik9yZGVyIn07UHJvZmlsZT0kTFFEYXRheyJQcm9maWxlIn07VGFrZUxhc3RTZWFyY2g9MTtGaWx0ZXI9JExRRGF0YXsiRmlsdGVyIn07TGltaXQ9JExRRGF0YXsiTGltaXQifTtUeXBlPSRMUURhdGF7IlR5cGUifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGV4dHsiTGFuZ3VhZ2UifQogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KPCEtLSBkdGw6YmxvY2s6SGVhZGVyTGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJDaGFuZ2VkICREYXRheyJDaGFuZ2VkU29ydCJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTtTdWJhY3Rpb249U2VhcmNoO1NvcnRCeT1DaGFuZ2VkO09yZGVyPSRMUURhdGF7Ik9yZGVyIn07UHJvZmlsZT0kTFFEYXRheyJQcm9maWxlIn07VGFrZUxhc3RTZWFyY2g9MTtGaWx0ZXI9JExRRGF0YXsiRmlsdGVyIn07TGltaXQ9JExRRGF0YXsiTGltaXQifTtUeXBlPSRMUURhdGF7IlR5cGUifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGV4dHsiQ2hhbmdlZCJ9CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgPHRib2R5Pgo8IS0tIGR0bDpibG9jazpOb0RhdGFGb3VuZE1zZyAtLT4KICAgICAgICAgICAgICAgIDx0ciBpZD0iRW1wdHlNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iNiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiPiRUZXh0eyJObyBGQVEgZGF0YSBmb3VuZC4ifTwvYT4KICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6Tm9EYXRhRm91bmRNc2cgLS0+CjwhLS0gZHRsOmJsb2NrOlJlY29yZCAtLT4KICAgICAgICAgICAgICAgIDx0ciB0aXRsZT0iJFFEYXRheyJUaWNrZXROdW1iZXIifSI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJGQVFOdW1iZXIiPjxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249Q3VzdG9tZXJGQVFab29tO0l0ZW1JRD0kTFFEYXRheyJGQVFJRCJ9Ij4kUURhdGF7Ik51bWJlciJ9PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJUaXRsZSI+JFFEYXRheyJUaXRsZSIsIjYwIn08L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2F0ZWdvcnkiPiRRRGF0YXsiQ2F0ZWdvcnlOYW1lIiwiNjAifTwvdGQ+CjwhLS0gZHRsOmJsb2NrOlJlY29yZExhbmd1YWdlIC0tPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iTGFuZ3VhZ2UiPiRRRGF0YXsiTGFuZ3VhZ2UiLCI1In08L3RkPgo8IS0tIGR0bDpibG9jazpSZWNvcmRMYW5ndWFnZSAtLT4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNoYW5nZWQiPiRUaW1lU2hvcnR7IiREYXRheyJDaGFuZ2VkIn0ifTwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgo8IS0tIGR0bDpibG9jazpSZWNvcmQgLS0+CiAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgPC90YWJsZT4KICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpCb3R0b21TdWJOYXZpZ2F0aW9uIC0tPgogICAgPGRpdiBpZD0iQm90dG9tQWN0aW9uUm93IiBjbGFzcz0iQWN0aW9uUm93IEJpZ0J1dHRvbnMiPgogICAgICAgIDx1bCBjbGFzcz0iVGFicyI+CiAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JEVudnsiQWN0aW9uIn07U3ViYWN0aW9uPUxvYWRQcm9maWxlOyRMUURhdGF7IkxpbmsifSI+CiAgICAgICAgICAgICAgICAgICAgJmxhcnI7ICRUZXh0eyJDaGFuZ2Ugc2VhcmNoIG9wdGlvbnMifQogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L2xpPgogICAgICAgIDwvdWw+CiAgICAgICAgPGRpdiBjbGFzcz0iVGFicyBQYWdpbmF0aW9uIj4KICAgICAgICAgICAgPHN0cm9uZz4kUURhdGF7IlJlc3VsdCJ9PC9zdHJvbmc+ICRUZXh0eyJvZiJ9IDxzdHJvbmc+JFFEYXRheyJUb3RhbEhpdHMifTwvc3Ryb25nPiAtICRUZXh0eyJQYWdlIn06ICREYXRheyJTaXRlTmF2QmFyIn0KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6Qm90dG9tU3ViTmF2aWdhdGlvbiAtLT4KPC9kaXY+Cgo8IS0tIGR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZSAtLT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgQ29yZS5DdXN0b21lci5DbGlja2FibGVSb3coKTsKPC9zY3JpcHQ+CjwhLS0gZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlIC0tPgo=
IyAtLQojIEN1c3RvbWVyRkFRWm9vbS5kdGwgLSBwcm92aWRlcyBIVE1MIGZvciBDdXN0b21lckZBUVpvb20ucG0KIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxMyBPVFJTIEFHLCBodHRwOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgo8ZGl2IGlkPSJNYWluQm94IiBjbGFzcz0iVGlja2V0Wm9vbSBBUklBUm9sZU1haW4iPgoKPCEtLSBkdGw6YmxvY2s6QmFjayAtLT4KICAgIDxkaXYgY2xhc3M9IkFjdGlvblJvdyI+CiAgICAgICAgPHVsIGNsYXNzPSJUYWJzIj4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn0kRW52eyJMYXN0U2NyZWVuT3ZlcnZpZXcifSI+JmxhcnI7ICRUZXh0eyJCYWNrIn08L2E+PC9saT4KICAgICAgICA8L3VsPgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpCYWNrIC0tPgoKICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgIDxkaXYgY2xhc3M9IkZBUUhlYWRlciI+CiAgICAgICAgICAgIDxoMiB0aXRsZT0iJFFEYXRheyJUaXRsZSJ9Ij4KICAgICAgICAgICAgICAgICRRRGF0YXsiVGl0bGUifQogICAgICAgICAgICA8L2gyPgogICAgICAgICAgICA8dWwgaWQ9IkZBUU9wdGlvbnMiPgogICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249Q3VzdG9tZXJGQVFQcmludDtJdGVtSUQ9JExRRGF0YXsiSXRlbUlEIn0iIGNsYXNzPSJQcmludCBBc1BvcHVwIiB0aXRsZT0iJFRleHR7IlByaW50In0iPiRUZXh0eyJQcmludCJ9PC9hPjwvbGk+CiAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iRkFRUGF0aENhdGVnb3J5IEZBUVpvb20iPgogICAgICAgICAgICA8aDM+CjwhLS0gZHRsOmJsb2NrOkZBUVBhdGhDYXRlZ29yeUVsZW1lbnQgLS0+CiAgICAgICAgICAgICAgICAkQ29uZmlneyJGQVE6OkV4cGxvcmVyOjpQYXRoOjpTZXBhcmF0b3IifQogICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj1DdXN0b21lckZBUUV4cGxvcmVyO0NhdGVnb3J5SUQ9JExRRGF0YXsiQ2F0ZWdvcnlJRCJ9Ij4KICAgICAgICAgICAgICAgICAgICAkUURhdGF7Ik5hbWUifQogICAgICAgICAgICAgICAgPC9hPgo8IS0tIGR0bDpibG9jazpGQVFQYXRoQ2F0ZWdvcnlFbGVtZW50IC0tPgo8IS0tIGR0bDpibG9jazpGQVFQYXRoSXRlbUVsZW1lbnQgLS0+CiAgICAgICAgICAgICAgICAkQ29uZmlneyJGQVE6OkV4cGxvcmVyOjpQYXRoOjpTZXBhcmF0b3IifQogICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTtDYXRlZ29yeUlEPSRMUURhdGF7IkNhdGVnb3J5SUQifTtJdGVtSUQ9JExRRGF0YXsiSXRlbUlEIn0iPgogICAgICAgICAgICAgICAgICAgICRRRGF0YXsiVGl0bGUifQogICAgICAgICAgICAgICAgPC9hPgo8IS0tIGR0bDpibG9jazpGQVFQYXRoSXRlbUVsZW1lbnQgLS0+CiAgICAgICAgICAgIDwvaDM+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgIDx1bCBpZD0iTWVzc2FnZXMiPgo8IS0tIGR0bDpibG9jazpBdHRhY2htZW50SGVhZGVyIC0tPgogICAgICAgICAgICA8bGkgY2xhc3M9IkN1c3RvbWVyIFZpc2libGUiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iTWVzc2FnZUhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgzPiRUZXh0eyJBdHRhY2htZW50cyJ9OjwvaDM+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJBdHRhY2htZW50cyI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iTGFiZWwiPiRUZXh0eyJBdHRhY2htZW50In06PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdj4KPCEtLSBkdGw6YmxvY2s6QXR0YWNobWVudFJvdyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkRvd25sb2FkQXR0YWNobWVudCIgdGl0bGU9IiRUZXh0eyJEb3dubG9hZCBBdHRhY2htZW50In0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTtTdWJhY3Rpb249RG93bmxvYWRBdHRhY2htZW50O0l0ZW1JRD0kTFFEYXRheyJJdGVtSUQifTtGaWxlSUQ9JExRRGF0YXsiRmlsZUlEIn0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRRRGF0YXsiRmlsZW5hbWUifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAkUURhdGF7IkZpbGVzaXplIn0KICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8YnIvPgo8IS0tIGR0bDpibG9jazpBdHRhY2htZW50Um93IC0tPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvbGk+CjwhLS0gZHRsOmJsb2NrOkF0dGFjaG1lbnRIZWFkZXIgLS0+CjwhLS0gZHRsOmJsb2NrOkZBUUNvbnRlbnQgLS0+CiAgICAgICAgICAgIDxsaSBjbGFzcz0iQ3VzdG9tZXIgVmlzaWJsZSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJNZXNzYWdlSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8aDM+JFRleHR7IiREYXRheyJDYXB0aW9uIn0ifTo8L2gzPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9InRydWUiIG5hbWU9IkZpZWxkU3RhdGUiPgo8IS0tIGR0bDpibG9jazpGQVFDb250ZW50SFRNTCAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Ik1lc3NhZ2VCb2R5Ij4KIyBVc2UgdGhlIEhUTUw1IHNhbmRib3ggYXR0cmlidXRlIHRvIHByZXZlbnQgcGx1Z2lucyBhbmQgc2NyaXB0cyBmcm9tIGJlaW5nIGV4ZWN1dGVkIGluIHRoZSBicm93c2VyLgojIFVzZSBJRSdzIChub24tc3RhbmRhcmQpIHNlY3VyaXR5IGF0dHJpYnV0ZSB0byBhY2hpZXZlIHNvbWV0aGluZyBzaW1pbGFyIGluIG9sZGVyIElFIGJyb3dzZXJzLiBBcHBlbmQgc2Vzc2lvbiBpbmZvIHRvIFVSTCBiZWNhdXNlIElFIHdpbGwgbm90IHNlbmQgY29va2llcy4KIyBTZXQgJ2FsbG93LXBvcHVwcycgdG8gYWxsb3cgSUUxMCsgdG8gb3BlbiBsaW5rcy4gcmVmOiBodHRwOi8vd3d3LnczLm9yZy9odG1sL3dnL3dpa2kvQ2hhbmdlUHJvcG9zYWxzL3NhbmRib3hfYWxsb3dfcG9wdXBzCiAgICAgICAgICAgICAgICAgICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zYW1lLW9yaWdpbiBhbGxvdy1wb3B1cHMiIHNlY3VyaXR5PSJyZXN0cmljdGVkIiBjbGFzcz0iRkFRRmllbGQiIGlkPSJJZnJhbWVGQVEkUURhdGF7IkZpZWxkIn0iIG9ubG9hZD0iaWYgKHR5cGVvZiBGQVEgPT09ICdvYmplY3QnICYmIHR5cGVvZiBGQVEuQ3VzdG9tZXIgPT09ICdvYmplY3QnICYmIHR5cGVvZiBGQVEuQ3VzdG9tZXIuRkFRWm9vbSA9PT0gJ29iamVjdCcpIHsgRkFRLkN1c3RvbWVyLkZBUVpvb20uSWZyYW1lQXV0b0hlaWdodCgkKCcjSWZyYW1lRkFRJFFEYXRheyJGaWVsZCJ9JykpOyB9OyIgc3JjPSIjIiBkYXRhLXNyYz0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj1DdXN0b21lckZBUVpvb207U3ViYWN0aW9uPUhUTUxWaWV3O0l0ZW1JRD0kUURhdGF7Ikl0ZW1JRCJ9O0ZpZWxkPSRRRGF0YXsiRmllbGQifTskUUVudnsiU2Vzc2lvbk5hbWUifT0kUUVudnsiU2Vzc2lvbklEIn0iPjwvaWZyYW1lPgogICAgICAgICAgICAgICAgPC9kaXY+CjwhLS0gZHRsOmJsb2NrOkZBUUNvbnRlbnRIVE1MIC0tPgo8IS0tIGR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZSAtLT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiAgICBDb3JlLkNvbmZpZy5TZXQoJ0ZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVySFRNTEZpZWxkSGVpZ2h0RGVmYXVsdCcsIHBhcnNlSW50KCIkQ29uZmlneyJGQVE6OkZyb250ZW5kOjpDdXN0b21lckhUTUxGaWVsZEhlaWdodERlZmF1bHQifSIgfHwgMCwgMTApKTsKICAgIENvcmUuQ29uZmlnLlNldCgnRkFROjpGcm9udGVuZDo6Q3VzdG9tZXJIVE1MRmllbGRIZWlnaHRNYXgnLCBwYXJzZUludCgiJENvbmZpZ3siRkFROjpGcm9udGVuZDo6Q3VzdG9tZXJIVE1MRmllbGRIZWlnaHRNYXgifSIgfHwgMCwgMTApKTsKCiAgICAvLyBjb3B5IGRhdGEtc3JjIGF0dHJpYnV0ZSB0byBzcmMgYXR0cmlidXRlIGZvciBhbGwgaWZyYW1lcyB0byBjb3JyZWN0bHkgZGlzcGxheSBpdHMgY29udGVudHMgYWZ0ZXIgSlMgaXMgZnVsbHkgbG9hZGVkCiAgICAkKCdpZnJhbWUnKS5lYWNoKGZ1bmN0aW9uKCl7CiAgICAgICAgJCh0aGlzKS5hdHRyKCJzcmMiLCAkKHRoaXMpLmF0dHIoImRhdGEtc3JjIikgKTsKICAgIH0pOwovL11dPjwvc2NyaXB0Pgo8IS0tIGR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZSAtLT4KPCEtLSBkdGw6YmxvY2s6RkFRQ29udGVudFBsYWluIC0tPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQXJ0aWNsZUZBUUNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAkRGF0YXsiQ29udGVudCJ9CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6RkFRQ29udGVudFBsYWluIC0tPgogICAgICAgICAgICA8L2xpPgo8IS0tIGR0bDpibG9jazpGQVFDb250ZW50IC0tPgoKICAgICAgICA8L3VsPgogICAgICAgIDxkaXYgaWQ9Ilpvb21TaWRlYmFyIj4KICAgICAgICAgICAgPHVsIGlkPSJNZXRhZGF0YSI+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iTWVzc2FnZUhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMz4kVGV4dHsiRkFRIEluZm9ybWF0aW9uIn08L2gzPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpPjxzcGFuIGNsYXNzPSJLZXkiPiRUZXh0eyJBcnRpY2xlIE51bWJlciJ9Ojwvc3Bhbj4gPHNwYW4+JFFEYXRheyJOdW1iZXIifTwvc3Bhbj48L2xpPgogICAgICAgICAgICAgICAgPGxpPjxzcGFuIGNsYXNzPSJLZXkiPiRUZXh0eyJDYXRlZ29yeSJ9Ojwvc3Bhbj4gPHNwYW4gdGl0bGU9IiRUZXh0eyIkRGF0YXsiQ2F0ZWdvcnlOYW1lIn0ifSI+JFRleHR7IiREYXRheyJDYXRlZ29yeU5hbWUifSJ9PC9zcGFuPjwvbGk+CgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJLZXl3b3Jkc0NvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IktleSI+JFRleHR7IktleXdvcmRzIn06PC9zcGFuPgo8IS0tIGR0bDpibG9jazpLZXl3b3JkcyAtLT4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iS2V5d29yZCIgdGl0bGU9IiRUZXh0eyJTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCJ9OiAkUURhdGF7IktleXdvcmQifSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249Q3VzdG9tZXJGQVFTZWFyY2g7U3ViYWN0aW9uPVNlYXJjaDtLZXl3b3JkPSRMUURhdGF7IktleXdvcmQifSI+JFFEYXRheyJLZXl3b3JkIn08L2E+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgo8IS0tIGR0bDpibG9jazpLZXl3b3JkcyAtLT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PHNwYW4gY2xhc3M9IktleSI+JFRleHR7IlN0YXRlIn06PC9zcGFuPiA8c3BhbiB0aXRsZT0iJFRleHR7IiREYXRheyJTdGF0ZSJ9In0iPiRUZXh0eyIkRGF0YXsiU3RhdGUifSJ9PC9zcGFuPjwvbGk+CjwhLS0gZHRsOmJsb2NrOkxhbmd1YWdlIC0tPgogICAgICAgICAgICAgICAgPGxpPjxzcGFuIGNsYXNzPSJLZXkiPiRUZXh0eyJMYW5ndWFnZSJ9Ojwvc3Bhbj4gPHNwYW4gdGl0bGU9IiRUZXh0eyIkRGF0YXsiTGFuZ3VhZ2UifSJ9Ij4kVGV4dHsiJERhdGF7Ikxhbmd1YWdlIn0ifTwvc3Bhbj48L2xpPgo8IS0tIGR0bDpibG9jazpMYW5ndWFnZSAtLT4KCjwhLS0gZHRsOmJsb2NrOlZpZXdSYXRpbmcgLS0+CiAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IktleSBSYXRpbmdMYWJlbCI+JFRleHR7IlJhdGluZyJ9Ojwvc3Bhbj4KPCEtLSBkdGw6YmxvY2s6UmF0ZVN0YXJzIC0tPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJSYXRlU3RhciI+PGkgY2xhc3M9Imljb24tc3RhciI+PC9pPjwvc3Bhbj4KPCEtLSBkdGw6YmxvY2s6UmF0ZVN0YXJzIC0tPgo8IS0tIGR0bDpibG9jazpSYXRlU3RhcnNDb3VudCAtLT4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iUmF0ZVN0YXJUZXh0IiB0aXRsZT0iJFFEYXRheyJTdGFycyJ9ICRUZXh0eyJvdXQgb2YgNSJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgJFFEYXRheyJTdGFycyJ9ICRUZXh0eyJvdXQgb2YgNSJ9CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgo8IS0tIGR0bDpibG9jazpSYXRlU3RhcnNDb3VudCAtLT4KICAgICAgICAgICAgICAgIDwvbGk+CjwhLS0gZHRsOmJsb2NrOlZpZXdSYXRpbmcgLS0+Cgo8IS0tIGR0bDpibG9jazpWaWV3Vm90ZXMgLS0+CiAgICAgICAgICAgICAgICA8bGk+PHNwYW4gY2xhc3M9IktleSI+JFRleHR7IlZvdGVzIn06PC9zcGFuPiA8c3BhbiB0aXRsZT0iJFFEYXRheyJWb3RlcyJ9Ij4kUURhdGF7IlZvdGVzIn08L3NwYW4+PC9saT4KPCEtLSBkdGw6YmxvY2s6Vmlld1ZvdGVzIC0tPgogICAgICAgICAgICA8L3VsPgogICAgICAgIDwvZGl2PgoKPCEtLSBkdGw6YmxvY2s6RkFRVm90aW5nIC0tPgogICAgICAgIDxmb3JtIGFjdGlvbj0iJEVudnsiQ0dJSGFuZGxlIn0iIG1ldGhvZD0icG9zdCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgbmFtZT0iRkFRVm90ZSIgY2xhc3M9IlByZXZlbnRNdWx0aXBsZVN1Ym1pdHMiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJWb3RpbmdDb250YWluZXIiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iVm90aW5nQm94IFZpc2libGUiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkZBUVZvdGluZyIgY2xhc3M9IkZBUVZvdGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Ik1lc3NhZ2VIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzPiRUZXh0eyJSYXRpbmcifTo8L2gzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTWVzc2VuZ2VyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlNwYWNpbmdUb3AiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlZvdGluZ1F1ZXN0aW9uIj4kVGV4dHsiSG93IGhlbHBmdWwgd2FzIHRoaXMgYXJ0aWNsZT8gUGxlYXNlIGdpdmUgdXMgeW91ciByYXRpbmcgYW5kIGhlbHAgdG8gaW1wcm92ZSB0aGUgRkFRIERhdGFiYXNlLiBUaGFuayBZb3UhIn08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJTcGFjaW5nVG9wIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlJhdGVMYWJlbEJlZm9yZSI+JFRleHR7Im5vdCBoZWxwZnVsIn08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCjwhLS0gZHRsOmJsb2NrOkZBUVZvdGluZ1JhdGVSb3cgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJSYXRlQnV0dG9uJERhdGF7IlZhbHVlIn0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJSYXRlQnV0dG9uIFJhdGVVbkNoZWNrZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iaWNvbi1zdGFyLWVtcHR5Ij48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLXN0YXIiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFFEYXRheyJUaXRsZSJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CjwhLS0gZHRsOmJsb2NrOkZBUVZvdGluZ1JhdGVSb3cgLS0+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iUmF0ZUxhYmVsQWZ0ZXIiPiRUZXh0eyJ2ZXJ5IGhlbHBmdWwifTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iQ3VzdG9tZXJGQVFab29tIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJWb3RlIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDYXRlZ29yeUlEIiB2YWx1ZT0iJFFEYXRheyJDYXRlZ29yeUlEIn0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ikl0ZW1JRCIgdmFsdWU9IiRRRGF0YXsiSXRlbUlEIn0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkFjdGlvblJvdyBWb3RpbmdBY3Rpb25Sb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiAgaWQ9IlJhdGVTdWJtaXRCdXR0b24iIGNsYXNzPSJIaWRkZW4iIHZhbHVlPSIkVGV4dHsiU3VibWl0In0iPiRUZXh0eyJTdWJtaXQifTwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlJhdGUiIHZhbHVlPSIkUURhdGF7IlNlbGVjdGVkUmF0ZSJ9ImlkPSJSYXRlVmFsdWUiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Zvcm0+CjwhLS0gZHRsOmJsb2NrOkZBUVZvdGluZyAtLT4KCiAgICA8L2Rpdj4KPC9kaXY+Cgo8IS0tIGR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZSAtLT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgovKmdsb2JhbCBGQVE6IHRydWUgKi8KRkFRLkN1c3RvbWVyLkZBUVpvb20uSW5pdCgpOwoKJCgnYS5Bc1BvcHVwJykuYmluZCgnY2xpY2snLCBmdW5jdGlvbiAoRXZlbnQpIHsKICAgIENvcmUuVUkuUG9wdXAuT3BlblBvcHVwKCQodGhpcykuYXR0cignaHJlZicpLCAnVGlja2V0QWN0aW9uJyk7CiAgICByZXR1cm4gZmFsc2U7Cn0pOwoKJCgnLlJhdGVCdXR0b24nKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewogICAgdmFyIFJhdGVOdW1iZXIgPSBwYXJzZUludCgkKHRoaXMpLmNsb3Nlc3QoJ2RpdicpLmF0dHIoJ2lkJykucmVwbGFjZSgvUmF0ZUJ1dHRvbi8sICcnKSwgMTApOwogICAgJCgnI1JhdGVWYWx1ZScpLnZhbChSYXRlTnVtYmVyKTsKICAgICQoJyNSYXRlU3VibWl0QnV0dG9uJykuZmFkZUluKDI1MCk7CiAgICAkKCcjRkFRVm90aW5nJykuZmluZCgnLlJhdGVCdXR0b24nKS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBJdGVtUmF0ZU51bWJlciA9IHBhcnNlSW50KCQodGhpcykuY2xvc2VzdCgnZGl2JykuYXR0cignaWQnKS5yZXBsYWNlKC9SYXRlQnV0dG9uLywgJycpLCAxMCk7CiAgICAgICAgaWYgKCBJdGVtUmF0ZU51bWJlciA8PSBSYXRlTnVtYmVyICkgewogICAgICAgICAgICAkKHRoaXMpLmFkZENsYXNzKCdSYXRlQ2hlY2tlZCcpOwogICAgICAgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKCdSYXRlVW5DaGVja2VkJyk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkKHRoaXMpLmFkZENsYXNzKCdSYXRlVW5DaGVja2VkJyk7CiAgICAgICAgICAgICQodGhpcykucmVtb3ZlQ2xhc3MoJ1JhdGVDaGVja2VkJyk7CiAgICAgICAgfQogICAgfSk7Cn0pOwo8L3NjcmlwdD4KPCEtLSBkdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUgLS0+Cg==
IyAtLQojIFB1YmxpY0ZBUUV4cGxvcmVyLmR0bC5kdGwgLSBwcm92aWRlcyBIVE1MIGZvciBQdWJsaWNGQVFFeHBsb3Jlci5wbQojIENvcHlyaWdodCAoQykgMjAwMS0yMDEzIE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCjxkaXYgaWQ9Ik1haW5Cb3giIGNsYXNzPSJBUklBUm9sZU1haW4iPgoKICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgIDxkaXYgY2xhc3M9IkZBUUhlYWRlciI+CiAgICAgICAgICAgIDxoMiB0aXRsZT0iJFFEYXRheyJUaXRsZSJ9Ij4KICAgICAgICAgICAgICAgICRRRGF0YXsiVGl0bGUiLCI0MCJ9CiAgICAgICAgICAgIDwvaDI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iRkFRUGF0aENhdGVnb3J5Ij4KICAgICAgICAgICAgPGgzPgo8IS0tIGR0bDpibG9jazpGQVFQYXRoQ2F0ZWdvcnlFbGVtZW50IC0tPgogICAgICAgICAgICAgICAgJENvbmZpZ3siRkFROjpFeHBsb3Jlcjo6UGF0aDo6U2VwYXJhdG9yIn0KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249UHVibGljRkFRRXhwbG9yZXI7Q2F0ZWdvcnlJRD0kTFFEYXRheyJDYXRlZ29yeUlEIn0iPgogICAgICAgICAgICAgICAgICAgICRRRGF0YXsiTmFtZSJ9CiAgICAgICAgICAgICAgICA8L2E+CjwhLS0gZHRsOmJsb2NrOkZBUVBhdGhDYXRlZ29yeUVsZW1lbnQgLS0+CiAgICAgICAgICAgIDwvaDM+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJMYXlvdXRGaXhlZFNpZGViYXIgU2lkZWJhckxhc3QiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJTaWRlYmFyQ29sdW1uIExhcmdlIj4KCjwhLS0gZHRsOmJsb2NrOlF1aWNrU2VhcmNoIC0tPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDM+JFRleHR7IlNlYXJjaCJ9PC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IkFjdGlvbkxpc3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGNsYXNzPSJTZWFyY2hCb3giIGFjdGlvbj0iJEVudnsiQ0dJSGFuZGxlIn0iIG1ldGhvZD0icG9zdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IiRRRGF0YXsiQWN0aW9uIn0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iU2VhcmNoIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ik5hdiIgdmFsdWU9IiRRRGF0YXsiTmF2In0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IkZ1bGx0ZXh0IiB2YWx1ZT0iJFFEYXRheyJTZWFyY2gifSIgaWQ9IlNlYXJjaCIgdGl0bGU9IiRUZXh0eyJTZWFyY2gifSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgdmFsdWU9IiRUZXh0eyJTZWFyY2gifSI+JFRleHR7IlF1aWNrIFNlYXJjaCJ9PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRleHR7IldpbGRjYXJkcyBhcmUgYWxsb3dlZC4ifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSAgY2xhc3M9IkNhbGxGb3JBY3Rpb24gRkFRU2VhcmNoQnV0dG9uIFNwYWNpbmdUb3AiIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JExRRGF0YXsiQWN0aW9uIn07Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+JFRleHR7IkFkdmFuY2VkIFNlYXJjaCJ9PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6UXVpY2tTZWFyY2ggLS0+Cgo8IS0tIGR0bDpibG9jazpJbmZvQm94RkFRTWluaUxpc3QgLS0+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDM+JFRleHR7IiREYXRheyJIZWFkZXIifSJ9PC9oMz4KPCEtLSBkdGw6YmxvY2s6SW5mb0JveEZBUU1pbmlMaXN0TmV3c1JTUyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj1QdWJsaWNGQVFSU1M7VHlwZT0kTFFEYXRheyJUeXBlIn0iIHRpdGxlPSIkVGV4dHsiJERhdGF7IlRpdGxlIn0ifSIgY2xhc3M9IlJTU0ljb24gQXNCbG9jayI+PGkgY2xhc3M9Imljb24tcnNzIj48L2k+PC9hPgo8IS0tIGR0bDpibG9jazpJbmZvQm94RkFRTWluaUxpc3ROZXdzUlNTIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IlRhYmxlbGlrZSBGQVFNaW5pTGlzdCI+CjwhLS0gZHRsOmJsb2NrOkluZm9Cb3hGQVFNaW5pTGlzdEl0ZW1Sb3cgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CjwhLS0gZHRsOmJsb2NrOkluZm9Cb3hGQVFNaW5pTGlzdEl0ZW1Sb3dQb3NpdGlvbk51bWJlciAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUURhdGF7Ik51bWJlciJ9Lgo8IS0tIGR0bDpibG9jazpJbmZvQm94RkFRTWluaUxpc3RJdGVtUm93UG9zaXRpb25OdW1iZXIgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj1QdWJsaWNGQVFab29tO0l0ZW1JRD0kTFFEYXRheyJJdGVtSUQifSIgdGl0bGU9IiRRRGF0YXsiVGl0bGUifSAoJFFEYXRheyJDYXRlZ29yeU5hbWUifSkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUURhdGF7IlRpdGxlIiwiNTAifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFFEYXRheyJDYXRlZ29yeVNob3J0TmFtZSIsIjE1In0gLSAkUURhdGF7Ikxhbmd1YWdlIn0gLSAkVGV4dHsiJERhdGF7IlN0YXRlIn0ifSAtICRUaW1lU2hvcnR7IiREYXRheyJDcmVhdGVkIn0ifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CjwhLS0gZHRsOmJsb2NrOkluZm9Cb3hGQVFNaW5pTGlzdEl0ZW1Sb3cgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CjwhLS0gZHRsOmJsb2NrOkluZm9Cb3hGQVFNaW5pTGlzdCAtLT4KCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KCjwhLS0gZHRsOmJsb2NrOlN1YmNhdGVnb3JpZXMgLS0+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgo8IS0tIGR0bDpibG9jazpPdmVydmlld1Jlc3VsdCAtLT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDM+JFRleHR7IlN1YmNhdGVnb3JpZXMifTwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CgogICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9Ik92ZXJ2aWV3IiBzdW1tYXJ5PSJGQVEgY2F0ZWdvcmllcyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+PGEgaHJlZj0iIyI+JFRleHR7Ik5hbWUifTwvYT48L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+PGEgaHJlZj0iIyI+JFRleHR7IkNvbW1lbnQifTwvYT48L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+PGEgaHJlZj0iIyI+JFRleHR7IlN1YmNhdGVnb3JpZXMifTwvYT48L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+PGEgaHJlZj0iIyI+JFRleHR7IkZBUSBBcnRpY2xlcyJ9PC9hPjwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+CjwhLS0gZHRsOmJsb2NrOk5vQ2F0ZWdvcnlEYXRhRm91bmRNc2cgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIj4kVGV4dHsiTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4ifTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgo8IS0tIGR0bDpibG9jazpOb0NhdGVnb3J5RGF0YUZvdW5kTXNnIC0tPgo8IS0tIGR0bDpibG9jazpPdmVydmlld1Jlc3VsdFJvdyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YSBjbGFzcz0iQXNCbG9jayIgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTtDYXRlZ29yeUlEPSRMUURhdGF7IkNhdGVnb3J5SUQifSI+JFFEYXRheyJOYW1lIn08L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRRRGF0YXsiQ29tbWVudCJ9PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRRRGF0YXsiU3ViQ2F0ZWdvcnlDb3VudCJ9PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRRRGF0YXsiQXJ0aWNsZUNvdW50In08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3UmVzdWx0Um93IC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdSZXN1bHQgLS0+CiAgICAgICAgICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6U3ViY2F0ZWdvcmllcyAtLT4KCgo8IS0tIGR0bDpibG9jazpGQVFJdGVtTGlzdCAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMz4kVGV4dHsiRkFRIEFydGljbGVzIn08L2gzPgo8IS0tIGR0bDpibG9jazpQYWdpbmF0aW9uIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJQYWdpbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+JFFEYXRheyJSZXN1bHQifTwvc3Ryb25nPiAkVGV4dHsib2YifSA8c3Ryb25nPiRRRGF0YXsiVG90YWxIaXRzIn08L3N0cm9uZz4gLSAkVGV4dHsiUGFnZSJ9OiAkRGF0YXsiU2l0ZU5hdkJhciJ9CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpQYWdpbmF0aW9uIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9Ik92ZXJ2aWV3Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iRkFRTnVtYmVyICREYXRheyJGQVFJRFNvcnQifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7IkFjdGlvbiJ9O0NhdGVnb3J5SUQ9JExRRGF0YXsiQ2F0ZWdvcnlJRCJ9O1NvcnRCeT1GQVFJRDtPcmRlcj0kTFFEYXRheyJPcmRlciJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQ29uZmlneyJGQVE6OkZBUUhvb2sifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IlRpdGxlICREYXRheyJUaXRsZVNvcnQifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7IkFjdGlvbiJ9O0NhdGVnb3J5SUQ9JExRRGF0YXsiQ2F0ZWdvcnlJRCJ9O1NvcnRCeT1UaXRsZTtPcmRlcj0kTFFEYXRheyJPcmRlciJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGV4dHsiVGl0bGUifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkNhdGVnb3J5ICREYXRheyJDYXRlZ29yeVNvcnQifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7IkFjdGlvbiJ9O0NhdGVnb3J5SUQ9JExRRGF0YXsiQ2F0ZWdvcnlJRCJ9O1NvcnRCeT1DYXRlZ29yeTtPcmRlcj0kTFFEYXRheyJPcmRlciJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGV4dHsiQ2F0ZWdvcnkifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgo8IS0tIGR0bDpibG9jazpIZWFkZXJMYW5ndWFnZSAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJMYW5ndWFnZSAkRGF0YXsiTGFuZ3VhZ2VTb3J0In0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTtDYXRlZ29yeUlEPSRMUURhdGF7IkNhdGVnb3J5SUQifTtTb3J0Qnk9TGFuZ3VhZ2U7T3JkZXI9JExRRGF0YXsiT3JkZXIifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRleHR7Ikxhbmd1YWdlIn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KPCEtLSBkdGw6YmxvY2s6SGVhZGVyTGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+CjwhLS0gZHRsOmJsb2NrOk5vRkFRRGF0YUZvdW5kTXNnIC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyI+JFRleHR7Ik5vIEZBUSBhcnRpY2xlcyBmb3VuZC4ifTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgo8IS0tIGR0bDpibG9jazpOb0ZBUURhdGFGb3VuZE1zZyAtLT4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkIC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJGQVFOdW1iZXIiIHRpdGxlPSIkUURhdGF7Ik51bWJlciJ9Ij48YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPVB1YmxpY0ZBUVpvb207SXRlbUlEPSRMUURhdGF7IkZBUUlEIn07Wm9vbUJhY2tMaW5rPSRMUURhdGF7Ilpvb21CYWNrTGluayJ9OyI+JFFEYXRheyJOdW1iZXIifTwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IlRpdGxlIiB0aXRsZT0iJFFEYXRheyJUaXRsZSJ9Ij4kUURhdGF7IlRpdGxlIiwiNjAifTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2F0ZWdvcnkiIHRpdGxlPSIkUURhdGF7IkNhdGVnb3J5TmFtZSJ9Ij4kUURhdGF7IkNhdGVnb3J5TmFtZSIsIjQ1In08L3RkPgo8IS0tIGR0bDpibG9jazpSZWNvcmRMYW5ndWFnZSAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJMYW5ndWFnZSIgdGl0bGU9IiRRRGF0YXsiTGFuZ3VhZ2UifSI+JFFEYXRheyJMYW5ndWFnZSIsIjUifTwvdGQ+CjwhLS0gZHRsOmJsb2NrOlJlY29yZExhbmd1YWdlIC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CjwhLS0gZHRsOmJsb2NrOlJlY29yZCAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CjwhLS0gZHRsOmJsb2NrOkJvdHRvbVN1Yk5hdmlnYXRpb24gLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlBhZ2luYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz4kUURhdGF7IlJlc3VsdCJ9PC9zdHJvbmc+ICRUZXh0eyJvZiJ9IDxzdHJvbmc+JFFEYXRheyJUb3RhbEhpdHMifTwvc3Ryb25nPiAtICRUZXh0eyJQYWdlIn06ICREYXRheyJTaXRlTmF2QmFyIn0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPCEtLSBkdGw6YmxvY2s6Qm90dG9tU3ViTmF2aWdhdGlvbiAtLT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpGQVFJdGVtTGlzdCAtLT4KCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CjwvZGl2PgoKPCEtLSBkdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUgLS0+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLy8gbWFrZSB3aG9sZSBGQVEgSXRlbSByb3cgY2xpY2thYmxlLCBidXQgbm90IHRoZSBoZWFkZXJzLCBjYW4ndCB1c2UgQ29yZS5DdXN0b21lci5DbGlja2FibGVSb3coKQovLyBzaW5jZSBpdCB1c2VzICJ0YWJsZSB0ciIgYXMgc2VsZWN0b3IsIHNlZSBidWcjOTMyOQokKCJ0Ym9keSB0ciIpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICQoImEiLCB0aGlzKS5hdHRyKCJocmVmIik7CiAgICByZXR1cm4gZmFsc2U7Cn0pOwo8L3NjcmlwdD4KPCEtLSBkdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUgLS0+Cg==
IyAtLQojIFB1YmxpY0ZBUVByaW50LmR0bCAtIHByb3ZpZGVzIEhUTUwgcHJpbnQgdmlldwojIENvcHlyaWdodCAoQykgMjAwMS0yMDEzIE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCjx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIxIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiPgogICAgPHRyPgogICAgICAgIDx0ZCBjbGFzcz0ibWFpbmhlYWQiPiRDb25maWd7IkZBUTo6RkFRSG9vayJ9OiAkUURhdGF7Ik51bWJlciJ9IC8gJFFEYXRheyJUaXRsZSJ9PC90ZD4KICAgIDwvdHI+CjwvdGFibGU+Cjx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIxIiBjZWxscGFkZGluZz0iMTAiIHdpZHRoPSIxMDAlIj4KICAgIDx0cj4KICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnRrZXkiPgogICAgICAgICAgICAkVGV4dHsiRkFRLUluZm8ifToKICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSI+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI1MCUiIHZhbGlnbj0idG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50a2V5Ij4kVGV4dHsiQ2F0ZWdvcnkifTogPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnR2YWx1ZSI+JFFEYXRheyJDYXRlZ29yeU5hbWUifTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgo8IS0tIGR0bDpibG9jazpMYW5ndWFnZSAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnRrZXkiPiRUZXh0eyJMYW5ndWFnZSJ9OiA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4kUURhdGF7Ikxhbmd1YWdlIn08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6TGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjUwJSIgdmFsaWduPSJ0b3AiPgogICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMyIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KCjwhLS0gZHRsOmJsb2NrOlJhdGluZyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnRrZXkiPiRUZXh0eyJWb3RlcyJ9OiA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4kUURhdGF7IlZvdGVzIn08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnRrZXkiPiRUZXh0eyJSZXN1bHQifTogPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnR2YWx1ZSI+JFFEYXRheyJWb3RlUmVzdWx0In0gJiMzNzs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6UmF0aW5nIC0tPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnRrZXkiPiRUZXh0eyJMYXN0IHVwZGF0ZSJ9OiA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4kVGltZUxvbmd7IiREYXRheyJDaGFuZ2VkIn0ifTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8YnIvPgogICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMyIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEwJSIgY2xhc3M9ImNvbnRlbnRrZXkiPiRUZXh0eyJLZXl3b3JkcyJ9OiA8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iOTAlIiBjbGFzcz0iY29udGVudHZhbHVlIj4kUURhdGF7IktleXdvcmRzIn08L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgICA8dGQ+CiAgICAgICAgICAgIDxocj4KICAgICAgICA8L3RkPgogICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6RkFRQ29udGVudCAtLT4KICAgIDx0cj4KICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnRrZXkiPgogICAgICAgICAgICAkVGV4dHsiJERhdGF7IkNhcHRpb24ifSJ9OiAgPHNwYW4gY2xhc3M9InNtYWxsIj4oJFRleHR7IiREYXRheyJTdGF0ZU5hbWUifSJ9KSA8L3NwYW4+CiAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIxMCIgY2VsbFBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnR2YWx1ZSI+JERhdGF7IkNvbnRlbnQifTwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICAgIDx0ZD4KICAgICAgICAgICAgPGhyPgogICAgICAgIDwvdGQ+CiAgICA8L3RyPgo8IS0tIGR0bDpibG9jazpGQVFDb250ZW50IC0tPgoKPC90YWJsZT4K
IyAtLQojIFB1YmxpY0ZBUVNlYXJjaC5kdGwgLSBwcm92aWRlcyBIVE1MIGZvcm0gZm9yIFB1YmxpY0ZBUVNlYXJjaC5wbQojIENvcHlyaWdodCAoQykgMjAwMS0yMDEzIE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCjwhLS0gZHRsOmJsb2NrOlNlYXJjaCAtLT4KPGRpdiBpZD0iTWFpbkJveCIgY2xhc3M9IlNlYXJjaCBBUklBUm9sZU1haW4iPgogICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CgogICAgICAgIDxmb3JtIGFjdGlvbj0iJEVudnsiQ0dJSGFuZGxlIn0iIG1ldGhvZD0icG9zdCIgbmFtZT0iY29tcG9zZSI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IiRFbnZ7IkFjdGlvbiJ9Ii8+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlNlYXJjaCIvPgogICAgICAgICAgICA8ZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8aDI+JENvbmZpZ3siRkFROjpGQVFIb29rIn08L2gyPgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOdW1iZXIiPiRDb25maWd7IkZBUTo6RkFRSG9vayJ9PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IiRDb25maWd7IkZBUTo6RkFRSG9vayJ9IiB0eXBlPSJ0ZXh0IiBuYW1lPSJOdW1iZXIiIGlkPSJOdW1iZXIiIHNpemU9IjMwIiB2YWx1ZT0iJFFEYXRheyJOdW1iZXIifSIvPgogICAgICAgICAgICAgICAgICAgIDxwPiRUZXh0eyJlLiBnLiAxMCo1MTU1IG9yIDEwNTY1OCoifTwvcD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICA8ZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8aDI+JFRleHR7IkZ1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpIn08L2gyPgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJUaXRsZSI+JFRleHR7IkZ1bGx0ZXh0In08L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iJFRleHR7IkZ1bGx0ZXh0In0iIHR5cGU9InRleHQiIGlkPSJGdWxsVGV4dCIgbmFtZT0iRnVsbHRleHQiIHZhbHVlPSIkUURhdGF7IkZ1bGx0ZXh0In0iIHNpemU9IjIwIiAvPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlRpdGxlIj4kVGV4dHsiVGl0bGUifTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSIkVGV4dHsiVGl0bGUifSIgdHlwZT0idGV4dCIgaWQ9IlRpdGxlIiBuYW1lPSJUaXRsZSIgdmFsdWU9IiRRRGF0YXsiVGl0bGUifSIgc2l6ZT0iMjAiIC8+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iS2V5d29yZCI+JFRleHR7IktleXdvcmQifTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSIkVGV4dHsiS2V5d29yZCJ9IiB0eXBlPSJ0ZXh0IiBpZD0iS2V5d29yZCIgbmFtZT0iS2V5d29yZCIgdmFsdWU9IiRRRGF0YXsiS2V5d29yZCJ9IiBzaXplPSIyMCIgLz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2ZpZWxkc2V0Pgo8IS0tIGR0bDpibG9jazpMYW5ndWFnZSAtLT4KICAgICAgICAgICAgPGZpZWxkc2V0PgogICAgICAgICAgICAgICAgPGgyPiRUZXh0eyJMYW5ndWFnZSJ9OjwvaDI+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICREYXRheyJMYW5ndWFnZXNTdHJnIn0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2ZpZWxkc2V0Pgo8IS0tIGR0bDpibG9jazpMYW5ndWFnZSAtLT4KICAgICAgICAgICAgPGZpZWxkc2V0PgogICAgICAgICAgICAgICAgPGgyPiRUZXh0eyJDYXRlZ29yeSJ9OjwvaDI+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICREYXRheyJDYXRlZ29yaWVzU3RyZyJ9CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUaW1lU2VhcmNoVHlwZSI+CiAgICAgICAgICAgICAgICA8aDI+JFRleHR7IlZvdGUgcmVzdHJpY3Rpb25zIn08L2gyPgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IiRUZXh0eyJObyB2b3RlIHNldHRpbmdzIn0iIHR5cGU9InJhZGlvIiAgaWQ9Ik5vVm90ZVNldCIgbmFtZT0iVm90ZVNlYXJjaE9wdGlvbiIgdmFsdWU9IiIgJERhdGF7IlZvdGVTZWFyY2hPcHRpb246Ok5vbmUifSAvPgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik5vVFZvdGVTZXQiPiRUZXh0eyJBbGwifTwvbGFiZWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSRUZXh0eyJTcGVjaWZpYyB2b3RlcyJ9IHR5cGU9InJhZGlvIiBpZD0iVm90ZVBvaW50IiBuYW1lPSJWb3RlU2VhcmNoT3B0aW9uIiAgdmFsdWU9IlZvdGVQb2ludCIgJERhdGF7IlZvdGVTZWFyY2hPcHRpb246OlZvdGVQb2ludCJ9IC8+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iVm90ZVBvaW50Ij4kVGV4dHsiT25seSBGQVEgYXJ0aWNsZXMgd2l0aCB2b3Rlcy4uLiJ9PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAkRGF0YXsiVm90ZVNlYXJjaFR5cGVTZWxlY3Rpb25TdHJpbmcifQogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJWb3RlU2VhcmNoIiB2YWx1ZT0iJFFEYXRheyJWb3RlU2VhcmNoIn0iIGNsYXNzPSJXMjVwYyIvPgogICAgICAgICAgICAgICAgICAgIDxwPiRUZXh0eyJlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjAifTwvcD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2ZpZWxkc2V0PgoKICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUaW1lU2VhcmNoVHlwZSI+CiAgICAgICAgICAgICAgICA8aDI+JFRleHR7IlJhdGUgcmVzdHJpY3Rpb25zIn08L2gyPgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IiRUZXh0eyJObyByYXRlIHNldHRpbmdzIn0iIHR5cGU9InJhZGlvIiAgaWQ9Ik5vUmF0ZVNldCIgbmFtZT0iUmF0ZVNlYXJjaE9wdGlvbiIgdmFsdWU9IiIgJERhdGF7IlJhdGVTZWFyY2hPcHRpb246Ok5vbmUifSAvPgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik5vUmF0ZVNldCI+JFRleHR7IkFsbCJ9PC9sYWJlbD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9JFRleHR7IlNwZWNpZmljIHJhdGUifSB0eXBlPSJyYWRpbyIgaWQ9IlJhdGVQb2ludCIgbmFtZT0iUmF0ZVNlYXJjaE9wdGlvbiIgdmFsdWU9IlJhdGVQb2ludCIgJERhdGF7IlJhdGVTZWFyY2hPcHRpb246OlJhdGVQb2ludCJ9IC8+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iUmF0ZVBvaW50Ij4kVGV4dHsiT25seSBGQVEgYXJ0aWNsZXMgd2l0aCByYXRlLi4uIn08L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICREYXRheyJSYXRlU2VhcmNoVHlwZVNlbGVjdGlvblN0cmluZyJ9CiAgICAgICAgICAgICAgICAgICAgJERhdGF7IlJhdGVTZWFyY2hTZWxlY3Rpb25TdHJpbmcifQogICAgICAgICAgICAgICAgICAgIDxwPiRUZXh0eyJlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSJ9PC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZmllbGRzZXQ+CgogICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRpbWVTZWFyY2hUeXBlIj4KICAgICAgICAgICAgICAgIDxoMj4kVGV4dHsiVGltZSByZXN0cmljdGlvbnMifTwvaDI+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iJFRleHR7Ik5vIHRpbWUgc2V0dGluZ3MifSIgdHlwZT0icmFkaW8iICBpZD0iTm9UaW1lU2V0IiBuYW1lPSJUaW1lU2VhcmNoVHlwZSIgdmFsdWU9IiIgJERhdGF7IlRpbWVTZWFyY2hUeXBlOjpOb25lIn0gLz4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOb1RpbWVTZXQiPiRUZXh0eyJBbGwifTwvbGFiZWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSIkVGV4dHsiU3BlY2lmaWMgZGF0ZSJ9IiB0eXBlPSJyYWRpbyIgaWQ9IkRhdGUiIG5hbWU9IlRpbWVTZWFyY2hUeXBlIiAgdmFsdWU9IlRpbWVQb2ludCIgJERhdGF7IlRpbWVTZWFyY2hUeXBlOjpUaW1lUG9pbnQifSAvPgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkRhdGUiPiRUZXh0eyJPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIn08L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICREYXRheyJJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQifSAkRGF0YXsiSXRlbUNyZWF0ZVRpbWVQb2ludCJ9ICREYXRheyJJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0In0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IiRUZXh0eyJEYXRlIHJhbmdlIn0iIHR5cGU9InJhZGlvIiBpZD0iRGF0ZVJhbmdlIiBuYW1lPSJUaW1lU2VhcmNoVHlwZSIgdmFsdWU9IlRpbWVTbG90IiAkRGF0YXsiVGltZVNlYXJjaFR5cGU6OlRpbWVTbG90In0gLz4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJEYXRlUmFuZ2UiPiRUZXh0eyJPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4ifTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgJERhdGF7Ikl0ZW1DcmVhdGVUaW1lU3RhcnQifSAkVGV4dHsiYW5kIn0gJERhdGF7Ikl0ZW1DcmVhdGVUaW1lU3RvcCJ9CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9maWVsZHNldD4KCiAgICAgICAgICAgIDxmaWVsZHNldD4KICAgICAgICAgICAgICAgIDxoMj4kVGV4dHsiU2VhcmNoLVByb2ZpbGUgYXMgVGVtcGxhdGU/In08L2gyPgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJTYXZlUHJvZmlsZSI+JFRleHR7IlNhdmUgYXMgVGVtcGxhdGU/In08L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iU2F2ZSBhcyBUZW1wbGF0ZSIgdHlwZT0iY2hlY2tib3giIGlkPSJTYXZlUHJvZmlsZSIgbmFtZT0iU2F2ZVByb2ZpbGUiIC8+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iUHJvZmlsIj4kVGV4dHsiVGVtcGxhdGUgTmFtZSJ9PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IlBpY2sgYSBwcm9maWwgbmFtZSIgdHlwZT0idGV4dCIgaWQ9IlByb2ZpbCIgbmFtZT0iUHJvZmlsZSIgc2l6ZT0iMzAiIHZhbHVlPSIkUURhdGF7IlByb2ZpbGUifSIgLz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICA8ZGl2IGlkPSJCb3R0b21BY3Rpb25Sb3ciIGNsYXNzPSJBY3Rpb25Sb3ciPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0iU3VibWl0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSIkVGV4dHsiU2VhcmNoIn0iPiRUZXh0eyJTZWFyY2gifTwvYnV0dG9uPgogICAgICAgICAgICAgICAgPHNwYW4+JFRleHR7Ik91dHB1dCB0byJ9PC9zcGFuPgogICAgICAgICAgICAgICAgJERhdGF7IlJlc3VsdEZvcm1TdHJnIn0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9mb3JtPgogICAgPC9kaXY+CjwvZGl2Pgo8IS0tIGR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZSAtLT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgQ29yZS5DdXN0b21lci5Jbml0Rm9jdXMoKTsKPC9zY3JpcHQ+CjwhLS0gZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlIC0tPgo8IS0tIGR0bDpibG9jazpTZWFyY2ggLS0+Cg==
IyAtLQojIFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlci5kdGwgLSBwcm92aWRlcyBvcGVuc2VhcmNoIGZvcm0gZm9yIFB1YmxpY0ZBUVNlYXJjaAojIENvcHlyaWdodCAoQykgMjAwMS0yMDEzIE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxPcGVuU2VhcmNoRGVzY3JpcHRpb24geG1sbnM9Imh0dHA6Ly9hOS5jb20vLS9zcGVjL29wZW5zZWFyY2gvMS4xLyIgeG1sbnM6aWU9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vU2VhcmNoLzIwMDgvIj4KPFNob3J0TmFtZT4kUXVvdGV7IiRDb25maWd7IlByb2R1Y3ROYW1lIn0ifSAtICRUZXh0eyJQdWJsaWMifSAoJFF1b3RleyIkQ29uZmlneyJGQVE6OkZBUUhvb2sifSJ9KTwvU2hvcnROYW1lPgo8RGVzY3JpcHRpb24+JFF1b3RleyIkQ29uZmlneyJQcm9kdWN0TmFtZSJ9In0gLSAkVGV4dHsiUHVibGljIn0gKCRRdW90ZXsiJENvbmZpZ3siRkFROjpGQVFIb29rIn0ifSk8L0Rlc2NyaXB0aW9uPgo8SW5wdXRFbmNvZGluZz4kRW52eyJVc2VyQ2hhcnNldCJ9PC9JbnB1dEVuY29kaW5nPgo8VXJsIHR5cGU9InRleHQvaHRtbCIgdGVtcGxhdGU9IiRDb25maWd7Ikh0dHBUeXBlIn06Ly8kRW52eyJIVFRQX0hPU1QifSRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249UHVibGljRkFRU2VhcmNoO1N1YmFjdGlvbj1TZWFyY2g7RnVsbHRleHQ9e3NlYXJjaFRlcm1zfSIgLz4KPEltYWdlIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgdHlwZT0iaW1hZ2UveC1pY29uIj4kQ29uZmlneyJIdHRwVHlwZSJ9Oi8vJEVudnsiSFRUUF9IT1NUIn0kQ29uZmlneyJGcm9udGVuZDo6SW1hZ2VQYXRoIn1pY29ucy9wcm9kdWN0LmljbzwvSW1hZ2U+CjwvT3BlblNlYXJjaERlc2NyaXB0aW9uPgo=
IyAtLQojIFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGxUZXh0LmR0bCAtIHByb3ZpZGVzIG9wZW5zZWFyY2ggZm9ybSBmb3IgQ3VzdG9tZXJGQVFTZWFyY2gKIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxMyBPVFJTIEFHLCBodHRwOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/Pgo8T3BlblNlYXJjaERlc2NyaXB0aW9uIHhtbG5zPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iIHhtbG5zOmllPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL1NlYXJjaC8yMDA4LyI+CjxTaG9ydE5hbWU+JFF1b3RleyIkQ29uZmlneyJQcm9kdWN0TmFtZSJ9In0gLSAkVGV4dHsiUHVibGljIn0gKCRUZXh0eyJGQVFGdWxsdGV4dCJ9KTwvU2hvcnROYW1lPgo8RGVzY3JpcHRpb24+JFF1b3RleyIkQ29uZmlneyJQcm9kdWN0TmFtZSJ9In0gLSAkVGV4dHsiUHVibGljIn0gKCRUZXh0eyJGQVFGdWxsdGV4dCJ9KTwvRGVzY3JpcHRpb24+CjxJbnB1dEVuY29kaW5nPiRFbnZ7IlVzZXJDaGFyc2V0In08L0lucHV0RW5jb2Rpbmc+CjxVcmwgdHlwZT0idGV4dC9odG1sIiB0ZW1wbGF0ZT0iJENvbmZpZ3siSHR0cFR5cGUifTovLyRFbnZ7IkhUVFBfSE9TVCJ9JEVudnsiQmFzZWxpbmsifUFjdGlvbj1QdWJsaWNGQVFTZWFyY2g7U3ViYWN0aW9uPVNlYXJjaDtGdWxsdGV4dD17c2VhcmNoVGVybXN9IiAvPgo8SW1hZ2UgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiB0eXBlPSJpbWFnZS94LWljb24iPiRDb25maWd7Ikh0dHBUeXBlIn06Ly8kRW52eyJIVFRQX0hPU1QifSRDb25maWd7IkZyb250ZW5kOjpJbWFnZVBhdGgifWljb25zL3Byb2R1Y3QuaWNvPC9JbWFnZT4KPC9PcGVuU2VhcmNoRGVzY3JpcHRpb24+Cg==
IyAtLQojIFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFByaW50LmR0bCAtIGh0bWwgZm9yIHByaW50aW5nIEZBUSBzZWFyY2ggcmVzdWx0cwojIENvcHlyaWdodCAoQykgMjAwMS0yMDEzIE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCjwhLS0gc3RhcnQgZm9ybSAtLT4KPGk+JERhdGF7Ildhcm5pbmcifTwvaT4KPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjEiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSI+CiAgICA8dHI+CiAgICAgICAgPHRkIGNsYXNzPSJtYWluaGVhZCI+JFRleHR7IlNlYXJjaCJ9PC90ZD4KICAgIDwvdHI+CjwvdGFibGU+Cjx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjQiPgogICAgPHRyPgogICAgICAgIDx0ZCBjbGFzcz0iY29udGVudGJvZHkiPgogICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIzIj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEwJSIgY2xhc3M9ImNvbnRlbnRrZXkiPiRDb25maWd7IkZBUTo6RkFRSG9vayJ9PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjMwJSIgY2xhc3M9ImNvbnRlbnRrZXkiPiRUZXh0eyJUaXRsZSJ9PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjMwJSIgY2xhc3M9ImNvbnRlbnRrZXkiPiRUZXh0eyJDYXRlZ29yeSJ9PC90ZD4KPCEtLSBkdGw6YmxvY2s6SGVhZGVyTGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMCUiIGNsYXNzPSJjb250ZW50a2V5Ij4kVGV4dHsiTGFuZ3VhZ2UifTwvdGQ+CjwhLS0gZHRsOmJsb2NrOkhlYWRlckxhbmd1YWdlIC0tPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiBjbGFzcz0iY29udGVudGtleSI+JFRleHR7IkNoYW5nZWQifTwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgo8IS0tIGR0bDpibG9jazpSZWNvcmQgLS0+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50dmFsdWUiPiRRRGF0YXsiTnVtYmVyIn08L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4kUURhdGF7IlRpdGxlIiwiNDAifTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50dmFsdWUiPiRRRGF0YXsiQ2F0ZWdvcnlOYW1lIiwiMzAifTwvdGQ+CjwhLS0gZHRsOmJsb2NrOlJlY29yZExhbmd1YWdlIC0tPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4kUURhdGF7Ikxhbmd1YWdlIn08L3RkPgo8IS0tIGR0bDpibG9jazpSZWNvcmRMYW5ndWFnZSAtLT4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnR2YWx1ZSI+JFRpbWVMb25neyIkRGF0YXsiQ2hhbmdlZCJ9In08L3RkPgogICAgICAgICAgICAgICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkIC0tPgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvdGQ+CiAgICA8L3RyPgo8L3RhYmxlPgo8IS0tIGVuZCBmb3JtIC0tPgo=
IyAtLQojIFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFNob3J0LmR0bCAtIGh0bWwgZm9yIEZBUSBzZWFyY2ggcmVzdWx0cwojIENvcHlyaWdodCAoQykgMjAwMS0yMDEzIE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCjxkaXYgaWQ9Ik1haW5Cb3giIGNsYXNzPSJUaWNrZXRWaWV3IEFSSUFSb2xlTWFpbiBTZWFyY2hSZXN1bHRzICRDb25maWd7IlRpY2tldDo6RnJvbnRlbmQ6OkN1c3RvbWVyVGlja2V0T3ZlcnZpZXdTb3J0YWJsZSJ9IFNvcnRhYmxlIj4KICAgIDxkaXYgY2xhc3M9IkFjdGlvblJvdyI+CiAgICAgICAgPHVsIGNsYXNzPSJUYWJzIj4KICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTskUURhdGF7IkxpbmsifSI+CiAgICAgICAgICAgICAgICAgICAgJmxhcnI7ICRUZXh0eyJDaGFuZ2Ugc2VhcmNoIG9wdGlvbnMifQogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L2xpPgogICAgICAgIDwvdWw+CjwhLS0gZHRsOmJsb2NrOlBhZ2luYXRpb24gLS0+CiAgICAgICAgPGRpdiBjbGFzcz0iVGFicyBQYWdpbmF0aW9uIj4KICAgICAgICAgICAgPHN0cm9uZz4kUURhdGF7IlJlc3VsdCJ9PC9zdHJvbmc+ICRUZXh0eyJvZiJ9IDxzdHJvbmc+JFFEYXRheyJUb3RhbEhpdHMifTwvc3Ryb25nPiAtICRUZXh0eyJQYWdlIn06ICREYXRheyJTaXRlTmF2QmFyIn0KICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6UGFnaW5hdGlvbiAtLT4KICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iU2VhcmNoVGVybXMiPgogICAgICAgICAgICA8aDI+JFRleHR7IlNlYXJjaCBSZXN1bHRzIGZvciJ9OjwvaDI+CjwhLS0gZHRsOmJsb2NrOlNlYXJjaFRlcm1zIC0tPgogICAgICAgICAgICA8c3Bhbj4KICAgICAgICAgICAgICAgICRRRGF0YXsiQXR0cmlidXRlIn06ICRRRGF0YXsiVmFsdWUifQojIGhpZGUgcmVtb3ZlIGxpbmssIGZ1bmN0aW9uYWxpdHkgaXMgbm90IHlldCBpbXBsZW1lbnRlZAojICAgICAgICAgICAgICAgIDxhIHRpdGxlPSIkVGV4dHsiUmVtb3ZlIHRoaXMgU2VhcmNoIFRlcm0uIn0iIGhyZWY9IiREYXRheyJTZWFyY2hWYWx1ZSJ9Ij4mdGltZXM7PC9hPgogICAgICAgICAgICA8L3NwYW4+CjwhLS0gZHRsOmJsb2NrOlNlYXJjaFRlcm1zIC0tPgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICA8dGFibGUgY2xhc3M9Ik92ZXJ2aWV3Ij4KICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iRkFRTnVtYmVyICREYXRheyJGQVFJRFNvcnQifSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JEVudnsiQWN0aW9uIn07U3ViYWN0aW9uPVNlYXJjaDskUURhdGF7IlByb2ZpbGUifVNvcnRCeT1GQVFJRDtPcmRlcj0kTFFEYXRheyJPcmRlciJ9O1Rha2VMYXN0U2VhcmNoPTE7RmlsdGVyPSRMUURhdGF7IkZpbHRlciJ9O0xpbWl0PSRMUURhdGF7IkxpbWl0In07VHlwZT0kTFFEYXRheyJUeXBlIn0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJENvbmZpZ3siRkFROjpGQVFIb29rIn0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJUaXRsZSAkRGF0YXsiVGl0bGVTb3J0In0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7IkFjdGlvbiJ9O1N1YmFjdGlvbj1TZWFyY2g7JFFEYXRheyJQcm9maWxlIn1Tb3J0Qnk9VGl0bGU7T3JkZXI9JExRRGF0YXsiT3JkZXIifTtUYWtlTGFzdFNlYXJjaD0xO0ZpbHRlcj0kTFFEYXRheyJGaWx0ZXIifTtMaW1pdD0kTFFEYXRheyJMaW1pdCJ9O1R5cGU9JExRRGF0YXsiVHlwZSJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUZXh0eyJUaXRsZSJ9CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQ2F0ZWdvcnkgJERhdGF7IkNhdGVnb3J5U29ydCJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTtTdWJhY3Rpb249U2VhcmNoOyRRRGF0YXsiUHJvZmlsZSJ9U29ydEJ5PUNhdGVnb3J5O09yZGVyPSRMUURhdGF7Ik9yZGVyIn07VGFrZUxhc3RTZWFyY2g9MTtGaWx0ZXI9JExRRGF0YXsiRmlsdGVyIn07TGltaXQ9JExRRGF0YXsiTGltaXQifTtUeXBlPSRMUURhdGF7IlR5cGUifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGV4dHsiQ2F0ZWdvcnkifQogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KPCEtLSBkdGw6YmxvY2s6SGVhZGVyTGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJMYW5ndWFnZSAkRGF0YXsiTGFuZ3VhZ2VTb3J0In0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7IkFjdGlvbiJ9O1N1YmFjdGlvbj1TZWFyY2g7JFFEYXRheyJQcm9maWxlIn1Tb3J0Qnk9TGFuZ3VhZ2U7T3JkZXI9JExRRGF0YXsiT3JkZXIifTtUYWtlTGFzdFNlYXJjaD0xO0ZpbHRlcj0kTFFEYXRheyJGaWx0ZXIifTtMaW1pdD0kTFFEYXRheyJMaW1pdCJ9O1R5cGU9JExRRGF0YXsiVHlwZSJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUZXh0eyJMYW5ndWFnZSJ9CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3RoPgo8IS0tIGR0bDpibG9jazpIZWFkZXJMYW5ndWFnZSAtLT4KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkNoYW5nZWQgJERhdGF7IkNoYW5nZWRTb3J0In0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7IkFjdGlvbiJ9O1N1YmFjdGlvbj1TZWFyY2g7JFFEYXRheyJQcm9maWxlIn1Tb3J0Qnk9Q2hhbmdlZDtPcmRlcj0kTFFEYXRheyJPcmRlciJ9O1Rha2VMYXN0U2VhcmNoPTE7RmlsdGVyPSRMUURhdGF7IkZpbHRlciJ9O0xpbWl0PSRMUURhdGF7IkxpbWl0In07VHlwZT0kTFFEYXRheyJUeXBlIn0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRleHR7IkNoYW5nZWQifQogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgIDx0Ym9keT4KPCEtLSBkdGw6YmxvY2s6Tm9EYXRhRm91bmRNc2cgLS0+CiAgICAgICAgICAgICAgICA8dHIgaWQ9IkVtcHR5TWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjYiPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIj4kVGV4dHsiTm8gRkFRIGRhdGEgZm91bmQuIn08L2E+CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CjwhLS0gZHRsOmJsb2NrOk5vRGF0YUZvdW5kTXNnIC0tPgo8IS0tIGR0bDpibG9jazpSZWNvcmQgLS0+CiAgICAgICAgICAgICAgICA8dHIgdGl0bGU9IiRRRGF0YXsiVGlja2V0TnVtYmVyIn0iPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iRkFRTnVtYmVyIj48YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPVB1YmxpY0ZBUVpvb207SXRlbUlEPSRMUURhdGF7IkZBUUlEIn07Wm9vbUJhY2tMaW5rPSRMUURhdGF7Ilpvb21CYWNrTGluayJ9OyI+JFFEYXRheyJOdW1iZXIifTwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iVGl0bGUiPiRRRGF0YXsiVGl0bGUiLCI2MCJ9PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNhdGVnb3J5Ij4kUURhdGF7IkNhdGVnb3J5TmFtZSIsIjYwIn08L3RkPgo8IS0tIGR0bDpibG9jazpSZWNvcmRMYW5ndWFnZSAtLT4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9Ikxhbmd1YWdlIj4kUURhdGF7Ikxhbmd1YWdlIiwiNSJ9PC90ZD4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkTGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDaGFuZ2VkIiB0aXRsZT0iJFRpbWVTaG9ydHsiJERhdGF7IkNoYW5nZWQifSJ9Ij4kUURhdGF7IkNoYW5nZWQiLCIyMCJ9PC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CjwhLS0gZHRsOmJsb2NrOlJlY29yZCAtLT4KICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICA8L3RhYmxlPgogICAgPC9kaXY+CjwhLS0gZHRsOmJsb2NrOkJvdHRvbVN1Yk5hdmlnYXRpb24gLS0+CiAgICA8ZGl2IGlkPSJCb3R0b21BY3Rpb25Sb3ciIGNsYXNzPSJBY3Rpb25Sb3cgQmlnQnV0dG9ucyI+CiAgICAgICAgPHVsIGNsYXNzPSJUYWJzIj4KICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTtTdWJhY3Rpb249TG9hZFByb2ZpbGU7JExRRGF0YXsiTGluayJ9Ij4KICAgICAgICAgICAgICAgICAgICAmbGFycjsgJFRleHR7IkNoYW5nZSBzZWFyY2ggb3B0aW9ucyJ9CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgPC91bD4KICAgICAgICA8ZGl2IGNsYXNzPSJUYWJzIFBhZ2luYXRpb24iPgogICAgICAgICAgICA8c3Ryb25nPiRRRGF0YXsiUmVzdWx0In08L3N0cm9uZz4gJFRleHR7Im9mIn0gPHN0cm9uZz4kUURhdGF7IlRvdGFsSGl0cyJ9PC9zdHJvbmc+IC0gJFRleHR7IlBhZ2UifTogJERhdGF7IlNpdGVOYXZCYXIifQogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpCb3R0b21TdWJOYXZpZ2F0aW9uIC0tPgo8L2Rpdj4KCjwhLS0gZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlIC0tPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICBDb3JlLkN1c3RvbWVyLkNsaWNrYWJsZVJvdygpOwo8L3NjcmlwdD4KPCEtLSBkdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUgLS0+Cg==
IyAtLQojIFB1YmxpY0ZBUVpvb20uZHRsIC0gcHJvdmlkZXMgSFRNTCBmb3IgUHVibGljRkFRWm9vbS5wbQojIENvcHlyaWdodCAoQykgMjAwMS0yMDEzIE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCjxkaXYgaWQ9Ik1haW5Cb3giIGNsYXNzPSJUaWNrZXRab29tIEFSSUFSb2xlTWFpbiI+Cgo8IS0tIGR0bDpibG9jazpCYWNrIC0tPgogICAgPGRpdiBjbGFzcz0iQWN0aW9uUm93Ij4KICAgICAgICA8dWwgY2xhc3M9IlRhYnMiPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifTskUURhdGF7Ilpvb21CYWNrTGluayJ9IiBjbGFzcz0iSGlzdG9yeUJhY2siPiZsYXJyOyAkVGV4dHsiQmFjayJ9PC9hPjwvbGk+CiAgICAgICAgPC91bD4KICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6QmFjayAtLT4KCiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJGQVFIZWFkZXIiPgogICAgICAgICAgICA8aDIgdGl0bGU9IiRRRGF0YXsiVGl0bGUifSI+CiAgICAgICAgICAgICAgICAkUURhdGF7IlRpdGxlIn0KICAgICAgICAgICAgPC9oMj4KICAgICAgICAgICAgPHVsIGlkPSJGQVFPcHRpb25zIj4KICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPVB1YmxpY0ZBUVByaW50O0l0ZW1JRD0kTFFEYXRheyJJdGVtSUQifSIgY2xhc3M9IlByaW50IEFzUG9wdXAiIHRpdGxlPSIkVGV4dHsiUHJpbnQifSI+JFRleHR7IlByaW50In08L2E+PC9saT4KICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJGQVFQYXRoQ2F0ZWdvcnkgRkFRWm9vbSI+CiAgICAgICAgICAgIDxoMz4KPCEtLSBkdGw6YmxvY2s6RkFRUGF0aENhdGVnb3J5RWxlbWVudCAtLT4KICAgICAgICAgICAgICAgICRDb25maWd7IkZBUTo6RXhwbG9yZXI6OlBhdGg6OlNlcGFyYXRvciJ9CiAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPVB1YmxpY0ZBUUV4cGxvcmVyO0NhdGVnb3J5SUQ9JExRRGF0YXsiQ2F0ZWdvcnlJRCJ9Ij4KICAgICAgICAgICAgICAgICAgICAkUURhdGF7Ik5hbWUifQogICAgICAgICAgICAgICAgPC9hPgo8IS0tIGR0bDpibG9jazpGQVFQYXRoQ2F0ZWdvcnlFbGVtZW50IC0tPgo8IS0tIGR0bDpibG9jazpGQVFQYXRoSXRlbUVsZW1lbnQgLS0+CiAgICAgICAgICAgICAgICAkQ29uZmlneyJGQVE6OkV4cGxvcmVyOjpQYXRoOjpTZXBhcmF0b3IifQogICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTtDYXRlZ29yeUlEPSRMUURhdGF7IkNhdGVnb3J5SUQifTtJdGVtSUQ9JExRRGF0YXsiSXRlbUlEIn0iPgogICAgICAgICAgICAgICAgICAgICRRRGF0YXsiVGl0bGUifQogICAgICAgICAgICAgICAgPC9hPgo8IS0tIGR0bDpibG9jazpGQVFQYXRoSXRlbUVsZW1lbnQgLS0+CiAgICAgICAgICAgIDwvaDM+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgIDx1bCBpZD0iTWVzc2FnZXMiPgo8IS0tIGR0bDpibG9jazpBdHRhY2htZW50SGVhZGVyIC0tPgogICAgICAgICAgICA8bGkgY2xhc3M9IkN1c3RvbWVyIFZpc2libGUiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iTWVzc2FnZUhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgzPiRUZXh0eyJBdHRhY2htZW50cyJ9OjwvaDM+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJBdHRhY2htZW50cyI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iTGFiZWwiPiRUZXh0eyJBdHRhY2htZW50In06PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdj4KPCEtLSBkdGw6YmxvY2s6QXR0YWNobWVudFJvdyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkRvd25sb2FkQXR0YWNobWVudCIgdGl0bGU9IiRUZXh0eyJEb3dubG9hZCBBdHRhY2htZW50In0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTtTdWJhY3Rpb249RG93bmxvYWRBdHRhY2htZW50O0l0ZW1JRD0kTFFEYXRheyJJdGVtSUQifTtGaWxlSUQ9JExRRGF0YXsiRmlsZUlEIn0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRRRGF0YXsiRmlsZW5hbWUifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAkUURhdGF7IkZpbGVzaXplIn0KICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8YnIvPgo8IS0tIGR0bDpibG9jazpBdHRhY2htZW50Um93IC0tPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvbGk+CjwhLS0gZHRsOmJsb2NrOkF0dGFjaG1lbnRIZWFkZXIgLS0+CjwhLS0gZHRsOmJsb2NrOkZBUUNvbnRlbnQgLS0+CiAgICAgICAgICAgIDxsaSBjbGFzcz0iQ3VzdG9tZXIgVmlzaWJsZSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJNZXNzYWdlSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8aDM+JFRleHR7IiREYXRheyJDYXB0aW9uIn0ifTo8L2gzPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9InRydWUiIG5hbWU9IkZpZWxkU3RhdGUiPgo8IS0tIGR0bDpibG9jazpGQVFDb250ZW50SFRNTCAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Ik1lc3NhZ2VCb2R5Ij4KIyBVc2UgdGhlIEhUTUw1IHNhbmRib3ggYXR0cmlidXRlIHRvIHByZXZlbnQgcGx1Z2lucyBhbmQgc2NyaXB0cyBmcm9tIGJlaW5nIGV4ZWN1dGVkIGluIHRoZSBicm93c2VyLgojIFVzZSBJRSdzIChub24tc3RhbmRhcmQpIHNlY3VyaXR5IGF0dHJpYnV0ZSB0byBhY2hpZXZlIHNvbWV0aGluZyBzaW1pbGFyIGluIG9sZGVyIElFIGJyb3dzZXJzLiBBcHBlbmQgc2Vzc2lvbiBpbmZvIHRvIFVSTCBiZWNhdXNlIElFIHdpbGwgbm90IHNlbmQgY29va2llcy4KIyBTZXQgJ2FsbG93LXBvcHVwcycgdG8gYWxsb3cgSUUxMCsgdG8gb3BlbiBsaW5rcy4gcmVmOiBodHRwOi8vd3d3LnczLm9yZy9odG1sL3dnL3dpa2kvQ2hhbmdlUHJvcG9zYWxzL3NhbmRib3hfYWxsb3dfcG9wdXBzCiAgICAgICAgICAgICAgICAgICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zYW1lLW9yaWdpbiBhbGxvdy1wb3B1cHMiIHNlY3VyaXR5PSJyZXN0cmljdGVkIiBjbGFzcz0iRkFRRmllbGQiIGlkPSJJZnJhbWVGQVEkUURhdGF7IkZpZWxkIn0iIG9ubG9hZD0iaWYgKHR5cGVvZiBGQVEgPT09ICdvYmplY3QnICYmIHR5cGVvZiBGQVEuQ3VzdG9tZXIgPT09ICdvYmplY3QnICYmIHR5cGVvZiBGQVEuQ3VzdG9tZXIuRkFRWm9vbSA9PT0gJ29iamVjdCcpIHsgRkFRLkN1c3RvbWVyLkZBUVpvb20uSWZyYW1lQXV0b0hlaWdodCgkKCcjSWZyYW1lRkFRJFFEYXRheyJGaWVsZCJ9JykpOyB9OyIgc3JjPSIjIiBkYXRhLXNyYz0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj1QdWJsaWNGQVFab29tO1N1YmFjdGlvbj1IVE1MVmlldztJdGVtSUQ9JFFEYXRheyJJdGVtSUQifTtGaWVsZD0kUURhdGF7IkZpZWxkIn07Ij48L2lmcmFtZT4KICAgICAgICAgICAgICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpGQVFDb250ZW50SFRNTCAtLT4KPCEtLSBkdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUgLS0+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwogICAgQ29yZS5Db25maWcuU2V0KCdGQVE6OkZyb250ZW5kOjpDdXN0b21lckhUTUxGaWVsZEhlaWdodERlZmF1bHQnLCBwYXJzZUludCgiJENvbmZpZ3siRkFROjpGcm9udGVuZDo6Q3VzdG9tZXJIVE1MRmllbGRIZWlnaHREZWZhdWx0In0iIHx8IDAsIDEwKSk7CiAgICBDb3JlLkNvbmZpZy5TZXQoJ0ZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVySFRNTEZpZWxkSGVpZ2h0TWF4JywgcGFyc2VJbnQoIiRDb25maWd7IkZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVySFRNTEZpZWxkSGVpZ2h0TWF4In0iIHx8IDAsIDEwKSk7CgogICAgLy8gY29weSBkYXRhLXNyYyBhdHRyaWJ1dGUgdG8gc3JjIGF0dHJpYnV0ZSBmb3IgYWxsIGlmcmFtZXMgdG8gY29ycmVjdGx5IGRpc3BsYXkgaXRzIGNvbnRlbnRzIGFmdGVyIEpTIGlzIGZ1bGx5IGxvYWRlZAogICAgJCgnaWZyYW1lJykuZWFjaChmdW5jdGlvbigpewogICAgICAgICQodGhpcykuYXR0cigic3JjIiwgJCh0aGlzKS5hdHRyKCJkYXRhLXNyYyIpICk7CiAgICB9KTsKLy9dXT48L3NjcmlwdD4KPCEtLSBkdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUgLS0+CjwhLS0gZHRsOmJsb2NrOkZBUUNvbnRlbnRQbGFpbiAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkFydGljbGVGQVFDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgJERhdGF7IkNvbnRlbnQifQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CjwhLS0gZHRsOmJsb2NrOkZBUUNvbnRlbnRQbGFpbiAtLT4KICAgICAgICAgICAgPC9saT4KPCEtLSBkdGw6YmxvY2s6RkFRQ29udGVudCAtLT4KCiAgICAgICAgPC91bD4KICAgICAgICA8ZGl2IGlkPSJab29tU2lkZWJhciI+CiAgICAgICAgICAgIDx1bCBpZD0iTWV0YWRhdGEiPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Ik1lc3NhZ2VIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDM+JFRleHR7IkZBUSBJbmZvcm1hdGlvbiJ9PC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iS2V5Ij4kVGV4dHsiQXJ0aWNsZSBOdW1iZXIifTo8L3NwYW4+IDxzcGFuPiRRRGF0YXsiTnVtYmVyIn08L3NwYW4+PC9saT4KICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iS2V5Ij4kVGV4dHsiQ2F0ZWdvcnkifTo8L3NwYW4+IDxzcGFuIHRpdGxlPSIkVGV4dHsiJERhdGF7IkNhdGVnb3J5TmFtZSJ9In0iPiRUZXh0eyIkRGF0YXsiQ2F0ZWdvcnlOYW1lIn0ifTwvc3Bhbj48L2xpPgoKICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iS2V5d29yZHNDb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJLZXkiPiRUZXh0eyJLZXl3b3JkcyJ9Ojwvc3Bhbj4KPCEtLSBkdGw6YmxvY2s6S2V5d29yZHMgLS0+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IktleXdvcmQiIHRpdGxlPSIkVGV4dHsiU2VhcmNoIGZvciBhcnRpY2xlcyB3aXRoIGtleXdvcmQifTogJFFEYXRheyJLZXl3b3JkIn0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPVB1YmxpY0ZBUVNlYXJjaDtTdWJhY3Rpb249U2VhcmNoO0tleXdvcmQ9JExRRGF0YXsiS2V5d29yZCJ9Ij4kUURhdGF7IktleXdvcmQifTwvYT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CjwhLS0gZHRsOmJsb2NrOktleXdvcmRzIC0tPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iS2V5Ij4kVGV4dHsiU3RhdGUifTo8L3NwYW4+IDxzcGFuIHRpdGxlPSIkVGV4dHsiJERhdGF7IlN0YXRlIn0ifSI+JFRleHR7IiREYXRheyJTdGF0ZSJ9In08L3NwYW4+PC9saT4KPCEtLSBkdGw6YmxvY2s6TGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgICAgICA8bGk+PHNwYW4gY2xhc3M9IktleSI+JFRleHR7Ikxhbmd1YWdlIn06PC9zcGFuPiA8c3BhbiB0aXRsZT0iJFRleHR7IiREYXRheyJMYW5ndWFnZSJ9In0iPiRUZXh0eyIkRGF0YXsiTGFuZ3VhZ2UifSJ9PC9zcGFuPjwvbGk+CjwhLS0gZHRsOmJsb2NrOkxhbmd1YWdlIC0tPgoKPCEtLSBkdGw6YmxvY2s6Vmlld1JhdGluZyAtLT4KICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iS2V5IFJhdGluZ0xhYmVsIj4kVGV4dHsiUmF0aW5nIn06PC9zcGFuPgo8IS0tIGR0bDpibG9jazpSYXRlU3RhcnMgLS0+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlJhdGVTdGFyIj48aSBjbGFzcz0iaWNvbi1zdGFyIj48L2k+PC9zcGFuPgo8IS0tIGR0bDpibG9jazpSYXRlU3RhcnMgLS0+CjwhLS0gZHRsOmJsb2NrOlJhdGVTdGFyc0NvdW50IC0tPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJSYXRlU3RhclRleHQiIHRpdGxlPSIkUURhdGF7IlN0YXJzIn0gJFRleHR7Im91dCBvZiA1In0iPgogICAgICAgICAgICAgICAgICAgICAgICAkUURhdGF7IlN0YXJzIn0gJFRleHR7Im91dCBvZiA1In0KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CjwhLS0gZHRsOmJsb2NrOlJhdGVTdGFyc0NvdW50IC0tPgogICAgICAgICAgICAgICAgPC9saT4KPCEtLSBkdGw6YmxvY2s6Vmlld1JhdGluZyAtLT4KCjwhLS0gZHRsOmJsb2NrOlZpZXdWb3RlcyAtLT4KICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iS2V5Ij4kVGV4dHsiVm90ZXMifTo8L3NwYW4+IDxzcGFuIHRpdGxlPSIkUURhdGF7IlZvdGVzIn0iPiRRRGF0YXsiVm90ZXMifTwvc3Bhbj48L2xpPgo8IS0tIGR0bDpibG9jazpWaWV3Vm90ZXMgLS0+CiAgICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KPC9kaXY+Cgo8IS0tIGR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZSAtLT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgovKmdsb2JhbCBGQVE6IHRydWUgKi8KRkFRLkN1c3RvbWVyLkZBUVpvb20uSW5pdCgpOwoKJCgnYS5Bc1BvcHVwJykuYmluZCgnY2xpY2snLCBmdW5jdGlvbiAoRXZlbnQpIHsKICAgIENvcmUuVUkuUG9wdXAuT3BlblBvcHVwKCQodGhpcykuYXR0cignaHJlZicpLCAnVGlja2V0QWN0aW9uJyk7CiAgICByZXR1cm4gZmFsc2U7Cn0pOwo8L3NjcmlwdD4KPCEtLSBkdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUgLS0+Cg==
IyAtLQojIEtlcm5lbC9TeXN0ZW0vRkFRL0NhdGVnb3J5LnBtIC0gZmFxIGNhdGVnb3J5IGZ1bmN0aW9ucwojIENvcHlyaWdodCAoQykgMjAwMS0yMDEzIE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OkZBUTo6Q2F0ZWdvcnk7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkZBUTo6Q2F0ZWdvcnkgLSBzdWIgbW9kdWxlIG9mIEtlcm5lbDo6U3lzdGVtOjpGQVEKCj1oZWFkMSBTWU5PUFNJUwoKQWxsIGZhcSBjYXRlZ29yeSBmdW5jdGlvbnMuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPW92ZXIgNAoKPWN1dAoKPWl0ZW0gQ2F0ZWdvcnlBZGQoKQoKYWRkIGEgY2F0ZWdvcnkKCiAgICBteSAkQ2F0ZWdvcnlJRCA9ICRGQVFPYmplY3QtPkNhdGVnb3J5QWRkKAogICAgICAgIE5hbWUgICAgID0+ICdDYXRlZ29yeUEnLAogICAgICAgIENvbW1lbnQgID0+ICdTb21lIGNvbW1lbnQnLAogICAgICAgIFBhcmVudElEID0+IDIsCiAgICAgICAgVmFsaWRJRCAgPT4gMSwKICAgICAgICBVc2VySUQgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJENhdGVnb3J5SUQgPSAzNDsgICAgICAgICAgICAgICAjIG9yIHVuZGVmIGlmIGNhdGVnb3J5IGNvdWxkIG5vdCBiZSBhZGRlZAoKPWN1dAoKc3ViIENhdGVnb3J5QWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KE5hbWUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17UGFyZW50SUR9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBQYXJlbnRJRCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgdGhhdCBQYXJlbnRJRCBpcyBub3QgYW4gZW1wdHkgc3RyaW5nIGJ1dCBudW1iZXIgMCBpcyBhbGxvd2VkCiAgICBpZiAoICRQYXJhbXtQYXJlbnRJRH0gZXEgJycgKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJQYXJlbnRJRCBjYW5ub3QgYmUgZW1wdHkhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGluc2VydCByZWNvcmQKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIElOU0VSVCBJTlRPIGZhcV9jYXRlZ29yeSAobmFtZSwgcGFyZW50X2lkLCBjb21tZW50cywgdmFsaWRfaWQsIGNyZWF0ZWQsIGNyZWF0ZWRfYnksCiAgICAgICAgICAgICAgICBjaGFuZ2VkLCBjaGFuZ2VkX2J5KQogICAgICAgICAgICBWQUxVRVMgKCA/LCA/LCA/LCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgPywgY3VycmVudF90aW1lc3RhbXAsID8pJywKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXCRQYXJhbXtOYW1lfSwgXCRQYXJhbXtQYXJlbnRJRH0sIFwkUGFyYW17Q29tbWVudH0sIFwkUGFyYW17VmFsaWRJRH0sCiAgICAgICAgICAgIFwkUGFyYW17VXNlcklEfSwgXCRQYXJhbXtVc2VySUR9LAogICAgICAgIF0sCiAgICApOwoKICAgICMgZ2V0IG5ldyBjYXRlZ29yeSBpZAogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBTRUxFQ1QgaWQKICAgICAgICAgICAgRlJPTSBmYXFfY2F0ZWdvcnkKICAgICAgICAgICAgV0hFUkUgbmFtZSA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtOYW1lfSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgIG15ICRDYXRlZ29yeUlEOwogICAgd2hpbGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkQ2F0ZWdvcnlJRCA9ICRSb3dbMF07CiAgICB9CgogICAgIyBsb2cgbm90aWNlCiAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICBNZXNzYWdlICA9PiAiRkFRQ2F0ZWdvcnk6ICckUGFyYW17TmFtZX0nIENhdGVnb3J5SUQ6ICckQ2F0ZWdvcnlJRCcgIgogICAgICAgICAgICAuICJjcmVhdGVkIHN1Y2Nlc3NmdWxseSAoJFBhcmFte1VzZXJJRH0pISIsCiAgICApOwoKICAgIHJldHVybiAkQ2F0ZWdvcnlJRDsKfQoKPWl0ZW0gQ2F0ZWdvcnlDb3VudCgpCgpDb3VudCB0aGUgbnVtYmVyIG9mIGNhdGVnb3JpZXMuCgogICAgbXkgJENhdGVnb3J5Q291bnQgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUNvdW50KAogICAgICAgIFBhcmVudElEcyA9PiBbIDEsIDIsIDMsIDQgXSwKICAgICAgICBVc2VySUQgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRDYXRlZ29yeUNvdW50ID0gNjsKCj1jdXQKCnN1YiBDYXRlZ29yeUNvdW50IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBVc2VySUQhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17UGFyZW50SURzfSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgUGFyZW50SURzIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBidWlsZCBTUUwKICAgIG15ICRTUUwgPSAnCiAgICAgICAgU0VMRUNUIENPVU5UKCopCiAgICAgICAgRlJPTSBmYXFfY2F0ZWdvcnkKICAgICAgICBXSEVSRSB2YWxpZF9pZCBJTiAoJyAuIGpvaW4gJywgJywgJFNlbGYtPntWYWxpZE9iamVjdH0tPlZhbGlkSURzR2V0KCkgLiAnKSc7CgogICAgIyBwYXJlbnQgaWRzIGFyZSBnaXZlbgogICAgaWYgKCBkZWZpbmVkICRQYXJhbXtQYXJlbnRJRHN9ICkgewoKICAgICAgICAjIGludGVnZXIgcXVvdGUgdGhlIHBhcmVudCBpZHMKICAgICAgICBmb3IgbXkgJFBhcmVudElEICggQHsgJFBhcmFte1BhcmVudElEc30gfSApIHsKICAgICAgICAgICAgJFBhcmVudElEID0gJFNlbGYtPntEQk9iamVjdH0tPlF1b3RlKCAkUGFyZW50SUQsICdJbnRlZ2VyJyApOwogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgc3RyaW5nCiAgICAgICAgbXkgJEluU3RyaW5nID0gam9pbiAnLCAnLCBAeyAkUGFyYW17UGFyZW50SURzfSB9OwoKICAgICAgICAkU1FMIC49ICcgQU5EIHBhcmVudF9pZCBJTiAoJyAuICRJblN0cmluZyAuICcpJzsKICAgIH0KCiAgICAjIGFkZCBncm91cCBieQogICAgJFNRTCAuPSAnIEdST1VQIEJZIHBhcmVudF9pZCc7CgogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICBTUUwgICA9PiAkU1FMLAogICAgICAgIExpbWl0ID0+IDIwMCwKICAgICk7CgogICAgbXkgJENvdW50ID0gMDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJENvdW50ID0gJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gJENvdW50Owp9Cgo9aXRlbSBDYXRlZ29yeURlbGV0ZSgpCgpEZWxldGUgYSBjYXRlZ29yeS4KCiAgICBteSAkRGVsZXRlU3VjY2VzcyA9ICRGQVFPYmplY3QtPkNhdGVnb3J5RGVsZXRlKAogICAgICAgIENhdGVnb3J5SUQgPT4gMTIzLAogICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICBEZWxldGVTdWNjZXNzID0gMTsgICAgICAgICAgICAgICMgb3IgdW5kZWYgaWYgY2F0ZWdvcnkgY291bGQgbm90IGJlIGRlbGV0ZWQKCj1jdXQKCnN1YiBDYXRlZ29yeURlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEF0dHJpYnV0ZSAocXcoQ2F0ZWdvcnlJRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBdHRyaWJ1dGV9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXR0cmlidXRlISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBkZWxldGUgdGhlIGNhdGVnb3J5CiAgICByZXR1cm4gaWYgISRTZWxmLT57REJPYmplY3R9LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBERUxFVEUgRlJPTSBmYXFfY2F0ZWdvcnkKICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtDYXRlZ29yeUlEfSBdLAogICAgKTsKCiAgICAjIGRlbGV0ZSB0aGUgY2F0ZWdvcnkgZ3JvdXBzCiAgICByZXR1cm4gaWYgISRTZWxmLT57REJPYmplY3R9LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBERUxFVEUgRlJPTSBmYXFfY2F0ZWdvcnlfZ3JvdXAKICAgICAgICAgICAgV0hFUkUgY2F0ZWdvcnlfaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtDYXRlZ29yeUlEfSBdLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gQ2F0ZWdvcnlEdXBsaWNhdGVDaGVjaygpCgpjaGVjayBhIGNhdGVnb3J5IGZvciBkdXBsaWNhdGUgbmFtZSB1bmRlciB0aGUgc2FtZSBwYXJlbnQKCiAgICBteSAkRXhpc3RzID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlEdXBsaWNhdGVDaGVjaygKICAgICAgICBDYXRlZ29yeUlEID0+IDEsCiAgICAgICAgTmFtZSAgICAgICA9PiAnU29tZSBOYW1lJywKICAgICAgICBQYXJlbnRJRCAgID0+IDEsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJEV4aXN0cyA9IDE7ICAgICAgICAgICAgICAgICMgaWYgY2F0ZWdvcnkgbmFtZSBhbHJlYWR5IGV4aXN0cyB3aXRoIHRoZSBzYW1lIHBhcmVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3IgMCBpZiB0aGUgbmFtZSBkb2VzIG5vdCBleGlzdHMgd2l0aCB0aGUgc2FtZSBwYXJlbnQKCj1jdXQKCnN1YiBDYXRlZ29yeUR1cGxpY2F0ZUNoZWNrIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBVc2VySUQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHNldCBkZWZhdWx0cwogICAgJFBhcmFte05hbWV9IC8vPSAnJzsKICAgICRQYXJhbXtQYXJlbnRJRH0gfHw9IDA7CiAgICBteSBAVmFsdWVzOwogICAgcHVzaCBAVmFsdWVzLCBcJFBhcmFte05hbWV9OwogICAgcHVzaCBAVmFsdWVzLCBcJFBhcmFte1BhcmVudElEfTsKCiAgICAjIGRiIHF1b3RlCiAgICAkUGFyYW17UGFyZW50SUR9ID0gJFNlbGYtPntEQk9iamVjdH0tPlF1b3RlKCAkUGFyYW17UGFyZW50SUR9LCAnSW50ZWdlcicgKTsKCiAgICAjIGJ1aWxkIHNxbAogICAgbXkgJFNRTCA9ICcKICAgICAgICBTRUxFQ1QgaWQKICAgICAgICBGUk9NIGZhcV9jYXRlZ29yeQogICAgICAgIFdIRVJFIG5hbWUgPSA/CiAgICAgICAgICAgIEFORCBwYXJlbnRfaWQgPSA/CiAgICAgICAgJzsKICAgIGlmICggZGVmaW5lZCAkUGFyYW17Q2F0ZWdvcnlJRH0gKSB7CiAgICAgICAgJFNRTCAuPSAiIEFORCBpZCAhPSA/IjsKICAgICAgICBwdXNoIEBWYWx1ZXMsIFwkUGFyYW17Q2F0ZWdvcnlJRH07CgogICAgfQoKICAgICMgcHJlcGFyZSBzcWwgc3RhdGVtZW50CiAgICByZXR1cm4gaWYgISRTZWxmLT57REJPYmplY3R9LT5QcmVwYXJlKAogICAgICAgIFNRTCAgID0+ICRTUUwsCiAgICAgICAgQmluZCAgPT4gXEBWYWx1ZXMsCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAkRXhpc3RzOwogICAgd2hpbGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkRXhpc3RzID0gMTsKICAgIH0KCiAgICByZXR1cm4gJEV4aXN0czsKfQoKPWl0ZW0gQ2F0ZWdvcnlHZXQoKQoKZ2V0IGEgY2F0ZWdvcnkgYXMgaGFzaAoKICAgIG15ICVDYXRlZ29yeSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5R2V0KAogICAgICAgIENhdGVnb3J5SUQgPT4gMSwKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAlQ2F0ZWdvcnkgPSAoLAogICAgICAgIENhdGVnb3J5SUQgPT4gMiwKICAgICAgICBQYXJlbnRJRCAgID0+IDAsCiAgICAgICAgTmFtZSAgICAgICA9PiAnTXkgQ2F0ZWdvcnknLAogICAgICAgIENvbW1lbnQgICAgPT4gJ1RoaXMgaXMgbXkgZmlyc3QgY2F0ZWdvcnkuJywKICAgICAgICBWYWxpZElEICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIENhdGVnb3J5R2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBVc2VySUQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17Q2F0ZWdvcnlJRH0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIENhdGVnb3J5SUQhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNoZWNrIGNhY2hlCiAgICBteSAkQ2FjaGVLZXkgPSAnQ2F0ZWdvcnlHZXQ6OicgLiAkUGFyYW17Q2F0ZWdvcnlJRH07CiAgICBteSAkQ2FjaGUgICAgPSAkU2VsZi0+e0NhY2hlT2JqZWN0fS0+R2V0KAogICAgICAgIFR5cGUgPT4gJ0ZBUScsCiAgICAgICAgS2V5ICA9PiAkQ2FjaGVLZXksCiAgICApOwogICAgcmV0dXJuICV7JENhY2hlfSBpZiAkQ2FjaGU7CgogICAgIyBzcWwKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkLCBwYXJlbnRfaWQsIG5hbWUsIGNvbW1lbnRzLCB2YWxpZF9pZAogICAgICAgICAgICBGUk9NIGZhcV9jYXRlZ29yeQogICAgICAgICAgICBXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtDYXRlZ29yeUlEfSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgIG15ICVEYXRhOwogICAgd2hpbGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAlRGF0YSA9ICgKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkUm93WzBdLAogICAgICAgICAgICBQYXJlbnRJRCAgID0+ICRSb3dbMV0sCiAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJFJvd1syXSwKICAgICAgICAgICAgQ29tbWVudCAgICA9PiAkUm93WzNdLAogICAgICAgICAgICBWYWxpZElEICAgID0+ICRSb3dbNF0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNhY2hlIHJlc3VsdAogICAgJFNlbGYtPntDYWNoZU9iamVjdH0tPlNldCgKICAgICAgICBUeXBlICA9PiAnRkFRJywKICAgICAgICBLZXkgICA9PiAkQ2FjaGVLZXksCiAgICAgICAgVmFsdWUgPT4gXCVEYXRhLAogICAgICAgIFRUTCAgID0+IDYwICogNjAgKiAyNCAqIDIsCiAgICApOwoKICAgIHJldHVybiAlRGF0YTsKfQoKPWl0ZW0gQ2F0ZWdvcnlHcm91cEdldCgpCgpnZXQgZ3JvdXBzIG9mIGEgY2F0ZWdvcnkKCiAgICBteSAkR3JvdXBBcnJheVJlZiA9ICRGQVFPYmplY3QtPkNhdGVnb3J5R3JvdXBHZXQoCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAzLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRHcm91cEFycmF5UmVmID0gWwogICAgICAgIDIsCiAgICAgICAgOSwKICAgICAgICAxMCwKICAgIF07Cgo9Y3V0CgpzdWIgQ2F0ZWdvcnlHcm91cEdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDYXRlZ29yeUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgZ3JvdXBzCiAgICByZXR1cm4gaWYgISRTZWxmLT57REJPYmplY3R9LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBncm91cF9pZAogICAgICAgICAgICBGUk9NIGZhcV9jYXRlZ29yeV9ncm91cAogICAgICAgICAgICBXSEVSRSBjYXRlZ29yeV9pZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0NhdGVnb3J5SUR9IF0sCiAgICApOwoKICAgIG15IEBHcm91cHM7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkU2VsZi0+e0RCT2JqZWN0fS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQEdyb3VwcywgJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gXEBHcm91cHM7Cn0KCj1pdGVtIENhdGVnb3J5R3JvdXBHZXRBbGwoKQoKZ2V0IGFsbCBjYXRlZ29yeS1ncm91cHMKCiAgICBteSAkQWxsQ2F0ZWdvcnlHcm91cEhhc2hSZWYgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUdyb3VwR2V0QWxsKAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJEFsbENhdGVnb3J5R3JvdXBIYXNoUmVmID0gewogICAgICAgIDEgPT4gewogICAgICAgICAgICAyICA9PiAxLAogICAgICAgIH0sCiAgICAgICAgMiA9PiB7CiAgICAgICAgICAgIDIgID0+IDEsCiAgICAgICAgICAgIDkgID0+IDEsCiAgICAgICAgICAgIDEwID0+IDEsCiAgICAgICAgfSwKICAgICAgICAzID0+IHsKICAgICAgICAgICAgMiAgPT4gMSwKICAgICAgICAgICAgOSAgPT4gMSwKICAgICAgICAgICAgMTAgPT4gMSwKICAgICAgICB9LAogICAgICAgIDQgPT4gewogICAgICAgICAgICAxICA9PiAxLAogICAgICAgICAgICAyICA9PiAxLAogICAgICAgICAgICAzICA9PiAxLAogICAgICAgICAgICA0ICA9PiAxLAogICAgICAgICAgICA1ICA9PiAxLAogICAgICAgICAgICA5ICA9PiAxLAogICAgICAgICAgICAxMCA9PiAxLAogICAgICAgIH0sCiAgICB9OwoKPWN1dAoKc3ViIENhdGVnb3J5R3JvdXBHZXRBbGwgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFVzZXJJRCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgY2FjaGUKICAgIGlmICggJFNlbGYtPntDYWNoZX0tPntDYXRlZ29yeUdyb3VwR2V0QWxsfSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntDYWNoZX0tPntDYXRlZ29yeUdyb3VwR2V0QWxsfTsKICAgIH0KCiAgICAjIGdldCBncm91cHMKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGdyb3VwX2lkLCBjYXRlZ29yeV9pZAogICAgICAgICAgICBGUk9NIGZhcV9jYXRlZ29yeV9ncm91cCcsCiAgICApOwoKICAgIG15ICVHcm91cHM7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkU2VsZi0+e0RCT2JqZWN0fS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRHcm91cHN7ICRSb3dbMV0gfS0+eyAkUm93WzBdIH0gPSAxOwogICAgfQoKICAgICMgY2FjaGUKICAgICRTZWxmLT57Q2FjaGV9LT57Q2F0ZWdvcnlHcm91cEdldEFsbH0gPSBcJUdyb3VwczsKCiAgICByZXR1cm4gXCVHcm91cHM7Cn0KCj1pdGVtIENhdGVnb3J5TGlzdCgpCgpnZXQgdGhlIGNhdGVnb3J5IGxpc3QgYXMgaGFzaAoKICAgIG15ICRDYXRlZ29yeUhhc2hSZWYgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUxpc3QoCiAgICAgICAgVmFsaWQgID0+IDEsICAgIyAob3B0aW9uYWwpCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkQ2F0ZWdvcnlIYXNoUmVmID0gewogICAgICAgIDAgPT4gewogICAgICAgICAgICAxID0+ICdNaXNjJywKICAgICAgICAgICAgMiA9PiAnTXkgQ2F0ZWdvcnknLAogICAgICAgIH0sCiAgICAgICAgMiA9PiB7CiAgICAgICAgICAgIDMgPT4gJ1N1YiBDYXRlZ29yeSBBJywKICAgICAgICAgICAgNCA9PiAnU3ViIENhdGVnb3J5IEInLAogICAgICAgIH0sCiAgICB9OwoKPWN1dAoKc3ViIENhdGVnb3J5TGlzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgVXNlcklEISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzZXQgZGVmYXVsdAogICAgbXkgJFZhbGlkID0gMDsKICAgIGlmICggZGVmaW5lZCAkUGFyYW17VmFsaWR9ICkgewogICAgICAgICRWYWxpZCA9ICRQYXJhbXtWYWxpZH07CiAgICB9CgogICAgIyBjaGVjayBjYWNoZQogICAgaWYgKCAkU2VsZi0+e0NhY2hlfS0+e0NhdGVnb3J5TGlzdH0tPnskVmFsaWR9ICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0NhY2hlfS0+e0NhdGVnb3J5TGlzdH0tPnskVmFsaWR9OwogICAgfQoKICAgICMgYnVpbGQgc3FsCiAgICBteSAkU1FMID0gJwogICAgICAgIFNFTEVDVCBpZCwgcGFyZW50X2lkLCBuYW1lCiAgICAgICAgRlJPTSBmYXFfY2F0ZWdvcnknOwogICAgaWYgKCRWYWxpZCkgewoKICAgICAgICAjIGdldCB0aGUgdmFsaWQgaWRzCiAgICAgICAgJFNRTCAuPSAnIFdIRVJFIHZhbGlkX2lkIElOICgnIC4gam9pbiAnLCAnLCAkU2VsZi0+e1ZhbGlkT2JqZWN0fS0+VmFsaWRJRHNHZXQoKSAuICcpJzsKICAgIH0KCiAgICAjIHByZXBhcmUgc3FsIHN0YXRlbWVudAogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSggU1FMID0+ICRTUUwgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICVEYXRhOwogICAgd2hpbGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkRGF0YXsgJFJvd1sxXSB9LT57ICRSb3dbMF0gfSA9ICRSb3dbMl07CiAgICB9CgogICAgIyBjYWNoZQogICAgJFNlbGYtPntDYWNoZX0tPntDYXRlZ29yeUxpc3R9LT57JFZhbGlkfSA9IFwlRGF0YTsKCiAgICByZXR1cm4gXCVEYXRhOwp9Cgo9aXRlbSBDYXRlZ29yeVNlYXJjaCgpCgpnZXQgdGhlIGNhdGVnb3J5IHNlYXJjaCBhcyBhbiBhcnJheSByZWYKCiAgICBteSAkQ2F0ZWdvcnlJREFycmF5UmVmID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlTZWFyY2goCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ1Rlc3QnLAogICAgICAgIFBhcmVudElEICAgID0+IDMsCiAgICAgICAgUGFyZW50SURzICAgPT4gWyAxLCAzLCA4IF0sCiAgICAgICAgQ2F0ZWdvcnlJRHMgPT4gWyAyLCA1LCA3IF0sCiAgICAgICAgT3JkZXJCeSAgICAgPT4gJ05hbWUnLAogICAgICAgIFNvcnRCeSAgICAgID0+ICdkb3duJywKICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJENhdGVnb3J5SURBcnJheVJlZiA9IFsKICAgICAgICAyLAogICAgXTsKCj1jdXQKCnN1YiBDYXRlZ29yeVNlYXJjaCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgVXNlcklEISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzcWwKICAgIG15ICRTUUwgPSAnCiAgICAgICAgU0VMRUNUIGlkCiAgICAgICAgRlJPTSBmYXFfY2F0ZWdvcnkKICAgICAgICBXSEVSRSB2YWxpZF9pZCBJTiAoJyAuIGpvaW4gJywgJywgJFNlbGYtPntWYWxpZE9iamVjdH0tPlZhbGlkSURzR2V0KCkgLiAnKSc7CiAgICBteSAkRXh0ID0gJyc7CgogICAgIyBzZWFyY2ggZm9yIG5hbWUKICAgIGlmICggZGVmaW5lZCAkUGFyYW17TmFtZX0gKSB7CgogICAgICAgICMgZGIgbGlrZSBxdW90ZQogICAgICAgICRQYXJhbXtOYW1lfSA9ICRTZWxmLT57REJPYmplY3R9LT5RdW90ZSggJFBhcmFte05hbWV9LCAnTGlrZScgKTsKCiAgICAgICAgJEV4dCAuPSAiIEFORCBuYW1lIExJS0UgJyUiIC4gJFBhcmFte05hbWV9IC4gIiUnICRTZWxmLT57TGlrZUVzY2FwZVN0cmluZ30iOwogICAgfQoKICAgICMgc2VhcmNoIGZvciBwYXJlbnQgaWQKICAgIGVsc2lmICggZGVmaW5lZCAkUGFyYW17UGFyZW50SUR9ICkgewoKICAgICAgICAjIGRiIGludGVnZXIgcXVvdGUKICAgICAgICAkUGFyYW17UGFyZW50SUR9ID0gJFNlbGYtPntEQk9iamVjdH0tPlF1b3RlKCAkUGFyYW17UGFyZW50SUR9LCAnSW50ZWdlcicgKTsKCiAgICAgICAgJEV4dCAuPSAnIEFORCBwYXJlbnRfaWQgPSAnIC4gJFBhcmFte1BhcmVudElEfTsKICAgIH0KCiAgICAjIHNlYXJjaCBmb3IgcGFyZW50IGlkcwogICAgZWxzaWYgKAogICAgICAgIGRlZmluZWQgJFBhcmFte1BhcmVudElEc30KICAgICAgICAmJiByZWYgJFBhcmFte1BhcmVudElEc30gZXEgJ0FSUkFZJwogICAgICAgICYmIEB7ICRQYXJhbXtQYXJlbnRJRHN9IH0KICAgICAgICApCiAgICB7CgogICAgICAgICMgaW50ZWdlciBxdW90ZSB0aGUgcGFyZW50IGlkcwogICAgICAgIGZvciBteSAkUGFyZW50SUQgKCBAeyAkUGFyYW17UGFyZW50SURzfSB9ICkgewogICAgICAgICAgICAkUGFyZW50SUQgPSAkU2VsZi0+e0RCT2JqZWN0fS0+UXVvdGUoICRQYXJlbnRJRCwgJ0ludGVnZXInICk7CiAgICAgICAgfQoKICAgICAgICAjIGNyZWF0ZSBzdHJpbmcKICAgICAgICBteSAkSW5TdHJpbmcgPSBqb2luICcsICcsIEB7ICRQYXJhbXtQYXJlbnRJRHN9IH07CgogICAgICAgICRFeHQgPSAnIEFORCBwYXJlbnRfaWQgSU4gKCcgLiAkSW5TdHJpbmcgLiAnKSc7CiAgICB9CgogICAgIyBzZWFyY2ggZm9yIGNhdGVnb3J5IGlkcwogICAgZWxzaWYgKAogICAgICAgIGRlZmluZWQgJFBhcmFte0NhdGVnb3J5SURzfQogICAgICAgICYmIHJlZiAkUGFyYW17Q2F0ZWdvcnlJRHN9IGVxICdBUlJBWScKICAgICAgICAmJiBAeyAkUGFyYW17Q2F0ZWdvcnlJRHN9IH0KICAgICAgICApCiAgICB7CgogICAgICAgICMgaW50ZWdlciBxdW90ZSB0aGUgY2F0ZWdvcnkgaWRzCiAgICAgICAgZm9yIG15ICRDYXRlZ29yeUlEICggQHsgJFBhcmFte0NhdGVnb3J5SURzfSB9ICkgewogICAgICAgICAgICAkQ2F0ZWdvcnlJRCA9ICRTZWxmLT57REJPYmplY3R9LT5RdW90ZSggJENhdGVnb3J5SUQsICdJbnRlZ2VyJyApOwogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgc3RyaW5nCiAgICAgICAgbXkgJEluU3RyaW5nID0gam9pbiAnLCAnLCBAeyAkUGFyYW17Q2F0ZWdvcnlJRHN9IH07CgogICAgICAgICRFeHQgPSAnIEFORCBpZCBJTiAoJyAuICRJblN0cmluZyAuICcpJzsKICAgIH0KCiAgICAjIE9SREVSIEJZCiAgICBpZiAoICRQYXJhbXtPcmRlckJ5fSApIHsKICAgICAgICAkRXh0IC49ICIgT1JERVIgQlkgbmFtZSI7CgogICAgICAgICMgc2V0IHRoZSBkZWZhdWx0IHNvcnQgb3JkZXIKICAgICAgICAkUGFyYW17U29ydEJ5fSB8fD0gJ3VwJzsKCiAgICAgICAgIyBTT1JUCiAgICAgICAgaWYgKCAkUGFyYW17U29ydEJ5fSApIHsKICAgICAgICAgICAgaWYgKCAkUGFyYW17U29ydEJ5fSBlcSAndXAnICkgewogICAgICAgICAgICAgICAgJEV4dCAuPSAiIEFTQyI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkUGFyYW17U29ydEJ5fSBlcSAnZG93bicgKSB7CiAgICAgICAgICAgICAgICAkRXh0IC49ICIgREVTQyI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBTUUwgU1RBVEVNRU5UCiAgICAkU1FMIC49ICRFeHQ7CgogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICBTUUwgICA9PiAkU1FMLAogICAgICAgIExpbWl0ID0+IDUwMCwKICAgICk7CgogICAgbXkgQExpc3Q7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkU2VsZi0+e0RCT2JqZWN0fS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQExpc3QsICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuIFxATGlzdDsKfQoKPWl0ZW0gQ2F0ZWdvcnlTdWJDYXRlZ29yeUlETGlzdCgpCgpnZXQgYWxsIHN1YmNhdGVnb3J5IGlkcyBvZiBvZiBhIGNhdGVnb3J5CgogICAgbXkgJFN1YkNhdGVnb3J5SURBcnJheVJlZiA9ICRGQVFPYmplY3QtPkNhdGVnb3J5U3ViQ2F0ZWdvcnlJRExpc3QoCiAgICAgICAgUGFyZW50SUQgICAgID0+IDEsCiAgICAgICAgTW9kZSAgICAgICAgID0+ICdQdWJsaWMnLCAjIChBZ2VudCwgQ3VzdG9tZXIsIFB1YmxpYykKICAgICAgICBDdXN0b21lclVzZXIgPT4gJ3R0JywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRTdWJDYXRlZ29yeUlEQXJyYXlSZWYgPSBbCiAgICAgICAgMywKICAgICAgICA0LAogICAgICAgIDUsCiAgICAgICAgNiwKICAgIF07Cgo9Y3V0CgpzdWIgQ2F0ZWdvcnlTdWJDYXRlZ29yeUlETGlzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgVXNlcklEISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggIWRlZmluZWQgJFBhcmFte1BhcmVudElEfSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgUGFyZW50SUQhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkQ2F0ZWdvcmllcyA9IHt9OwoKICAgIGlmICggJFBhcmFte01vZGV9ICYmICRQYXJhbXtNb2RlfSBlcSAnQWdlbnQnICkgewoKICAgICAgICAjIGdldCBhZ2VudHMgY2F0ZWdvcmllcwogICAgICAgICRDYXRlZ29yaWVzID0gJFNlbGYtPkdldFVzZXJDYXRlZ29yaWVzKAogICAgICAgICAgICBUeXBlICAgPT4gJ3JvJywKICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtNb2RlfSAmJiAkUGFyYW17TW9kZX0gZXEgJ0N1c3RvbWVyJyApIHsKCiAgICAgICAgIyBnZXQgY3VzdG9tZXIgY2F0ZWdvcmllcwogICAgICAgICRDYXRlZ29yaWVzID0gJFNlbGYtPkdldEN1c3RvbWVyQ2F0ZWdvcmllcygKICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICdybycsCiAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAkUGFyYW17Q3VzdG9tZXJVc2VyfSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBnZXQgYWxsIGNhdGVnb3JpZXMKICAgICAgICAkQ2F0ZWdvcmllcyA9ICRTZWxmLT5DYXRlZ29yeUxpc3QoCiAgICAgICAgICAgIFZhbGlkICA9PiAxLAogICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKICAgIH0KCiAgICBteSBAU3ViQ2F0ZWdvcnlJRHM7CiAgICBteSBAVGVtcFN1YkNhdGVnb3J5SURzID0ga2V5cyAleyAkQ2F0ZWdvcmllcy0+eyAkUGFyYW17UGFyZW50SUR9IH0gfTsKICAgIFNVQkNBVEVHT1JZSUQ6CiAgICB3aGlsZSAoQFRlbXBTdWJDYXRlZ29yeUlEcykgewoKICAgICAgICAjIGdldCBuZXh0IHN1YmNhdGVnb3J5IGlkCiAgICAgICAgbXkgJFN1YkNhdGVnb3J5SUQgPSBzaGlmdCBAVGVtcFN1YkNhdGVnb3J5SURzOwoKICAgICAgICAjIGFkZCB0byByZXN1bHQKICAgICAgICBwdXNoIEBTdWJDYXRlZ29yeUlEcywgJFN1YkNhdGVnb3J5SUQ7CgogICAgICAgICMgY2hlY2sgaWYgc3ViY2F0ZWdvcnkgaGFzIG93biBzdWJjYXRlZ29yaWVzCiAgICAgICAgbmV4dCBTVUJDQVRFR09SWUlEIGlmICEkQ2F0ZWdvcmllcy0+eyRTdWJDYXRlZ29yeUlEfTsKCiAgICAgICAgIyBhZGQgbmV3IHN1YmNhdGVnb3JpZXMKICAgICAgICBwdXNoIEBUZW1wU3ViQ2F0ZWdvcnlJRHMsIGtleXMgJXsgJENhdGVnb3JpZXMtPnskU3ViQ2F0ZWdvcnlJRH0gfTsKICAgIH0KCiAgICAjIHNvcnQgc3ViY2F0ZWdvcmllcyBudW1lcmljYWxseQogICAgQFN1YkNhdGVnb3J5SURzID0gc29ydCB7ICRhIDw9PiAkYiB9IEBTdWJDYXRlZ29yeUlEczsKCiAgICByZXR1cm4gXEBTdWJDYXRlZ29yeUlEczsKfQoKPWl0ZW0gQ2F0ZWdvcnlUcmVlTGlzdCgpCgpnZXQgYWxsIGNhdGVnb3JpZXMgYXMgdHJlZSAod2l0aCB0aGVpciBsb25nIG5hbWVzKQoKICAgIG15ICRDYXRlZ29yeVRyZWUgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeVRyZWVMaXN0KAogICAgICAgIFZhbGlkICA9PiAwLCAgIyAoMHwxLCBvcHRpb25hbCkKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRDYXRlZ29yeVRyZWUgPSB7CiAgICAgICAgMSA9PiAnTWlzYycsCiAgICAgICAgMiA9PiAnTXkgQ2F0ZWdvcnknLAogICAgICAgIDMgPT4gJ015IENhdGVnb3J5OjpTdWIgQ2F0ZWdvcnkgQScsCiAgICAgICAgNCA9PiAnTXkgQ2F0ZWdvcnk6OlN1YiBDYXRlZ29yeSBCJywKICAgIH07Cgo9Y3V0CgpzdWIgQ2F0ZWdvcnlUcmVlTGlzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgVXNlcklEISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzZXQgZGVmYXVsdAogICAgbXkgJFZhbGlkID0gMDsKICAgIGlmICggJFBhcmFte1ZhbGlkfSApIHsKICAgICAgICAkVmFsaWQgPSAkUGFyYW17VmFsaWR9OwogICAgfQoKICAgICMgY2hlY2sgY2FjaGUKICAgIGlmICggJFNlbGYtPntDYWNoZX0tPntHZXRDYXRlZ29yeVRyZWV9LT57JFZhbGlkfSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntDYWNoZX0tPntHZXRDYXRlZ29yeVRyZWV9LT57JFZhbGlkfTsKICAgIH0KCiAgICAjIGJ1aWxkIHNxbAogICAgbXkgJFNRTCA9ICcKICAgICAgICBTRUxFQ1QgaWQsIHBhcmVudF9pZCwgbmFtZQogICAgICAgIEZST00gZmFxX2NhdGVnb3J5JzsKCiAgICAjIGFkZCB3aGVyZSBjbGF1c2UgZm9yIHZhbGlkIGNhdGVnb3JpZXMKICAgIGlmICgkVmFsaWQpIHsKICAgICAgICAkU1FMIC49ICcgV0hFUkUgdmFsaWRfaWQgSU4gKCcgLiBqb2luICcsICcsICRTZWxmLT57VmFsaWRPYmplY3R9LT5WYWxpZElEc0dldCgpIC4gJyknOwogICAgfQoKICAgICMgcHJlcGFyZSBzcWwKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICRTUUwsCiAgICApOwoKICAgICMgZmV0Y2ggcmVzdWx0CiAgICBteSAlQ2F0ZWdvcnlNYXA7CiAgICBteSAlQ2F0ZWdvcnlOYW1lTG9va3VwOwogICAgbXkgJVBhcmVudElETG9va3VwOwogICAgd2hpbGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkQ2F0ZWdvcnlNYXB7ICRSb3dbMV0gfS0+eyAkUm93WzBdIH0gPSAkUm93WzJdOwogICAgICAgICRDYXRlZ29yeU5hbWVMb29rdXB7ICRSb3dbMF0gfSAgICAgICA9ICRSb3dbMl07CiAgICAgICAgJFBhcmVudElETG9va3VweyAkUm93WzBdIH0gICAgICAgICAgID0gJFJvd1sxXTsKICAgIH0KCiAgICAjIHRvIHN0b3JlIHRoZSBjYXRlZ29yeSB0cmVlCiAgICBteSAlQ2F0ZWdvcnlUcmVlOwoKICAgICMgY2hlY2sgYWxsIHBhcmVudCBpZHMKICAgIGZvciBteSAkUGFyZW50SUQgKCBzb3J0IHsgJGEgPD0+ICRiIH0ga2V5cyAlQ2F0ZWdvcnlNYXAgKSB7CgogICAgICAgICMgZ2V0IHN1YmNhdGVnb3JpZXMgYW5kIG5hbWVzIGZvciB0aGlzIHBhcmVudCBpZAogICAgICAgIHdoaWxlICggbXkgKCAkQ2F0ZWdvcnlJRCwgJENhdGVnb3J5TmFtZSApID0gZWFjaCAleyAkQ2F0ZWdvcnlNYXB7JFBhcmVudElEfSB9ICkgewoKICAgICAgICAgICAgIyBsb29rdXAgdGhlIHBhcmVudHMgbmFtZQogICAgICAgICAgICBteSAkTmV3UGFyZW50SUQgPSAkUGFyZW50SUQ7CiAgICAgICAgICAgIHdoaWxlICgkTmV3UGFyZW50SUQpIHsKCiAgICAgICAgICAgICAgICAjIHByZWFwZW5kIHBhcmVudHMgY2F0ZWdvcnkgbmFtZQogICAgICAgICAgICAgICAgaWYgKCAkQ2F0ZWdvcnlOYW1lTG9va3VweyROZXdQYXJlbnRJRH0gKSB7CiAgICAgICAgICAgICAgICAgICAgJENhdGVnb3J5TmFtZSA9ICRDYXRlZ29yeU5hbWVMb29rdXB7JE5ld1BhcmVudElEfSAuICc6OicgLiAkQ2F0ZWdvcnlOYW1lOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZ2V0IHVwIG9uZSBwYXJlbnQgbGV2ZWwKICAgICAgICAgICAgICAgICROZXdQYXJlbnRJRCA9ICRQYXJlbnRJRExvb2t1cHskTmV3UGFyZW50SUR9IHx8IDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgYWRkIGNhdGVnb3J5IHRvIHRyZWUKICAgICAgICAgICAgJENhdGVnb3J5VHJlZXskQ2F0ZWdvcnlJRH0gPSAkQ2F0ZWdvcnlOYW1lOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNhY2hlCiAgICAkU2VsZi0+e0NhY2hlfS0+e0dldENhdGVnb3J5VHJlZX0tPnskVmFsaWR9ID0gXCVDYXRlZ29yeVRyZWU7CgogICAgcmV0dXJuIFwlQ2F0ZWdvcnlUcmVlOwp9Cgo9aXRlbSBDYXRlZ29yeVVwZGF0ZSgpCgp1cGRhdGUgYSBjYXRlZ29yeQoKICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlVcGRhdGUoCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAyLAogICAgICAgIFBhcmVudElEICAgPT4gMSwKICAgICAgICBOYW1lICAgICAgID0+ICdTb21lIENhdGVnb3J5JywKICAgICAgICBDb21tZW50ICAgID0+ICdzb21lIGNvbW1lbnQnLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRTdWNjZXNzID0gMTsgICAgICAgICAgICAgICAgIyBvciB1bmRlZiBpZiBjYXRlZ29yeSBjb3VsZCBub3QgYmUgdXBkYXRlZAoKPWN1dAoKc3ViIENhdGVnb3J5VXBkYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KE5hbWUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoQ2F0ZWdvcnlJRCBQYXJlbnRJRCkpIHsKICAgICAgICBpZiAoICFkZWZpbmVkICRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIHRoYXQgUGFyZW50SUQgaXMgbm90IGFuIGVtcHR5IHN0cmluZyBidXQgbnVtYmVyIDAgaXMgYWxsb3dlZAogICAgaWYgKCAkUGFyYW17UGFyZW50SUR9IGVxICcnICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUGFyZW50SUQgY2Fubm90IGJlIGVtcHR5ISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzcWwKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFVQREFURSBmYXFfY2F0ZWdvcnkKICAgICAgICAgICAgU0VUIHBhcmVudF9pZCA9ID8sIG5hbWUgPSA/LCBjb21tZW50cyA9ID8sIHZhbGlkX2lkID0gPywgY2hhbmdlZCA9IGN1cnJlbnRfdGltZXN0YW1wLAogICAgICAgICAgICAgICAgY2hhbmdlZF9ieSA9ID8KICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXCRQYXJhbXtQYXJlbnRJRH0sIFwkUGFyYW17TmFtZX0sCiAgICAgICAgICAgIFwkUGFyYW17Q29tbWVudH0sICBcJFBhcmFte1ZhbGlkSUR9LAogICAgICAgICAgICBcJFBhcmFte1VzZXJJRH0sICAgXCRQYXJhbXtDYXRlZ29yeUlEfSwKICAgICAgICBdLAogICAgKTsKCiAgICAjIGxvZyBub3RpY2UKICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgIFByaW9yaXR5ID0+ICdub3RpY2UnLAogICAgICAgIE1lc3NhZ2UgID0+ICJGQVFDYXRlZ29yeTogJyRQYXJhbXtOYW1lfScgIgogICAgICAgICAgICAuICJJRDogJyRQYXJhbXtDYXRlZ29yeUlEfScgdXBkYXRlZCBzdWNjZXNzZnVsbHkgKCRQYXJhbXtVc2VySUR9KSEiLAogICAgKTsKCiAgICAjIGRlbGV0ZSBjYWNoZQogICAgbXkgJENhY2hlS2V5ID0gJ0NhdGVnb3J5R2V0OjonIC4gJFBhcmFte0NhdGVnb3J5SUR9OwogICAgJFNlbGYtPntDYWNoZU9iamVjdH0tPkRlbGV0ZSgKICAgICAgICBUeXBlID0+ICdGQVEnLAogICAgICAgIEtleSAgPT4gJENhY2hlS2V5LAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gQWdlbnRDYXRlZ29yeVNlYXJjaCgpCgpnZXQgdGhlIGNhdGVnb3J5IHNlYXJjaCBhcyBhcnJheSByZWYKCiAgICBteSAkQ2F0ZWdvcnlJREFycmF5UmVmID0gJEZBUU9iamVjdC0+QWdlbnRDYXRlZ29yeVNlYXJjaCgKICAgICAgICBQYXJlbnRJRCA9PiAzLCAgICMgKG9wdGlvbmFsLCBkZWZhdWx0IDApCiAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRDYXRlZ29yeUlEQXJyYXlSZWYgPSBbCiAgICAgICAgJzQnLAogICAgICAgICc4JywKICAgIF07Cgo9Y3V0CgpzdWIgQWdlbnRDYXRlZ29yeVNlYXJjaCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgVXNlcklEIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzZXQgZGVmYXVsdCBwYXJlbnQgaWQKICAgIGlmICggIWRlZmluZWQgJFBhcmFte1BhcmVudElEfSApIHsKICAgICAgICAkUGFyYW17UGFyZW50SUR9ID0gMDsKICAgIH0KICAgIG15ICRDYXRlZ29yaWVzID0gJFNlbGYtPkdldFVzZXJDYXRlZ29yaWVzKAogICAgICAgIFR5cGUgICA9PiAncm8nLAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgbXkgJUNhdGVnb3J5ID0gJXsgJENhdGVnb3JpZXMtPnsgJFBhcmFte1BhcmVudElEfSB9IH07CiAgICBteSBAQ2F0ZWdvcnlJRHMgPSBzb3J0IHsgJENhdGVnb3J5eyRhfSBjbXAgJENhdGVnb3J5eyRifSB9ICgga2V5cyAlQ2F0ZWdvcnkgKTsKCiAgICByZXR1cm4gXEBDYXRlZ29yeUlEczsKfQoKPWl0ZW0gQ3VzdG9tZXJDYXRlZ29yeVNlYXJjaCgpCgpnZXQgdGhlIGNhdGVnb3J5IHNlYXJjaCBhcyBoYXNoCgogICAgbXkgJENhdGVnb3J5SURBcnJheVJlZiA9IEB7JEZBUU9iamVjdC0+Q3VzdG9tZXJDYXRlZ29yeVNlYXJjaCgKICAgICAgICBDdXN0b21lclVzZXIgID0+ICd0dCcsCiAgICAgICAgUGFyZW50SUQgICAgICA9PiAzLCAgICMgKG9wdGlvbmFsLCBkZWZhdWx0IDApCiAgICAgICAgTW9kZSAgICAgICAgICA9PiAnQ3VzdG9tZXInLAogICAgICAgIFVzZXJJRCAgICAgICAgPT4gMSwKICAgICl9OwoKUmV0dXJuczoKCiAgICAkQ2F0ZWdvcnlJREFycmF5UmVmID0gWwogICAgICAgICc0JywKICAgICAgICAnOCcsCiAgICBdOwoKPWN1dAoKc3ViIEN1c3RvbWVyQ2F0ZWdvcnlTZWFyY2ggewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoQ3VzdG9tZXJVc2VyIE1vZGUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCBkZWZhdWx0IHBhcmVudCBpZAogICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17UGFyZW50SUR9ICkgewogICAgICAgICRQYXJhbXtQYXJlbnRJRH0gPSAwOwogICAgfQoKICAgIG15ICRDYXRlZ29yaWVzID0gJFNlbGYtPkdldEN1c3RvbWVyQ2F0ZWdvcmllcygKICAgICAgICBDdXN0b21lclVzZXIgPT4gJFBhcmFte0N1c3RvbWVyVXNlcn0sCiAgICAgICAgVHlwZSAgICAgICAgID0+ICdybycsCiAgICAgICAgVXNlcklEICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICBteSAlQ2F0ZWdvcnkgPSAleyAkQ2F0ZWdvcmllcy0+eyAkUGFyYW17UGFyZW50SUR9IH0gfTsKICAgIG15IEBDYXRlZ29yeUlEcyA9IHNvcnQgeyAkQ2F0ZWdvcnl7JGF9IGNtcCAkQ2F0ZWdvcnl7JGJ9IH0gKCBrZXlzICVDYXRlZ29yeSApOwoKICAgIG15IEBBbGxvd2VkQ2F0ZWdvcnlJRHM7CiAgICBteSAlQXJ0aWNsZXM7CgogICAgIyBjaGVjayBjYWNoZQogICAgbXkgJENhY2hlS2V5ID0gJ0N1c3RvbWVyQ2F0ZWdvcnlTZWFyY2g6OkFydGljbGVzJzsKICAgIGlmICggJFNlbGYtPntDYWNoZX0tPnskQ2FjaGVLZXl9ICkgewogICAgICAgICVBcnRpY2xlcyA9ICV7ICRTZWxmLT57Q2FjaGV9LT57JENhY2hlS2V5fSB9OwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgYnVpbGQgdmFsaWQgaWQgc3RyaW5nCiAgICAgICAgbXkgJFZhbGlkSURzU3RyaW5nID0gam9pbiAnLCAnLCAkU2VsZi0+e1ZhbGlkT2JqZWN0fS0+VmFsaWRJRHNHZXQoKTsKCiAgICAgICAgbXkgJFNRTCA9ICIKICAgICAgICAgICAgU0VMRUNUIGZhcV9pdGVtLmlkLCBmYXFfaXRlbS5jYXRlZ29yeV9pZAogICAgICAgICAgICBGUk9NIGZhcV9pdGVtLCBmYXFfc3RhdGVfdHlwZSwgZmFxX3N0YXRlCiAgICAgICAgICAgIFdIRVJFIGZhcV9zdGF0ZS5pZCA9IGZhcV9pdGVtLnN0YXRlX2lkCiAgICAgICAgICAgICAgICBBTkQgZmFxX3N0YXRlLnR5cGVfaWQgPSBmYXFfc3RhdGVfdHlwZS5pZAogICAgICAgICAgICAgICAgQU5EIGZhcV9zdGF0ZV90eXBlLm5hbWUgIT0gJ2ludGVybmFsJwogICAgICAgICAgICAgICAgQU5EIGZhcV9pdGVtLnZhbGlkX2lkIElOICgkVmFsaWRJRHNTdHJpbmcpCiAgICAgICAgICAgICAgICBBTkQgZmFxX2l0ZW0uYXBwcm92ZWQgPSAxIjsKCiAgICAgICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICAgICAgU1FMID0+ICRTUUwsCiAgICAgICAgKTsKICAgICAgICB3aGlsZSAoIG15IEBSb3cgPSAkU2VsZi0+e0RCT2JqZWN0fS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICAgICAkQXJ0aWNsZXN7ICRSb3dbMV0gfSsrOwogICAgICAgIH0KCiAgICAgICAgIyBjYWNoZQogICAgICAgICRTZWxmLT57Q2FjaGV9LT57JENhY2hlS2V5fSA9IFwlQXJ0aWNsZXM7CiAgICB9CgogICAgZm9yIG15ICRDYXRlZ29yeUlEIChAQ2F0ZWdvcnlJRHMpIHsKCiAgICAgICAgIyBnZXQgYWxsIHN1YmNhdGVnb3J5IGlkcyBmb3IgdGhpcyBjYXRlZ29yeQogICAgICAgIG15ICRTdWJDYXRlZ29yeUlEcyA9ICRTZWxmLT5DYXRlZ29yeVN1YkNhdGVnb3J5SURMaXN0KAogICAgICAgICAgICBQYXJlbnRJRCAgICAgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIE1vZGUgICAgICAgICA9PiAkUGFyYW17TW9kZX0sCiAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAkUGFyYW17Q3VzdG9tZXJVc2VyfSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgYWRkIHRoaXMgY2F0ZWdvcnkgaWQKICAgICAgICBteSBASURzID0gKCAkQ2F0ZWdvcnlJRCwgQHskU3ViQ2F0ZWdvcnlJRHN9ICk7CgogICAgICAgICMgY2hlY2sgaWYgY2F0ZWdvcnkgY29udGFpbnMgYXJ0aWNsZXMgd2l0aCBzdGF0ZSBleHRlcm5hbCBvciBwdWJsaWMKICAgICAgICBJRDoKICAgICAgICBmb3IgbXkgJElEIChASURzKSB7CiAgICAgICAgICAgIG5leHQgSUQgaWYgISRBcnRpY2xlc3skSUR9OwogICAgICAgICAgICBwdXNoIEBBbGxvd2VkQ2F0ZWdvcnlJRHMsICRDYXRlZ29yeUlEOwogICAgICAgICAgICBsYXN0IElEOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gXEBBbGxvd2VkQ2F0ZWdvcnlJRHM7Cn0KCj1pdGVtIFB1YmxpY0NhdGVnb3J5U2VhcmNoKCkKCmdldCB0aGUgY2F0ZWdvcnkgc2VhcmNoIGFzIGhhc2gKCiAgICBteSAkQ2F0ZWdvcnlJREFycmF5UmVmID0gJEZBUU9iamVjdC0+UHVibGljQ2F0ZWdvcnlTZWFyY2goCiAgICAgICAgUGFyZW50SUQgICAgICA9PiAzLCAgICMgKG9wdGlvbmFsLCBkZWZhdWx0IDApCiAgICAgICAgTW9kZSAgICAgICAgICA9PiAnUHVibGljJywKICAgICAgICBVc2VySUQgICAgICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkQ2F0ZWdvcnlJREFycmF5UmVmID0gWwogICAgICAgICc0JywKICAgICAgICAnOCcsCiAgICBdOwoKPWN1dAoKc3ViIFB1YmxpY0NhdGVnb3J5U2VhcmNoIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KE1vZGUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoICFkZWZpbmVkICRQYXJhbXtQYXJlbnRJRH0gKSB7CiAgICAgICAgJFBhcmFte1BhcmVudElEfSA9IDA7CiAgICB9CgogICAgbXkgJENhdGVnb3J5TGlzdENhdGVnb3JpZXMgPSAkU2VsZi0+Q2F0ZWdvcnlMaXN0KAogICAgICAgIFZhbGlkICA9PiAxLAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgcmV0dXJuIFtdIGlmICEkQ2F0ZWdvcnlMaXN0Q2F0ZWdvcmllcy0+eyAkUGFyYW17UGFyZW50SUR9IH07CgogICAgbXkgJUNhdGVnb3J5ID0gJXsgJENhdGVnb3J5TGlzdENhdGVnb3JpZXMtPnsgJFBhcmFte1BhcmVudElEfSB9IH07CiAgICBteSBAQ2F0ZWdvcnlJRHMgPSBzb3J0IHsgJENhdGVnb3J5eyRhfSBjbXAgJENhdGVnb3J5eyRifSB9ICgga2V5cyAlQ2F0ZWdvcnkgKTsKICAgIG15IEBBbGxvd2VkQ2F0ZWdvcnlJRHM7CgogICAgIyBidWlsZCB2YWxpZCBpZCBzdHJpbmcKICAgIG15ICRWYWxpZElEc1N0cmluZyA9IGpvaW4gJywgJywgJFNlbGYtPntWYWxpZE9iamVjdH0tPlZhbGlkSURzR2V0KCk7CgogICAgZm9yIG15ICRDYXRlZ29yeUlEIChAQ2F0ZWdvcnlJRHMpIHsKCiAgICAgICAgIyBnZXQgYWxsIHN1YmNhdGVnb3J5IGlkcyBmb3IgdGhpcyBjYXRlZ29yeQogICAgICAgIG15ICRTdWJDYXRlZ29yeUlEcyA9ICRTZWxmLT5DYXRlZ29yeVN1YkNhdGVnb3J5SURMaXN0KAogICAgICAgICAgICBQYXJlbnRJRCAgICAgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIE1vZGUgICAgICAgICA9PiAkUGFyYW17TW9kZX0sCiAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAkUGFyYW17Q3VzdG9tZXJVc2VyfSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgYWRkIHRoaXMgY2F0ZWdvcnkgaWQKICAgICAgICBteSBASURzID0gKCAkQ2F0ZWdvcnlJRCwgQHskU3ViQ2F0ZWdvcnlJRHN9ICk7CgogICAgICAgICMgY2hlY2sgaWYgY2F0ZWdvcnkgY29udGFpbnMgYXJ0aWNsZXMgd2l0aCBzdGF0ZSBwdWJsaWMKICAgICAgICBteSAkRm91bmRBcnRpY2xlID0gMDsKCiAgICAgICAgbXkgJFNRTCA9ICIKICAgICAgICAgICAgU0VMRUNUIGZhcV9pdGVtLmlkCiAgICAgICAgICAgIEZST00gZmFxX2l0ZW0sIGZhcV9zdGF0ZV90eXBlLCBmYXFfc3RhdGUKICAgICAgICAgICAgV0hFUkUgZmFxX2l0ZW0uY2F0ZWdvcnlfaWQgPSA/CiAgICAgICAgICAgICAgICBBTkQgZmFxX2l0ZW0udmFsaWRfaWQgSU4gKCRWYWxpZElEc1N0cmluZykKICAgICAgICAgICAgICAgIEFORCBmYXFfc3RhdGUuaWQgPSBmYXFfaXRlbS5zdGF0ZV9pZAogICAgICAgICAgICAgICAgQU5EIGZhcV9zdGF0ZS50eXBlX2lkID0gZmFxX3N0YXRlX3R5cGUuaWQKICAgICAgICAgICAgICAgIEFORCBmYXFfc3RhdGVfdHlwZS5uYW1lID0gJ3B1YmxpYycKICAgICAgICAgICAgICAgIEFORCBmYXFfaXRlbS5hcHByb3ZlZCA9IDEiOwoKICAgICAgICBJRDoKICAgICAgICBmb3IgbXkgJElEIChASURzKSB7CiAgICAgICAgICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoCiAgICAgICAgICAgICAgICBTUUwgICA9PiAkU1FMLAogICAgICAgICAgICAgICAgQmluZCAgPT4gWyBcJElEIF0sCiAgICAgICAgICAgICAgICBMaW1pdCA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICB3aGlsZSAoIG15IEBSb3cgPSAkU2VsZi0+e0RCT2JqZWN0fS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICAgICAgICAgJEZvdW5kQXJ0aWNsZSA9ICRSb3dbMF07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGFzdCBJRCBpZiAkRm91bmRBcnRpY2xlOwogICAgICAgIH0KCiAgICAgICAgIyBhbiBhcnRpY2xlIHdhcyBmb3VuZAogICAgICAgIGlmICgkRm91bmRBcnRpY2xlKSB7CiAgICAgICAgICAgIHB1c2ggQEFsbG93ZWRDYXRlZ29yeUlEcywgJENhdGVnb3J5SUQ7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBcQEFsbG93ZWRDYXRlZ29yeUlEczsKCn0KCj1pdGVtIEdldFVzZXJDYXRlZ29yaWVzKCkKCmdldCB1c2VyIGNhdGVnb3J5LWdyb3VwcwoKICAgIG15ICRVc2VyQ2F0ZWdvcnlHcm91cEhhc2hSZWYgPSAkRkFRT2JqZWN0LT5HZXRVc2VyQ2F0ZWdvcmllcygKICAgICAgICBUeXBlICAgPT4gJ3J3JywKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRVc2VyQ2F0ZWdvcnlHcm91cEhhc2hSZWYgPSB7CiAgICAgICAgMSA9PiB7fSwKICAgICAgICAwID0+IHsKICAgICAgICAgICAgMSA9PiAnTWlzYycsCiAgICAgICAgICAgIDIgPT4gJ015IENhdGVnb3J5JywKICAgICAgICB9LAogICAgICAgIDIgPT4gewogICAgICAgICAgICAzID0+ICdTdWIgQ2F0ZWdvcnkgQScsCiAgICAgICAgICAgIDQgPT4gJ1N1YiBDYXRlZ29yeSBCJywKICAgICAgICB9LAogICAgICAgIDMgPT4ge30sCiAgICAgICAgNCA9PiB7fSwKICAgIH07Cgo9Y3V0CgpzdWIgR2V0VXNlckNhdGVnb3JpZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoVHlwZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRDYXRlZ29yaWVzID0gJFNlbGYtPkNhdGVnb3J5TGlzdCgKICAgICAgICBWYWxpZCAgPT4gMSwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIG15ICRDYXRlZ29yeUdyb3VwcyA9ICRTZWxmLT5DYXRlZ29yeUdyb3VwR2V0QWxsKAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CiAgICBteSAlVXNlckdyb3VwczsKICAgIGlmICggISRTZWxmLT57Q2FjaGV9LT57R2V0VXNlckNhdGVnb3JpZXN9LT57R3JvdXBNZW1iZXJMaXN0fSApIHsKICAgICAgICAlVXNlckdyb3VwcyA9ICRTZWxmLT57R3JvdXBPYmplY3R9LT5Hcm91cE1lbWJlckxpc3QoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgVHlwZSAgID0+ICRQYXJhbXtUeXBlfSwKICAgICAgICAgICAgUmVzdWx0ID0+ICdIQVNIJywKICAgICAgICApOwogICAgICAgICRTZWxmLT57Q2FjaGV9LT57R2V0VXNlckNhdGVnb3JpZXN9LT57R3JvdXBNZW1iZXJMaXN0fSA9IFwlVXNlckdyb3VwczsKICAgIH0KICAgIGVsc2UgewogICAgICAgICVVc2VyR3JvdXBzID0gJXsgJFNlbGYtPntDYWNoZX0tPntHZXRVc2VyQ2F0ZWdvcmllc30tPntHcm91cE1lbWJlckxpc3R9IH07CiAgICB9CgogICAgbXkgJFVzZXJDYXRlZ29yaWVzID0gJFNlbGYtPl9Vc2VyQ2F0ZWdvcmllcygKICAgICAgICBDYXRlZ29yaWVzICAgICA9PiAkQ2F0ZWdvcmllcywKICAgICAgICBDYXRlZ29yeUdyb3VwcyA9PiAkQ2F0ZWdvcnlHcm91cHMsCiAgICAgICAgVXNlckdyb3VwcyAgICAgPT4gXCVVc2VyR3JvdXBzLAogICAgICAgIFVzZXJJRCAgICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICByZXR1cm4gJFVzZXJDYXRlZ29yaWVzOwp9Cgo9aXRlbSBHZXRVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lcygpCgpnZXQgdXNlciBjYXRlZ29yeS1ncm91cHMgKHNob3cgY2F0ZWdvcnkgbG9uZyBuYW1lcykKCiAgICBteSAkVXNlckNhdGVnb3J5R3JvdXBIYXNoUmVmID0gJEZBUU9iamVjdC0+R2V0VXNlckNhdGVnb3JpZXNMb25nTmFtZXMoCiAgICAgICAgVHlwZSAgID0+ICdydycsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkVXNlckNhdGVnb3J5R3JvdXBIYXNoUmVmID0gewogICAgICAgIDEgPT4gJ01pc2MnLAogICAgICAgIDIgPT4gJ015IENhdGVnb3J5JywKICAgICAgICAzID0+ICdNeSBDYXRlZ29yeTo6U3ViIENhdGVnb3J5IEEnLAogICAgICAgIDQgPT4gJ015IENhdGVnb3J5OjpTdWIgQ2F0ZWdvcnkgQScsCiAgICB9OwoKPWN1dAoKc3ViIEdldFVzZXJDYXRlZ29yaWVzTG9uZ05hbWVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFR5cGUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBjYXRlZ29yaWVzIHdoZXJlIHVzZXIgaGFzIHJpZ2h0cwogICAgbXkgJFVzZXJDYXRlZ29yaWVzID0gJFNlbGYtPkdldFVzZXJDYXRlZ29yaWVzKAogICAgICAgIFR5cGUgICA9PiAkUGFyYW17VHlwZX0sCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIGdldCBhbGwgY2F0ZWdvcmllcyB3aXRoIHRoZWlyIGxvbmcgbmFtZXMKICAgIG15ICRDYXRlZ29yeVRyZWUgPSAkU2VsZi0+Q2F0ZWdvcnlUcmVlTGlzdCgKICAgICAgICBWYWxpZCAgPT4gMSwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgdG8gc3RvcmUgdGhlIHVzZXIgY2F0ZWdvcmllcyB3aXRoIHRoZWlyIGxvbmcgbmFtZXMKICAgIG15ICVVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lczsKCiAgICAjIGdldCB0aGUgbG9uZyBuYW1lcyBvZiB0aGUgY2F0ZWdvcmllcyB3aGVyZSB1c2VyIGhhcyByaWdodHMKICAgIFBBUkVOVElEOgogICAgZm9yIG15ICRQYXJlbnRJRCAoIHNvcnQga2V5cyAleyRVc2VyQ2F0ZWdvcmllc30gKSB7CgogICAgICAgIG5leHQgUEFSRU5USUQgaWYgISRVc2VyQ2F0ZWdvcmllcy0+eyRQYXJlbnRJRH07CiAgICAgICAgbmV4dCBQQVJFTlRJRCBpZiByZWYgJFVzZXJDYXRlZ29yaWVzLT57JFBhcmVudElEfSBuZSAnSEFTSCc7CiAgICAgICAgbmV4dCBQQVJFTlRJRCBpZiAhJXsgJFVzZXJDYXRlZ29yaWVzLT57JFBhcmVudElEfSB9OwoKICAgICAgICBmb3IgbXkgJENhdGVnb3J5SUQgKCBzb3J0IGtleXMgJXsgJFVzZXJDYXRlZ29yaWVzLT57JFBhcmVudElEfSB9ICkgewogICAgICAgICAgICAkVXNlckNhdGVnb3JpZXNMb25nTmFtZXN7JENhdGVnb3J5SUR9ID0gJENhdGVnb3J5VHJlZS0+eyRDYXRlZ29yeUlEfTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIFwlVXNlckNhdGVnb3JpZXNMb25nTmFtZXM7Cn0KCj1pdGVtIEdldEN1c3RvbWVyQ2F0ZWdvcmllcygpCgpnZXQgY3VzdG9tZXIgdXNlciBjYXRlZ29yaWVzCgogICAgbXkgJEN1c3RvbWVyVXNlckNhdGVnb3J5SGFzaFJlZiA9ICRGQVFPYmplY3QtPkdldEN1c3RvbWVyQ2F0ZWdvcmllcygKICAgICAgICBDdXN0b21lclVzZXIgPT4gJ2hhbnMnLAogICAgICAgIFR5cGUgICAgICAgICA9PiAncncnLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJEN1c3RvbWVyVXNlckNhdGVnb3J5SGFzaFJlZiA9IHsKICAgICAgICAxID0+IHt9LAogICAgICAgIDAgPT4gewogICAgICAgICAgICAxID0+ICdNaXNjJywKICAgICAgICAgICAgMiA9PiAnTXkgQ2F0ZWdvcnknLAogICAgICAgIH0sCiAgICAgICAgMiA9PiB7CiAgICAgICAgICAgIDMgPT4gJ1N1YiBDYXRlZ29yeSBBJywKICAgICAgICAgICAgNCA9PiAnU3ViIENhdGVnb3J5IEInLAogICAgICAgIH0sCiAgICAgICAgMyA9PiB7fSwKICAgICAgICA0ID0+IHt9LAogICAgfTsKCj1jdXQKCnN1YiBHZXRDdXN0b21lckNhdGVnb3JpZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoQ3VzdG9tZXJVc2VyIFR5cGUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGNhY2hlCiAgICBteSAkQ2FjaGVLZXkgPSAnR2V0Q3VzdG9tZXJDYXRlZ29yaWVzOjpDdXN0b21lclVzZXI6OicgLiAkUGFyYW17Q3VzdG9tZXJVc2VyfTsKICAgIGlmICggZGVmaW5lZCAkU2VsZi0+e0NhY2hlfS0+eyRDYWNoZUtleX0gKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT57Q2FjaGV9LT57JENhY2hlS2V5fTsKICAgIH0KCiAgICAjIGdldCBhbGwgdmFsaWQgY2F0ZWdvcmllcwogICAgbXkgJENhdGVnb3JpZXMgPSAkU2VsZi0+Q2F0ZWdvcnlMaXN0KAogICAgICAgIFZhbGlkICA9PiAxLAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgbXkgJENhdGVnb3J5R3JvdXBzID0gJFNlbGYtPkNhdGVnb3J5R3JvdXBHZXRBbGwoCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICBteSAlVXNlckdyb3VwcyA9ICRTZWxmLT57Q3VzdG9tZXJHcm91cE9iamVjdH0tPkdyb3VwTWVtYmVyTGlzdCgKICAgICAgICBVc2VySUQgPT4gJFBhcmFte0N1c3RvbWVyVXNlcn0sCiAgICAgICAgVHlwZSAgID0+ICdybycsCiAgICAgICAgUmVzdWx0ID0+ICdIQVNIJywKICAgICk7CgogICAgbXkgJEN1c3RvbWVyQ2F0ZWdvcmllcyA9ICRTZWxmLT5fVXNlckNhdGVnb3JpZXMoCiAgICAgICAgQ2F0ZWdvcmllcyAgICAgPT4gJENhdGVnb3JpZXMsCiAgICAgICAgQ2F0ZWdvcnlHcm91cHMgPT4gJENhdGVnb3J5R3JvdXBzLAogICAgICAgIFVzZXJHcm91cHMgICAgID0+IFwlVXNlckdyb3VwcywKICAgICAgICBVc2VySUQgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyBjYWNoZQogICAgJFNlbGYtPntDYWNoZX0tPnskQ2FjaGVLZXl9ID0gJEN1c3RvbWVyQ2F0ZWdvcmllczsKCiAgICByZXR1cm4gJEN1c3RvbWVyQ2F0ZWdvcmllczsKfQoKPWl0ZW0gR2V0Q3VzdG9tZXJDYXRlZ29yaWVzTG9uZ05hbWVzKCkKCmdldCBjdXN0b21lciBjYXRlZ29yeS1ncm91cHMgKHNob3cgY2F0ZWdvcnkgbG9uZyBuYW1lcykKCiAgICBteSAkQ3VzdG9tZXJDYXRlZ29yeUdyb3VwSGFzaFJlZiA9ICRGQVFPYmplY3QtPkdldEN1c3RvbWVyQ2F0ZWdvcmllc0xvbmdOYW1lcygKICAgICAgICBDdXN0b21lclVzZXIgPT4gJ2hhbnMnLAogICAgICAgIFR5cGUgICA9PiAncncnLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJEN1c3RvbWVyQ2F0ZWdvcnlHcm91cEhhc2hSZWYgPSB7CiAgICAgICAgMSA9PiAnTWlzYycsCiAgICAgICAgMiA9PiAnTXkgQ2F0ZWdvcnknLAogICAgICAgIDMgPT4gJ015IENhdGVnb3J5OjpTdWIgQ2F0ZWdvcnkgQScsCiAgICAgICAgNCA9PiAnTXkgQ2F0ZWdvcnk6OlN1YiBDYXRlZ29yeSBBJywKICAgIH07Cgo9Y3V0CgpzdWIgR2V0Q3VzdG9tZXJDYXRlZ29yaWVzTG9uZ05hbWVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEN1c3RvbWVyVXNlciBUeXBlIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgY2F0ZWdvcmllcyB3aGVyZSB1c2VyIGhhcyByaWdodHMKICAgIG15ICRDdXN0b21lckNhdGVnb3JpZXMgPSAkU2VsZi0+R2V0Q3VzdG9tZXJDYXRlZ29yaWVzKAogICAgICAgIEN1c3RvbWVyVXNlciA9PiAkUGFyYW17Q3VzdG9tZXJVc2VyfSwKICAgICAgICBUeXBlICAgICAgICAgPT4gJFBhcmFte1R5cGV9LAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyBleHRyYWN0IGNhdGVnb3J5IGlkcwogICAgbXkgJUFsbENhdGVnb3J5SURzOwogICAgZm9yIG15ICRQYXJlbnRJRCAoIHNvcnQga2V5cyAleyRDdXN0b21lckNhdGVnb3JpZXN9ICkgewogICAgICAgIGZvciBteSAkQ2F0ZWdvcnlJRCAoIHNvcnQga2V5cyAleyAkQ3VzdG9tZXJDYXRlZ29yaWVzLT57JFBhcmVudElEfSB9ICkgewogICAgICAgICAgICAkQWxsQ2F0ZWdvcnlJRHN7JENhdGVnb3J5SUR9ID0gMTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgYWxsIGN1c3RvbWVyIGNhdGVnb3J5IGlkcwogICAgbXkgQEN1c3RvbWVyQ2F0ZWdvcnlJRHM7CiAgICBmb3IgbXkgJENhdGVnb3J5SUQgKCAwLCBrZXlzICVBbGxDYXRlZ29yeUlEcyApIHsKICAgICAgICBwdXNoIEBDdXN0b21lckNhdGVnb3J5SURzLCBAewogICAgICAgICAgICAkU2VsZi0+Q3VzdG9tZXJDYXRlZ29yeVNlYXJjaCgKICAgICAgICAgICAgICAgIFBhcmVudElEICAgICA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAkUGFyYW17Q3VzdG9tZXJVc2VyfSwKICAgICAgICAgICAgICAgIE1vZGUgICAgICAgICA9PiAnQ3VzdG9tZXInLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICAgICAgKQogICAgICAgIH07CiAgICB9CgogICAgIyBidWlsZCBjdXN0b21lciBjYXRlZ29yeSBoYXNoCiAgICAkQ3VzdG9tZXJDYXRlZ29yaWVzID0ge307CiAgICBmb3IgbXkgJENhdGVnb3J5SUQgKEBDdXN0b21lckNhdGVnb3J5SURzKSB7CiAgICAgICAgbXkgJUNhdGVnb3J5ID0gJFNlbGYtPkNhdGVnb3J5R2V0KAogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgJEN1c3RvbWVyQ2F0ZWdvcmllcy0+eyAkQ2F0ZWdvcnl7UGFyZW50SUR9IH0tPnsgJENhdGVnb3J5e0NhdGVnb3J5SUR9IH0gPSAkQ2F0ZWdvcnl7TmFtZX07CiAgICB9CgogICAgIyBnZXQgYWxsIGNhdGVnb3JpZXMgd2l0aCB0aGVpciBsb25nIG5hbWVzCiAgICBteSAkQ2F0ZWdvcnlUcmVlID0gJFNlbGYtPkNhdGVnb3J5VHJlZUxpc3QoCiAgICAgICAgVmFsaWQgID0+IDEsCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIHRvIHN0b3JlIHRoZSB1c2VyIGNhdGVnb3JpZXMgd2l0aCB0aGVpciBsb25nIG5hbWVzCiAgICBteSAlQ3VzdG9tZXJDYXRlZ29yaWVzTG9uZ05hbWVzOwoKICAgICMgZ2V0IHRoZSBsb25nIG5hbWVzIG9mIHRoZSBjYXRlZ29yaWVzIHdoZXJlIHVzZXIgaGFzIHJpZ2h0cwogICAgUEFSRU5USUQ6CiAgICBmb3IgbXkgJFBhcmVudElEICggc29ydCBrZXlzICV7JEN1c3RvbWVyQ2F0ZWdvcmllc30gKSB7CgogICAgICAgIG5leHQgUEFSRU5USUQgaWYgISRDdXN0b21lckNhdGVnb3JpZXMtPnskUGFyZW50SUR9OwogICAgICAgIG5leHQgUEFSRU5USUQgaWYgcmVmICRDdXN0b21lckNhdGVnb3JpZXMtPnskUGFyZW50SUR9IG5lICdIQVNIJzsKICAgICAgICBuZXh0IFBBUkVOVElEIGlmICEleyAkQ3VzdG9tZXJDYXRlZ29yaWVzLT57JFBhcmVudElEfSB9OwoKICAgICAgICBmb3IgbXkgJENhdGVnb3J5SUQgKCBzb3J0IGtleXMgJXsgJEN1c3RvbWVyQ2F0ZWdvcmllcy0+eyRQYXJlbnRJRH0gfSApIHsKICAgICAgICAgICAgJEN1c3RvbWVyQ2F0ZWdvcmllc0xvbmdOYW1lc3skQ2F0ZWdvcnlJRH0gPSAkQ2F0ZWdvcnlUcmVlLT57JENhdGVnb3J5SUR9OwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gXCVDdXN0b21lckNhdGVnb3JpZXNMb25nTmFtZXM7Cn0KCj1pdGVtIEdldFB1YmxpY0NhdGVnb3JpZXNMb25nTmFtZXMoKQoKZ2V0IHB1YmxpYyBjYXRlZ29yeS1ncm91cHMgKHNob3cgY2F0ZWdvcnkgbG9uZyBuYW1lcykKCiAgICBteSAkUHVibGljQ2F0ZWdvcnlHcm91cEhhc2hSZWYgPSAkRkFRT2JqZWN0LT5HZXRQdWJsaWNDYXRlZ29yaWVzTG9uZ05hbWVzKAogICAgICAgIFR5cGUgICA9PiAncncnLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJFB1YmxpY0NhdGVnb3J5R3JvdXBIYXNoUmVmID0gewogICAgICAgIDEgPT4gJ01pc2MnLAogICAgICAgIDIgPT4gJ015IENhdGVnb3J5JywKICAgICAgICAzID0+ICdNeSBDYXRlZ29yeTo6U3ViIENhdGVnb3J5IEEnLAogICAgICAgIDQgPT4gJ015IENhdGVnb3J5OjpTdWIgQ2F0ZWdvcnkgQScsCiAgICB9OwoKPWN1dAoKc3ViIEdldFB1YmxpY0NhdGVnb3JpZXNMb25nTmFtZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoVHlwZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGFsbCBjYXRlZ29yaWVzCiAgICBteSAkUHVibGljQ2F0ZWdvcmllcyA9ICRTZWxmLT5DYXRlZ29yeUxpc3QoIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSApOwoKICAgICMgZXh0cmFjdCBjYXRlZ29yeSBpZHMKICAgIG15ICVBbGxDYXRlZ29yeUlEczsKICAgIGZvciBteSAkUGFyZW50SUQgKCBzb3J0IGtleXMgJXskUHVibGljQ2F0ZWdvcmllc30gKSB7CiAgICAgICAgZm9yIG15ICRDYXRlZ29yeUlEICggc29ydCBrZXlzICV7ICRQdWJsaWNDYXRlZ29yaWVzLT57JFBhcmVudElEfSB9ICkgewogICAgICAgICAgICAkQWxsQ2F0ZWdvcnlJRHN7JENhdGVnb3J5SUR9ID0gMTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgYWxsIHB1YmxpYyBjYXRlZ29yeSBpZHMKICAgIG15IEBQdWJsaWNDYXRlZ29yeUlEczsKICAgIGZvciBteSAkQ2F0ZWdvcnlJRCAoIDAsIGtleXMgJUFsbENhdGVnb3J5SURzICkgewogICAgICAgIHB1c2ggQFB1YmxpY0NhdGVnb3J5SURzLCBAewogICAgICAgICAgICAkU2VsZi0+UHVibGljQ2F0ZWdvcnlTZWFyY2goCiAgICAgICAgICAgICAgICBQYXJlbnRJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgICAgIE1vZGUgICAgID0+ICdQdWJsaWMnLAogICAgICAgICAgICAgICAgVXNlcklEICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICApCiAgICAgICAgfTsKICAgIH0KCiAgICAjIGJ1aWxkIHB1YmxpYyBjYXRlZ29yeSBoYXNoCiAgICAkUHVibGljQ2F0ZWdvcmllcyA9IHt9OwogICAgZm9yIG15ICRDYXRlZ29yeUlEIChAUHVibGljQ2F0ZWdvcnlJRHMpIHsKICAgICAgICBteSAlQ2F0ZWdvcnkgPSAkU2VsZi0+Q2F0ZWdvcnlHZXQoCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICAkUHVibGljQ2F0ZWdvcmllcy0+eyAkQ2F0ZWdvcnl7UGFyZW50SUR9IH0tPnsgJENhdGVnb3J5e0NhdGVnb3J5SUR9IH0gPSAkQ2F0ZWdvcnl7TmFtZX07CiAgICB9CgogICAgIyBnZXQgYWxsIGNhdGVnb3JpZXMgd2l0aCB0aGVpciBsb25nIG5hbWVzCiAgICBteSAkQ2F0ZWdvcnlUcmVlID0gJFNlbGYtPkNhdGVnb3J5VHJlZUxpc3QoCiAgICAgICAgVmFsaWQgID0+IDEsCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIHRvIHN0b3JlIHRoZSB1c2VyIGNhdGVnb3JpZXMgd2l0aCB0aGVpciBsb25nIG5hbWVzCiAgICBteSAlUHVibGljQ2F0ZWdvcmllc0xvbmdOYW1lczsKCiAgICAjIGdldCB0aGUgbG9uZyBuYW1lcyBvZiB0aGUgY2F0ZWdvcmllcyB3aGVyZSB1c2VyIGhhcyByaWdodHMKICAgIFBBUkVOVElEOgogICAgZm9yIG15ICRQYXJlbnRJRCAoIHNvcnQga2V5cyAleyRQdWJsaWNDYXRlZ29yaWVzfSApIHsKCiAgICAgICAgbmV4dCBQQVJFTlRJRCBpZiAhJFB1YmxpY0NhdGVnb3JpZXMtPnskUGFyZW50SUR9OwogICAgICAgIG5leHQgUEFSRU5USUQgaWYgcmVmICRQdWJsaWNDYXRlZ29yaWVzLT57JFBhcmVudElEfSBuZSAnSEFTSCc7CiAgICAgICAgbmV4dCBQQVJFTlRJRCBpZiAhJXsgJFB1YmxpY0NhdGVnb3JpZXMtPnskUGFyZW50SUR9IH07CgogICAgICAgIGZvciBteSAkQ2F0ZWdvcnlJRCAoIHNvcnQga2V5cyAleyAkUHVibGljQ2F0ZWdvcmllcy0+eyRQYXJlbnRJRH0gfSApIHsKICAgICAgICAgICAgJFB1YmxpY0NhdGVnb3JpZXNMb25nTmFtZXN7JENhdGVnb3J5SUR9ID0gJENhdGVnb3J5VHJlZS0+eyRDYXRlZ29yeUlEfTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIFwlUHVibGljQ2F0ZWdvcmllc0xvbmdOYW1lczsKfQoKPWl0ZW0gQ2hlY2tDYXRlZ29yeVVzZXJQZXJtaXNzaW9uKCkKCmdldCB1c2VyIHBlcm1pc3Npb24gZm9yIGEgY2F0ZWdvcnkKCiAgICBteSAkUGVybWlzc2lvblN0cmluZyA9ICRGQVFPYmplY3QtPkNoZWNrQ2F0ZWdvcnlVc2VyUGVybWlzc2lvbigKICAgICAgICBDYXRlZ29yeUlEID0+ICcxMjMnLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRQZXJtaXNzaW9uU3RyaW5nID0gJ3J3JzsgICAgICAgICAgICAgICAjIG9yICdybycgb3IgJycKCj1jdXQKCnN1YiBDaGVja0NhdGVnb3J5VXNlclBlcm1pc3Npb24gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoQ2F0ZWdvcnlJRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRVc2VyQ2F0ZWdvcmllcyA9ICRTZWxmLT5HZXRVc2VyQ2F0ZWdvcmllcygKICAgICAgICBUeXBlICAgPT4gJ3JvJywKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIGZvciBteSAkUGVybWlzc2lvbiAocXcocncgcm8pKSB7CiAgICAgICAgZm9yIG15ICRQYXJlbnRJRCAoIHNvcnQga2V5cyAleyRVc2VyQ2F0ZWdvcmllc30gKSB7CiAgICAgICAgICAgIG15ICRDYXRlZ29yaWVzID0gJFVzZXJDYXRlZ29yaWVzLT57JFBhcmVudElEfTsKICAgICAgICAgICAgZm9yIG15ICRDYXRlZ29yeUlEICggc29ydCBrZXlzICV7JENhdGVnb3JpZXN9ICkgewogICAgICAgICAgICAgICAgaWYgKCAkQ2F0ZWdvcnlJRCA9PSAkUGFyYW17Q2F0ZWdvcnlJRH0gKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRQZXJtaXNzaW9uOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAnJzsKfQoKPWl0ZW0gQ2hlY2tDYXRlZ29yeUN1c3RvbWVyUGVybWlzc2lvbigpCgpnZXQgY3VzdG9tZXIgdXNlciBwZXJtaXNzaW9uIGZvciBhIGNhdGVnb3J5CgogICAgbXkgJFBlcm1pc3Npb25TdHJpbmcgJEZBUU9iamVjdC0+Q2hlY2tDYXRlZ29yeUN1c3RvbWVyUGVybWlzc2lvbigKICAgICAgICBDdXN0b21lclVzZXIgPT4gJ21tJywKICAgICAgICBDYXRlZ29yeUlEICAgPT4gJzEyMycsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkUGVybWlzc2lvblN0cmluZyA9ICdydyc7ICAgICAgICAgICAgICAgIyBvciAncm8nIG9yICcnCgo9Y3V0CgpzdWIgQ2hlY2tDYXRlZ29yeUN1c3RvbWVyUGVybWlzc2lvbiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDdXN0b21lclVzZXIgQ2F0ZWdvcnlJRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIGZvciBteSAkUGVybWlzc2lvbiAocXcocncgcm8pKSB7CiAgICAgICAgbXkgJEN1c3RvbWVyQ2F0ZWdvcmllcyA9ICRTZWxmLT5HZXRDdXN0b21lckNhdGVnb3JpZXMoCiAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAkUGFyYW17Q3VzdG9tZXJVc2VyfSwKICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICdybycsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwogICAgICAgIGZvciBteSAkUGFyZW50SUQgKCBzb3J0IGtleXMgJXskQ3VzdG9tZXJDYXRlZ29yaWVzfSApIHsKICAgICAgICAgICAgbXkgJENhdGVnb3JpZXMgPSAkQ3VzdG9tZXJDYXRlZ29yaWVzLT57JFBhcmVudElEfTsKICAgICAgICAgICAgZm9yIG15ICRDYXRlZ29yeUlEICggc29ydCBrZXlzICV7JENhdGVnb3JpZXN9ICkgewogICAgICAgICAgICAgICAgaWYgKCAkQ2F0ZWdvcnlJRCA9PSAkUGFyYW17Q2F0ZWdvcnlJRH0gKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRQZXJtaXNzaW9uOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAnJzsKfQoKPWl0ZW0gU2V0Q2F0ZWdvcnlHcm91cCgpCgpzZXQgZ3JvdXBzIHRvIGEgY2F0ZWdvcnkKCiAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPlNldENhdGVnb3J5R3JvdXAoCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAzLAogICAgICAgIEdyb3VwSURzICAgPT4gWyAyLDQsMSw1LDc3IF0sCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJFN1Y2Nlc3MgPSAxOyAgICAgICAgICAgICAgICMgb3IgdW5kZWYgaWYgZ3JvdXBzIGNvdWxkIG5vdCBiZSBzZXQgdG8gYSBjYXRlZ29yeQoKPWN1dAoKc3ViIFNldENhdGVnb3J5R3JvdXAgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoQ2F0ZWdvcnlJRCBHcm91cElEcyBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZGVsZXRlIG9sZCBncm91cHMKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIERFTEVURSBGUk9NIGZhcV9jYXRlZ29yeV9ncm91cAogICAgICAgICAgICBXSEVSRSBjYXRlZ29yeV9pZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0NhdGVnb3J5SUR9IF0sCiAgICApOwoKICAgICMgaW5zZXJ0IGdyb3VwcwogICAgJFBhcmFte0NhdGVnb3J5SUR9ID0gJFNlbGYtPntEQk9iamVjdH0tPlF1b3RlKCAkUGFyYW17Q2F0ZWdvcnlJRH0sICdJbnRlZ2VyJyApOwogICAgZm9yIG15ICRHcm91cElEICggQHsgJFBhcmFte0dyb3VwSURzfSB9ICkgewoKICAgICAgICAjIGRiIHF1b3RlCiAgICAgICAgJEdyb3VwSUQgPSAkU2VsZi0+e0RCT2JqZWN0fS0+UXVvdGUoICRHcm91cElELCAnSW50ZWdlcicgKTsKCiAgICAgICAgbXkgJFNRTCA9ICIKICAgICAgICAgICAgSU5TRVJUIElOVE8gZmFxX2NhdGVnb3J5X2dyb3VwIChjYXRlZ29yeV9pZCwgZ3JvdXBfaWQsIGNoYW5nZWQsIGNoYW5nZWRfYnksIGNyZWF0ZWQsCiAgICAgICAgICAgICAgICBjcmVhdGVkX2J5KQogICAgICAgICAgICBWQUxVRVMgKCRQYXJhbXtDYXRlZ29yeUlEfSwgJEdyb3VwSUQsIGN1cnJlbnRfdGltZXN0YW1wLCAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgIGN1cnJlbnRfdGltZXN0YW1wLCAkUGFyYW17VXNlcklEfSkiOwoKICAgICAgICAjIHdyaXRlIGF0dGFjaG1lbnQgdG8gZGIKICAgICAgICByZXR1cm4gaWYgISRTZWxmLT57REJPYmplY3R9LT5EbyggU1FMID0+ICRTUUwgKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWJlZ2luIEludGVybmFsOgoKPWl0ZW0gX1VzZXJDYXRlZ29yaWVzKCkKCnJlZHVjZXMgdGhlIGNhdGVnb3JpZXMgKCBmcm9tIENhdGVnb3J5TGlzdCgpICkgdG8gb25seSB0aGUgb25lcyB3aGVyZSB0aGUgdXNlciBoYXMgcHJpdmlsZWdlcy4KCiAgICBteSAkVXNlckNhdGVnb3JpZXMgPSAkRkFRT2JqZWN0LT5fVXNlckNhdGVnb3JpZXMoCiAgICAgICAgQ2F0ZWdvcmllcyAgICAgPT4gJENhdGVnb3J5SGFzaFJlZiwgICAgICAgICAjIGFzIHJldHVybmVkIGZvcm0gQ2F0ZWdvcnlMaXN0KCkKICAgICAgICBDYXRlZ29yeUdyb3VwcyA9PiAkQ2F0ZWdvcnlHcm91cEhhc2hSZWYsICAgICAjIGFzIHJldHVybmVkIGZyb20gQ2F0ZWdvcnlHcm91cEdldEFsbAogICAgICAgIFVzZXJHcm91cHMgICAgID0+ICRVc2VyR3JvdXBzSGFzaFJlZiwKICAgICAgICBVc2VySUQgICAgICAgICA9PiAxMjMsCiAgICApOwoKUmV0dXJuczoKCiAgICAkVXNlckNhdGVnb2llcyA9IHsKICAgICAgICAwID0+IHsKICAgICAgICAgICAgMSA9PiAnTWlzYycsCiAgICAgICAgICAgIDIgPT4gJ015IENhdGVnb3J5JywKICAgICAgICB9LAogICAgICAgIDIgPT4gewogICAgICAgICAgICAzID0+ICdTdWIgQ2F0ZWdvcnkgQScsCiAgICAgICAgfSwKICAgIH07Cgo9Y3V0CgpzdWIgX1VzZXJDYXRlZ29yaWVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KENhdGVnb3JpZXMgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlVXNlckNhdGVnb3JpZXM7CgogICAgUEFSRU5USUQ6CiAgICBmb3IgbXkgJFBhcmVudElEICggc29ydCB7ICRhIDw9PiAkYiB9IGtleXMgJXsgJFBhcmFte0NhdGVnb3JpZXN9IH0gKSB7CgogICAgICAgIG15ICVTdWJDYXRlZ29yaWVzOwoKICAgICAgICBDQVRFR09SWUlEOgogICAgICAgIGZvciBteSAkQ2F0ZWdvcnlJRCAoIHNvcnQga2V5cyAleyAkUGFyYW17Q2F0ZWdvcmllc30tPnskUGFyZW50SUR9IH0gKSB7CgogICAgICAgICAgICAjIGNoZWNrIGNhdGVnb3J5IGdyb3VwcwogICAgICAgICAgICBuZXh0IENBVEVHT1JZSUQgaWYgIWRlZmluZWQgJFBhcmFte0NhdGVnb3J5R3JvdXBzfS0+eyRDYXRlZ29yeUlEfTsKCiAgICAgICAgICAgICMgY2hlY2sgdXNlciBncm91cHMKICAgICAgICAgICAgR1JPVVBJRDoKICAgICAgICAgICAgZm9yIG15ICRHcm91cElEICggc29ydCBrZXlzICV7ICRQYXJhbXtDYXRlZ29yeUdyb3Vwc30tPnskQ2F0ZWdvcnlJRH0gfSApIHsKCiAgICAgICAgICAgICAgICBuZXh0IEdST1VQSUQgaWYgIWRlZmluZWQgJFBhcmFte1VzZXJHcm91cHN9LT57JEdyb3VwSUR9OwoKICAgICAgICAgICAgICAgICMgYWRkIGNhdGVnb3J5CiAgICAgICAgICAgICAgICAkU3ViQ2F0ZWdvcmllc3skQ2F0ZWdvcnlJRH0gPSAkUGFyYW17Q2F0ZWdvcmllc30tPnskUGFyZW50SUR9LT57JENhdGVnb3J5SUR9OwoKICAgICAgICAgICAgICAgICMgYWRkIGVtcHR5IGhhc2ggaWYgY2F0ZWdvcnkgaGFzIG5vIHN1YmNhdGVnb3JpZXMKICAgICAgICAgICAgICAgIGlmICggISRVc2VyQ2F0ZWdvcmllc3skQ2F0ZWdvcnlJRH0gKSB7CiAgICAgICAgICAgICAgICAgICAgJFVzZXJDYXRlZ29yaWVzeyRDYXRlZ29yeUlEfSA9IHt9OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGxhc3QgR1JPVVBJRDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkVXNlckNhdGVnb3JpZXN7JFBhcmVudElEfSA9IFwlU3ViQ2F0ZWdvcmllczsKICAgIH0KICAgIHJldHVybiBcJVVzZXJDYXRlZ29yaWVzOwp9Cgo9ZW5kIEludGVybmFsOgoKPWN1dAoKMTsKCj1iYWNrCgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChodHRwOi8vb3Rycy5vcmcvKS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIEw8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0Pi4KCj1jdXQK
IyAtLQojIEtlcm5lbC9TeXN0ZW0vRkFRL0xhbmd1YWdlLnBtIC0gZmFxIGxhbmd1YWdlIGZ1bmN0aW9ucwojIENvcHlyaWdodCAoQykgMjAwMS0yMDEzIE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OkZBUTo6TGFuZ3VhZ2U7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkZBUTo6TGFuZ3VhZ2UgLSBzdWIgbW9kdWxlIG9mIEtlcm5lbDo6U3lzdGVtOjpGQVEKCj1oZWFkMSBTWU5PUFNJUwoKQWxsIGZhcSBsYW5ndWFnZSBmdW5jdGlvbnMuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPW92ZXIgNAoKPWN1dAoKPWl0ZW0gTGFuZ3VhZ2VBZGQoKQoKYWRkIGEgbGFuZ3VhZ2UKCiAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkxhbmd1YWdlQWRkKAogICAgICAgIE5hbWUgICA9PiAnU29tZSBMYW5hZ3VhZ2UnLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJFN1Y2Nlc3MgPSAxOyAgICAgICAgICAgICAgICMgb3IgdW5kZWYgaWYgbGFuZ3VhZ2UgY291bGQgbm90IGJlIGFkZGVkCgo9Y3V0CgpzdWIgTGFuZ3VhZ2VBZGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoTmFtZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIElOU0VSVCBJTlRPIGZhcV9sYW5ndWFnZSAobmFtZSkKICAgICAgICAgICAgVkFMVUVTICg/KScsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17TmFtZX0gXSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIExhbmd1YWdlRGVsZXRlKCkKCkRlbGV0ZSBhIGxhbmd1YWdlLgoKICAgIG15ICREZWxldGVTdWNjZXNzID0gJEZBUU9iamVjdC0+TGFuZ3VhZ2VEZWxldGUoCiAgICAgICAgTGFuZ3VhZ2VJRCA9PiAxMjMsCiAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zCgogICAgJERlbGV0ZVN1Y2Nlc3MgPSAxOyAgICAgICAgICAgICAjIG9yIHVuZGVmIGlmIGxhbmd1YWdlIGNvdWxkIG5vdCBiZSBkZWxldGVkCgo9Y3V0CgpzdWIgTGFuZ3VhZ2VEZWxldGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBdHRyaWJ1dGUgKHF3KExhbmd1YWdlSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXR0cmlidXRlfSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEF0dHJpYnV0ZSEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZGVsZXRlIHRoZSBsYW5ndWFnZQogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+RG8oCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgREVMRVRFIEZST00gZmFxX2xhbmd1YWdlCiAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17TGFuZ3VhZ2VJRH0gXSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIExhbmd1YWdlRHVwbGljYXRlQ2hlY2soKQoKY2hlY2sgYSBsYW5ndWFnZQoKICAgIG15ICRFeGlzdHMgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZUR1cGxpY2F0ZUNoZWNrKAogICAgICAgIE5hbWUgICAgICAgPT4gJ1NvbWUgTmFtZScsCiAgICAgICAgTGFuZ3VhZ2VJRCA9PiAxLCAgICAgICAgIyBmb3IgdXBkYXRlCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJEV4aXN0cyA9IDE7ICAgICAgICAgICAgICAgICMgaWYgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMsIG9yIDAgaWYgZG9lcyBub3QgZXhpc3QKCj1jdXQKCnN1YiBMYW5ndWFnZUR1cGxpY2F0ZUNoZWNrIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBVc2VySUQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGJ1aWxkIHNxbAogICAgbXkgQEJpbmQgPSAoIFwkUGFyYW17TmFtZX0gKTsKICAgIG15ICRTUUwgID0gJwogICAgICAgIFNFTEVDVCBpZAogICAgICAgIEZST00gZmFxX2xhbmd1YWdlCiAgICAgICAgV0hFUkUgbmFtZSA9ID8nOwogICAgaWYgKCBkZWZpbmVkICRQYXJhbXtMYW5ndWFnZUlEfSApIHsKICAgICAgICBwdXNoIEBCaW5kLCBcJFBhcmFte0xhbmd1YWdlSUR9OwogICAgICAgICRTUUwgLj0gIiBBTkQgaWQgIT0gPyI7CiAgICB9CgogICAgIyBwcmVwYXJlIHNxbCBzdGF0ZW1lbnQKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoCiAgICAgICAgU1FMICAgPT4gJFNRTCwKICAgICAgICBMaW1pdCA9PiAxLAogICAgICAgIEJpbmQgID0+IFxAQmluZCwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAkRXhpc3RzOwogICAgd2hpbGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkRXhpc3RzID0gMTsKICAgIH0KCiAgICByZXR1cm4gJEV4aXN0czsKfQoKPWl0ZW0gTGFuZ3VhZ2VHZXQoKQoKZ2V0IGEgbGFuZ3VhZ2UgZGV0YWlscyBhcyBhIGhhc2gKCiAgICBteSAlTGFuZ3VhZ2UgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZUdldCgKICAgICAgICBMYW5ndWFnZUlEID0+IDEsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJUxhbmd1YWdlID0gKAogICAgICAgIExhbmd1YWdlSUQgPT4gJzEnLAogICAgICAgIE5hbWUgICAgICAgPT4gJ2VuJywKICAgICk7Cgo9Y3V0CgpzdWIgTGFuZ3VhZ2VHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoTGFuZ3VhZ2VJRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgc3FsCiAgICByZXR1cm4gaWYgISRTZWxmLT57REJPYmplY3R9LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBpZCwgbmFtZQogICAgICAgICAgICBGUk9NIGZhcV9sYW5ndWFnZQogICAgICAgICAgICBXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtMYW5ndWFnZUlEfSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgIG15ICVEYXRhOwogICAgd2hpbGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAlRGF0YSA9ICgKICAgICAgICAgICAgTGFuZ3VhZ2VJRCA9PiAkUm93WzBdLAogICAgICAgICAgICBOYW1lICAgICAgID0+ICRSb3dbMV0sCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gJURhdGE7Cn0KCj1pdGVtIExhbmd1YWdlTGlzdCgpCgpnZXQgdGhlIGxhbmd1YWdlIGxpc3QgYXMgYSBoYXNoCgogICAgbXkgJUxhbmd1YWdlcyA9ICRGQVFPYmplY3QtPkxhbmd1YWdlTGlzdCgKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICVMYW5ndWFnZXMgPSAoCiAgICAgICAgMSA9PiAnZW4nLAogICAgICAgIDIgPT4gJ2RlJywKICAgICAgICAzID0+ICdlcycsCiAgICApOwoKPWN1dAoKc3ViIExhbmd1YWdlTGlzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgVXNlcklEISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBidWlsZCBzcWwKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkLCBuYW1lCiAgICAgICAgICAgIEZST00gZmFxX2xhbmd1YWdlJywKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAlTGlzdDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJExpc3R7ICRSb3dbMF0gfSA9ICRSb3dbMV07CiAgICB9CgogICAgcmV0dXJuICVMaXN0Owp9Cgo9aXRlbSBMYW5ndWFnZUxvb2t1cCgpCgpUaGlzIG1ldGhvZCBkb2VzIGEgbG9va3VwIGZvciBhIGZhcSBsYW5ndWFnZS4KSWYgYSBsYW5ndWFnZSBpZCBpcyBnaXZlbiwgaXQgcmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgbGFuZ3VhZ2UuCklmIHRoZSBuYW1lIG9mIHRoZSBsYW5ndWFnZSBpcyBnaXZlbiwgdGhlIGxhbmd1YWdlIGlkIGlzIHJldHVybmVkLgoKICAgIG15ICRMYW5ndWFnZU5hbWUgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZUxvb2t1cCgKICAgICAgICBMYW5ndWFnZUlEID0+IDEsCiAgICApOwoKICAgIG15ICRMYW5ndWFnZUlEID0gJEZBUU9iamVjdC0+TGFuZ3VhZ2VMb29rdXAoCiAgICAgICAgTmFtZSA9PiAnZW4nLAogICAgKTsKClJldHVybnM6CgogICAgJExhbmd1YWdlTmFtZSA9ICdlbic7CgogICAgJExhbmd1YWdlSUQgPSAxOwoKPWN1dAoKc3ViIExhbmd1YWdlTG9va3VwIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBpZiBib3RoIHBhcmFtZXRlcnMgYXJlIGdpdmVuCiAgICBpZiAoICRQYXJhbXtMYW5ndWFnZUlEfSAmJiAkUGFyYW17TmFtZX0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIExhbmd1YWdlSUQgb3IgTmFtZSAtIG5vdCBib3RoIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjaGVjayBpZiBib3RoIHBhcmFtZXRlcnMgYXJlIG5vdCBnaXZlbgogICAgaWYgKCAhJFBhcmFte0xhbmd1YWdlSUR9ICYmICEkUGFyYW17TmFtZX0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIExhbmd1YWdlSUQgb3IgTmFtZSAtIG5vbmUgaXMgZ2l2ZW4hJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNoZWNrIGlmIExhbmd1YWdlSUQgaXMgYSBudW1iZXIKICAgIGlmICggJFBhcmFte0xhbmd1YWdlSUR9ICYmICRQYXJhbXtMYW5ndWFnZUlEfSAhfiBteyBcQSBcZCsgXHogfXhtcyApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkxhbmd1YWdlSUQgbXVzdCBiZSBhIG51bWJlciEgKExhbmd1YWdlSUQ6ICRQYXJhbXtMYW5ndWFnZUlEfSkiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgcHJlcGFyZSBTUUwgc3RhdGVtZW50cwogICAgaWYgKCAkUGFyYW17TGFuZ3VhZ2VJRH0gKSB7CiAgICAgICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgIFNFTEVDVCBuYW1lCiAgICAgICAgICAgICAgICBGUk9NIGZhcV9sYW5ndWFnZQogICAgICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte0xhbmd1YWdlSUR9IF0sCiAgICAgICAgICAgIExpbWl0ID0+IDEsCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2lmICggJFBhcmFte05hbWV9ICkgewogICAgICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgICAgICBTRUxFQ1QgaWQKICAgICAgICAgICAgICAgIEZST00gZmFxX2xhbmd1YWdlCiAgICAgICAgICAgICAgICBXSEVSRSBuYW1lID0gPycsCiAgICAgICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtOYW1lfSBdLAogICAgICAgICAgICBMaW1pdCA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAkTG9va3VwOwogICAgd2hpbGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkTG9va3VwID0gJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gJExvb2t1cDsKfQoKPWl0ZW0gTGFuZ3VhZ2VVcGRhdGUoKQoKdXBkYXRlIGEgbGFuZ3VhZ2UKCiAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkxhbmd1YWdlVXBkYXRlKAogICAgICAgIExhbmd1YWdlSUQgPT4gMSwKICAgICAgICBOYW1lICAgICAgID0+ICdkZScsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJFN1Y2Nlc3MgPSAxOyAgICAgICAgICAgICAgICMgb3IgdW5kZWYgaWYgbGFuZ3VhZ2UgY291bGQgbm90IGJlIHVwZGF0ZWQKCj1jdXQKCnN1YiBMYW5ndWFnZVVwZGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhMYW5ndWFnZUlEIE5hbWUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGJ1aWxkIHNxbAogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+RG8oCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgVVBEQVRFIGZhcV9sYW5ndWFnZQogICAgICAgICAgICBTRVQgbmFtZSA9ID8KICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtOYW1lfSwgXCRQYXJhbXtMYW5ndWFnZUlEfSBdLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKMTsKCj1iYWNrCgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChodHRwOi8vb3Rycy5vcmcvKS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIEw8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0Pi4KCj1jdXQK
IyAtLQojIEtlcm5lbC9TeXN0ZW0vRkFRL1N0YXRlLnBtIC0gZmFxIHN0YXRlIGZ1bmN0aW9ucwojIENvcHlyaWdodCAoQykgMjAwMS0yMDEzIE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OkZBUTo6U3RhdGU7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkZBUTo6U3RhdGUgLSBzdWIgbW9kdWxlIG9mIEtlcm5lbDo6U3lzdGVtOjpGQVEKCj1oZWFkMSBTWU5PUFNJUwoKQWxsIGZhcSBzdGF0ZSBmdW5jdGlvbnMuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPW92ZXIgNAoKPWN1dAoKPWl0ZW0gU3RhdGVBZGQoKQoKYWRkIGEgc3RhdGUKCiAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPlN0YXRlQWRkKAogICAgICAgIE5hbWUgICA9PiAncHVibGljJywKICAgICAgICBUeXBlSUQgPT4gMSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRTdWNjZXNzID0gMTsgICAgICAgICAgICAgICAjIG9yIHVuZGVmIGlmIHN0YXRlIGNvdWxkIG5vdCBiZSBhZGRlZAoKPWN1dAoKc3ViIFN0YXRlQWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KE5hbWUgVHlwZUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+RG8oCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgSU5TRVJUIElOVE8gZmFxX3N0YXRlIChuYW1lLCB0eXBlX2lkKQogICAgICAgICAgICBWQUxVRVMgKCA/LCA/ICknLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte05hbWV9LCBcJFBhcmFte1R5cGVJRH0gXSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIFN0YXRlR2V0KCkKCmdldCBhIHN0YXRlIGFzIGhhc2gKCiAgICBteSAlU3RhdGUgPSAkRkFRT2JqZWN0LT5TdGF0ZUdldCgKICAgICAgICBTdGF0ZUlEID0+IDEsCiAgICAgICAgVXNlcklEICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJVN0YXRlID0gKAogICAgICAgIFN0YXRlSUQgID0+IDEsCiAgICAgICAgTmFtZSAgICAgPT4gJ2ludGVybmFsIChhZ2VudCknLAogICAgICAgIFR5cGVJRCAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIFN0YXRlR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFN0YXRlSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNxbAogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBTRUxFQ1QgaWQsIG5hbWUsIHR5cGVfaWQKICAgICAgICAgICAgRlJPTSBmYXFfc3RhdGUKICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17U3RhdGVJRH0gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICBteSAlRGF0YTsKICAgIHdoaWxlICggbXkgQFJvdyA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJURhdGEgPSAoCiAgICAgICAgICAgIFN0YXRlSUQgPT4gJFJvd1swXSwKICAgICAgICAgICAgTmFtZSAgICA9PiAkUm93WzFdLAogICAgICAgICAgICBUeXBlSUQgID0+ICRSb3dbMl0sCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gJURhdGE7Cn0KCj1pdGVtIFN0YXRlTGlzdCgpCgpnZXQgdGhlIHN0YXRlIGxpc3QgYXMgaGFzaAoKICAgIG15ICVTdGF0ZXMgPSAkRkFRT2JqZWN0LT5TdGF0ZUxpc3QoCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAlU3RhdGVzID0gKAogICAgICAgIDEgPT4gJ2ludGVybmFsIChhZ2VudCknLAogICAgICAgIDIgPT4gJ2V4dGVybmFsIChjdXN0b21lciknLAogICAgICAgIDMgPT4gJ3B1YmxpYyAoYWxsKScsCiAgICApOwoKPWN1dAoKc3ViIFN0YXRlTGlzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgVXNlcklEIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzcWwKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkLCBuYW1lCiAgICAgICAgICAgIEZST00gZmFxX3N0YXRlJwogICAgKTsKCiAgICBteSAlTGlzdDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJExpc3R7ICRSb3dbMF0gfSA9ICRSb3dbMV07CiAgICB9CgogICAgcmV0dXJuICVMaXN0Owp9Cgo9aXRlbSBTdGF0ZVVwZGF0ZSgpCgp1cGRhdGUgYSBzdGF0ZQoKICAgIG15IFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5TdGF0ZVVwZGF0ZSgKICAgICAgICBTdGF0ZUlEID0+IDEsCiAgICAgICAgTmFtZSAgICA9PiAncHVibGljJywKICAgICAgICBUeXBlSUQgID0+IDEsCiAgICAgICAgVXNlcklEICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgU3VjY2VzcyA9IDE7ICAgICAgICAgICAgICMgb3IgdW5kZWYgaWYgc3RhdGUgY291bGQgbm90IGJlIHVwZGF0ZWQKCj1jdXQKCnN1YiBTdGF0ZVVwZGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhTdGF0ZUlEIE5hbWUgVHlwZUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBzcWwKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFVQREFURSBmYXFfc3RhdGUKICAgICAgICAgICAgU0VUIG5hbWUgPSA/LCB0eXBlX2lkID0gPywKICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtOYW1lfSwgXCRQYXJhbXtUeXBlSUR9LCBcJFBhcmFte1N0YXRlSUR9IF0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBTdGF0ZVR5cGVHZXQoKQoKZ2V0IGEgc3RhdGUgYXMgaGFzaHJlZgoKICAgIG15ICRTdGF0ZVR5cGVIYXNoUmVmID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlR2V0KAogICAgICAgIFN0YXRlSUQgPT4gMSwKICAgICAgICBVc2VySUQgID0+IDEsCiAgICApOwoKT3IKCiAgICBteSAkU3RhdGVUeXBlSGFzaFJlZiA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUdldCgKICAgICAgICBOYW1lICAgID0+ICdpbnRlcm5hbCcsCiAgICAgICAgVXNlcklEICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJFN0YXRlVHlwZUhhc2hSZWYgPSB7CiAgICAgICAgJ1N0YXRlSUQnID0+IDEsCiAgICAgICAgJ05hbWUnICAgID0+ICdpbnRlcm5hbCcsCiAgICB9OwoKPWN1dAoKc3ViIFN0YXRlVHlwZUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgVXNlcklEISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJFNRTCA9ICcKICAgICAgICBTRUxFQ1QgaWQsIG5hbWUKICAgICAgICBGUk9NIGZhcV9zdGF0ZV90eXBlCiAgICAgICAgV0hFUkUnOwogICAgbXkgQEJpbmQ7CiAgICBteSAkQ2FjaGVLZXkgPSAnU3RhdGVUeXBlR2V0OjonOwogICAgaWYgKCBkZWZpbmVkICRQYXJhbXtTdGF0ZUlEfSApIHsKICAgICAgICAkU1FMIC49ICcgaWQgPSA/JzsKICAgICAgICBwdXNoIEBCaW5kLCBcJFBhcmFte1N0YXRlSUR9OwogICAgICAgICRDYWNoZUtleSAuPSAnSUQ6OicgLiAkUGFyYW17U3RhdGVJRH07CiAgICB9CiAgICBlbHNpZiAoIGRlZmluZWQgJFBhcmFte05hbWV9ICkgewogICAgICAgICRTUUwgLj0gJyBuYW1lID0gPyc7CiAgICAgICAgcHVzaCBAQmluZCwgXCRQYXJhbXtOYW1lfTsKICAgICAgICAkQ2FjaGVLZXkgLj0gJ05hbWU6OicgLiAkUGFyYW17TmFtZX07CiAgICB9CgogICAgIyBjaGVjayBjYWNoZQogICAgbXkgJENhY2hlID0gJFNlbGYtPntDYWNoZU9iamVjdH0tPkdldCgKICAgICAgICBUeXBlID0+ICdGQVEnLAogICAgICAgIEtleSAgPT4gJENhY2hlS2V5LAogICAgKTsKICAgIHJldHVybiAkQ2FjaGUgaWYgJENhY2hlOwoKICAgICMgc3FsCiAgICByZXR1cm4gaWYgISRTZWxmLT57REJPYmplY3R9LT5QcmVwYXJlKAogICAgICAgIFNRTCAgPT4gJFNRTCwKICAgICAgICBCaW5kID0+IFxAQmluZCwKICAgICk7CgogICAgbXkgJURhdGE7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkU2VsZi0+e0RCT2JqZWN0fS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICVEYXRhID0gKAogICAgICAgICAgICBTdGF0ZUlEID0+ICRSb3dbMF0sCiAgICAgICAgICAgIE5hbWUgICAgPT4gJFJvd1sxXSwKICAgICAgICApOwogICAgfQoKICAgICMgY2FjaGUgcmVzdWx0CiAgICAkU2VsZi0+e0NhY2hlT2JqZWN0fS0+U2V0KAogICAgICAgIFR5cGUgID0+ICdGQVEnLAogICAgICAgIEtleSAgID0+ICRDYWNoZUtleSwKICAgICAgICBWYWx1ZSA9PiBcJURhdGEsCiAgICAgICAgVFRMICAgPT4gNjAgKiA2MCAqIDI0ICogMiwKICAgICk7CgogICAgcmV0dXJuIFwlRGF0YTsKfQoKPWl0ZW0gU3RhdGVUeXBlTGlzdCgpCgpnZXQgdGhlIHN0YXRlIHR5cGUgbGlzdCBhcyBoYXNocmVmCgogICAgbXkgJFN0YXRlVHlwZUhhc2hSZWYgPSAkRkFRT2JqZWN0LT5TdGF0ZVR5cGVMaXN0KAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKCm9wdGlvbmFsLCBnZXQgc3RhdGUgdHlwZSBsaXN0IGZvciBzb21lIHN0YXRlczoKCiAgICBteSAkU3RhdGVUeXBlSGFzaFJlZiA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUxpc3QoCiAgICAgICAgVHlwZXMgID0+IFsgJ3B1YmxpYycsICdpbnRlcm5hbCddLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJFN0YXRlVHlwZUhhc2hSZWYgPSB7CiAgICAgICAgMSA9PiAnaW50ZXJuYWwnLAogICAgICAgIDMgPT4gJ3B1YmxpYycsCiAgICAgICAgMiA9PiAnZXh0ZXJuYWwnLAogICAgfTsKCj1jdXQKCnN1YiBTdGF0ZVR5cGVMaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBVc2VySUQhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGJ1aWxkIFNRTAogICAgbXkgJFNRTCA9ICcKICAgICAgICBTRUxFQ1QgaWQsIG5hbWUKICAgICAgICBGUk9NIGZhcV9zdGF0ZV90eXBlJzsKCiAgICAjIHR5cGVzIGFyZSBnaXZlbgogICAgaWYgKCAkUGFyYW17VHlwZXN9ICkgewoKICAgICAgICBpZiAoIHJlZiAkUGFyYW17VHlwZXN9IG5lICdBUlJBWScgKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdUeXBlcyBzaG91bGQgYmUgYW4gYXJyYXkgcmVmZXJlbmNlIScsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGNhbGwgU3RhdGVUeXBlTGlzdCB3aXRob3V0IHBhcmFtZXRlcnMgdG8gdmFsaWRhdGUgVHlwZXMKICAgICAgICBteSAkU3RhdGVUeXBlTGlzdCA9ICRTZWxmLT5TdGF0ZVR5cGVMaXN0KCBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0gKTsKICAgICAgICBteSAlU3RhdGVUeXBlcyA9IHJldmVyc2UgJXskU3RhdGVUeXBlTGlzdH07CiAgICAgICAgbXkgQFR5cGVzOwoKICAgICAgICAjIG9ubHkgYWRkIHR5cGVzIHRvIGxpc3QgdGhhdCBleGlzdAogICAgICAgIFRZUEU6CiAgICAgICAgZm9yIG15ICRUeXBlICggQHsgJFBhcmFte1R5cGVzfSB9ICkgewogICAgICAgICAgICBuZXh0ICRUeXBlIGlmICEkU3RhdGVUeXBlc3skVHlwZX07CiAgICAgICAgICAgIHB1c2ggQFR5cGVzLCAiJyRUeXBlJyI7CiAgICAgICAgfQoKICAgICAgICAjIGNyZWF0ZSBzdHJpbmcKICAgICAgICBpZiAoQFR5cGVzKSB7CiAgICAgICAgICAgICRTUUwgLj0gJyBXSEVSRSBuYW1lIElOICggJyAuIGpvaW4oICcsICcsIEBUeXBlcyApIC4gJyApJzsKICAgICAgICB9CiAgICB9CgogICAgIyBwcmVwYXJlIFNRTAogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSggU1FMID0+ICRTUUwgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICVMaXN0OwogICAgd2hpbGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkTGlzdHsgJFJvd1swXSB9ID0gJFJvd1sxXTsKICAgIH0KCiAgICByZXR1cm4gXCVMaXN0Owp9CgoxOwoKPWJhY2sKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKGh0dHA6Ly9vdHJzLm9yZy8pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQ+LgoKPWN1dAo=
IyAtLQojIEtlcm5lbC9TeXN0ZW0vRkFRL1ZvdGUucG0gLSBmYXEgdm90ZSBmdW5jdGlvbnMKIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxMyBPVFJTIEFHLCBodHRwOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpGQVE6OlZvdGU7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkZBUTo6Vm90ZSAtIHN1YiBtb2R1bGUgb2YgS2VybmVsOjpTeXN0ZW06OkZBUQoKPWhlYWQxIFNZTk9QU0lTCgpBbGwgZmFxIHZvdGUgZnVuY3Rpb25zLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1vdmVyIDQKCj1jdXQKCj1pdGVtIFZvdGVBZGQoKQoKYWRkIGEgdm90ZQoKICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+Vm90ZUFkZCgKICAgICAgICBDcmVhdGVkQnkgPT4gJ1NvbWUgVGV4dCcsCiAgICAgICAgSXRlbUlEICAgID0+ICcxMjM0NTYnLAogICAgICAgIElQICAgICAgICA9PiAnNTQuNDMuMzAuMScsCiAgICAgICAgSW50ZXJmYWNlID0+ICdTb21lIFRleHQnLAogICAgICAgIFJhdGUgICAgICA9PiAxMDAsCiAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkU3VjY2VzcyA9IDE7ICAgICAgICAgICAgICAjIG9yIHVuZGVmIGlmIHZvdGUgY291bGQgbm90IGJlIGFkZGVkCgo9Y3V0CgpzdWIgVm90ZUFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDcmVhdGVkQnkgSXRlbUlEIElQIEludGVyZmFjZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIElOU0VSVCBJTlRPIGZhcV92b3RpbmcgKGNyZWF0ZWRfYnksIGl0ZW1faWQsIGlwLCBpbnRlcmZhY2UsIHJhdGUsIGNyZWF0ZWQgKQogICAgICAgICAgICBWQUxVRVMgKCA/LCA/LCA/LCA/LCA/LCBjdXJyZW50X3RpbWVzdGFtcCApJywKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXCRQYXJhbXtDcmVhdGVkQnl9LCBcJFBhcmFte0l0ZW1JRH0sIFwkUGFyYW17SVB9LCBcJFBhcmFte0ludGVyZmFjZX0sCiAgICAgICAgICAgIFwkUGFyYW17UmF0ZX0sCiAgICAgICAgXSwKICAgICk7CgogICAgIyBkZWxldGUgY2FjaGUKICAgIG15ICRDYWNoZUtleSA9ICdJdGVtVm90ZURhdGFHZXQ6OicgLiAkUGFyYW17SXRlbUlEfTsKICAgICRTZWxmLT57Q2FjaGVPYmplY3R9LT5EZWxldGUoCiAgICAgICAgVHlwZSA9PiAnRkFRJywKICAgICAgICBLZXkgID0+ICRDYWNoZUtleSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIFZvdGVEZWxldGUoKQoKZGVsZXRlIGEgdm90ZQoKICAgIG15ICREZWxldGVTdWNjZXNzID0gJEZBUU9iamVjdC0+Vm90ZURlbGV0ZSgKICAgICAgICBWb3RlSUQgPT4gMSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICREZWxldGVTdWNjZXNzID0gMTsgICAgICAgICAgICAgICMgb3IgdW5kZWYgaWYgdm90ZSBjb3VsZCBub3QgYmUgZGVsZXRlZAoKPWN1dAoKc3ViIFZvdGVEZWxldGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoVm90ZUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+RG8oCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgREVMRVRFIEZST00gZmFxX3ZvdGluZwogICAgICAgICAgICBXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte1ZvdGVJRH0gXSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIFZvdGVHZXQoKQoKZ2V0IGEgdm90ZSBpbmZvcm1hdGlvbgoKICAgIG15ICVWb3RlRGF0YSA9ICRGQVFPYmplY3QtPlZvdGVHZXQoCiAgICAgICAgQ3JlYXRlQnkgID0+ICdTb21lIFRleHQnLAogICAgICAgIEl0ZW1JRCAgICA9PiAnMTIzNDU2JywKICAgICAgICBJUCAgICAgICAgPT4gJzEyNy4wLjAuMScsCiAgICAgICAgSW50ZXJmYWNlID0+ICdTb21lIFRleHQnLAogICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJVZvdGVEYXRhID0gKAogICAgICAgIEl0ZW1JRCAgICA9PiAyMywKICAgICAgICBSYXRlICAgICAgPT4gNTAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3IgMCBvciAyNSBvciA3NSBvciAxMDAKICAgICAgICBJUCAgICAgICAgPT4gJzE5Mi4xNjguMC4xJywKICAgICAgICBJbnRlcmZhY2UgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaW50ZXJmYWNlIElECiAgICAgICAgQ3JlYXRlZEJ5ID0+IDEsCiAgICAgICAgQ3JlYXRlZCAgID0+ICcyMDExLTA2LTE0IDEyOjMyOjAzJywKICAgICk7Cgo9Y3V0CgpzdWIgVm90ZUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDcmVhdGVCeSBJdGVtSUQgSW50ZXJmYWNlIElQIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgQFZhbHVlczsKICAgIG15ICRTUUwgPSAnCiAgICAgICAgU0VMRUNUIGNyZWF0ZWRfYnksIGl0ZW1faWQsIGludGVyZmFjZSwgaXAsIGNyZWF0ZWQsIHJhdGUKICAgICAgICBGUk9NIGZhcV92b3RpbmcKICAgICAgICBXSEVSRSc7CgogICAgIyBwdWJsaWMKICAgIGlmICggJFBhcmFte0ludGVyZmFjZX0gZXEgJzMnICkgewogICAgICAgICRTUUwgLj0gIgogICAgICAgICAgICBpcCA9ID8KICAgICAgICAgICAgQU5EIGl0ZW1faWQgPSA/IjsKICAgICAgICBwdXNoIEBWYWx1ZXMsICggXCRQYXJhbXtJUH0sIFwkUGFyYW17SXRlbUlEfSApOwogICAgfQoKICAgICMgY3VzdG9tZXIKICAgIGVsc2lmICggJFBhcmFte0ludGVyZmFjZX0gZXEgJzInIHx8ICRQYXJhbXtJbnRlcmZhY2V9IGVxICcxJyApIHsKICAgICAgICAkU1FMIC49ICIKICAgICAgICAgICAgY3JlYXRlZF9ieSA9ID8KICAgICAgICAgICAgQU5EIGl0ZW1faWQgPSA/IjsKICAgICAgICBwdXNoIEBWYWx1ZXMsICggXCRQYXJhbXtDcmVhdGVCeX0sIFwkUGFyYW17SXRlbUlEfSApOwogICAgfQoKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoCiAgICAgICAgU1FMICAgPT4gJFNRTCwKICAgICAgICBCaW5kICA9PiBcQFZhbHVlcywKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICBteSAlRGF0YTsKICAgIHdoaWxlICggbXkgQFJvdyA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJURhdGEgPSAoCiAgICAgICAgICAgIENyZWF0ZWRCeSA9PiAkUm93WzBdLAogICAgICAgICAgICBJdGVtSUQgICAgPT4gJFJvd1sxXSwKICAgICAgICAgICAgSW50ZXJmYWNlID0+ICRSb3dbMl0sCiAgICAgICAgICAgIElQICAgICAgICA9PiAkUm93WzNdLAogICAgICAgICAgICBDcmVhdGVkICAgPT4gJFJvd1s0XSwKICAgICAgICAgICAgUmF0ZSAgICAgID0+ICRSb3dbNV0sCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gaWYgISVEYXRhOwogICAgcmV0dXJuIFwlRGF0YTsKfQoKPWl0ZW0gVm90ZVNlYXJjaCgpCgpyZXR1cm5zIGFuIGFycmF5IHdpdGggVm90ZUlEcwoKICAgIG15ICRWb3RlSURBcnJheXJlZiA9ICRGQVFPYmplY3QtPlZvdGVTZWFyY2goCiAgICAgICAgSXRlbUlEID0+IDEsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkVm90ZUlEQXJyYXlyZWYgPSBbCiAgICAgICAgMjMsCiAgICAgICAgNDUsCiAgICBdOwoKPWN1dAoKc3ViIFZvdGVTZWFyY2ggewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoSXRlbUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBTRUxFQ1QgaWQKICAgICAgICAgICAgRlJPTSBmYXFfdm90aW5nCiAgICAgICAgICAgIFdIRVJFIGl0ZW1faWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtJdGVtSUR9IF0sCiAgICAgICAgTGltaXQgPT4gJFBhcmFte0xpbWl0fSB8fCA1MDAsCiAgICApOwoKICAgIG15IEBWb3RlSURzOwogICAgd2hpbGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBwdXNoIEBWb3RlSURzLCAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiBcQFZvdGVJRHM7Cn0KCj1pdGVtIEl0ZW1Wb3RlRGF0YUdldCgpCgpSZXR1cm5zIGEgaGFzaCByZWZlcmVuY2Ugd2l0aCB0aGUgbnVtYmVyIG9mIHZvdGVzIGFuZCB0aGUgdm90ZSByZXN1bHQuCgogICAgbXkgJFZvdGVEYXRhSGFzaFJlZiA9ICRGQVFPYmplY3QtPkl0ZW1Wb3RlRGF0YUdldCgKICAgICAgICBJdGVtSUQgPT4gMTIzLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJFZvdGVEYXRhSGFzaFJlZiA9IHsKICAgICAgICBSZXN1bHQgPT4gNzUuMDAwMCwKICAgICAgICBWb3RlcyAgPT4gNQogICAgfTsKCj1jdXQKCnN1YiBJdGVtVm90ZURhdGFHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoSXRlbUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBjYWNoZQogICAgbXkgJENhY2hlS2V5ID0gJ0l0ZW1Wb3RlRGF0YUdldDo6JyAuICRQYXJhbXtJdGVtSUR9OwogICAgbXkgJENhY2hlICAgID0gJFNlbGYtPntDYWNoZU9iamVjdH0tPkdldCgKICAgICAgICBUeXBlID0+ICdGQVEnLAogICAgICAgIEtleSAgPT4gJENhY2hlS2V5LAogICAgKTsKICAgIHJldHVybiAkQ2FjaGUgaWYgJENhY2hlOwoKICAgICMgZ2V0IHZvdGUgZnJvbSBkYgogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBTRUxFQ1QgY291bnQoKiksIGF2ZyhyYXRlKQogICAgICAgICAgICBGUk9NIGZhcV92b3RpbmcKICAgICAgICAgICAgV0hFUkUgaXRlbV9pZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0l0ZW1JRH0gXSwKICAgICAgICBMaW1pdCA9PiAkUGFyYW17TGltaXR9IHx8IDUwMCwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAlRGF0YTsKICAgIGlmICggbXkgQFJvdyA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJERhdGF7Vm90ZXN9ICA9ICRSb3dbMF07CiAgICAgICAgJERhdGF7UmVzdWx0fSA9ICRSb3dbMV07CiAgICB9CgogICAgIyBjYWNoZSByZXN1bHQKICAgICRTZWxmLT57Q2FjaGVPYmplY3R9LT5TZXQoCiAgICAgICAgVHlwZSAgPT4gJ0ZBUScsCiAgICAgICAgS2V5ICAgPT4gJENhY2hlS2V5LAogICAgICAgIFZhbHVlID0+IFwlRGF0YSwKICAgICAgICBUVEwgICA9PiA2MCAqIDYwICogMjQgKiAyLAogICAgKTsKCiAgICByZXR1cm4gXCVEYXRhOwp9CgoxOwoKPWJhY2sKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKGh0dHA6Ly9vdHJzLm9yZy8pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQ+LgoKPWN1dAo=
IyAtLQojIEtlcm5lbC9TeXN0ZW0vRkFRLnBtIC0gYWxsIGZhcSBmdW5jdGlvbnMKIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxMyBPVFJTIEFHLCBodHRwOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpGQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgTUlNRTo6QmFzZTY0IHF3KCk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6Q2FjaGU7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VXNlcjsKdXNlIEtlcm5lbDo6U3lzdGVtOjpHcm91cDsKdXNlIEtlcm5lbDo6U3lzdGVtOjpDdXN0b21lckdyb3VwOwp1c2UgS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3Q7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VGlja2V0Owp1c2UgS2VybmVsOjpTeXN0ZW06OlR5cGU7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFsaWQ7CnVzZSBLZXJuZWw6OlN5c3RlbTo6V2ViOjpVcGxvYWRDYWNoZTsKCnVzZSBiYXNlIHF3KAogICAgS2VybmVsOjpTeXN0ZW06OkZBUVNlYXJjaAogICAgS2VybmVsOjpTeXN0ZW06OkZBUTo6TGFuZ3VhZ2UKICAgIEtlcm5lbDo6U3lzdGVtOjpGQVE6OkNhdGVnb3J5CiAgICBLZXJuZWw6OlN5c3RlbTo6RkFROjpTdGF0ZQogICAgS2VybmVsOjpTeXN0ZW06OkZBUTo6Vm90ZQopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpGQVEgLSBmYXEgbGliCgo9aGVhZDEgU1lOT1BTSVMKCkFsbCBmYXEgZnVuY3Rpb25zLiBFLiBnLiB0byBhZGQgZmFxcyBvciB0byBnZXQgZmFxcy4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9b3ZlciA0Cgo9Y3V0Cgo9aXRlbSBuZXcoKQoKY3JlYXRlIGEgZmFxIG9iamVjdAoKICAgIHVzZSBLZXJuZWw6OkNvbmZpZzsKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6RW5jb2RlOwogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpMb2c7CiAgICB1c2UgS2VybmVsOjpTeXN0ZW06Ok1haW47CiAgICB1c2UgS2VybmVsOjpTeXN0ZW06OkRCOwogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpUaW1lOwogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpGQVE7CgogICAgbXkgJENvbmZpZ09iamVjdCA9IEtlcm5lbDo6Q29uZmlnLT5uZXcoKTsKICAgIG15ICRFbmNvZGVPYmplY3QgPSBLZXJuZWw6OlN5c3RlbTo6RW5jb2RlLT5uZXcoCiAgICAgICAgQ29uZmlnT2JqZWN0ID0+ICRDb25maWdPYmplY3QsCiAgICApOwogICAgbXkgJExvZ09iamVjdCA9IEtlcm5lbDo6U3lzdGVtOjpMb2ctPm5ldygKICAgICAgICBDb25maWdPYmplY3QgPT4gJENvbmZpZ09iamVjdCwKICAgICAgICBFbmNvZGVPYmplY3QgPT4gJEVuY29kZU9iamVjdCwKICAgICk7CiAgICBteSAkTWFpbk9iamVjdCA9IEtlcm5lbDo6U3lzdGVtOjpNYWluLT5uZXcoCiAgICAgICAgQ29uZmlnT2JqZWN0ID0+ICRDb25maWdPYmplY3QsCiAgICAgICAgRW5jb2RlT2JqZWN0ID0+ICRFbmNvZGVPYmplY3QsCiAgICAgICAgTG9nT2JqZWN0ICAgID0+ICRMb2dPYmplY3QsCiAgICApOwogICAgbXkgJFRpbWVPYmplY3QgPSBLZXJuZWw6OlN5c3RlbTo6VGltZS0+bmV3KAogICAgICAgIENvbmZpZ09iamVjdCA9PiAkQ29uZmlnT2JqZWN0LAogICAgICAgIExvZ09iamVjdCAgICA9PiAkTG9nT2JqZWN0LAogICAgKTsKICAgIG15ICREQk9iamVjdCA9IEtlcm5lbDo6U3lzdGVtOjpEQi0+bmV3KAogICAgICAgIENvbmZpZ09iamVjdCA9PiAkQ29uZmlnT2JqZWN0LAogICAgICAgIEVuY29kZU9iamVjdCA9PiAkRW5jb2RlT2JqZWN0LAogICAgICAgIExvZ09iamVjdCAgICA9PiAkTG9nT2JqZWN0LAogICAgICAgIE1haW5PYmplY3QgICA9PiAkTWFpbk9iamVjdCwKICAgICk7CiAgICBteSAkRkFRT2JqZWN0ID0gS2VybmVsOjpTeXN0ZW06OkZBUS0+bmV3KAogICAgICAgIENvbmZpZ09iamVjdCA9PiAkQ29uZmlnT2JqZWN0LAogICAgICAgIEVuY29kZU9iamVjdCA9PiAkRW5jb2RlT2JqZWN0LAogICAgICAgIExvZ09iamVjdCAgICA9PiAkTG9nT2JqZWN0LAogICAgICAgIERCT2JqZWN0ICAgICA9PiAkREJPYmplY3QsCiAgICAgICAgVGltZU9iamVjdCAgID0+ICRUaW1lT2JqZWN0LAogICAgICAgIE1haW5PYmplY3QgICA9PiAkTWFpbk9iamVjdCwKICAgICk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgY2hlY2sgbmVlZGVkIG9iamVjdHMKICAgIGZvciBteSAkT2JqZWN0IChxdyhEQk9iamVjdCBDb25maWdPYmplY3QgTG9nT2JqZWN0IEVuY29kZU9iamVjdCBNYWluT2JqZWN0IFRpbWVPYmplY3QpKSB7CiAgICAgICAgJFNlbGYtPnskT2JqZWN0fSA9ICRQYXJhbXskT2JqZWN0fSB8fCBkaWUgIkdvdCBubyAkT2JqZWN0ISI7CiAgICB9CgogICAgIyBjcmVhdGUgYWRkaXRpb25hbCBvYmplY3RzCiAgICAkU2VsZi0+e0dyb3VwT2JqZWN0fSAgICAgICAgID0gS2VybmVsOjpTeXN0ZW06Okdyb3VwLT5uZXcoICV7JFNlbGZ9ICk7CiAgICAkU2VsZi0+e0NhY2hlT2JqZWN0fSAgICAgICAgID0gS2VybmVsOjpTeXN0ZW06OkNhY2hlLT5uZXcoICV7JFNlbGZ9ICk7CiAgICAkU2VsZi0+e0N1c3RvbWVyR3JvdXBPYmplY3R9ID0gS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyR3JvdXAtPm5ldyggJXskU2VsZn0gKTsKICAgICRTZWxmLT57VXNlck9iamVjdH0gICAgICAgICAgPSBLZXJuZWw6OlN5c3RlbTo6VXNlci0+bmV3KCAleyRTZWxmfSApOwogICAgJFNlbGYtPntUaWNrZXRPYmplY3R9ICAgICAgICA9IEtlcm5lbDo6U3lzdGVtOjpUaWNrZXQtPm5ldyggJXskU2VsZn0gKTsKICAgICRTZWxmLT57VHlwZU9iamVjdH0gICAgICAgICAgPSBLZXJuZWw6OlN5c3RlbTo6VHlwZS0+bmV3KCAleyRTZWxmfSApOwogICAgJFNlbGYtPntMaW5rT2JqZWN0fSAgICAgICAgICA9IEtlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0LT5uZXcoICV7JFNlbGZ9ICk7CiAgICAkU2VsZi0+e1ZhbGlkT2JqZWN0fSAgICAgICAgID0gS2VybmVsOjpTeXN0ZW06OlZhbGlkLT5uZXcoICV7JFNlbGZ9ICk7CiAgICAkU2VsZi0+e1VwbG9hZENhY2hlT2JqZWN0fSAgID0gS2VybmVsOjpTeXN0ZW06OldlYjo6VXBsb2FkQ2FjaGUtPm5ldyggJXskU2VsZn0gKTsKCiAgICAjIGdldCBsaWtlIGVzY2FwZSBzdHJpbmcgbmVlZGVkIGZvciBzb21lIGRhdGFiYXNlcyAoZS5nLiBvcmFjbGUpCiAgICAkU2VsZi0+e0xpa2VFc2NhcGVTdHJpbmd9ID0gJFNlbGYtPntEQk9iamVjdH0tPkdldERhdGFiYXNlRnVuY3Rpb24oJ0xpa2VFc2NhcGVTdHJpbmcnKTsKCiAgICAjIGdldCBkZWZhdWx0IG9wdGlvbnMKICAgICRTZWxmLT57Vm90aW5nfSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OlZvdGluZycpOwoKICAgICMgZ2V0IHRoZSBjYWNoZSBUVEwgKGluIHNlY29uZHMpCiAgICAkU2VsZi0+e0NhY2hlVFRMfQogICAgICAgID0gaW50KCAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpDYWNoZVRUTCcpIHx8IDYwICogNjAgKiAyNCAqIDIgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1pdGVtIEZBUUdldCgpCgpnZXQgYW4gZmFxIGl0ZW0KCiAgICBteSAlRkFRID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgICAgIEl0ZW1JRCAgICAgPT4gMTIzLAogICAgICAgIEl0ZW1GaWVsZHMgPT4gMCwgICAgICAgICMgT3B0aW9uYWwsIGRlZmF1bHQgMC4gVG8gaW5jbHVkZSB0aGUgaXRlbSBmaWVsZCBjb3RuZW50IGZvciB0aGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIEZBUSBpdGVtIG9uIHRoZSByZXR1cm4gc3RydWN0dXJlLgogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICVGQVEgPSAoCiAgICAgICAgSUQgICAgICAgICAgICAgICAgPT4gMzIsCiAgICAgICAgSXRlbUlEICAgICAgICAgICAgPT4gMzIsCiAgICAgICAgRkFRSUQgICAgICAgICAgICAgPT4gMzIsCiAgICAgICAgTnVtYmVyICAgICAgICAgICAgPT4gMTAwMDMyLAogICAgICAgIENhdGVnb3J5SUQgICAgICAgID0+ICcyJywKICAgICAgICBDYXRlZ29yeU5hbWUnICAgICA9PiAnQ2F0ZWdvcnlBOjpDYXRlZ29yeUInLAogICAgICAgIENhdGVnb3J5U2hvcnROYW1lID0+ICdDYXRlZ29yeUInLAogICAgICAgIExhbmd1YWdlSUQgICAgICAgID0+IDEsCiAgICAgICAgTGFuZ3VhZ2UgICAgICAgICAgPT4gJ2VuJywKICAgICAgICBUaXRsZSAgICAgICAgICAgICA9PiAnQXJ0aWNsZSBUaXRsZScsCiAgICAgICAgQXBwcm92ZWQgICAgICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9yIDAKICAgICAgICBWYWxpZElEICAgICAgICAgICA9PiAxLAogICAgICAgIFZhbGlkICAgICAgICAgICAgID0+ICd2YWxpZCcsCiAgICAgICAgS2V5d29yZHMgICAgICAgICAgPT4gJ0tleVdvcmQxIEtleVdvcmQyJywKICAgICAgICBWb3RlcyAgICAgICAgICAgICA9PiAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbnVtYmVyIG9mIHZvdGVzCiAgICAgICAgVm90ZVJlc3VsdCAgICAgICAgPT4gJzAuMDAnLCAgICAgICAgICAgICAgICAgICAgICAgICAjIGEgbnVtYmVyIGJldHdlZW4gMC4wMCBhbmQgMTAwLjAwCiAgICAgICAgU3RhdGVJRCAgICAgICAgICAgPT4gMSwKICAgICAgICBTdGF0ZSAgICAgICAgICAgICA9PiAnaW50ZXJuYWwgKGFnZW50KScsICAgICAgICAgICAgICMgb3IgJ2V4dGVybmFsIChjdXN0b21lciknIG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICdwdWJsaWMgKGFsbCknCiAgICAgICAgU3RhdGVUeXBlSUQgICAgICAgPT4gMSwKICAgICAgICBTdGF0ZVR5cGVOYW1lICAgICA9PiAnaW50ZXJuYWwnLCAgICAgICAgICAgICAgICAgICAgICMgb3IgJ2V4dGVybmFsJyBvciAncHVibGljJwogICAgICAgIENyZWF0ZWRCeSAgICAgICAgID0+IDEsCiAgICAgICAgQ2hhbmdlZCcgICAgICAgICAgPT4gJzIwMTEtMDEtMDUgMjE6NTM6NTAnLAogICAgICAgIENoYW5nZWRCeSAgICAgICAgID0+ICcxJywKICAgICAgICBDcmVhdGVkICAgICAgICAgICA9PiAnMjAxMS0wMS0wNSAyMTo1Mzo1MCcsCiAgICAgICAgTmFtZSAgICAgICAgICAgICAgPT4gJzEyOTQyODYwMzAtMzEuMTY5NzI5NzEwNDczMicsICAjIEZBUSBBcnRpY2xlIG5hbWUgb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgc3lzdGVtdGltZSArICctJyArIHJhbmRvbSBudW1iZXIKICAgICk7CgogICAgbXkgJUZBUSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICBJdGVtSUQgICAgID0+IDEyMywKICAgICAgICBJdGVtRmllbGRzID0+IDEsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJUZBUSA9ICgKICAgICAgICBJRCAgICAgICAgICAgICAgICA9PiAzMiwKICAgICAgICBJdGVtSUQgICAgICAgICAgICA9PiAzMiwKICAgICAgICBGQVFJRCAgICAgICAgICAgICA9PiAzMiwKICAgICAgICBOdW1iZXIgICAgICAgICAgICA9PiAxMDAwMzIsCiAgICAgICAgQ2F0ZWdvcnlJRCAgICAgICAgPT4gJzInLAogICAgICAgIENhdGVnb3J5TmFtZScgICAgID0+ICdDYXRlZ29yeUE6OkNhdGVnb3J5QicsCiAgICAgICAgQ2F0ZWdvcnlTaG9ydE5hbWUgPT4gJ0NhdGVnb3J5QicsCiAgICAgICAgTGFuZ3VhZ2VJRCAgICAgICAgPT4gMSwKICAgICAgICBMYW5ndWFnZSAgICAgICAgICA9PiAnZW4nLAogICAgICAgIFRpdGxlICAgICAgICAgICAgID0+ICdBcnRpY2xlIFRpdGxlJywKICAgICAgICBGaWVsZDEgICAgICAgICAgICA9PiAnVGhlIFN5bXB0b21zJywKICAgICAgICBGaWVsZDIgICAgICAgICAgICA9PiAnVGhlIFByb2JsZW0nLAogICAgICAgIEZpZWxkMyAgICAgICAgICAgID0+ICdUaGUgU29sdXRpb24nLAogICAgICAgIEZpZWxkNCAgICAgICAgICAgID0+IHVuZGVmLCAgICAgICAgICAgICAgICAgICAgICAgICAgIyBOb3QgYWN0aXZlIGJ5IGRlZmF1bHQKICAgICAgICBGaWVsZDUgICAgICAgICAgICA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAgICMgTm90IGFjdGl2ZSBieSBkZWZhdWx0CiAgICAgICAgRmllbGQ2ICAgICAgICAgICAgPT4gJ0NvbW1lbnRzJywKICAgICAgICBBcHByb3ZlZCAgICAgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3IgMAogICAgICAgIFZhbGlkSUQgICAgICAgICAgID0+IDEsCiAgICAgICAgVmFsaWQgICAgICAgICAgICAgPT4gJ3ZhbGlkJywKICAgICAgICBLZXl3b3JkcyAgICAgICAgICA9PiAnS2V5V29yZDEgS2V5V29yZDInLAogICAgICAgIFZvdGVzICAgICAgICAgICAgID0+IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBudW1iZXIgb2Ygdm90ZXMKICAgICAgICBWb3RlUmVzdWx0ICAgICAgICA9PiAnMC4wMCcsICAgICAgICAgICAgICAgICAgICAgICAgICMgYSBudW1iZXIgYmV0d2VlbiAwLjAwIGFuZCAxMDAuMDAKICAgICAgICBTdGF0ZUlEICAgICAgICAgICA9PiAxLAogICAgICAgIFN0YXRlICAgICAgICAgICAgID0+ICdpbnRlcm5hbCAoYWdlbnQpJywgICAgICAgICAgICAgIyBvciAnZXh0ZXJuYWwgKGN1c3RvbWVyKScgb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgJ3B1YmxpYyAoYWxsKScKICAgICAgICBTdGF0ZVR5cGVJRCAgICAgICA9PiAxLAogICAgICAgIFN0YXRlVHlwZU5hbWUgICAgID0+ICdpbnRlcm5hbCcsICAgICAgICAgICAgICAgICAgICAgIyBvciAnZXh0ZXJuYWwnIG9yICdwdWJsaWMnCiAgICAgICAgQ3JlYXRlZEJ5ICAgICAgICAgPT4gMSwKICAgICAgICBDaGFuZ2VkJyAgICAgICAgICA9PiAnMjAxMS0wMS0wNSAyMTo1Mzo1MCcsCiAgICAgICAgQ2hhbmdlZEJ5ICAgICAgICAgPT4gJzEnLAogICAgICAgIENyZWF0ZWQgICAgICAgICAgID0+ICcyMDExLTAxLTA1IDIxOjUzOjUwJywKICAgICAgICBOYW1lICAgICAgICAgICAgICA9PiAnMTI5NDI4NjAzMC0zMS4xNjk3Mjk3MTA0NzMyJywgICMgRkFRIEFydGljbGUgbmFtZSBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzeXN0ZW10aW1lICsgJy0nICsgcmFuZG9tIG51bWJlcgogICAgKTsKCj1jdXQKCnN1YiBGQVFHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIEZhaWx1cmVzIHJlbmFtZSBmcm9tIEl0ZW1JRCB0byBGQVFJRAogICAgaWYgKCAkUGFyYW17RkFRSUR9ICkgewogICAgICAgICRQYXJhbXtJdGVtSUR9ID0gJFBhcmFte0ZBUUlEfTsKICAgIH0KCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoVXNlcklEIEl0ZW1JRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBjYWNoZQogICAgbXkgJEZldGNoSXRlbUZpZWxkcyA9ICRQYXJhbXtJdGVtRmllbGRzfSA/IDEgOiAwOwoKICAgIG15ICRDYWNoZUtleSA9ICdGQVFHZXQ6Okl0ZW1JRDo6JyAuICRQYXJhbXtJdGVtSUR9IC4gJzo6SXRlbUZpZWxkczo6JyAuICRGZXRjaEl0ZW1GaWVsZHM7CiAgICBteSAkQ2FjaGUgICAgPSAkU2VsZi0+e0NhY2hlT2JqZWN0fS0+R2V0KAogICAgICAgIFR5cGUgPT4gJ0ZBUScsCiAgICAgICAgS2V5ICA9PiAkQ2FjaGVLZXksCiAgICApOwoKICAgICMgc2V0ICVEYXRhIGZyb20gY2FjaGUgaWYgYW55CiAgICBteSAlRGF0YTsKICAgIGlmICggcmVmICRDYWNoZSBlcSAnSEFTSCcgKSB7CiAgICAgICAgJURhdGEgPSAleyRDYWNoZX07CiAgICB9CgogICAgIyBvdGhlcndpc2UgZ2V0ICVEYXRhIGZyb20gdGhlIERCCiAgICBlbHNlIHsKCiAgICAgICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgIFNFTEVDVCBpLmZfbmFtZSwgaS5mX2xhbmd1YWdlX2lkLCBpLmZfc3ViamVjdCwgaS5jcmVhdGVkLCBpLmNyZWF0ZWRfYnksIGkuY2hhbmdlZCwKICAgICAgICAgICAgICAgICAgICBpLmNoYW5nZWRfYnksIGkuY2F0ZWdvcnlfaWQsIGkuc3RhdGVfaWQsIGMubmFtZSwgcy5uYW1lLCBsLm5hbWUsIGkuZl9rZXl3b3JkcywKICAgICAgICAgICAgICAgICAgICBpLmFwcHJvdmVkLCBpLnZhbGlkX2lkLCBpLmZfbnVtYmVyLCBzdC5pZCwgc3QubmFtZQogICAgICAgICAgICAgICAgRlJPTSBmYXFfaXRlbSBpLCBmYXFfY2F0ZWdvcnkgYywgZmFxX3N0YXRlIHMsIGZhcV9zdGF0ZV90eXBlIHN0LCBmYXFfbGFuZ3VhZ2UgbAogICAgICAgICAgICAgICAgV0hFUkUgaS5zdGF0ZV9pZCA9IHMuaWQKICAgICAgICAgICAgICAgICAgICBBTkQgcy50eXBlX2lkID0gc3QuaWQKICAgICAgICAgICAgICAgICAgICBBTkQgaS5jYXRlZ29yeV9pZCA9IGMuaWQKICAgICAgICAgICAgICAgICAgICBBTkQgaS5mX2xhbmd1YWdlX2lkID0gbC5pZAogICAgICAgICAgICAgICAgICAgIEFORCBpLmlkID0gPycsCiAgICAgICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtJdGVtSUR9IF0sCiAgICAgICAgICAgIExpbWl0ID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgd2hpbGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKCiAgICAgICAgICAgICVEYXRhID0gKAoKICAgICAgICAgICAgICAgICMgdmFyIGZvciBvbGQgdmVyc2lvbnMKICAgICAgICAgICAgICAgIElEICAgID0+ICRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICAgICAgRkFRSUQgPT4gJFBhcmFte0l0ZW1JRH0sCgogICAgICAgICAgICAgICAgIyBnZXQgZGF0YSBhdHRyaWJ1dGVzCiAgICAgICAgICAgICAgICBJdGVtSUQgICAgICAgID0+ICRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICA9PiAkUm93WzBdLAogICAgICAgICAgICAgICAgTGFuZ3VhZ2VJRCAgICA9PiAkUm93WzFdLAogICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICA9PiAkUm93WzJdLAogICAgICAgICAgICAgICAgQ3JlYXRlZCAgICAgICA9PiAkUm93WzNdLAogICAgICAgICAgICAgICAgQ3JlYXRlZEJ5ICAgICA9PiAkUm93WzRdLAogICAgICAgICAgICAgICAgQ2hhbmdlZCAgICAgICA9PiAkUm93WzVdLAogICAgICAgICAgICAgICAgQ2hhbmdlZEJ5ICAgICA9PiAkUm93WzZdLAogICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCAgICA9PiAkUm93WzddLAogICAgICAgICAgICAgICAgU3RhdGVJRCAgICAgICA9PiAkUm93WzhdLAogICAgICAgICAgICAgICAgQ2F0ZWdvcnlOYW1lICA9PiAkUm93WzldLAogICAgICAgICAgICAgICAgU3RhdGUgICAgICAgICA9PiAkUm93WzEwXSwKICAgICAgICAgICAgICAgIExhbmd1YWdlICAgICAgPT4gJFJvd1sxMV0sCiAgICAgICAgICAgICAgICBLZXl3b3JkcyAgICAgID0+ICRSb3dbMTJdLAogICAgICAgICAgICAgICAgQXBwcm92ZWQgICAgICA9PiAkUm93WzEzXSwKICAgICAgICAgICAgICAgIFZhbGlkSUQgICAgICAgPT4gJFJvd1sxNF0sCiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgID0+ICRSb3dbMTVdLAogICAgICAgICAgICAgICAgU3RhdGVUeXBlSUQgICA9PiAkUm93WzE2XSwKICAgICAgICAgICAgICAgIFN0YXRlVHlwZU5hbWUgPT4gJFJvd1sxN10sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGVycm9yCiAgICAgICAgaWYgKCAhJURhdGEgKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJObyBzdWNoIEl0ZW1JRCAkUGFyYW17SXRlbUlEfSEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGlmIEZBUSBpdGVtIGZpZWxkcyBhcmUgcmVxdWlyZWQKICAgICAgICBpZiAoJEZldGNoSXRlbUZpZWxkcykgewoKICAgICAgICAgICAgZm9yIG15ICRGaWVsZE51bWJlciAoIDEgLi4gNiApIHsKCiAgICAgICAgICAgICAgICAjIHNldCBmaWVsZCBuYW1lCiAgICAgICAgICAgICAgICBteSAkRmllbGQgPSAiRmllbGQkRmllbGROdW1iZXIiOwoKICAgICAgICAgICAgICAgICMgZ2V0IGVhY2ggZmllbGQgY29udGVudAogICAgICAgICAgICAgICAgJERhdGF7JEZpZWxkfSA9ICRTZWxmLT5JdGVtRmllbGRHZXQoCiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgIEZpZWxkID0+ICRGaWVsZCwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgdXBkYXRlIG51bWJlcgogICAgICAgIGlmICggISREYXRhe051bWJlcn0gKSB7CgogICAgICAgICAgICBteSAkTnVtYmVyID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ1N5c3RlbUlEJykgLiAnMDAnIC4gJERhdGF7SXRlbUlEfTsKCiAgICAgICAgICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPkRvKAogICAgICAgICAgICAgICAgU1FMID0+ICdVUERBVEUgZmFxX2l0ZW0gU0VUIGZfbnVtYmVyID0gPyBXSEVSRSBpZCA9ID8nLAogICAgICAgICAgICAgICAgQmluZCA9PiBbIFwkTnVtYmVyLCBcJERhdGF7SXRlbUlEfSBdLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJERhdGF7TnVtYmVyfSA9ICROdW1iZXI7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBhbGwgY2F0ZWdvcnkgbG9uZyBuYW1lcwogICAgICAgIG15ICRDYXRlZ29yeVRyZWUgPSAkU2VsZi0+Q2F0ZWdvcnlUcmVlTGlzdCgKICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgc2F2ZSB0aGUgY2F0ZWdvcnkgc2hvcnQgbmFtZQogICAgICAgICREYXRhe0NhdGVnb3J5U2hvcnROYW1lfSA9ICREYXRhe0NhdGVnb3J5TmFtZX07CgogICAgICAgICMgZ2V0IHRoZSBjYXRlZ29yeSBsb25nIG5hbWUKICAgICAgICAkRGF0YXtDYXRlZ29yeU5hbWV9ID0gJENhdGVnb3J5VHJlZS0+eyAkRGF0YXtDYXRlZ29yeUlEfSB9OwoKICAgICAgICAjIGdldCB2YWxpZCBsaXN0CiAgICAgICAgbXkgJVZhbGlkTGlzdCA9ICRTZWxmLT57VmFsaWRPYmplY3R9LT5WYWxpZExpc3QoKTsKICAgICAgICAkRGF0YXtWYWxpZH0gPSAkVmFsaWRMaXN0eyAkRGF0YXtWYWxpZElEfSB9OwoKICAgICAgICAjIGNhY2hlIHJlc3VsdAogICAgICAgICRTZWxmLT57Q2FjaGVPYmplY3R9LT5TZXQoCiAgICAgICAgICAgIFR5cGUgID0+ICdGQVEnLAogICAgICAgICAgICBLZXkgICA9PiAkQ2FjaGVLZXksCiAgICAgICAgICAgIFZhbHVlID0+IFwlRGF0YSwKICAgICAgICAgICAgVFRMICAgPT4gJFNlbGYtPntDYWNoZVRUTH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCB2b3RlIGRhdGEgZm9yIHRoaXMgRkFRIGl0ZW0KICAgIG15ICRWb3RlRGF0YTsKICAgIGlmICggJFNlbGYtPntWb3Rpbmd9ICkgewogICAgICAgICRWb3RlRGF0YSA9ICRTZWxmLT5JdGVtVm90ZURhdGFHZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkUGFyYW17SXRlbUlEfSwKICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgbnVtYmVyIG9mIGRlY2ltYWwgcGxhY2VzIGZyb20gY29uZmlnCiAgICBteSAkRGVjaW1hbFBsYWNlcwogICAgICAgID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6RXhwbG9yZXI6Okl0ZW1MaXN0OjpWb3RpbmdSZXN1bHREZWNpbWFsUGxhY2VzJykgfHwgMDsKCiAgICAjIGZvcm1hdCB0aGUgdm90ZSByZXN1bHQKICAgIG15ICRWb3RlUmVzdWx0ID0gc3ByaW50ZiggIiUwLiIgLiAkRGVjaW1hbFBsYWNlcyAuICJmIiwgJFZvdGVEYXRhLT57UmVzdWx0fSB8fCAwICk7CgogICAgIyBhZGQgdm90aW5nIGluZm9ybWF0aW9uIHRvIEZBUSBpdGVtCiAgICAkRGF0YXtWb3RlUmVzdWx0fSA9ICRWb3RlUmVzdWx0OwogICAgJERhdGF7Vm90ZXN9ID0gJFZvdGVEYXRhLT57Vm90ZXN9IHx8IDA7CgogICAgcmV0dXJuICVEYXRhOwp9CgpzdWIgSXRlbUZpZWxkR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFVzZXJJRCBJdGVtSUQgRmllbGQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgZm9yIHZhbGlkIGZpZWxkIG5hbWUKICAgIGlmICggJFBhcmFte0ZpZWxkfSAhfiBteyBcQSBGaWVsZCBbMS02XSBceiB9bXN4aSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkZpZWxkICckUGFyYW17RmllbGR9JyBpcyBpbnZhbGlkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjaGVjayBjYWNoZQogICAgbXkgJENhY2hlS2V5ID0gJ0l0ZW1GaWVsZEdldDo6SXRlbUlEOjonIC4gJFBhcmFte0l0ZW1JRH07CgogICAgbXkgJENhY2hlID0gJFNlbGYtPntDYWNoZU9iamVjdH0tPkdldCgKICAgICAgICBUeXBlID0+ICdGQVEnLAogICAgICAgIEtleSAgPT4gJENhY2hlS2V5LAogICAgKTsKCiAgICAjIGNoZWNrIGlmIGEgY2FjaGUgZW50cnkgZXhpc3RzIGZvciB0aGUgZ2l2ZW4gRmllbGQKICAgIGlmICggcmVmICRDYWNoZSBlcSAnSEFTSCcgJiYgZXhpc3RzICRDYWNoZS0+eyAkUGFyYW17RmllbGR9IH0gKSB7CiAgICAgICAgcmV0dXJuICRDYWNoZS0+eyAkUGFyYW17RmllbGR9IH07CiAgICB9CgogICAgIyBjcmVhdGUgYSBmaWVsZCBsb29rdXAgdGFibGUKICAgIG15ICVGaWVsZExvb2t1cCA9ICgKICAgICAgICBGaWVsZDEgPT4gJ2ZfZmllbGQxJywKICAgICAgICBGaWVsZDIgPT4gJ2ZfZmllbGQyJywKICAgICAgICBGaWVsZDMgPT4gJ2ZfZmllbGQzJywKICAgICAgICBGaWVsZDQgPT4gJ2ZfZmllbGQ0JywKICAgICAgICBGaWVsZDUgPT4gJ2ZfZmllbGQ1JywKICAgICAgICBGaWVsZDYgPT4gJ2ZfZmllbGQ2JywKICAgICk7CgogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCAnIC4gJEZpZWxkTG9va3VweyAkUGFyYW17RmllbGR9IH0gLiAnCiAgICAgICAgICAgIEZST00gZmFxX2l0ZW0KICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17SXRlbUlEfSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgIG15ICRGaWVsZDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJEZpZWxkID0gJFJvd1swXSB8fCAnJzsKICAgIH0KCiAgICBpZiAoIHJlZiAkQ2FjaGUgZXEgJ0hBU0gnICkgewoKICAgICAgICAjIENhY2hlIGZpbGUgZm9yIEl0ZW1JRCBhbHJlYWR5IGV4aXN0cywgYWRkIGZpZWxkIGRhdGEuCiAgICAgICAgJENhY2hlLT57ICRQYXJhbXtGaWVsZH0gfSA9ICRGaWVsZDsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjIENyZWF0ZSBuZXcgY2FjaGUgZmlsZS4KICAgICAgICAkQ2FjaGUgPSB7CiAgICAgICAgICAgICRQYXJhbXtGaWVsZH0gPT4gJEZpZWxkLAogICAgICAgIH07CiAgICB9CgogICAgIyBzZXQgY2FjaGUKICAgICRTZWxmLT57Q2FjaGVPYmplY3R9LT5TZXQoCiAgICAgICAgVHlwZSAgPT4gJ0ZBUScsCiAgICAgICAgS2V5ICAgPT4gJENhY2hlS2V5LAogICAgICAgIFZhbHVlID0+ICRDYWNoZSwKICAgICAgICBUVEwgICA9PiAkU2VsZi0+e0NhY2hlVFRMfSwKICAgICk7CgogICAgcmV0dXJuICRGaWVsZDsKfQoKPWl0ZW0gRkFRQWRkKCkKCmFkZCBhbiBhcnRpY2xlCgogICAgbXkgJEl0ZW1JRCA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICBUaXRsZSAgICAgID0+ICdTb21lIFRleHQnLAogICAgICAgIENhdGVnb3J5SUQgPT4gMSwKICAgICAgICBTdGF0ZUlEICAgID0+IDEsCiAgICAgICAgTGFuZ3VhZ2VJRCA9PiAxLAogICAgICAgIE51bWJlciAgICAgPT4gJzEzNDAyJywgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgS2V5d29yZHMgICA9PiAnc29tZSBrZXl3b3JkcycsICAjIChvcHRpb25hbCkKICAgICAgICBGaWVsZDEgICAgID0+ICdTeW1wdG9tLi4uJywgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEZpZWxkMiAgICAgPT4gJ1Byb2JsZW0uLi4nLCAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgRmllbGQzICAgICA9PiAnU29sdXRpb24uLi4nLCAgICAjIChvcHRpb25hbCkKICAgICAgICBGaWVsZDQgICAgID0+ICdGaWVsZDQuLi4nLCAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEZpZWxkNSAgICAgPT4gJ0ZpZWxkNS4uLicsICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgRmllbGQ2ICAgICA9PiAnQ29tbWVudC4uLicsICAgICAjIChvcHRpb25hbCkKICAgICAgICBBcHByb3ZlZCAgID0+IDEsICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIFZhbGlkSUQgICAgPT4gMSwKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkSXRlbUlEID0gMzQ7Cgo9Y3V0CgpzdWIgRkFRQWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KENhdGVnb3J5SUQgU3RhdGVJRCBMYW5ndWFnZUlEIFRpdGxlIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBzZXQgZGVmYXVsdCB2YWx1ZSBmb3IgVmFsaWRJRAogICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17VmFsaWRJRH0gKSB7CgogICAgICAgICMgZ2V0IHRoZSB2YWxpZCBpZHMKICAgICAgICBteSBAVmFsaWRJRHMgPSAkU2VsZi0+e1ZhbGlkT2JqZWN0fS0+VmFsaWRJRHNHZXQoKTsKCiAgICAgICAgJFBhcmFte1ZhbGlkSUR9ID0gJFZhbGlkSURzWzBdOwogICAgfQoKICAgICMgY2hlY2sgbmFtZQogICAgaWYgKCAhJFBhcmFte05hbWV9ICkgewogICAgICAgICRQYXJhbXtOYW1lfSA9IHRpbWUoKSAuICctJyAuIHJhbmQoMTAwKTsKICAgIH0KCiAgICAjIGNoZWNrIG51bWJlcgogICAgaWYgKCAhJFBhcmFte051bWJlcn0gKSB7CiAgICAgICAgJFBhcmFte051bWJlcn0gPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnU3lzdGVtSUQnKSAuIHJhbmQoMTAwKTsKICAgIH0KCiAgICAjIGNoZWNrIGlmIGFwcHJvdmFsIGZlYXR1cmUgaXMgdXNlZAogICAgaWYgKCAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpBcHByb3ZhbFJlcXVpcmVkJykgKSB7CgogICAgICAgICMgY2hlY2sgcGVybWlzc2lvbgogICAgICAgIG15ICVHcm91cHMgPSByZXZlcnNlICRTZWxmLT57R3JvdXBPYmplY3R9LT5Hcm91cE1lbWJlckxpc3QoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgVHlwZSAgID0+ICdybycsCiAgICAgICAgICAgIFJlc3VsdCA9PiAnSEFTSCcsCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgdGhlIGFwcHJvdmFsIGdyb3VwCiAgICAgICAgbXkgJEFwcHJvdmFsR3JvdXAgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpBcHByb3ZhbEdyb3VwJyk7CgogICAgICAgICMgc2V0IGRlZmF1bHQgdG8gMCBpZiBhcHByb3ZlZCBwYXJhbSBpcyBub3QgZ2l2ZW4KICAgICAgICAjIG9yIGlmIHVzZXIgZG9lcyBub3QgaGF2ZSB0aGUgcmlnaHRzIHRvIGFwcHJvdmUKICAgICAgICBpZiAoICFkZWZpbmVkICRQYXJhbXtBcHByb3ZlZH0gfHwgISRHcm91cHN7JEFwcHJvdmFsR3JvdXB9ICkgewogICAgICAgICAgICAkUGFyYW17QXBwcm92ZWR9ID0gMDsKICAgICAgICB9CiAgICB9CgogICAgIyBpZiBhcHByb3ZhbCBmZWF0dXJlIGlzIG5vdCBhY3RpdmF0ZWQsIGEgbmV3IGZhcSBpdGVtIGlzIGFsd2F5cyBhcHByb3ZlZAogICAgZWxzZSB7CiAgICAgICAgJFBhcmFte0FwcHJvdmVkfSA9IDE7CiAgICB9CgogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+RG8oCiAgICAgICAgU1FMID0+ICdJTlNFUlQgSU5UTyBmYXFfaXRlbSAnCiAgICAgICAgICAgIC4gJyhmX251bWJlciwgZl9uYW1lLCBmX2xhbmd1YWdlX2lkLCBmX3N1YmplY3QsICcKICAgICAgICAgICAgLiAnY2F0ZWdvcnlfaWQsIHN0YXRlX2lkLCBmX2tleXdvcmRzLCBhcHByb3ZlZCwgdmFsaWRfaWQsICcKICAgICAgICAgICAgLiAnZl9maWVsZDEsIGZfZmllbGQyLCBmX2ZpZWxkMywgZl9maWVsZDQsIGZfZmllbGQ1LCBmX2ZpZWxkNiwgJwogICAgICAgICAgICAuICdjcmVhdGVkLCBjcmVhdGVkX2J5LCBjaGFuZ2VkLCBjaGFuZ2VkX2J5KScKICAgICAgICAgICAgLiAnVkFMVUVTICgnCiAgICAgICAgICAgIC4gJz8sID8sID8sID8sICcKICAgICAgICAgICAgLiAnPywgPywgPywgPywgPywgJwogICAgICAgICAgICAuICc/LCA/LCA/LCA/LCA/LCA/LCAnCiAgICAgICAgICAgIC4gJ2N1cnJlbnRfdGltZXN0YW1wLCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgPyknLAogICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICBcJFBhcmFte051bWJlcn0sICAgICBcJFBhcmFte05hbWV9LCAgICBcJFBhcmFte0xhbmd1YWdlSUR9LCBcJFBhcmFte1RpdGxlfSwKICAgICAgICAgICAgXCRQYXJhbXtDYXRlZ29yeUlEfSwgXCRQYXJhbXtTdGF0ZUlEfSwgXCRQYXJhbXtLZXl3b3Jkc30sICAgXCRQYXJhbXtBcHByb3ZlZH0sCiAgICAgICAgICAgIFwkUGFyYW17VmFsaWRJRH0sCiAgICAgICAgICAgIFwkUGFyYW17RmllbGQxfSwgXCRQYXJhbXtGaWVsZDJ9LCBcJFBhcmFte0ZpZWxkM30sCiAgICAgICAgICAgIFwkUGFyYW17RmllbGQ0fSwgXCRQYXJhbXtGaWVsZDV9LCBcJFBhcmFte0ZpZWxkNn0sCiAgICAgICAgICAgIFwkUGFyYW17VXNlcklEfSwgXCRQYXJhbXtVc2VySUR9LAogICAgICAgIF0sCiAgICApOwoKICAgICMgYnVpbGQgU1FMIHRvIGdldCB0aGUgaWQgb2YgdGhlIG5ld2x5IGluc2VydGVkIEZBUSBhcnRpY2xlCiAgICBteSAkU1FMID0gJ1NFTEVDVCBpZCBGUk9NIGZhcV9pdGVtICcKICAgICAgICAuICdXSEVSRSBmX251bWJlciA9ID8gJwogICAgICAgIC4gJ0FORCBmX25hbWUgPSA/ICcKICAgICAgICAuICdBTkQgZl9sYW5ndWFnZV9pZCA9ID8gJwogICAgICAgIC4gJ0FORCBjYXRlZ29yeV9pZCA9ID8gJwogICAgICAgIC4gJ0FORCBzdGF0ZV9pZCA9ID8gJwogICAgICAgIC4gJ0FORCBhcHByb3ZlZCA9ID8gJwogICAgICAgIC4gJ0FORCB2YWxpZF9pZCA9ID8gJwogICAgICAgIC4gJ0FORCBjcmVhdGVkX2J5ID0gPyAnCiAgICAgICAgLiAnQU5EIGNoYW5nZWRfYnkgPSA/ICc7CgogICAgIyBoYW5kbGUgdGhlIHRpdGxlCiAgICBpZiAoICRQYXJhbXtUaXRsZX0gKSB7CiAgICAgICAgJFNRTCAuPSAnQU5EIGZfc3ViamVjdCA9ID8gJzsKICAgIH0KCiAgICAjIGFkZGl0aW9uYWwgU1FMIGZvciB0aGUgY2FzZSB0aGF0IHRoZSB0aXRsZSBpcyBhbiBlbXB0eSBzdHJpbmcKICAgICMgYW5kIHRoZSBkYXRhYmFzZSBpcyBvcmFjbGUsIHdoaWNoIHRyZWF0cyBlbXB0eSBzdHJpbmdzIGFzIE5VTEwKICAgIGVsc2UgewogICAgICAgICRTUUwgLj0gJ0FORCAoKGZfc3ViamVjdCA9ID8pIE9SIChmX3N1YmplY3QgSVMgTlVMTCkpICc7CiAgICB9CgogICAgIyBoYW5kbGUgdGhlIGtleXdvcmRzCiAgICBpZiAoICRQYXJhbXtLZXl3b3Jkc30gKSB7CiAgICAgICAgJFNRTCAuPSAnQU5EIGZfa2V5d29yZHMgPSA/ICc7CiAgICB9CgogICAgIyBhZGRpdGlvbmFsIFNRTCBmb3IgdGhlIGNhc2UgdGhhdCBrZXl3b3JkcyBpcyBhbiBlbXB0eSBzdHJpbmcKICAgICMgYW5kIHRoZSBkYXRhYmFzZSBpcyBvcmFjbGUsIHdoaWNoIHRyZWF0cyBlbXB0eSBzdHJpbmdzIGFzIE5VTEwKICAgIGVsc2UgewogICAgICAgICRTUUwgLj0gJ0FORCAoKGZfa2V5d29yZHMgPSA/KSBPUiAoZl9rZXl3b3JkcyBJUyBOVUxMKSkgJzsKICAgIH0KCiAgICAjIGdldCBpZAogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICBTUUwgID0+ICRTUUwsCiAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgIFwkUGFyYW17TnVtYmVyfSwKICAgICAgICAgICAgXCRQYXJhbXtOYW1lfSwKICAgICAgICAgICAgXCRQYXJhbXtMYW5ndWFnZUlEfSwKICAgICAgICAgICAgXCRQYXJhbXtDYXRlZ29yeUlEfSwKICAgICAgICAgICAgXCRQYXJhbXtTdGF0ZUlEfSwKICAgICAgICAgICAgXCRQYXJhbXtBcHByb3ZlZH0sCiAgICAgICAgICAgIFwkUGFyYW17VmFsaWRJRH0sCiAgICAgICAgICAgIFwkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgXCRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICBcJFBhcmFte1RpdGxlfSwKICAgICAgICAgICAgXCRQYXJhbXtLZXl3b3Jkc30sCiAgICAgICAgXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICBteSAkSUQ7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkU2VsZi0+e0RCT2JqZWN0fS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRJRCA9ICRSb3dbMF07CiAgICB9CgogICAgIyB1cGRhdGUgbnVtYmVyCiAgICBteSAkTnVtYmVyID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ1N5c3RlbUlEJykgLiAnMDAnIC4gJElEOwogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+RG8oCiAgICAgICAgU1FMID0+ICdVUERBVEUgZmFxX2l0ZW0gU0VUIGZfbnVtYmVyID0gPyBXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJE51bWJlciwgXCRJRCBdLAogICAgKTsKCiAgICAjIGFkZCBoaXN0b3J5CiAgICAkU2VsZi0+RkFRSGlzdG9yeUFkZCgKICAgICAgICBOYW1lICAgPT4gJ0NyZWF0ZWQnLAogICAgICAgIEl0ZW1JRCA9PiAkSUQsCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIGNoZWNrIGlmIGFwcHJvdmFsIGZlYXR1cmUgaXMgZW5hYmxlZAogICAgaWYgKCAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpBcHByb3ZhbFJlcXVpcmVkJykgJiYgISRQYXJhbXtBcHByb3ZlZH0gKSB7CgogICAgICAgICMgY3JlYXRlIG5ldyBhcHByb3ZhbCB0aWNrZXQKICAgICAgICBteSAkT2sgPSAkU2VsZi0+X0ZBUUFwcHJvdmFsVGlja2V0Q3JlYXRlKAogICAgICAgICAgICBJdGVtSUQgICAgID0+ICRJRCwKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkUGFyYW17Q2F0ZWdvcnlJRH0sCiAgICAgICAgICAgIExhbmd1YWdlSUQgPT4gJFBhcmFte0xhbmd1YWdlSUR9LAogICAgICAgICAgICBGQVFOdW1iZXIgID0+ICROdW1iZXIsCiAgICAgICAgICAgIFRpdGxlICAgICAgPT4gJFBhcmFte1RpdGxlfSwKICAgICAgICAgICAgU3RhdGVJRCAgICA9PiAkUGFyYW17U3RhdGVJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBlcnJvcgogICAgICAgIGlmICggISRPayApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ0NvdWxkIG5vdCBjcmVhdGUgYXBwcm92YWwgdGlja2V0IScsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAkSUQ7Cn0KCj1pdGVtIEZBUVVwZGF0ZSgpCgp1cGRhdGUgYW4gYXJ0aWNsZQoKICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFVcGRhdGUoCiAgICAgICAgSXRlbUlEICAgICAgPT4gMTIzLAogICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgU3RhdGVJRCAgICAgPT4gMSwKICAgICAgICBMYW5ndWFnZUlEICA9PiAxLAogICAgICAgIEFwcHJvdmVkICAgID0+IDEsCiAgICAgICAgVmFsaWRJRCAgICAgPT4gMSwKICAgICAgICBUaXRsZSAgICAgICA9PiAnU29tZSBUZXh0JywKICAgICAgICBGaWVsZDEgICAgICA9PiAnUHJvYmxlbS4uLicsCiAgICAgICAgRmllbGQyICAgICAgPT4gJ1NvbHV0aW9uLi4uJywKICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgIEFwcHJvdmFsT2ZmID0+IDEsIChvcHRpb25hbCwgaWYgc2V0IHRvIDEgYXBwcm92YWwgaXMgaWdub3JlZC4gVGhpcyBpcyBpbXBvcnRhbnQgd2hlbiBjYWxsZWQgZnJvbSBGQVFJbmxpbmVBdHRhY2htZW50VVJMVXBkYXRlKQogICAgKTsKClJldHVybnM6CgogICAgJFN1Y2Nlc3MgPSAxIDsgICAgICAgICAgIyBvciB1bmRlZiBpZiBjYW4ndCB1cGRhdGUgdGhlIEZBUSBhcnRpY2xlCgo9Y3V0CgpzdWIgRkFRVXBkYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEl0ZW1JRCBDYXRlZ29yeUlEIFN0YXRlSUQgTGFuZ3VhZ2VJRCBUaXRsZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGZhcSBkYXRhCiAgICBteSAlRkFRRGF0YSA9ICRTZWxmLT5GQVFHZXQoCiAgICAgICAgSXRlbUlEICAgICA9PiAkUGFyYW17SXRlbUlEfSwKICAgICAgICBJdGVtRmllbGRzID0+IDAsCiAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyBpZiBubyBuYW1lIHdhcyBnaXZlbiB1c2Ugb2xkIG5hbWUgZnJvbSBGQVEKICAgIGlmICggISRQYXJhbXtOYW1lfSApIHsKICAgICAgICAkUGFyYW17TmFtZX0gPSAkRkFRRGF0YXtOYW1lfTsKICAgIH0KCiAgICAjIHNldCBkZWZhdWx0IHZhbHVlIGZvciBWYWxpZElECiAgICBpZiAoICFkZWZpbmVkICRQYXJhbXtWYWxpZElEfSApIHsKICAgICAgICAkUGFyYW17VmFsaWRJRH0gPSAkRkFRRGF0YXtWYWxpZElEfTsKICAgIH0KCiAgICByZXR1cm4gaWYgISRTZWxmLT57REJPYmplY3R9LT5EbygKICAgICAgICBTUUwgPT4gJ1VQREFURSBmYXFfaXRlbSBTRVQgJwogICAgICAgICAgICAuICdmX25hbWUgPSA/LCBmX2xhbmd1YWdlX2lkID0gPywgJwogICAgICAgICAgICAuICdmX3N1YmplY3QgPSA/LCBjYXRlZ29yeV9pZCA9ID8sICcKICAgICAgICAgICAgLiAnc3RhdGVfaWQgPSA/LCBmX2tleXdvcmRzID0gPywgdmFsaWRfaWQgPSA/LCAnCiAgICAgICAgICAgIC4gJ2ZfZmllbGQxID0gPywgZl9maWVsZDIgPSA/LCAnCiAgICAgICAgICAgIC4gJ2ZfZmllbGQzID0gPywgZl9maWVsZDQgPSA/LCAnCiAgICAgICAgICAgIC4gJ2ZfZmllbGQ1ID0gPywgZl9maWVsZDYgPSA/LCAnCiAgICAgICAgICAgIC4gJ2NoYW5nZWQgPSBjdXJyZW50X3RpbWVzdGFtcCwgJwogICAgICAgICAgICAuICdjaGFuZ2VkX2J5ID0gPyAnCiAgICAgICAgICAgIC4gJ1dIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgIFwkUGFyYW17TmFtZX0sICAgIFwkUGFyYW17TGFuZ3VhZ2VJRH0sCiAgICAgICAgICAgIFwkUGFyYW17VGl0bGV9LCAgIFwkUGFyYW17Q2F0ZWdvcnlJRH0sCiAgICAgICAgICAgIFwkUGFyYW17U3RhdGVJRH0sIFwkUGFyYW17S2V5d29yZHN9LCBcJFBhcmFte1ZhbGlkSUR9LAogICAgICAgICAgICBcJFBhcmFte0ZpZWxkMX0sICBcJFBhcmFte0ZpZWxkMn0sCiAgICAgICAgICAgIFwkUGFyYW17RmllbGQzfSwgIFwkUGFyYW17RmllbGQ0fSwKICAgICAgICAgICAgXCRQYXJhbXtGaWVsZDV9LCAgXCRQYXJhbXtGaWVsZDZ9LAogICAgICAgICAgICBcJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIFwkUGFyYW17SXRlbUlEfSwKICAgICAgICBdLAogICAgKTsKCiAgICAjIGRlbGV0ZSBjYWNoZQogICAgJFNlbGYtPl9EZWxldGVGcm9tRkFRQ2FjaGUoJVBhcmFtKTsKCiAgICAjIHVwZGF0ZSBhcHByb3ZhbAogICAgaWYgKCAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpBcHByb3ZhbFJlcXVpcmVkJykgJiYgISRQYXJhbXtBcHByb3ZhbE9mZn0gKSB7CgogICAgICAgICMgY2hlY2sgcGVybWlzc2lvbgogICAgICAgIG15ICVHcm91cHMgPSByZXZlcnNlICRTZWxmLT57R3JvdXBPYmplY3R9LT5Hcm91cE1lbWJlckxpc3QoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgVHlwZSAgID0+ICdybycsCiAgICAgICAgICAgIFJlc3VsdCA9PiAnSEFTSCcsCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgdGhlIGFwcHJvdmFsIGdyb3VwCiAgICAgICAgbXkgJEFwcHJvdmFsR3JvdXAgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpBcHByb3ZhbEdyb3VwJyk7CgogICAgICAgICMgc2V0IGFwcHJvdmFsIHRvIDAgaWYgdXNlciBkb2VzIG5vdCBoYXZlIHRoZSByaWdodHMgdG8gYXBwcm92ZQogICAgICAgIGlmICggISRHcm91cHN7JEFwcHJvdmFsR3JvdXB9ICkgewogICAgICAgICAgICAkUGFyYW17QXBwcm92ZWR9ID0gMDsKICAgICAgICB9CgogICAgICAgICMgdXBkYXRlIHRoZSBhcHByb3ZhbAogICAgICAgIG15ICRVcGRhdGVTdWNjZXNzID0gJFNlbGYtPl9GQVFBcHByb3ZhbFVwZGF0ZSgKICAgICAgICAgICAgSXRlbUlEICAgPT4gJFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgIEFwcHJvdmVkID0+ICRQYXJhbXtBcHByb3ZlZH0gfHwgMCwKICAgICAgICAgICAgVXNlcklEICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBlcnJvcgogICAgICAgIGlmICggISRVcGRhdGVTdWNjZXNzICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGQgbm90IHVwZGF0ZSBhcHByb3ZhbCBmb3IgSXRlbUlEICRQYXJhbXtJdGVtSUR9ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgZGVsZXRlIGNhY2hlCiAgICAgICAgJFNlbGYtPl9EZWxldGVGcm9tRkFRQ2FjaGUoJVBhcmFtKTsKICAgIH0KCiAgICAjIGNoZWNrIGlmIGhpc3RvcnkgZW50cnkgc2hvdWxkIGJlIGFkZGVkCiAgICByZXR1cm4gMSBpZiAkUGFyYW17SGlzdG9yeU9mZn07CgogICAgIyB3cml0ZSBoaXN0b3J5IGVudHJ5CiAgICAkU2VsZi0+RkFRSGlzdG9yeUFkZCgKICAgICAgICBOYW1lICAgPT4gJ1VwZGF0ZWQnLAogICAgICAgIEl0ZW1JRCA9PiAkUGFyYW17SXRlbUlEfSwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBBdHRhY2htZW50QWRkKCkKCmFkZCBhcnRpY2xlIGF0dGFjaG1lbnRzLCByZXR1cm5zIHRoZSBhdHRhY2htZW50IGlkCgogICAgbXkgJEF0dGFjaG1lbnRJRCA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRBZGQoCiAgICAgICAgSXRlbUlEICAgICAgPT4gMTIzLAogICAgICAgIENvbnRlbnQgICAgID0+ICRDb250ZW50LAogICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3htbCcsCiAgICAgICAgRmlsZW5hbWUgICAgPT4gJ3NvbWVuYW1lLnhtbCcsCiAgICAgICAgSW5saW5lICAgICAgPT4gMSwgICAoMHwxLCBkZWZhdWx0IDApCiAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRBdHRhY2htZW50SUQgPSAxMjMgOyAgICAgICAgICAgICAgICMgb3IgdW5kZWYgaWYgY2FuJ3QgYWRkIHRoZSBhdHRhY2htZW50Cgo9Y3V0CgpzdWIgQXR0YWNobWVudEFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhJdGVtSUQgQ29udGVudCBDb250ZW50VHlwZSBGaWxlbmFtZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgc2V0IGRlZmF1bHQKICAgIGlmICggISRQYXJhbXtJbmxpbmV9ICkgewogICAgICAgICRQYXJhbXtJbmxpbmV9ID0gMDsKICAgIH0KCiAgICAjIGdldCBhdHRhY2htZW50IHNpemUKICAgIHsKICAgICAgICB1c2UgYnl0ZXM7CiAgICAgICAgJFBhcmFte0ZpbGVzaXplfSA9IGxlbmd0aCAkUGFyYW17Q29udGVudH07CiAgICAgICAgbm8gYnl0ZXM7CiAgICB9CgogICAgIyBnZXQgYWxsIGV4aXN0aW5nIGF0dGFjaG1lbnRzCiAgICBteSBASW5kZXggPSAkU2VsZi0+QXR0YWNobWVudEluZGV4KAogICAgICAgIEl0ZW1JRCA9PiAkUGFyYW17SXRlbUlEfSwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IHRoZSBmaWxlbmFtZQogICAgbXkgJE5ld0ZpbGVOYW1lID0gJFBhcmFte0ZpbGVuYW1lfTsKCiAgICAjIGJ1aWxkIGEgbG9va3VwIGhhc2ggb2YgYWxsIGV4aXN0aW5nIGZpbGUgbmFtZXMKICAgIG15ICVVc2VkRmlsZTsKICAgIGZvciBteSAkRmlsZSAoQEluZGV4KSB7CiAgICAgICAgJFVzZWRGaWxleyAkRmlsZS0+e0ZpbGVuYW1lfSB9ID0gMTsKICAgIH0KCiAgICAjIHRyeSB0byBtb2RpZnkgdGhlIHRoZSBmaWxlIG5hbWUgYnkgYWRkaW5nIGEgbnVtYmVyIGlmIGl0IGV4aXN0cyBhbHJlYWR5CiAgICBteSAkQ291bnQgPSAwOwogICAgd2hpbGUgKCAkQ291bnQgPCA1MCApIHsKCiAgICAgICAgIyBpbmNyZWFzZSBjb3VudGVyCiAgICAgICAgJENvdW50Kys7CgogICAgICAgICMgaWYgdGhlIGZpbGUgbmFtZSBleGlzdHMKICAgICAgICBpZiAoIGV4aXN0cyAkVXNlZEZpbGV7JE5ld0ZpbGVOYW1lfSApIHsKCiAgICAgICAgICAgICMgZmlsZW5hbWUgaGFzIGEgZmlsZSBuYW1lIGV4dGVuc2lvbiAoZS5nLiB0ZXN0LmpwZykKICAgICAgICAgICAgaWYgKCAkUGFyYW17RmlsZW5hbWV9ID1+IG17IFxBICguKikgXC4gKC4rPykgXHogfXhtcyApIHsKICAgICAgICAgICAgICAgICROZXdGaWxlTmFtZSA9ICIkMS0kQ291bnQuJDIiOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJE5ld0ZpbGVOYW1lID0gIiRQYXJhbXtGaWxlbmFtZX0tJENvdW50IjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIHN0b3JlIHRoZSBuZXcgZmlsZW5hbWUKICAgICRQYXJhbXtGaWxlbmFtZX0gPSAkTmV3RmlsZU5hbWU7CgogICAgIyBlbmNvZGUgYXR0YWNobWVudCBpZiBpdCdzIGEgcG9zdGdyZXNxbCBiYWNrZW5kISEhCiAgICBpZiAoICEkU2VsZi0+e0RCT2JqZWN0fS0+R2V0RGF0YWJhc2VGdW5jdGlvbignRGlyZWN0QmxvYicpICkgewogICAgICAgICRTZWxmLT57RW5jb2RlT2JqZWN0fS0+RW5jb2RlT3V0cHV0KCBcJFBhcmFte0NvbnRlbnR9ICk7CiAgICAgICAgJFBhcmFte0NvbnRlbnR9ID0gTUlNRTo6QmFzZTY0OjplbmNvZGVfYmFzZTY0KCAkUGFyYW17Q29udGVudH0gKTsKICAgIH0KCiAgICAjIHdyaXRlIGF0dGFjaG1lbnQgdG8gZGIKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPkRvKAogICAgICAgIFNRTCA9PiAnSU5TRVJUIElOVE8gZmFxX2F0dGFjaG1lbnQgJyAuCiAgICAgICAgICAgICcgKGZhcV9pZCwgZmlsZW5hbWUsIGNvbnRlbnRfdHlwZSwgY29udGVudF9zaXplLCBjb250ZW50LCBpbmxpbmVhdHRhY2htZW50LCAnIC4KICAgICAgICAgICAgJyBjcmVhdGVkLCBjcmVhdGVkX2J5LCBjaGFuZ2VkLCBjaGFuZ2VkX2J5KSBWQUxVRVMgJyAuCiAgICAgICAgICAgICcgKD8sID8sID8sID8sID8sID8sIGN1cnJlbnRfdGltZXN0YW1wLCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgPyknLAogICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICBcJFBhcmFte0l0ZW1JRH0sICBcJFBhcmFte0ZpbGVuYW1lfSwgXCRQYXJhbXtDb250ZW50VHlwZX0sIFwkUGFyYW17RmlsZXNpemV9LAogICAgICAgICAgICBcJFBhcmFte0NvbnRlbnR9LCBcJFBhcmFte0lubGluZX0sICAgXCRQYXJhbXtVc2VySUR9LCAgICAgIFwkUGFyYW17VXNlcklEfSwKICAgICAgICBdLAogICAgKTsKCiAgICAjIGdldCB0aGUgYXR0YWNobWVudCBpZAogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCBpZCAnCiAgICAgICAgICAgIC4gJ0ZST00gZmFxX2F0dGFjaG1lbnQgJwogICAgICAgICAgICAuICdXSEVSRSBmYXFfaWQgPSA/IEFORCBmaWxlbmFtZSA9ID8gJwogICAgICAgICAgICAuICdBTkQgY29udGVudF90eXBlID0gPyBBTkQgY29udGVudF9zaXplID0gPyAnCiAgICAgICAgICAgIC4gJ0FORCBpbmxpbmVhdHRhY2htZW50ID0gPyAnCiAgICAgICAgICAgIC4gJ0FORCBjcmVhdGVkX2J5ID0gPyBBTkQgY2hhbmdlZF9ieSA9ID8nLAogICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICBcJFBhcmFte0l0ZW1JRH0sIFwkUGFyYW17RmlsZW5hbWV9LCBcJFBhcmFte0NvbnRlbnRUeXBlfSwgXCRQYXJhbXtGaWxlc2l6ZX0sCiAgICAgICAgICAgIFwkUGFyYW17SW5saW5lfSwgXCRQYXJhbXtVc2VySUR9LCBcJFBhcmFte1VzZXJJRH0sCiAgICAgICAgXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICBteSAkQXR0YWNobWVudElEOwogICAgd2hpbGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkQXR0YWNobWVudElEID0gJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gJEF0dGFjaG1lbnRJRDsKfQoKPWl0ZW0gQXR0YWNobWVudEdldCgpCgpnZXQgYXR0YWNobWVudCBvZiBhcnRpY2xlCgogICAgbXkgJUZpbGUgPSAkRkFRT2JqZWN0LT5BdHRhY2htZW50R2V0KAogICAgICAgIEl0ZW1JRCA9PiAxMjMsCiAgICAgICAgRmlsZUlEID0+IDEsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAlRmlsZSA9ICgKICAgICAgICBGaWxlc2l6ZSAgICA9PiAnNTQwMjg2JywgICAgICAgICAgICAgICAgIyBmaWxlIHNpemUgaW4gYnl0ZXMKICAgICAgICBDb250ZW50VHlwZSA9PiAnaW1hZ2UvanBlZycsCiAgICAgICAgRmlsZW5hbWUgICAgPT4gJ0Vycm9yLmpwZycsCiAgICAgICAgQ29udGVudCAgICAgPT4gJy4uLicgICAgICAgICAgICAgICAgICAgICMgZmlsZSBiaW5hcnkgY29udGVudAogICAgKTsKCj1jdXQKCnN1YiBBdHRhY2htZW50R2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEl0ZW1JRCBGaWxlSUQgVXNlcklEKSkgewogICAgICAgIGlmICggIWRlZmluZWQgJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgZmlsZW5hbWUsIGNvbnRlbnRfdHlwZSwgY29udGVudF9zaXplLCBjb250ZW50ICcKICAgICAgICAgICAgLiAnRlJPTSBmYXFfYXR0YWNobWVudCAnCiAgICAgICAgICAgIC4gJ1dIRVJFIGlkID0gPyBBTkQgZmFxX2lkID0gPyAnCiAgICAgICAgICAgIC4gJ09SREVSIEJZIGNyZWF0ZWQnLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0ZpbGVJRH0sIFwkUGFyYW17SXRlbUlEfSBdLAogICAgICAgIEVuY29kZSA9PiBbIDEsIDEsIDEsIDAgXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICBteSAlRmlsZTsKICAgIHdoaWxlICggbXkgQFJvdyA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CgogICAgICAgICMgZGVjb2RlIGF0dGFjaG1lbnQgaWYgaXQncyBhIHBvc3RncmVzcWwgYmFja2VuZCBhbmQgbm90IEJMT0IKICAgICAgICBpZiAoICEkU2VsZi0+e0RCT2JqZWN0fS0+R2V0RGF0YWJhc2VGdW5jdGlvbignRGlyZWN0QmxvYicpICkgewogICAgICAgICAgICAkUm93WzNdID0gTUlNRTo6QmFzZTY0OjpkZWNvZGVfYmFzZTY0KCAkUm93WzNdICk7CiAgICAgICAgfQoKICAgICAgICAkRmlsZXtGaWxlbmFtZX0gICAgPSAkUm93WzBdOwogICAgICAgICRGaWxle0NvbnRlbnRUeXBlfSA9ICRSb3dbMV07CiAgICAgICAgJEZpbGV7RmlsZXNpemV9ICAgID0gJFJvd1syXTsKICAgICAgICAkRmlsZXtDb250ZW50fSAgICAgPSAkUm93WzNdOwogICAgfQoKICAgIHJldHVybiAlRmlsZTsKfQoKPWl0ZW0gQXR0YWNobWVudERlbGV0ZSgpCgpkZWxldGUgYXR0YWNobWVudCBvZiBhcnRpY2xlCgogICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5BdHRhY2htZW50RGVsZXRlKAogICAgICAgIEl0ZW1JRCA9PiAxMjMsCiAgICAgICAgRmlsZUlEID0+IDEsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkU3VjY2VzcyA9IDEgOyAgICAgICAgICAgICAgIyBvciB1bmRlZiBpZiBhdHRhY2htZW50IGNvdWxkIG5vdCBiZSBkZWxldGVkCgo9Y3V0CgpzdWIgQXR0YWNobWVudERlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhJdGVtSUQgRmlsZUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICFkZWZpbmVkICRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gaWYgISRTZWxmLT57REJPYmplY3R9LT5EbygKICAgICAgICBTUUwgPT4gJ0RFTEVURSBGUk9NIGZhcV9hdHRhY2htZW50IFdIRVJFIGlkID0gPyBBTkQgZmFxX2lkID0gPyAnLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0ZpbGVJRH0sIFwkUGFyYW17SXRlbUlEfSBdLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gQXR0YWNobWVudEluZGV4KCkKCnJldHVybiBhbiBhdHRhY2htZW50IGluZGV4IG9mIGFuIGFydGljbGUKCiAgICBteSBASW5kZXggPSAkRkFRT2JqZWN0LT5BdHRhY2htZW50SW5kZXgoCiAgICAgICAgSXRlbUlEICAgICA9PiAxMjMsCiAgICAgICAgU2hvd0lubGluZSA9PiAwLCAgICggMHwxLCBkZWZhdWx0IDEpCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgQEluZGV4ID0gKAogICAgICAgIHsKICAgICAgICAgICAgRmlsZXNpemUgICAgPT4gJzUyNy42IEtCeXRlcycsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICdpbWFnZS9qcGVnJywKICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJ0Vycm9yLmpwZycsCiAgICAgICAgICAgIEZpbGVzaXplUmF3ID0+IDU0MDI4NiwKICAgICAgICAgICAgRmlsZUlEICAgICAgPT4gNiwKICAgICAgICAgICAgSW5saW5lICAgICAgPT4gMCwKICAgICAgICB9LAogICAgICAgIHssCiAgICAgICAgICAgIEZpbGVzaXplID0+ICc0MzAuMCBLQnl0ZXMnLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAnaW1hZ2UvanBlZycsCiAgICAgICAgICAgIEZpbGVuYW1lID0+ICdTb2x1dGlvbi5qcGcnLAogICAgICAgICAgICBGaWxlc2l6ZVJhdyA9PiA0NDAyODYsCiAgICAgICAgICAgIEZpbGVJRCA9PiA1LAogICAgICAgICAgICBJbmxpbmUgPT4gMSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgRmlsZXNpemUgPT4gJzI5NiBCeXRlcycsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3BsYWluJywKICAgICAgICAgICAgRmlsZW5hbWUgPT4gJ0FkZGl0aW9uYWxDb21tZW50cy50eHQnLAogICAgICAgICAgICBGaWxlc2l6ZVJhdyA9PiAyOTYsCiAgICAgICAgICAgIEZpbGVJRCA9PiA3LAogICAgICAgICAgICBJbmxpbmUgPT4gMCwKICAgICAgICB9LAogICAgKTsKCj1jdXQKCnN1YiBBdHRhY2htZW50SW5kZXggewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoSXRlbUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCBpZCwgZmlsZW5hbWUsIGNvbnRlbnRfdHlwZSwgY29udGVudF9zaXplLCBpbmxpbmVhdHRhY2htZW50ICcKICAgICAgICAgICAgLiAnRlJPTSBmYXFfYXR0YWNobWVudCAnCiAgICAgICAgICAgIC4gJ1dIRVJFIGZhcV9pZCA9ID8gJwogICAgICAgICAgICAuICdPUkRFUiBCWSBmaWxlbmFtZScsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte0l0ZW1JRH0gXSwKICAgICAgICBMaW1pdCA9PiAxMDAsCiAgICApOwoKICAgIG15IEBJbmRleDsKICAgIEFUVEFDSE1FTlQ6CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkU2VsZi0+e0RCT2JqZWN0fS0+RmV0Y2hyb3dBcnJheSgpICkgewoKICAgICAgICBteSAkSUQgICAgICAgICAgPSAkUm93WzBdOwogICAgICAgIG15ICRGaWxlbmFtZSAgICA9ICRSb3dbMV07CiAgICAgICAgbXkgJENvbnRlbnRUeXBlID0gJFJvd1syXTsKICAgICAgICBteSAkRmlsZXNpemUgICAgPSAkUm93WzNdOwogICAgICAgIG15ICRJbmxpbmUgICAgICA9ICRSb3dbNF07CgogICAgICAgICMgZG8gbm90IHNob3cgaW5saW5lIGF0dGFjaG1lbnRzCiAgICAgICAgaWYgKCBkZWZpbmVkICRQYXJhbXtTaG93SW5saW5lfSAmJiAhJFBhcmFte1Nob3dJbmxpbmV9ICYmICRJbmxpbmUgKSB7CiAgICAgICAgICAgIG5leHQgQVRUQUNITUVOVDsKICAgICAgICB9CgogICAgICAgICMgY29udmVydCB0byBodW1hbiByZWFkYWJsZSBmaWxlIHNpemUKICAgICAgICBteSAkRmlsZVNpemVSYXcgPSAkRmlsZXNpemU7CiAgICAgICAgaWYgKCRGaWxlc2l6ZSkgewogICAgICAgICAgICBpZiAoICRGaWxlc2l6ZSA+ICggMTAyNCAqIDEwMjQgKSApIHsKICAgICAgICAgICAgICAgICRGaWxlc2l6ZSA9IHNwcmludGYgIiUuMWYgTUJ5dGVzIiwgKCAkRmlsZXNpemUgLyAoIDEwMjQgKiAxMDI0ICkgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRGaWxlc2l6ZSA+IDEwMjQgKSB7CiAgICAgICAgICAgICAgICAkRmlsZXNpemUgPSBzcHJpbnRmICIlLjFmIEtCeXRlcyIsICggKCAkRmlsZXNpemUgLyAxMDI0ICkgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRGaWxlc2l6ZSA9ICRGaWxlc2l6ZSAuICcgQnl0ZXMnOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBwdXNoIEBJbmRleCwgewogICAgICAgICAgICBGaWxlSUQgICAgICA9PiAkSUQsCiAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICRGaWxlbmFtZSwKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJENvbnRlbnRUeXBlLAogICAgICAgICAgICBGaWxlc2l6ZSAgICA9PiAkRmlsZXNpemUsCiAgICAgICAgICAgIEZpbGVzaXplUmF3ID0+ICRGaWxlU2l6ZVJhdywKICAgICAgICAgICAgSW5saW5lICAgICAgPT4gJElubGluZSwKICAgICAgICB9OwogICAgfQoKICAgIHJldHVybiBASW5kZXg7Cn0KCj1pdGVtIEZBUUNvdW50KCkKCkNvdW50IHRoZSBudW1iZXIgb2YgYXJ0aWNsZXMgZm9yIGEgZGVmaW5lZCBjYXRlZ29yeS4gT25seSB2YWxpZCBGQVEgYXJ0aWNsZXMgd2lsbCBiZSBjb3VudGVkLgoKICAgIG15ICRBcnRpY2xlQ291bnQgPSAkRkFRT2JqZWN0LT5GQVFDb3VudCgKICAgICAgICBDYXRlZ29yeUlEcyAgPT4gWzEsMiwzLDRdLAogICAgICAgIE9ubHlBcHByb3ZlZCA9PiAxLCAgICMgb3B0aW9uYWwgKGRlZmF1bHQgMCkKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRBcnRpY2xlQ291bnQgPSAzOwoKPWN1dAoKc3ViIEZBUUNvdW50IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KENhdGVnb3J5SURzIEl0ZW1TdGF0ZXMgVXNlcklEKSkgewogICAgICAgIGlmICggIWRlZmluZWQgJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgYnVpbGQgY2F0ZWdvcnkgaWQgc3RyaW5nCiAgICBteSAkQ2F0ZWdvcnlJRFN0cmluZyA9IGpvaW4gJywgJywgQHsgJFBhcmFte0NhdGVnb3J5SURzfSB9OwoKICAgICMgYnVpbGQgdmFsaWQgaWQgc3RyaW5nCiAgICBteSAkVmFsaWRJRHNTdHJpbmcgPSBqb2luICcsICcsICRTZWxmLT57VmFsaWRPYmplY3R9LT5WYWxpZElEc0dldCgpOwoKICAgIG15ICRTUUwgPSAnU0VMRUNUIENPVU5UKCopICcKICAgICAgICAuICdGUk9NIGZhcV9pdGVtIGksIGZhcV9zdGF0ZSBzICcKICAgICAgICAuICJXSEVSRSBpLmNhdGVnb3J5X2lkIElOICgkQ2F0ZWdvcnlJRFN0cmluZykgIgogICAgICAgIC4gIkFORCBpLnZhbGlkX2lkIElOICgkVmFsaWRJRHNTdHJpbmcpICIKICAgICAgICAuICdBTkQgaS5zdGF0ZV9pZCA9IHMuaWQnOwoKICAgICMgY291bnQgb25seSBhcHByb3ZlZCBhcnRpY2xlcwogICAgaWYgKCAkUGFyYW17T25seUFwcHJvdmVkfSApIHsKICAgICAgICAkU1FMIC49ICcgQU5EIGkuYXBwcm92ZWQgPSAxJzsKICAgIH0KCiAgICBteSAkRXh0ID0gJyc7CiAgICBpZiAoICRQYXJhbXtJdGVtU3RhdGVzfSAmJiByZWYgJFBhcmFte0l0ZW1TdGF0ZXN9IGVxICdIQVNIJyAmJiAleyAkUGFyYW17SXRlbVN0YXRlc30gfSApIHsKICAgICAgICBteSAkU3RhdGVzU3RyaW5nID0gam9pbiAnLCAnLCBrZXlzICV7ICRQYXJhbXtJdGVtU3RhdGVzfSB9OwogICAgICAgICRFeHQgLj0gIiBBTkQgcy50eXBlX2lkIElOICgkU3RhdGVzU3RyaW5nICkiOwogICAgfQogICAgJEV4dCAuPSAnIEdST1VQIEJZIGNhdGVnb3J5X2lkJzsKICAgICRTUUwgLj0gJEV4dDsKCiAgICByZXR1cm4gaWYgISRTZWxmLT57REJPYmplY3R9LT5QcmVwYXJlKAogICAgICAgIFNRTCAgID0+ICRTUUwsCiAgICAgICAgTGltaXQgPT4gMjAwLAogICAgKTsKCiAgICBteSAkQ291bnQgPSAwOwogICAgd2hpbGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkQ291bnQgPSAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiAkQ291bnQ7Cn0KCj1pdGVtIEZBUURlbGV0ZSgpCgpEZWxldGUgYW4gYXJ0aWNsZS4KCiAgICBteSAkRGVsZXRlU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUURlbGV0ZSgKICAgICAgICBJdGVtSUQgPT4gMSwKICAgICAgICBVc2VySUQgPT4gMTIzLAogICAgKTsKClJldHVybnM6CgogICAgJERlbGV0ZVN1Y2Nlc3MgPSAxOyAgICAgICAgICAgICAgIyBvciB1bmRlZiBpZiBhcnRpY2xlIGNvdWxkIG5vdCBiZSBkZWxldGVkCgo9Y3V0CgpzdWIgRkFRRGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEl0ZW1JRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZGVsZXRlIGF0dGFjaG1lbnRzCiAgICBteSBASW5kZXggPSAkU2VsZi0+QXR0YWNobWVudEluZGV4KAogICAgICAgIEl0ZW1JRCA9PiAkUGFyYW17SXRlbUlEfSwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwogICAgZm9yIG15ICRGaWxlSUQgKEBJbmRleCkgewogICAgICAgIG15ICREZWxldGVTdWNjZXNzID0gJFNlbGYtPkF0dGFjaG1lbnREZWxldGUoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgRmlsZUlEID0+ICRGaWxlSUQtPntGaWxlSUR9LAogICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gaWYgISREZWxldGVTdWNjZXNzOwogICAgfQoKICAgICMgZGVsZXRlIHZvdGVzCiAgICBteSAkVm90ZUlEc1JlZiA9ICRTZWxmLT5Wb3RlU2VhcmNoKAogICAgICAgIEl0ZW1JRCA9PiAkUGFyYW17SXRlbUlEfSwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwogICAgZm9yIG15ICRWb3RlSUQgKCBAeyRWb3RlSURzUmVmfSApIHsKICAgICAgICBteSAkRGVsZXRlU3VjY2VzcyA9ICRTZWxmLT5Wb3RlRGVsZXRlKAogICAgICAgICAgICBWb3RlSUQgPT4gJFZvdGVJRCwKICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgcmV0dXJuIGlmICEkRGVsZXRlU3VjY2VzczsKICAgIH0KCiAgICAjIGRlbGV0ZSBhbGwgZmFxIGxpbmtzIG9mIHRoaXMgZmFxIGFydGljbGUKICAgICRTZWxmLT57TGlua09iamVjdH0tPkxpbmtEZWxldGVBbGwoCiAgICAgICAgT2JqZWN0ID0+ICdGQVEnLAogICAgICAgIEtleSAgICA9PiAkUGFyYW17SXRlbUlEfSwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgZGVsZXRlIGhpc3RvcnkKICAgIHJldHVybiBpZiAhJFNlbGYtPkZBUUhpc3RvcnlEZWxldGUoCiAgICAgICAgSXRlbUlEID0+ICRQYXJhbXtJdGVtSUR9LAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyBkZWxldGUgYXJ0aWNsZQogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+RG8oCiAgICAgICAgU1FMICA9PiAnREVMRVRFIEZST00gZmFxX2l0ZW0gV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtJdGVtSUR9IF0sCiAgICApOwoKICAgICMgZGVsZXRlIGNhY2hlCiAgICAkU2VsZi0+X0RlbGV0ZUZyb21GQVFDYWNoZSglUGFyYW0pOwoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBGQVFIaXN0b3J5QWRkKCkKCmFkZCBhbiBoaXN0b3J5IHRvIGFuIGFydGljbGUKCiAgICBteSAkQWRkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUUhpc3RvcnlBZGQoCiAgICAgICAgSXRlbUlEID0+IDEsCiAgICAgICAgTmFtZSAgID0+ICdVcGRhdGVkIEFydGljbGUuJywKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRBZGRTdWNjZXNzID0gMTsgICAgICAgICAgICAgICAjIG9yIHVuZGVmIGlmIGFydGljbGUgaGlzdG9yeSBjb3VsZCBub3QgYmUgYWRkZWQKCj1jdXQKCnN1YiBGQVFIaXN0b3J5QWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEl0ZW1JRCBOYW1lIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+RG8oCiAgICAgICAgU1FMID0+ICdJTlNFUlQgSU5UTyBmYXFfaGlzdG9yeSAobmFtZSwgaXRlbV9pZCwgJyAuCiAgICAgICAgICAgICcgY3JlYXRlZCwgY3JlYXRlZF9ieSwgY2hhbmdlZCwgY2hhbmdlZF9ieSknIC4KICAgICAgICAgICAgJyBWQUxVRVMgKCA/LCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgPywgY3VycmVudF90aW1lc3RhbXAsID8pJywKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXCRQYXJhbXtOYW1lfSwgXCRQYXJhbXtJdGVtSUR9LCBcJFBhcmFte1VzZXJJRH0sIFwkUGFyYW17VXNlcklEfSwKICAgICAgICBdLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gRkFRSGlzdG9yeUdldCgpCgpnZXQgYW4gYXJyYXkgd2l0aCBoYXNocmVmIHdpdGggdGhlIGhpc3Rvcnkgb2YgYW4gYXJ0aWNsZQoKICAgIG15ICRIaXN0b3J5RGF0YUFycmF5UmVmID0gJEZBUU9iamVjdC0+RkFRSGlzdG9yeUdldCgKICAgICAgICBJdGVtSUQgPT4gMSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRIaXN0b3J5RGF0YUFycmF5UmVmID0gWwogICAgICAgIHsKICAgICAgICAgICAgQ3JlYXRlZEJ5ID0+IDEsCiAgICAgICAgICAgIENyZWF0ZWQgICA9PiAnMjAxMC0xMS0wMiAwNzo0NToxNScsCiAgICAgICAgICAgIE5hbWUgICAgICA9PiAnQ3JlYXRlZCcsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIENyZWF0ZWRCeSA9PiAxLAogICAgICAgICAgICBDcmVhdGVkICAgPT4gJzIwMTEtMDYtMTQgMTI6NTM6NTUnLAogICAgICAgICAgICBOYW1lICAgICAgPT4gJ1VwZGF0ZWQnLAogICAgICAgIH0sCiAgICBdOwoKPWN1dAoKc3ViIEZBUUhpc3RvcnlHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoSXRlbUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICBTUUwgID0+ICdTRUxFQ1QgbmFtZSwgY3JlYXRlZCwgY3JlYXRlZF9ieSBGUk9NIGZhcV9oaXN0b3J5IFdIRVJFIGl0ZW1faWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtJdGVtSUR9IF0sCiAgICApOwoKICAgIG15IEBEYXRhOwogICAgd2hpbGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBteSAlUmVjb3JkID0gKAogICAgICAgICAgICBOYW1lICAgICAgPT4gJFJvd1swXSwKICAgICAgICAgICAgQ3JlYXRlZCAgID0+ICRSb3dbMV0sCiAgICAgICAgICAgIENyZWF0ZWRCeSA9PiAkUm93WzJdLAogICAgICAgICk7CiAgICAgICAgcHVzaCBARGF0YSwgXCVSZWNvcmQ7CiAgICB9CgogICAgcmV0dXJuIFxARGF0YTsKfQoKPWl0ZW0gRkFRSGlzdG9yeURlbGV0ZSgpCgpkZWxldGUgdGhlIGhpc3Rvcnkgb2YgYW4gYXJ0aWNsZQoKICAgIG15ICREZWxldGVTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRSGlzdG9yeURlbGV0ZSgKICAgICAgICBJdGVtSUQgPT4gMSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICREZWxldGVEdWNjZXNzID0gMTsgICAgICAgICAgICAgICAgIyBvciB1bmRlZiBpZiBoaXN0b3J5IGNvdWxkIG5vdCBiZSBkZWxldGVkCgo9Y3V0CgpzdWIgRkFRSGlzdG9yeURlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhJdGVtSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gaWYgISRTZWxmLT57REJPYmplY3R9LT5EbygKICAgICAgICBTUUwgID0+ICdERUxFVEUgRlJPTSBmYXFfaGlzdG9yeSBXSEVSRSBpdGVtX2lkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17SXRlbUlEfSBdLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gSGlzdG9yeUdldCgpCgpnZXQgdGhlIHN5c3RlbSBoaXN0b3J5CgogICAgbXkgJEhpc3RvcnlEYXRhQXJyYXlSZWYgPSAkRkFRT2JqZWN0LT5IaXN0b3J5R2V0KAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJEhpc3RvcnlEYXRhQXJyYXlSZWYgPSBbCiAgICAgICAgewogICAgICAgICAgICBJdGVtSUQgICAgPT4gJzMyJywKICAgICAgICAgICAgTnVtYmVyICAgID0+ICcxMDAwNCcsCiAgICAgICAgICAgIENhdGVnb3J5ICA9PiAnTXkgQ2F0ZWdvcnknLAogICAgICAgICAgICBTdWJqZWN0ICAgPT4gJ05ldyBBcnRpY2xlJywKICAgICAgICAgICAgQWN0aW9uICAgID0+ICdDcmVhdGVkJywKICAgICAgICAgICAgQ3JlYXRlZEJ5ID0+ICcxJywKICAgICAgICAgICAgQ3JlYXRlZCAgID0+ICcyMDExLTAxLTA1IDIxOjUzOjUwJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgSXRlbUlEICAgID0+ICc0JywKICAgICAgICAgICAgTnVtYmVyICAgID0+ICcxMDAwNCcsCiAgICAgICAgICAgIENhdGVnb3J5ICA9PiAnTXkgQ2F0ZWdvcnknLAogICAgICAgICAgICBTdWJqZWN0ICAgPT4gIk5ldyBBcnRpY2xlIiwKICAgICAgICAgICAgQWN0aW9uICAgID0+ICdVcGRhdGVkJywKICAgICAgICAgICAgQ3JlYXRlZEJ5ID0+ICcxJywKICAgICAgICAgICAgQ3JlYXRlZCAgID0+ICcyMDExLTAxLTA1IDIxOjU1OjMyJywKICAgICAgICB9CiAgICBdOwoKPWN1dAoKc3ViIEhpc3RvcnlHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFVzZXJJRCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgYnVpbGQgU1FMIHF1ZXJ5CiAgICBteSAkU1FMID0gJ1NFTEVDVCBpLmlkLCBoLm5hbWUsIGguY3JlYXRlZCwgaC5jcmVhdGVkX2J5LCBjLm5hbWUsIGkuZl9zdWJqZWN0LCBpLmZfbnVtYmVyICcKICAgICAgICAuICdGUk9NIGZhcV9pdGVtIGksIGZhcV9zdGF0ZSBzLCBmYXFfaGlzdG9yeSBoLCBmYXFfY2F0ZWdvcnkgYyAnCiAgICAgICAgLiAnV0hFUkUgcy5pZCA9IGkuc3RhdGVfaWQgJwogICAgICAgIC4gJ0FORCBoLml0ZW1faWQgPSBpLmlkICcKICAgICAgICAuICdBTkQgaS5jYXRlZ29yeV9pZCA9IGMuaWQgJzsKCiAgICAjIGFkZCBzdGF0ZXMgY29uZGl0aW9uCiAgICBpZiAoICRQYXJhbXtTdGF0ZXN9ICYmIHJlZiAkUGFyYW17U3RhdGVzfSBlcSAnQVJSQVknICYmIEB7ICRQYXJhbXtTdGF0ZXN9IH0gKSB7CiAgICAgICAgbXkgJFN0YXRlc1N0cmluZyA9IGpvaW4gJywgJywgQHsgJFBhcmFte1N0YXRlc30gfTsKICAgICAgICAkU1FMIC49ICJBTkQgcy5uYW1lIElOICgkU3RhdGVzU3RyaW5nKSAiOwogICAgfQoKICAgICMgYWRkIG9yZGVyIGJ5IGNsYXVzZQogICAgJFNRTCAuPSAnT1JERVIgQlkgaC5jcmVhdGVkIERFU0MnOwoKICAgICMgZ2V0IHRoZSBkYXRhIGZyb20gZGIKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoCiAgICAgICAgU1FMICAgPT4gJFNRTCwKICAgICAgICBMaW1pdCA9PiAyMDAsCiAgICApOwoKICAgIG15IEBEYXRhOwogICAgd2hpbGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBteSAlUmVjb3JkID0gKAogICAgICAgICAgICBJdGVtSUQgICAgPT4gJFJvd1swXSwKICAgICAgICAgICAgQWN0aW9uICAgID0+ICRSb3dbMV0sCiAgICAgICAgICAgIENyZWF0ZWQgICA9PiAkUm93WzJdLAogICAgICAgICAgICBDcmVhdGVkQnkgPT4gJFJvd1szXSwKICAgICAgICAgICAgQ2F0ZWdvcnkgID0+ICRSb3dbNF0sCiAgICAgICAgICAgIFN1YmplY3QgICA9PiAkUm93WzVdLAogICAgICAgICAgICBOdW1iZXIgICAgPT4gJFJvd1s2XSwKICAgICAgICApOwogICAgICAgIHB1c2ggQERhdGEsIFwlUmVjb3JkOwogICAgfQoKICAgIHJldHVybiBcQERhdGE7Cn0KCj1pdGVtIEtleXdvcmRMaXN0KCkKCmdldCBhIGxpc3Qgb2Yga2V5d29yZHMgYXMgYSBoYXNoLCB3aXRoIHRoZWlyIGNvdW50IGFzIHRoZSB2YWx1ZToKCiAgICBteSAlS2V5d29yZHMgPSAkRkFRT2JqZWN0LT5LZXl3b3JkTGlzdCgKICAgICAgICBWYWxpZCAgPT4gMSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICVLZXl3b3JkcyA9ICgKICAgICAgICAgICdtYWNvc3gnICAgPT4gOCwKICAgICAgICAgICd1YnVudHUnICAgPT4gMSwKICAgICAgICAgICdvdXRsb29rJyAgPT4gMiwKICAgICAgICAgICd3aW5kb3dzJyAgPT4gMywKICAgICAgICAgICdleGNoYW5nZScgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgS2V5d29yZExpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFVzZXJJRCEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgc2V0IGRlZmF1bHQKICAgIG15ICRWYWxpZCA9IDA7CiAgICBpZiAoIGRlZmluZWQgJFBhcmFte1ZhbGlkfSApIHsKICAgICAgICAkVmFsaWQgPSAkUGFyYW17VmFsaWR9OwogICAgfQoKICAgICMgZ2V0IGtleXdvcmRzIGZyb20gZGIKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgZl9rZXl3b3JkcyBGUk9NIGZhcV9pdGVtJywKICAgICk7CgogICAgbXkgJURhdGE7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkU2VsZi0+e0RCT2JqZWN0fS0+RmV0Y2hyb3dBcnJheSgpICkgewoKICAgICAgICBteSAkS2V5d29yZExpc3QgPSBsYyAkUm93WzBdOwoKICAgICAgICBmb3IgbXkgJEtleXdvcmQgKCBzcGxpdCAvLC8sICRLZXl3b3JkTGlzdCApIHsKCiAgICAgICAgICAgICMgcmVtb3ZlIGxlYWRpbmcvdGFpbGluZyBzcGFjZXMKICAgICAgICAgICAgJEtleXdvcmQgPX4gc3sgXEEgXHMrIH17fXhtc2c7CiAgICAgICAgICAgICRLZXl3b3JkID1+IHN7IFxzKyBceiB9e314bXNnOwoKICAgICAgICAgICAgIyBpbmNyZWFzZSBrZXl3b3JkIGNvdW50ZXIKICAgICAgICAgICAgJERhdGF7JEtleXdvcmR9Kys7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAlRGF0YTsKfQoKPWl0ZW0gRkFRUGF0aExpc3RHZXQoKQoKcmV0dXJucyBhIGNhdGVnb3J5IGFycmF5IHJlZmVyZW5jZQoKICAgIG15ICRDYXRlZ29yeUlEQXJyYXlSZWYgPSAkRkFRT2JqZWN0LT5GQVFQYXRoTGlzdEdldCgKICAgICAgICBDYXRlZ29yeUlEID0+IDE1MCwKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkQ2F0ZWdvcnlJREFycmF5UmVmID0gWwogICAgICAgIHsKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAnMicsCiAgICAgICAgICAgIFBhcmVudElEID0+ICcwJywKICAgICAgICAgICAgTmFtZSA9PiAnTXkgQ2F0ZWdvcnknLAogICAgICAgICAgICBDb21tZW50ID0+ICdNeSBGaXJzdCBDYXRlZ29yeScsCiAgICAgICAgICAgIFZhbGlkSUQgPT4gJzEnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICc0JywKICAgICAgICAgICAgUGFyZW50SUQgPT4gJzInLAogICAgICAgICAgICBOYW1lID0+ICdTdWIgQ2F0ZWdvcnkgQScsCiAgICAgICAgICAgIENvbW1lbnQgPT4gJ1RoaXMgSXMgQ2F0ZWdvcnkgQScsCiAgICAgICAgICAgIFZhbGlkSUQgPT4gJzEnLAogICAgICAgIH0sCiAgICBdOwoKPWN1dAoKc3ViIEZBUVBhdGhMaXN0R2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBVc2VySUQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSBAQ2F0ZWdvcnlMaXN0OwogICAgbXkgJFRlbXBDYXRlZ29yeUlEID0gJFBhcmFte0NhdGVnb3J5SUR9OwogICAgd2hpbGUgKCRUZW1wQ2F0ZWdvcnlJRCkgewogICAgICAgIG15ICVEYXRhID0gJFNlbGYtPkNhdGVnb3J5R2V0KAogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRUZW1wQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwogICAgICAgIGlmICglRGF0YSkgewogICAgICAgICAgICBwdXNoIEBDYXRlZ29yeUxpc3QsIFwlRGF0YTsKICAgICAgICB9CiAgICAgICAgJFRlbXBDYXRlZ29yeUlEID0gJERhdGF7UGFyZW50SUR9OwogICAgfQoKICAgIEBDYXRlZ29yeUxpc3QgPSByZXZlcnNlIEBDYXRlZ29yeUxpc3Q7CgogICAgcmV0dXJuIFxAQ2F0ZWdvcnlMaXN0OwoKfQoKPWl0ZW0gRkFRTG9nQWRkKCkKCmFkZHMgYWNjZXNzZWQgRkFRIGFydGljbGUgdG8gdGhlIGFjY2VzcyBsb2cgdGFibGUKCiAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUUxvZ0FkZCgKICAgICAgICBJdGVtSUQgICAgPT4gJzEyMzQ1NicsCiAgICAgICAgSW50ZXJmYWNlID0+ICdpbnRlcm5hbCcsCiAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkU3VjY2VzcyA9MTsgICAgICAgICAgICAgICAgIyBvciB1bmRlZiBpZiBGQVFMb2cgY291bGQgbm90IGJlIGFkZGVkCgo9Y3V0CgpzdWIgRkFRTG9nQWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEl0ZW1JRCBJbnRlcmZhY2UgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBlbnZpcm9ubWVudCB2YXJpYWJsZXMKICAgIG15ICRJUCAgICAgICAgPSAkRU5WeydSRU1PVEVfQUREUid9ICAgICB8fCAnTk9ORSc7CiAgICBteSAkVXNlckFnZW50ID0gJEVOVnsnSFRUUF9VU0VSX0FHRU5UJ30gfHwgJ05PTkUnOwoKICAgICMgZ2V0IGN1cnJlbnQgc3lzdGVtIHRpbWUKICAgIG15ICRTeXN0ZW1UaW1lID0gJFNlbGYtPntUaW1lT2JqZWN0fS0+U3lzdGVtVGltZSgpOwoKICAgICMgZGVmaW5lIHRpbWUgcGVyaW9kIHdoZXJlIHJlbG9hZHMgd2lsbCBub3QgYmUgbG9nZ2VkICgxMCBtaW51dGVzKQogICAgbXkgJFJlbG9hZEJsb2NrVGltZSA9IDEwICogNjA7CgogICAgIyBzdWJ0cmFjdCBSZWxvYWRCbG9ja1RpbWUKICAgICRTeXN0ZW1UaW1lID0gJFN5c3RlbVRpbWUgLSAkUmVsb2FkQmxvY2tUaW1lOwoKICAgICMgY29udmVydCB0byB0aW1lc3N0YW1wCiAgICBteSAkVGltZVN0YW1wID0gJFNlbGYtPntUaW1lT2JqZWN0fS0+U3lzdGVtVGltZTJUaW1lU3RhbXAoCiAgICAgICAgU3lzdGVtVGltZSA9PiAkU3lzdGVtVGltZSwKICAgICk7CgogICAgIyBjaGVjayBpZiBhIGxvZyBlbnRyeSBleGlzdHMgbmV3ZXIgdGhhbiB0aGUgUmVsb2FkQmxvY2tUaW1lCiAgICByZXR1cm4gaWYgISRTZWxmLT57REJPYmplY3R9LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnU0VMRUNUIGlkIEZST00gZmFxX2xvZyAnCiAgICAgICAgICAgIC4gJ1dIRVJFIGl0ZW1faWQgPSA/IEFORCBpcCA9ID8gJwogICAgICAgICAgICAuICdBTkQgdXNlcl9hZ2VudCA9ID8gQU5EIGNyZWF0ZWQgPj0gPyAnLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0l0ZW1JRH0sIFwkSVAsIFwkVXNlckFnZW50LCBcJFRpbWVTdGFtcCBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJEFscmVhZHlFeGlzdHMgPSAwOwogICAgd2hpbGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkQWxyZWFkeUV4aXN0cyA9IDE7CiAgICB9CgogICAgcmV0dXJuIGlmICRBbHJlYWR5RXhpc3RzOwoKICAgICMgaW5zZXJ0IG5ldyBsb2cgZW50cnkKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPkRvKAogICAgICAgIFNRTCA9PiAnSU5TRVJUIElOVE8gZmFxX2xvZyAnCiAgICAgICAgICAgIC4gJyhpdGVtX2lkLCBpbnRlcmZhY2UsIGlwLCB1c2VyX2FnZW50LCBjcmVhdGVkKSBWQUxVRVMgJwogICAgICAgICAgICAuICcoPywgPywgPywgPywgY3VycmVudF90aW1lc3RhbXApJywKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXCRQYXJhbXtJdGVtSUR9LCBcJFBhcmFte0ludGVyZmFjZX0sIFwkSVAsIFwkVXNlckFnZW50LAogICAgICAgIF0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBGQVFUb3AxMEdldCgpCgpSZXR1cm5zIGFuIGFycmF5IHdpdGggdGhlIHRvcCAxMCBmYXEgYXJ0aWNsZSBpZHMuCgogICAgbXkgJFRvcDEwSURzUmVmID0gJEZBUU9iamVjdC0+RkFRVG9wMTBHZXQoCiAgICAgICAgSW50ZXJmYWNlICAgPT4gJ3B1YmxpYycsCiAgICAgICAgQ2F0ZWdvcnlJRHMgPT4gWyAxLCAyLCAzIF0sICAjIChvcHRpb25hbCkgT25seSBzaG93IHRoZSBUb3AxMCBhcnRpY2xlcyBmcm9tIHRoZXNlIGNhdGVnb3JpZXMKICAgICAgICBMaW1pdCAgICAgICA9PiAxMCwgICAgICAgICAgICMgKG9wdGlvbmFsLCBkZWZhdWx0IDEwKQogICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkVG9wMTBJRHNSZWYgPSBbCiAgICAgICAgewogICAgICAgICAgICAnSXRlbUlEJyAgICA9PiAxMywKICAgICAgICAgICAgJ0NvdW50JyAgICAgPT4gMTU5LCAgICAgICAgICAgICAgICMgbnVtYmVyIG9mIHZpc2l0cwogICAgICAgICAgICAnSW50ZXJmYWNlJyA9PiAncHVibGljJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgJ0l0ZW1JRCcgICAgPT4gNiwKICAgICAgICAgICAgJ0NvdW50JyAgICAgPT4gNzgsCiAgICAgICAgICAgICdJbnRlcmZhY2UnID0+ICdwdWJsaWMnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAnSXRlbUlEJyAgICA9PiA0LAogICAgICAgICAgICAnQ291bnQnICAgICA9PiA1OSwKICAgICAgICAgICAgJ0ludGVyZmFjZScgPT4gJ2ludGVybmFsJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgJ0l0ZW1JRCcgICAgPT4gMjAsCiAgICAgICAgICAgICdDb3VudCcgICAgID0+IDI5LAogICAgICAgICAgICAnSW50ZXJmYWNlJyA9PiAncHVibGljJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgJ0l0ZW1JRCcgICAgPT4gMSwKICAgICAgICAgICAgJ0NvdW50JyAgICAgPT4gMjQsCiAgICAgICAgICAgICdJbnRlcmZhY2UnID0+ICdleHRlcm5hbCcsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICdJdGVtSUQnICAgID0+IDExLAogICAgICAgICAgICAnQ291bnQnICAgICA9PiAyNCwKICAgICAgICAgICAgJ0ludGVyZmFjZScgPT4gJ2ludGVybmFsJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgJ0l0ZW1JRCcgICAgPT4gNSwKICAgICAgICAgICAgJ0NvdW50JyAgICAgPT4gMTgsCiAgICAgICAgICAgICdJbnRlcmZhY2UnID0+ICdpbnRlcm5hbCcsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICdJdGVtSUQnICAgID0+IDksCiAgICAgICAgICAgICdDb3VudCcgICAgID0+IDE2LAogICAgICAgICAgICAnSW50ZXJmYWNlJyA9PiAnZXh0ZXJuYWwnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAnSXRlbUlEJyAgICA9PiAyLAogICAgICAgICAgICAnQ291bnQnICAgICA9PiAxNCwKICAgICAgICAgICAgJ0ludGVyZmFjZScgPT4gJ2ludGVybmFsJwogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAnSXRlbUlEJyAgICA9PiAxNCwKICAgICAgICAgICAgJ0NvdW50JyAgICAgPT4gNiwKICAgICAgICAgICAgJ0ludGVyZmFjZScgPT4gJ3B1YmxpYycsCiAgICAgICAgfQogICAgXTsKCj1jdXQKCnN1YiBGQVFUb3AxMEdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhJbnRlcmZhY2UgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGJ1aWxkIHZhbGlkIGlkIHN0cmluZwogICAgbXkgJFZhbGlkSURzU3RyaW5nID0gam9pbiAnLCAnLCAkU2VsZi0+e1ZhbGlkT2JqZWN0fS0+VmFsaWRJRHNHZXQoKTsKCiAgICAjIHByZXBhcmUgU1FMCiAgICBteSBAQmluZDsKICAgIG15ICRTUUwgPSAnU0VMRUNUIGl0ZW1faWQsIGNvdW50KGl0ZW1faWQpIGFzIGl0ZW1jb3VudCwgZmFxX3N0YXRlX3R5cGUubmFtZSwgYXBwcm92ZWQgJwogICAgICAgIC4gJ0ZST00gZmFxX2xvZywgZmFxX2l0ZW0sIGZhcV9zdGF0ZSwgZmFxX3N0YXRlX3R5cGUgJwogICAgICAgIC4gJ1dIRVJFIGZhcV9sb2cuaXRlbV9pZCA9IGZhcV9pdGVtLmlkICcKICAgICAgICAuICdBTkQgZmFxX2l0ZW0uc3RhdGVfaWQgPSBmYXFfc3RhdGUuaWQgJwogICAgICAgIC4gIkFORCBmYXFfaXRlbS52YWxpZF9pZCBJTiAoJFZhbGlkSURzU3RyaW5nKSAiCiAgICAgICAgLiAnQU5EIGZhcV9zdGF0ZS50eXBlX2lkID0gZmFxX3N0YXRlX3R5cGUuaWQgJzsKCiAgICAjIGZpbHRlciBqdXN0IGNhdGVnb3JpZXMgd2l0aCBhdCBsZWFzdCBybyBwZXJtaXNzaW9uCiAgICBpZiAoICRQYXJhbXtDYXRlZ29yeUlEc30gJiYgcmVmICRQYXJhbXtDYXRlZ29yeUlEc30gZXEgJ0FSUkFZJyAmJiBAeyAkUGFyYW17Q2F0ZWdvcnlJRHN9IH0gKSB7CgogICAgICAgICMgaW50ZWdlciBxdW90ZSB0aGUgY2F0ZWdvcnkgaWRzCiAgICAgICAgZm9yIG15ICRDYXRlZ29yeUlEICggQHsgJFBhcmFte0NhdGVnb3J5SURzfSB9ICkgewogICAgICAgICAgICAkQ2F0ZWdvcnlJRCA9ICRTZWxmLT57REJPYmplY3R9LT5RdW90ZSggJENhdGVnb3J5SUQsICdJbnRlZ2VyJyApOwogICAgICAgIH0KCiAgICAgICAgIyBidWlsZCBjYXRlZ29yeSBpZCBzdHJpbmcKICAgICAgICBteSAkQ2F0ZWdvcnlJRFN0cmluZyA9IGpvaW4gJywgJywgQHsgJFBhcmFte0NhdGVnb3J5SURzfSB9OwogICAgICAgICRTUUwgLj0gIkFORCBmYXFfaXRlbS5jYXRlZ29yeV9pZCBJTiAoJENhdGVnb3J5SURTdHJpbmcpIjsKICAgIH0KCiAgICAjIGZpbHRlciByZXN1bHRzIGZvciBwdWJsaWMgYW5kIGN1c3RvbWVyIGludGVyZmFjZQogICAgaWYgKCAoICRQYXJhbXtJbnRlcmZhY2V9IGVxICdwdWJsaWMnICkgfHwgKCAkUGFyYW17SW50ZXJmYWNlfSBlcSAnZXh0ZXJuYWwnICkgKSB7CgogICAgICAgICMgb25seSBzaG93IGFwcHJvdmVkIGFydGljbGVzCiAgICAgICAgJFNRTCAuPSAnQU5EIGZhcV9pdGVtLmFwcHJvdmVkID0gMSAnOwoKICAgICAgICAjIG9ubHkgc2hvdyB0aGUgcHVibGljIGFydGljbGVzCiAgICAgICAgJFNRTCAuPSAiQU5EICggKCBmYXFfc3RhdGVfdHlwZS5uYW1lID0gJ3B1YmxpYycgKSAiOwoKICAgICAgICAjIGN1c3RvbWVycyBjYW4gYWRkaXRpb25hbGx5IHNlZSB0aGUgZXh0ZXJuYWwgYXJ0aWNsZXMKICAgICAgICBpZiAoICRQYXJhbXtJbnRlcmZhY2V9IGVxICdleHRlcm5hbCcgKSB7CiAgICAgICAgICAgICRTUUwgLj0gIk9SICggZmFxX3N0YXRlX3R5cGUubmFtZSA9ICdleHRlcm5hbCcgKSAiOwogICAgICAgIH0KCiAgICAgICAgJFNRTCAuPSAnKSAnOwogICAgfQoKICAgICMgZmlsdGVyIHJlc3VsdHMgZm9yIGRlZmluZWQgdGltZSBwZXJpb2QKICAgIGlmICggJFBhcmFte1N0YXJ0RGF0ZX0gJiYgJFBhcmFte0VuZERhdGV9ICkgewogICAgICAgICRTUUwgLj0gJ0FORCBmYXFfbG9nLmNyZWF0ZWQgPj0gPyBBTkQgZmFxX2xvZy5jcmVhdGVkIDw9ID8gJzsKICAgICAgICBwdXNoIEBCaW5kLCAoIFwkUGFyYW17U3RhcnREYXRlfSwgXCRQYXJhbXtFbmREYXRlfSApOwogICAgfQoKICAgICMgY29tcGxldGUgU1FMIHN0YXRlbWVudAogICAgJFNRTCAuPSAnR1JPVVAgQlkgaXRlbV9pZCwgZmFxX3N0YXRlX3R5cGUubmFtZSwgYXBwcm92ZWQgJwogICAgICAgIC4gJ09SREVSIEJZIGl0ZW1jb3VudCBERVNDJzsKCiAgICAjIGdldCB0aGUgdG9wIDEwIGFydGljbGUgaWRzIGZyb20gZGF0YWJhc2UKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoCiAgICAgICAgU1FMICAgPT4gJFNRTCwKICAgICAgICBCaW5kICA9PiBcQEJpbmQsCiAgICAgICAgTGltaXQgPT4gJFBhcmFte0xpbWl0fSB8fCAxMCwKICAgICk7CgogICAgbXkgQFJlc3VsdDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgcHVzaCBAUmVzdWx0LCB7CiAgICAgICAgICAgIEl0ZW1JRCAgICA9PiAkUm93WzBdLAogICAgICAgICAgICBDb3VudCAgICAgPT4gJFJvd1sxXSwKICAgICAgICAgICAgSW50ZXJmYWNlID0+ICRSb3dbMl0sCiAgICAgICAgfTsKICAgIH0KCiAgICByZXR1cm4gXEBSZXN1bHQ7Cn0KCj1pdGVtIEZBUUlubGluZUF0dGFjaG1lbnRVUkxVcGRhdGUoKQoKVXBkYXRlcyB0aGUgVVJMcyBvZiB1cGxvYWRlZCBpbmxpbmUgYXR0YWNobWVudHMuCgogICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFJbmxpbmVBdHRhY2htZW50VVJMVXBkYXRlKAogICAgICAgIEl0ZW1JRCAgICAgPT4gMTIsCiAgICAgICAgRm9ybUlEICAgICA9PiA0NTYsCiAgICAgICAgRmlsZUlEICAgICA9PiA1LAogICAgICAgIEF0dGFjaG1lbnQgPT4gXCVBdHRhY2htZW50LAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRTdWNjZXNzID0gMTsgICAgICAgICAgICAgICAjIG9mIHVuZGVmIGlmIGF0dGFjaG1lbnQgVVJMIGNvdWxkIG5vdCBiZSB1cGRhdGVkCgo9Y3V0CgpzdWIgRkFRSW5saW5lQXR0YWNobWVudFVSTFVwZGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhJdGVtSUQgQXR0YWNobWVudCBGb3JtSUQgRmlsZUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBpZiBhdHRhY2htZW50IGlzIGEgaGFzaCByZWZlcmVuY2UKICAgIGlmICggcmVmICRQYXJhbXtBdHRhY2htZW50fSBuZSAnSEFTSCcgJiYgISV7ICRQYXJhbXtBdHRhY2htZW50fSB9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQXR0YWNobWVudCBtdXN0IGJlIGEgaGFzaCByZWZlcmVuY2UhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIG9ubHkgY29uc2lkZXIgaW5saW5lIGF0dGFjaG1lbnRzIGhlcmUgKHRoZXkgaGF2ZSBhIGNvbnRlbnQgaWQpCiAgICByZXR1cm4gMSBpZiAhJFBhcmFte0F0dGFjaG1lbnR9LT57Q29udGVudElEfTsKCiAgICAjIGdldCBmYXEgZGF0YQogICAgbXkgJUZBUURhdGEgPSAkU2VsZi0+RkFRR2V0KAogICAgICAgIEl0ZW1JRCAgICAgPT4gJFBhcmFte0l0ZW1JRH0sCiAgICAgICAgSXRlbUZpZWxkcyA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgcGljdHVyZSB1cmwgaW4gdXBsb2FkIGNhY2hlCiAgICBteSAkU2VhcmNoID0gIkFjdGlvbj1QaWN0dXJlVXBsb2FkIC4rIEZvcm1JRD0kUGFyYW17Rm9ybUlEfSAuKyAiCiAgICAgICAgLiAiQ29udGVudElEPSRQYXJhbXtBdHRhY2htZW50fS0+e0NvbnRlbnRJRH0iOwoKICAgICMgcGljdHVyZSB1cmwgaW4gZmFxIGF0dGFjaG1lbnQKICAgIG15ICRSZXBsYWNlID0gIkFjdGlvbj1BZ2VudEZBUVpvb207U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudDsiCiAgICAgICAgLiAiSXRlbUlEPSRQYXJhbXtJdGVtSUR9O0ZpbGVJRD0kUGFyYW17RmlsZUlEfSI7CgogICAgIyByZXdyaXRlIHBpY3R1cmUgdXJscwogICAgRklFTEQ6CiAgICBmb3IgbXkgJE51bWJlciAoIDEgLi4gNiApIHsKCiAgICAgICAgIyBjaGVjayBpZiBmaWVsZCBjb250YWlucyBzb21ldGhpbmcKICAgICAgICBuZXh0IEZJRUxEIGlmICEkRkFRRGF0YXsiRmllbGQkTnVtYmVyIn07CgogICAgICAgICMgcmVtb3ZlIG5ld2xpbmVzCiAgICAgICAgJEZBUURhdGF7IkZpZWxkJE51bWJlciJ9ID1+IHN7IFtcblxyXSsgfXt9Z3htczsKCiAgICAgICAgIyByZXBsYWNlIHVybAogICAgICAgICRGQVFEYXRheyJGaWVsZCROdW1iZXIifSA9fiBzeyRTZWFyY2h9eyRSZXBsYWNlfXhtczsKICAgIH0KCiAgICAjIHVwZGF0ZSBGQVEgYXJ0aWNsZSB3aXRob3V0IHdyaXRpbmcgYSBoaXN0b3J5IGVudHJ5CiAgICBteSAkT2sgPSAkU2VsZi0+RkFRVXBkYXRlKAogICAgICAgICVGQVFEYXRhLAogICAgICAgIEhpc3RvcnlPZmYgID0+IDEsCiAgICAgICAgQXBwcm92YWxPZmYgPT4gMSwKICAgICAgICBVc2VySUQgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyBjaGVjayBpZiB1cGRhdGUgd2FzIHN1Y2Nlc3NmdWwKICAgIGlmICggISRPayApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIG5vdCB1cGRhdGUgRkFRIEl0ZW0jICckUGFyYW17SXRlbUlEfSchIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWJlZ2luIEludGVybmFsOgoKPWl0ZW0gX0ZBUUFwcHJvdmFsVXBkYXRlKCkKCnVwZGF0ZSB0aGUgYXBwcm92YWwgc3RhdGUgb2YgYW4gYXJ0aWNsZQoKICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+X0ZBUUFwcHJvdmFsVXBkYXRlKAogICAgICAgIEl0ZW1JRCAgICAgPT4gMTIzLAogICAgICAgIEFwcHJvdmVkICAgPT4gMSwgICAgIyAwfDEgKGRlZmF1bHQgMCkKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIF9GQVFBcHByb3ZhbFVwZGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhJdGVtSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoICFkZWZpbmVkICRQYXJhbXtBcHByb3ZlZH0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIEFwcHJvdmVkIHBhcmFtZXRlciEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgdXBkYXRlIGRhdGFiYXNlCiAgICByZXR1cm4gaWYgISRTZWxmLT57REJPYmplY3R9LT5EbygKICAgICAgICBTUUwgPT4gJ1VQREFURSBmYXFfaXRlbSBTRVQgJwogICAgICAgICAgICAuICdhcHByb3ZlZCA9ID8sICcKICAgICAgICAgICAgLiAnY2hhbmdlZCA9IGN1cnJlbnRfdGltZXN0YW1wLCAnCiAgICAgICAgICAgIC4gJ2NoYW5nZWRfYnkgPSA/ICcKICAgICAgICAgICAgLiAnV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXCRQYXJhbXtBcHByb3ZlZH0sCiAgICAgICAgICAgIFwkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgXCRQYXJhbXtJdGVtSUR9LAogICAgICAgIF0sCiAgICApOwoKICAgICMgYXBwcm92YWwgZmVhdHVyZSBpcyBhY3RpdmF0ZWQgYW5kIGZhcSBhcnRpY2xlIGlzIG5vdCBhcHByb3ZlZCB5ZXQKICAgIGlmICggJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6QXBwcm92YWxSZXF1aXJlZCcpICYmICEkUGFyYW17QXBwcm92ZWR9ICkgewoKICAgICAgICAjIGdldCBmYXEgZGF0YQogICAgICAgIG15ICVGQVFEYXRhID0gJFNlbGYtPkZBUUdldCgKICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkUGFyYW17SXRlbUlEfSwKICAgICAgICAgICAgSXRlbUZpZWxkcyA9PiAwLAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgY3JlYXRlIG5ldyBhcHByb3ZhbCB0aWNrZXQKICAgICAgICBteSAkT2sgPSAkU2VsZi0+X0ZBUUFwcHJvdmFsVGlja2V0Q3JlYXRlKAogICAgICAgICAgICBJdGVtSUQgICAgID0+ICRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRGQVFEYXRhe0NhdGVnb3J5SUR9LAogICAgICAgICAgICBMYW5ndWFnZUlEID0+ICRGQVFEYXRhe0xhbmd1YWdlSUR9LAogICAgICAgICAgICBGQVFOdW1iZXIgID0+ICRGQVFEYXRhe051bWJlcn0sCiAgICAgICAgICAgIFRpdGxlICAgICAgPT4gJEZBUURhdGF7VGl0bGV9LAogICAgICAgICAgICBTdGF0ZUlEICAgID0+ICRGQVFEYXRhe1N0YXRlSUR9LAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgZXJyb3IKICAgICAgICBpZiAoICEkT2sgKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdDb3VsZCBub3QgY3JlYXRlIGFwcHJvdmFsIHRpY2tldCEnLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gX0ZBUUFwcHJvdmFsVGlja2V0Q3JlYXRlKCkKCmNyZWF0ZXMgYW4gYXBwcm92YWwgdGlja2V0CgogICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5fRkFRQXBwcm92YWxUaWNrZXRDcmVhdGUoCiAgICAgICAgSXRlbUlEICAgICA9PiAxMjMsCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAyLAogICAgICAgIExhbmd1YWdlSUQgPT4gMSwKICAgICAgICBGQVFOdW1iZXIgID0+IDEwMjExLAogICAgICAgIFRpdGxlICAgICAgPT4gJ1NvbWUgVGl0bGUnLAogICAgICAgIFN0YXRlSUQgICAgPT4gMSwKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIF9GQVFBcHByb3ZhbFRpY2tldENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhJdGVtSUQgQ2F0ZWdvcnlJRCBGQVFOdW1iZXIgVGl0bGUgU3RhdGVJRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IHN1YmplY3QKICAgIG15ICRTdWJqZWN0ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6QXBwcm92YWxUaWNrZXRTdWJqZWN0Jyk7CiAgICAkU3ViamVjdCA9fiBzeyA8T1RSU19GQVFfTlVNQkVSPiB9eyRQYXJhbXtGQVFOdW1iZXJ9fXhtczsKCiAgICAjIGNoZWNrIGlmIHdlIGNhbiBmaW5kIGV4aXN0aW5nIG9wZW4gYXBwcm92YWwgdGlja2V0cyBmb3IgdGhpcyBGQVEgYXJ0aWNsZQogICAgbXkgQFRpY2tldElEcyA9ICRTZWxmLT57VGlja2V0T2JqZWN0fS0+VGlja2V0U2VhcmNoKAogICAgICAgIFJlc3VsdCAgICA9PiAnQVJSQVknLAogICAgICAgIFRpdGxlICAgICA9PiAkU3ViamVjdCwKICAgICAgICBTdGF0ZVR5cGUgPT4gJ09wZW4nLAogICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgKTsKCiAgICAjIHdlIGRvbid0IG5lZWQgdG8gY3JlYXRlIGFub3RoZXIgYXBwcm92YWwgdGlja2V0IGlmIHRoZXJlIGlzIHN0aWxsIGF0IGxlYXN0IG9uZSB0aWNrZXQgb3BlbgogICAgIyBmb3IgdGhpcyBGQVEgYXJ0aWNsZQogICAgcmV0dXJuIDEgaWYgQFRpY2tldElEczsKCiAgICAjIGdldCB0aWNrZXQgdHlwZSBmcm9tIFN5c0NvbmZpZwogICAgbXkgJFRpY2tldFR5cGUgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpBcHByb3ZhbFRpY2tldFR5cGUnKSB8fCAnJzsKCiAgICAjIHZhbGlkYXRlIHRpY2tldCB0eXBlIGlmIGFueQogICAgaWYgKCRUaWNrZXRUeXBlKSB7CgogICAgICAgICMgZ2V0IGEgdGlja2V0IHR5cGUgbG9va3VwIHRhYmxlCiAgICAgICAgbXkgJVR5cGVMaXN0ICAgPSAkU2VsZi0+e1R5cGVPYmplY3R9LT5UeXBlTGlzdCgpOwogICAgICAgIG15ICVUeXBlTG9va3VwID0gcmV2ZXJzZSAlVHlwZUxpc3Q7CgogICAgICAgICMgc2V0ICRUaWNrZXRUeXBlIHRvIGVtcHR5IGlmIFRpY2tleVR5cGUgZG9lcyBub3QgYXBwZWFyIGluIHRoZSBsb29rdXAgdGFibGUuIElmIHNldCB0bwogICAgICAgICMgICAgZW1vdHkgVGlja2V0Q3JlYXRlKCkgd2lsbCB1c2UgYXMgZGVmYXVsdCBUeXBlSUQgPSAxLCBubyBtYXR0ZXIgaWYgaXQgaXMgdmFsaWQgb3Igbm90LgogICAgICAgICRUaWNrZXRUeXBlID0gJFR5cGVMb29rdXB7JFRpY2tldFR5cGV9ID8gJFRpY2tldFR5cGUgOiAnJzsKICAgIH0KCiAgICAjIGNyZWF0ZSB0aWNrZXQKICAgIG15ICRUaWNrZXRJRCA9ICRTZWxmLT57VGlja2V0T2JqZWN0fS0+VGlja2V0Q3JlYXRlKAogICAgICAgIFRpdGxlICAgID0+ICRTdWJqZWN0LAogICAgICAgIFF1ZXVlICAgID0+ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkFwcHJvdmFsUXVldWUnKSB8fCAnUmF3JywKICAgICAgICBMb2NrICAgICA9PiAndW5sb2NrJywKICAgICAgICBQcmlvcml0eSA9PiAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpBcHByb3ZhbFRpY2tldFByaW9yaXR5JykgfHwgJzMgbm9ybWFsJywKICAgICAgICBTdGF0ZSAgICA9PiAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpBcHByb3ZhbFRpY2tldERlZmF1bHRTdGF0ZScpIHx8ICduZXcnLAogICAgICAgIFR5cGUgICAgID0+ICRUaWNrZXRUeXBlLAogICAgICAgIE93bmVySUQgID0+IDEsCiAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICk7CgogICAgaWYgKCRUaWNrZXRJRCkgewoKICAgICAgICAjIGdldCBVc2VyTmFtZQogICAgICAgIG15ICRVc2VyTmFtZSA9ICRTZWxmLT57VXNlck9iamVjdH0tPlVzZXJOYW1lKAogICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgZmFxIHN0YXRlCiAgICAgICAgbXkgJVN0YXRlID0gJFNlbGYtPlN0YXRlR2V0KAogICAgICAgICAgICBTdGF0ZUlEID0+ICRQYXJhbXtTdGF0ZUlEfSwKICAgICAgICAgICAgVXNlcklEICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGNhdGVnb3JpZXMgY2FuIGJlIG5lc3RlZDsgeW91IGNhbiBoYXZlIHNvbWU6Omxvbmc6OmNhdGVnb3J5LgogICAgICAgIG15IEBDYXRlZ29yeU5hbWVzOwogICAgICAgIG15ICRDYXRlZ29yeUlEID0gJFBhcmFte0NhdGVnb3J5SUR9OwogICAgICAgIENBVEVHT1JZOgogICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgIG15ICVDYXRlZ29yeSA9ICRTZWxmLT5DYXRlZ29yeUdldCgKICAgICAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICApOwogICAgICAgICAgICBwdXNoIEBDYXRlZ29yeU5hbWVzLCAkQ2F0ZWdvcnl7TmFtZX07CiAgICAgICAgICAgIGxhc3QgQ0FURUdPUlkgaWYgISRDYXRlZ29yeXtQYXJlbnRJRH07CiAgICAgICAgICAgICRDYXRlZ29yeUlEID0gJENhdGVnb3J5e1BhcmVudElEfTsKICAgICAgICB9CiAgICAgICAgbXkgJENhdGVnb3J5ID0gam9pbiggJzo6JywgcmV2ZXJzZSBAQ2F0ZWdvcnlOYW1lcyApOwoKICAgICAgICBteSAkTGFuZ3VhZ2U7CiAgICAgICAgaWYgKCAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpNdWx0aUxhbmd1YWdlJykgKSB7CiAgICAgICAgICAgICRMYW5ndWFnZSA9ICRTZWxmLT5MYW5ndWFnZUxvb2t1cCgKICAgICAgICAgICAgICAgIExhbmd1YWdlSUQgPT4gJFBhcmFte0xhbmd1YWdlSUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJExhbmd1YWdlID0gJy0nOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgYm9keSBmcm9tIGNvbmZpZwogICAgICAgIG15ICRCb2R5ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6QXBwcm92YWxUaWNrZXRCb2R5Jyk7CiAgICAgICAgJEJvZHkgPX4gc3sgPE9UUlNfRkFRX0NBVEVHT1JZSUQ+IH17JFBhcmFte0NhdGVnb3J5SUR9fXhtczsKICAgICAgICAkQm9keSA9fiBzeyA8T1RSU19GQVFfQ0FURUdPUlk+ICAgfXskQ2F0ZWdvcnl9eG1zOwogICAgICAgICRCb2R5ID1+IHN7IDxPVFJTX0ZBUV9MQU5HVUFHRT4gICB9eyRMYW5ndWFnZX14bXM7CiAgICAgICAgJEJvZHkgPX4gc3sgPE9UUlNfRkFRX0lURU1JRD4gICAgIH17JFBhcmFte0l0ZW1JRH19eG1zOwogICAgICAgICRCb2R5ID1+IHN7IDxPVFJTX0ZBUV9OVU1CRVI+ICAgICB9eyRQYXJhbXtGQVFOdW1iZXJ9fXhtczsKICAgICAgICAkQm9keSA9fiBzeyA8T1RSU19GQVFfVElUTEU+ICAgICAgfXskUGFyYW17VGl0bGV9fXhtczsKICAgICAgICAkQm9keSA9fiBzeyA8T1RSU19GQVFfQVVUSE9SPiAgICAgfXskVXNlck5hbWV9eG1zOwogICAgICAgICRCb2R5ID1+IHN7IDxPVFJTX0ZBUV9TVEFURT4gICAgICB9eyRTdGF0ZXtOYW1lfX14bXM7CgogICAgICAgICMgY3JlYXRlIGFydGljbGUKICAgICAgICBteSAkQXJ0aWNsZUlEID0gJFNlbGYtPntUaWNrZXRPYmplY3R9LT5BcnRpY2xlQ3JlYXRlKAogICAgICAgICAgICBUaWNrZXRJRCAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgIEFydGljbGVUeXBlID0+ICdub3RlLWludGVybmFsJywKICAgICAgICAgICAgU2VuZGVyVHlwZSAgPT4gJ3N5c3RlbScsCiAgICAgICAgICAgIFN1YmplY3QgICAgID0+ICRTdWJqZWN0LAogICAgICAgICAgICBCb2R5ICAgICAgICA9PiAkQm9keSwKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgnLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICBIaXN0b3J5VHlwZSA9PiAnU3lzdGVtUmVxdWVzdCcsCiAgICAgICAgICAgIEhpc3RvcnlDb21tZW50ID0+CiAgICAgICAgICAgICAgICAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXROb3RlJyktPntIaXN0b3J5Q29tbWVudH0KICAgICAgICAgICAgICAgIHx8ICcnLAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkQXJ0aWNsZUlEOwogICAgfQoKICAgIHJldHVybjsKfQoKIwojIERlbGV0ZXMgYWxsIG5lZWRlZCBGQVEgaXRlbSBjYWNoZSBlbnRyaWVzIGZvciBhIGdpdmVuIEZBUSBJdGVtSUQuCiMKc3ViIF9EZWxldGVGcm9tRkFRQ2FjaGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KEl0ZW1JRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKCBQcmlvcml0eSA9PiAnZXJyb3InLCBNZXNzYWdlID0+ICJOZWVkICROZWVkZWQhIiApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgQ2xlYXIgRkFRR2V0IGNhY2hlCiAgICAkU2VsZi0+e0NhY2hlT2JqZWN0fS0+RGVsZXRlKAogICAgICAgIFR5cGUgPT4gJ0ZBUScsCiAgICAgICAgS2V5ICA9PiAnRkFRR2V0OjpJdGVtSUQ6OicgLiAkUGFyYW17SXRlbUlEfSAuICc6Okl0ZW1GaWVsZHM6OjEnLAogICAgKTsKICAgICRTZWxmLT57Q2FjaGVPYmplY3R9LT5EZWxldGUoCiAgICAgICAgVHlwZSA9PiAnRkFRJywKICAgICAgICBLZXkgID0+ICdGQVFHZXQ6Okl0ZW1JRDo6JyAuICRQYXJhbXtJdGVtSUR9IC4gJzo6SXRlbUZpZWxkczo6MCcsCiAgICApOwoKICAgICMgQ2xlYXIgSXRlbUZlbGRHZXQgY2FjaGUKICAgICRTZWxmLT57Q2FjaGVPYmplY3R9LT5EZWxldGUoCiAgICAgICAgVHlwZSA9PiAnRkFRJywKICAgICAgICBLZXkgID0+ICdJdGVtRmllbGRHZXQ6Okl0ZW1JRDo6JyAuICRQYXJhbXtJdGVtSUR9LAogICAgKTsKfQoKMTsKCj1lbmQgSW50ZXJuYWw6Cgo9YmFjawoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoaHR0cDovL290cnMub3JnLykuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dD4uCgo9Y3V0Cg==
IyAtLQojIEtlcm5lbC9TeXN0ZW0vRkFRU2VhcmNoLnBtIC0gYWxsIEZBUSBzZWFyY2ggZnVuY3Rpb25zCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6RkFRU2VhcmNoOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpGQVFTZWFyY2ggLSBGQVEgc2VhcmNoIGxpYgoKPWhlYWQxIFNZTk9QU0lTCgpBbGwgRkFRIHNlYXJjaCBmdW5jdGlvbnMuCgo9b3ZlciA0Cgo9Y3V0Cgo9aXRlbSBGQVFTZWFyY2goKQoKc2VhcmNoIGluIEZBUSBhcnRpY2xlcwoKICAgIG15IEBJRHMgPSAkRkFRT2JqZWN0LT5GQVFTZWFyY2goCgogICAgICAgIE51bWJlciAgICA9PiAnKjEzNConLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgVGl0bGUgICAgID0+ICcqc29tZSB0aXRsZSonLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKCiAgICAgICAgIyBpcyBzZWFyY2hpbmcgaW4gTnVtYmVyLCBUaXRsZSwgS2V5d29yZCBhbmQgRmllbGQxLTYKICAgICAgICBXaGF0ICAgICAgPT4gJypzb21lIHRleHQqJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQoKICAgICAgICBLZXl3b3JkICAgPT4gJyp3ZWJzZXJ2ZXIqJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIFN0YXRlcyAgICA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgICAgIDEgPT4gJ2ludGVybmFsJywKICAgICAgICAgICAgMiA9PiAnZXh0ZXJuYWwnLAogICAgICAgIH0sCiAgICAgICAgTGFuZ3VhZ2VJRHMgPT4gWyA0LCA1LCA2IF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBDYXRlZ29yeUlEcyA9PiBbIDcsIDgsIDkgXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIFZhbGlkSURzICAgID0+IFsgMSwgMiwgMyBdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpIChkZWZhdWx0IDEpCgogICAgICAgICMgQXBwcm92ZWQKICAgICAgICAjICAgIE9ubHkgYXZhaWxhYmxlIGluIGludGVybmFsIGludGVyZmFjZSAoYWdlbnQgaW50ZXJmYWNlKQogICAgICAgIEFwcHJvdmVkICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpIDEgb3IgMCwKCiAgICAgICAgIyBWb3RlcwogICAgICAgICMgICBBdCBsZWFzdCBvbmUgb3BlcmF0b3IgbXVzdCBiZSBzcGVjaWZpZWQuIE9wZXJhdG9ycyB3aWxsIGJlIGNvbm5lY3RlZCB3aXRoIEFORCwKICAgICAgICAjICAgICAgIHZhbHVlcyBpbiBhbiBvcGVyYXRvciB3aXRoIE9SLgogICAgICAgICMgICBZb3UgY2FuIGFsc28gcGFzcyBtb3JlIHRoYW4gb25lIGFyZ3VtZW50IHRvIGFuIG9wZXJhdG9yOiBbMTIzLCA2NTRdCiAgICAgICAgVm90ZXMgPT4gewogICAgICAgICAgICBFcXVhbHMgICAgICAgICAgICA9PiAxMjMsCiAgICAgICAgICAgIEdyZWF0ZXJUaGFuICAgICAgID0+IDEyMywKICAgICAgICAgICAgR3JlYXRlclRoYW5FcXVhbHMgPT4gMTIzLAogICAgICAgICAgICBTbWFsbGVyVGhhbiAgICAgICA9PiAxMjMsCiAgICAgICAgICAgIFNtYWxsZXJUaGFuRXF1YWxzID0+IDEyMywKICAgICAgICB9CgogICAgICAgICMgUmF0ZQogICAgICAgICMgICBBdCBsZWFzdCBvbmUgb3BlcmF0b3IgbXVzdCBiZSBzcGVjaWZpZWQuIE9wZXJhdG9ycyB3aWxsIGJlIGNvbm5lY3RlZCB3aXRoIEFORCwKICAgICAgICAjICAgICAgIHZhbHVlcyBpbiBhbiBvcGVyYXRvciB3aXRoIE9SLgogICAgICAgICMgICBZb3UgY2FuIGFsc28gcGFzcyBtb3JlIHRoYW4gb25lIGFyZ3VtZW50IHRvIGFuIG9wZXJhdG9yOiBbNTAsIDc1XQogICAgICAgIFJhdGUgPT4gewogICAgICAgICAgICBFcXVhbHMgICAgICAgICAgICA9PiA3NSwKICAgICAgICAgICAgR3JlYXRlclRoYW4gICAgICAgPT4gNzUsCiAgICAgICAgICAgIEdyZWF0ZXJUaGFuRXF1YWxzID0+IDc1LAogICAgICAgICAgICBTbWFsbGVyVGhhbiAgICAgICA9PiA3NSwKICAgICAgICAgICAgU21hbGxlclRoYW5FcXVhbHMgPT4gNzUsCiAgICAgICAgfQoKICAgICAgICAjIGNyZWF0ZSBGQVEgaXRlbSBwcm9wZXJ0aWVzIChvcHRpb25hbCkKICAgICAgICBDcmVhdGVkVXNlcklEcyA9PiBbMSwgMTIsIDQ1NSwgMzJdCgogICAgICAgICMgY2hhbmdlIEZBUSBpdGVtIHByb3BlcnRpZXMgKG9wdGlvbmFsKQogICAgICAgIExhc3RDaGFuZ2VkVXNlcklEcyA9PiBbMSwgMTIsIDQ1NSwgMzJdCgogICAgICAgICMgRkFRIGl0ZW1zIGNyZWF0ZWQgbW9yZSB0aGFuIDYwIG1pbnV0ZXMgYWdvIChpdGVtIG9sZGVyIHRoYW4gNjAgbWludXRlcykgIChvcHRpb25hbCkKICAgICAgICBJdGVtQ3JlYXRlVGltZU9sZGVyTWludXRlcyA9PiA2MCwKICAgICAgICAjIEZBUSBpdGVtIGNyZWF0ZWQgbGVzcyB0aGFuIDEyMCBtaW51dGVzIGFnbyAoaXRlbSBuZXdlciB0aGFuIDEyMCBtaW51dGVzKSAob3B0aW9uYWwpCiAgICAgICAgSXRlbUNyZWF0ZVRpbWVOZXdlck1pbnV0ZXMgPT4gMTIwLAoKICAgICAgICAjIEZBUSBpdGVtcyB3aXRoIGNyZWF0ZSB0aW1lIGFmdGVyIC4uLiAoaXRlbSBuZXdlciB0aGFuIHRoaXMgZGF0ZSkgKG9wdGlvbmFsKQogICAgICAgIEl0ZW1DcmVhdGVUaW1lTmV3ZXJEYXRlID0+ICcyMDA2LTAxLTA5IDAwOjAwOjAxJywKICAgICAgICAjIEZBUSBpdGVtcyB3aXRoIGNyZWF0ZWQgdGltZSBiZWZvcmUgLi4uIChpdGVtIG9sZGVyIHRoYW4gdGhpcyBkYXRlKSAob3B0aW9uYWwpCiAgICAgICAgSXRlbUNyZWF0ZVRpbWVPbGRlckRhdGUgPT4gJzIwMDYtMDEtMTkgMjM6NTk6NTknLAoKICAgICAgICAjIEZBUSBpdGVtcyBjaGFuZ2VkIG1vcmUgdGhhbiA2MCBtaW51dGVzIGFnbyAob3B0aW9uYWwpCiAgICAgICAgSXRlbUNoYW5nZVRpbWVPbGRlck1pbnV0ZXMgPT4gNjAsCiAgICAgICAgIyBGQVEgaXRlbXMgY2hhbmdlZCBsZXNzIHRoYW4gMTIwIG1pbnV0ZXMgYWdvIChvcHRpb25hbCkKICAgICAgICBJdGVtQ2hhbmdlVGltZU5ld2VyTWludXRlcyA9PiAxMjAsCgogICAgICAgICMgRkFRIGl0ZW0gd2l0aCBjaGFuZ2VkIHRpbWUgYWZ0ZXIgLi4uIChpdGVtIGNoYW5nZWQgbmV3ZXIgdGhhbiB0aGlzIGRhdGUpIChvcHRpb25hbCkKICAgICAgICBJdGVtQ2hhbmdlVGltZU5ld2VyRGF0ZSA9PiAnMjAwNi0wMS0wOSAwMDowMDowMScsCiAgICAgICAgIyBGQVEgaXRlbSB3aXRoIGNoYW5nZWQgdGltZSBiZWZvcmUgLi4uIChpdGVtIGNoYW5nZWQgb2xkZXIgdGhhbiB0aGlzIGRhdGUpIChvcHRpb25hbCkKICAgICAgICBJdGVtQ2hhbmdlVGltZU9sZGVyRGF0ZSA9PiAnMjAwNi0wMS0xOSAyMzo1OTo1OScsCgogICAgICAgIE9yZGVyQnkgPT4gWyAnRkFRSUQnLCAnVGl0bGUnIF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgIyBkZWZhdWx0OiBbICdGQVFJRCcgXSwKICAgICAgICAjIChGQVFJRCwgTnVtYmVyLCBUaXRsZSwgTGFuZ3VhZ2UsIENhdGVnb3J5LCBWYWxpZCwgQ3JlYXRlZCwKICAgICAgICAjIENoYW5nZWQsIFN0YXRlLCBWb3RlcywgUmVzdWx0KQoKICAgICAgICAjIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gZm9yIE9yZGVyQnk6CiAgICAgICAgIyBUaGUgT3JkZXJCeURpcmVjdGlvbiBjYW4gYmUgc3BlY2lmaWVkIGZvciBlYWNoIE9yZGVyQnkgYXR0cmlidXRlLgogICAgICAgICMgVGhlIHBhaXJpbmcgaXMgbWFkZSBieSB0aGUgYXJyYXkgaW5kZXhlcy4KCiAgICAgICAgT3JkZXJCeURpcmVjdGlvbiA9PiBbICdEb3duJywgJ1VwJyBdLCAgICAgICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICAjIGRlZmF1bHQ6IFsgJ0Rvd24nIF0KICAgICAgICAjIChEb3duIHwgVXApCgogICAgICAgIExpbWl0ICAgICA9PiAxNTAsCgogICAgICAgIEludGVyZmFjZSA9PiB7ICAgICAgICAgICAgICAjIChkZWZhdWx0IGludGVybmFsKQogICAgICAgICAgICBTdGF0ZUlEID0+IDMsCiAgICAgICAgICAgIE5hbWUgICAgPT4gJ3B1YmxpYycsICAgICMgcHVibGljfGV4dGVybmFsfGludGVybmFsCiAgICAgICAgfSwKICAgICAgICBVc2VySUQgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgIEBJRHMgPSAoCiAgICAgICAgMzIsCiAgICAgICAgMTMsCiAgICAgICAgMTIsCiAgICAgICAgOSwKICAgICAgICA2LAogICAgICAgIDUsCiAgICAgICAgNCwKICAgICAgICAxLAogICAgKTsKCj1jdXQKCnN1YiBGQVFTZWFyY2ggewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFVzZXJJRCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgc2V0IGRlZmF1bHQgaW50ZXJmYWNlCiAgICBpZiAoICEkUGFyYW17SW50ZXJmYWNlfSB8fCAhJFBhcmFte0ludGVyZmFjZX0tPntOYW1lfSApIHsKICAgICAgICAkUGFyYW17SW50ZXJmYWNlfS0+e05hbWV9ID0gJ2ludGVybmFsJzsKICAgIH0KCiAgICAjIHZlcmlmeSB0aGF0IGFsbCBwYXNzZWQgYXJyYXkgcGFyYW1ldGVycyBjb250YWluIGFuIGFycmF5cmVmCiAgICBBUkdVTUVOVDoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KE9yZGVyQnkgT3JkZXJCeURpcmVjdGlvbikpIHsKCiAgICAgICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFBhcmFteyRBcmd1bWVudH0gfHw9IFtdOwoKICAgICAgICAgICAgbmV4dCBBUkdVTUVOVDsKICAgICAgICB9CgogICAgICAgIGlmICggcmVmICRQYXJhbXskQXJndW1lbnR9IG5lICdBUlJBWScgKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICIkQXJndW1lbnQgbXVzdCBiZSBhbiBhcnJheSByZWZlcmVuY2UhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGRlZmluZSBvcmRlciB0YWJsZQogICAgbXkgJU9yZGVyQnlUYWJsZSA9ICgKCiAgICAgICAgIyBGQVEgaXRlbSBhdHRyaWJ1dGVzCiAgICAgICAgRkFRSUQgICAgPT4gJ2kuaWQnLAogICAgICAgIE51bWJlciAgID0+ICdpLmZfbnVtYmVyJywKICAgICAgICBUaXRsZSAgICA9PiAnaS5mX3N1YmplY3QnLAogICAgICAgIExhbmd1YWdlID0+ICdpLmZfbGFuZ3VhZ2VfaWQnLAogICAgICAgIENhdGVnb3J5ID0+ICdpLmNhdGVnb3J5X2lkJywKICAgICAgICBWYWxpZCAgICA9PiAnaS52YWxpZF9pZCcsCiAgICAgICAgQ3JlYXRlZCAgPT4gJ2kuY3JlYXRlZCcsCiAgICAgICAgQ2hhbmdlZCAgPT4gJ2kuY2hhbmdlZCcsCgogICAgICAgICMgU3RhdGUgYXR0cmlidXRlcwogICAgICAgIFN0YXRlID0+ICdzLm5hbWUnLAoKICAgICAgICAjIFZvdGUgYXR0cmlidXRlcwogICAgICAgIFZvdGVzICA9PiAndm90ZXMnLAogICAgICAgIFJlc3VsdCA9PiAndnJhdGUnLAogICAgKTsKCiAgICAjIGNoZWNrIGlmIE9yZGVyQnkgY29udGFpbnMgb25seSB1bmlxdWUgdmFsaWQgdmFsdWVzCiAgICBteSAlT3JkZXJCeVNlZW47CiAgICBmb3IgbXkgJE9yZGVyQnkgKCBAeyAkUGFyYW17T3JkZXJCeX0gfSApIHsKCiAgICAgICAgaWYgKCAhJE9yZGVyQnkgfHwgISRPcmRlckJ5VGFibGV7JE9yZGVyQnl9IHx8ICRPcmRlckJ5U2VlbnskT3JkZXJCeX0gKSB7CgogICAgICAgICAgICAjIGZvdW5kIGFuIGVycm9yCiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJPcmRlckJ5IGNvbnRhaW5zIGludmFsaWQgdmFsdWUgJyRPcmRlckJ5JyAiCiAgICAgICAgICAgICAgICAgICAgLiAnb3IgdGhlIHZhbHVlIGlzIHVzZWQgbW9yZSB0aGFuIG9uY2UhJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyByZW1lbWJlciB0aGUgdmFsdWUgdG8gY2hlY2sgaWYgaXQgYXBwZWFycyBtb3JlIHRoYW4gb25jZQogICAgICAgICRPcmRlckJ5U2VlbnskT3JkZXJCeX0gPSAxOwoKICAgIH0KCiAgICAjIGNoZWNrIGlmIE9yZGVyQnlEaXJlY3Rpb24gYXJyYXkgY29udGFpbnMgb25seSAnVXAnIG9yICdEb3duJwogICAgRElSRUNUSU9OOgogICAgZm9yIG15ICREaXJlY3Rpb24gKCBAeyAkUGFyYW17T3JkZXJCeURpcmVjdGlvbn0gfSApIHsKCiAgICAgICAgIyBvbmx5ICdVcCcgb3IgJ0Rvd24nIGFsbG93ZWQKICAgICAgICBuZXh0IERJUkVDVElPTiBpZiAkRGlyZWN0aW9uIGVxICdVcCc7CiAgICAgICAgbmV4dCBESVJFQ1RJT04gaWYgJERpcmVjdGlvbiBlcSAnRG93bic7CgogICAgICAgICMgZm91bmQgYW4gZXJyb3IKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk9yZGVyQnlEaXJlY3Rpb24gY2FuIG9ubHkgY29udGFpbiAnVXAnIG9yICdEb3duJyEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgYXNzZW1ibGUgdGhlIE9SREVSIEJZIGNsYXVzZQogICAgbXkgQFNRTE9yZGVyQnk7CiAgICBteSAkQ291bnQgPSAwOwogICAgZm9yIG15ICRPcmRlckJ5ICggQHsgJFBhcmFte09yZGVyQnl9IH0gKSB7CgogICAgICAgICMgc2V0IHRoZSBkZWZhdWx0IG9yZGVyIGRpcmVjdGlvbgogICAgICAgIG15ICREaXJlY3Rpb24gPSAnREVTQyc7CgogICAgICAgICMgYWRkIHRoZSBnaXZlbiBvcmRlciBkaXJlY3Rpb24KICAgICAgICBpZiAoICRQYXJhbXtPcmRlckJ5RGlyZWN0aW9ufS0+WyRDb3VudF0gKSB7CiAgICAgICAgICAgIGlmICggJFBhcmFte09yZGVyQnlEaXJlY3Rpb259LT5bJENvdW50XSBlcSAnVXAnICkgewogICAgICAgICAgICAgICAgJERpcmVjdGlvbiA9ICdBU0MnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJFBhcmFte09yZGVyQnlEaXJlY3Rpb259LT5bJENvdW50XSBlcSAnRG93bicgKSB7CiAgICAgICAgICAgICAgICAkRGlyZWN0aW9uID0gJ0RFU0MnOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGFkZCBTUUwKICAgICAgICBwdXNoIEBTUUxPcmRlckJ5LCAiJE9yZGVyQnlUYWJsZXskT3JkZXJCeX0gJERpcmVjdGlvbiI7CiAgICB9CiAgICBjb250aW51ZSB7CiAgICAgICAgJENvdW50Kys7CiAgICB9CgogICAgIyBpZiB0aGVyZSBpcyBhIHBvc3NpYmlsaXR5IHRoYXQgdGhlIG9yZGVyaW5nIGlzIG5vdCBkZXRlcm1pbmVkCiAgICAjIHdlIGFkZCBhbiBkZXNjZW5kaW5nIG9yZGVyaW5nIGJ5IGlkCiAgICBpZiAoICFncmVwIHsgJF8gZXEgJ0ZBUUlEJyB9ICggQHsgJFBhcmFte09yZGVyQnl9IH0gKSApIHsKICAgICAgICBwdXNoIEBTUUxPcmRlckJ5LCAiJE9yZGVyQnlUYWJsZXtGQVFJRH0gREVTQyI7CiAgICB9CgogICAgIyBzcWwKICAgIG15ICRTUUwgPSAnU0VMRUNUIGkuaWQsIGNvdW50KCB2Lml0ZW1faWQgKSBhcyB2b3RlcywgYXZnKCB2LnJhdGUgKSBhcyB2cmF0ZSAnCiAgICAgICAgLiAnRlJPTSBmYXFfaXRlbSBpICcKICAgICAgICAuICdMRUZUIEpPSU4gZmFxX3ZvdGluZyB2IE9OIHYuaXRlbV9pZCA9IGkuaWQgJwogICAgICAgIC4gJ0xFRlQgSk9JTiBmYXFfc3RhdGUgcyBPTiBzLmlkID0gaS5zdGF0ZV9pZCc7CgogICAgIyBleHRlbmRlZCBTUUwKICAgIG15ICRFeHQgPSAnJzsKCiAgICAjIGZ1bGx0ZXh0IHNlYXJjaAogICAgaWYgKCAkUGFyYW17V2hhdH0gJiYgJFBhcmFte1doYXR9IG5lICcqJyApIHsKCiAgICAgICAgIyBkZWZpbmUgdGhlIHNlYXJjaCBmaWVsZHMgZm9yIGZ1bGx0ZXh0IHNlYXJjaAogICAgICAgIG15IEBTZWFyY2hGaWVsZHMgPSAoICdpLmZfbnVtYmVyJywgJ2kuZl9zdWJqZWN0JywgJ2kuZl9rZXl3b3JkcycgKTsKCiAgICAgICAgIyB1c2VkIGZyb20gdGhlIGFnZW50IGludGVyZmFjZSAoaW50ZXJuYWwpCiAgICAgICAgaWYgKCAkUGFyYW17SW50ZXJmYWNlfS0+e05hbWV9IGVxICdpbnRlcm5hbCcgKSB7CgogICAgICAgICAgICBmb3IgbXkgJE51bWJlciAoIDEgLi4gNiApIHsKCiAgICAgICAgICAgICAgICAjIGdldCB0aGUgc3RhdGUgb2YgdGhlIGZpZWxkIChpbnRlcm5hbCwgZXh0ZXJuYWwsIHB1YmxpYykKICAgICAgICAgICAgICAgIG15ICRGaWVsZFN0YXRlID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoICdGQVE6Okl0ZW06OkZpZWxkJyAuICROdW1iZXIgKS0+e1Nob3d9OwoKICAgICAgICAgICAgICAgICMgYWRkIGFsbCBpbnRlcm5hbCwgZXh0ZXJuYWwgYW5kIHB1YmxpYyBmaWVsZHMKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkRmllbGRTdGF0ZSAgICBlcSAnaW50ZXJuYWwnCiAgICAgICAgICAgICAgICAgICAgfHwgJEZpZWxkU3RhdGUgZXEgJ2V4dGVybmFsJwogICAgICAgICAgICAgICAgICAgIHx8ICRGaWVsZFN0YXRlIGVxICdwdWJsaWMnCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQFNlYXJjaEZpZWxkcywgJ2kuZl9maWVsZCcgLiAkTnVtYmVyOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHVzZWQgZnJvbSB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlIChleHRlcm5hbCkKICAgICAgICBlbHNpZiAoICRQYXJhbXtJbnRlcmZhY2V9LT57TmFtZX0gZXEgJ2V4dGVybmFsJyApIHsKCiAgICAgICAgICAgIGZvciBteSAkTnVtYmVyICggMSAuLiA2ICkgewoKICAgICAgICAgICAgICAgICMgZ2V0IHRoZSBzdGF0ZSBvZiB0aGUgZmllbGQgKGludGVybmFsLCBleHRlcm5hbCwgcHVibGljKQogICAgICAgICAgICAgICAgbXkgJEZpZWxkU3RhdGUgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCggJ0ZBUTo6SXRlbTo6RmllbGQnIC4gJE51bWJlciApLT57U2hvd307CgogICAgICAgICAgICAgICAgIyBhZGQgYWxsIGV4dGVybmFsIGFuZCBwdWJsaWMgZmllbGRzCiAgICAgICAgICAgICAgICBpZiAoICRGaWVsZFN0YXRlIGVxICdleHRlcm5hbCcgfHwgJEZpZWxkU3RhdGUgZXEgJ3B1YmxpYycgKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAU2VhcmNoRmllbGRzLCAnaS5mX2ZpZWxkJyAuICROdW1iZXI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgdXNlZCBmcm9tIHRoZSBwdWJsaWMgaW50ZXJmYWNlIChwdWJsaWMpCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGZvciBteSAkTnVtYmVyICggMSAuLiA2ICkgewoKICAgICAgICAgICAgICAgICMgZ2V0IHRoZSBzdGF0ZSBvZiB0aGUgZmllbGQgKGludGVybmFsLCBleHRlcm5hbCwgcHVibGljKQogICAgICAgICAgICAgICAgbXkgJEZpZWxkU3RhdGUgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCggJ0ZBUTo6SXRlbTo6RmllbGQnIC4gJE51bWJlciApLT57U2hvd307CgogICAgICAgICAgICAgICAgIyBhZGQgYWxsIHB1YmxpYyBmaWVsZHMKICAgICAgICAgICAgICAgIGlmICggJEZpZWxkU3RhdGUgZXEgJ3B1YmxpYycgKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAU2VhcmNoRmllbGRzLCAnaS5mX2ZpZWxkJyAuICROdW1iZXI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgYWRkIHRoZSBTUUwgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2gKICAgICAgICAkRXh0IC49ICRTZWxmLT57REJPYmplY3R9LT5RdWVyeUNvbmRpdGlvbigKICAgICAgICAgICAgS2V5ICAgICAgICAgID0+IFxAU2VhcmNoRmllbGRzLAogICAgICAgICAgICBWYWx1ZSAgICAgICAgPT4gJFBhcmFte1doYXR9LAogICAgICAgICAgICBTZWFyY2hQcmVmaXggPT4gJyonLAogICAgICAgICAgICBTZWFyY2hTdWZmaXggPT4gJyonLAogICAgICAgICk7CiAgICB9CgogICAgIyBzZWFyY2ggZm9yIHRoZSBudW1iZXIKICAgIGlmICggJFBhcmFte051bWJlcn0gKSB7CiAgICAgICAgJFBhcmFte051bWJlcn0gPX4gcy9cKi8lL2c7CiAgICAgICAgJFBhcmFte051bWJlcn0gPX4gcy8lJS8lL2c7CiAgICAgICAgJFBhcmFte051bWJlcn0gPSAkU2VsZi0+e0RCT2JqZWN0fS0+UXVvdGUoICRQYXJhbXtOdW1iZXJ9LCAnTGlrZScgKTsKICAgICAgICBpZiAoJEV4dCkgewogICAgICAgICAgICAkRXh0IC49ICcgQU5EJzsKICAgICAgICB9CiAgICAgICAgJEV4dCAuPSAiIExPV0VSKGkuZl9udW1iZXIpIExJS0UgTE9XRVIoJyIgLiAkUGFyYW17TnVtYmVyfSAuICInKSAkU2VsZi0+e0xpa2VFc2NhcGVTdHJpbmd9IjsKICAgIH0KCiAgICAjIHNlYXJjaCBmb3IgdGhlIHRpdGxlCiAgICBpZiAoICRQYXJhbXtUaXRsZX0gKSB7CiAgICAgICAgJFBhcmFte1RpdGxlfSA9ICJcJSRQYXJhbXtUaXRsZX1cJSI7CiAgICAgICAgJFBhcmFte1RpdGxlfSA9fiBzL1wqLyUvZzsKICAgICAgICAkUGFyYW17VGl0bGV9ID1+IHMvJSUvJS9nOwogICAgICAgICRQYXJhbXtUaXRsZX0gPSAkU2VsZi0+e0RCT2JqZWN0fS0+UXVvdGUoICRQYXJhbXtUaXRsZX0sICdMaWtlJyApOwogICAgICAgIGlmICgkRXh0KSB7CiAgICAgICAgICAgICRFeHQgLj0gJyBBTkQnOwogICAgICAgIH0KICAgICAgICAkRXh0IC49ICIgTE9XRVIoaS5mX3N1YmplY3QpIExJS0UgTE9XRVIoJyIgLiAkUGFyYW17VGl0bGV9IC4gIicpICRTZWxmLT57TGlrZUVzY2FwZVN0cmluZ30iOwogICAgfQoKICAgICMgc2VhcmNoIGZvciBsYW5ndWFnZXMKICAgIGlmICggJFBhcmFte0xhbmd1YWdlSURzfSAmJiByZWYgJFBhcmFte0xhbmd1YWdlSURzfSBlcSAnQVJSQVknICYmIEB7ICRQYXJhbXtMYW5ndWFnZUlEc30gfSApIHsKCiAgICAgICAgbXkgJEluU3RyaW5nID0gJFNlbGYtPl9JbkNvbmRpdGlvbkdldCgKICAgICAgICAgICAgVGFibGVDb2x1bW4gPT4gJ2kuZl9sYW5ndWFnZV9pZCcsCiAgICAgICAgICAgIElEUmVmICAgICAgID0+ICRQYXJhbXtMYW5ndWFnZUlEc30sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCRFeHQpIHsKICAgICAgICAgICAgJEV4dCAuPSAnIEFORCc7CiAgICAgICAgfQogICAgICAgICRFeHQgLj0gJEluU3RyaW5nOwogICAgfQoKICAgICMgc2VhcmNoIGZvciBjYXRlZ29yaWVzCiAgICBpZiAoICRQYXJhbXtDYXRlZ29yeUlEc30gJiYgcmVmICRQYXJhbXtDYXRlZ29yeUlEc30gZXEgJ0FSUkFZJyAmJiBAeyAkUGFyYW17Q2F0ZWdvcnlJRHN9IH0gKSB7CgogICAgICAgIG15ICRJblN0cmluZyA9ICRTZWxmLT5fSW5Db25kaXRpb25HZXQoCiAgICAgICAgICAgIFRhYmxlQ29sdW1uID0+ICdpLmNhdGVnb3J5X2lkJywKICAgICAgICAgICAgSURSZWYgICAgICAgPT4gJFBhcmFte0NhdGVnb3J5SURzfSwKICAgICAgICApOwoKICAgICAgICBpZiAoJEV4dCkgewogICAgICAgICAgICAkRXh0IC49ICcgQU5EJzsKICAgICAgICB9CiAgICAgICAgJEV4dCAuPSAkSW5TdHJpbmc7CiAgICB9CgogICAgIyBzZXQgZGVmYXVsdCB2YWx1ZSBmb3IgVmFsaWRJRHMgKG9ubHkgc2VhcmNoIGZvciB2YWxpZCBGQVFzKQogICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17VmFsaWRJRHN9ICkgewoKICAgICAgICAjIGdldCB0aGUgdmFsaWQgaWRzCiAgICAgICAgbXkgQFZhbGlkSURzID0gJFNlbGYtPntWYWxpZE9iamVjdH0tPlZhbGlkSURzR2V0KCk7CgogICAgICAgICRQYXJhbXtWYWxpZElEc30gPSBcQFZhbGlkSURzOwogICAgfQoKICAgICMgc2VhcmNoIGZvciBWYWxpZElEcwogICAgaWYgKCAkUGFyYW17VmFsaWRJRHN9ICYmIHJlZiAkUGFyYW17VmFsaWRJRHN9IGVxICdBUlJBWScgJiYgQHsgJFBhcmFte1ZhbGlkSURzfSB9ICkgewoKICAgICAgICBteSAkSW5TdHJpbmcgPSAkU2VsZi0+X0luQ29uZGl0aW9uR2V0KAogICAgICAgICAgICBUYWJsZUNvbHVtbiA9PiAnaS52YWxpZF9pZCcsCiAgICAgICAgICAgIElEUmVmICAgICAgID0+ICRQYXJhbXtWYWxpZElEc30sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCRFeHQpIHsKICAgICAgICAgICAgJEV4dCAuPSAnIEFORCc7CiAgICAgICAgfQogICAgICAgICRFeHQgLj0gJEluU3RyaW5nOwogICAgfQoKICAgICMgc2VhcmNoIGZvciBzdGF0ZXMKICAgIGlmICggJFBhcmFte1N0YXRlc30gJiYgcmVmICRQYXJhbXtTdGF0ZXN9IGVxICdIQVNIJyAmJiAleyAkUGFyYW17U3RhdGVzfSB9ICkgewoKICAgICAgICBteSBAU3RhdGVzID0gbWFwIHskX30ga2V5cyAleyAkUGFyYW17U3RhdGVzfSB9OwoKICAgICAgICBteSAkSW5TdHJpbmcgPSAkU2VsZi0+X0luQ29uZGl0aW9uR2V0KAogICAgICAgICAgICBUYWJsZUNvbHVtbiA9PiAncy50eXBlX2lkJywKICAgICAgICAgICAgSURSZWYgICAgICAgPT4gXEBTdGF0ZXMsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCRFeHQpIHsKICAgICAgICAgICAgJEV4dCAuPSAnIEFORCc7CiAgICAgICAgfQogICAgICAgICRFeHQgLj0gJEluU3RyaW5nOwogICAgfQoKICAgICMgc2VhcmNoIGZvciBrZXl3b3JkcwogICAgaWYgKCAkUGFyYW17S2V5d29yZH0gKSB7CiAgICAgICAgaWYgKCRFeHQpIHsKICAgICAgICAgICAgJEV4dCAuPSAnIEFORCc7CiAgICAgICAgfQogICAgICAgICRQYXJhbXtLZXl3b3JkfSA9ICJcJSRQYXJhbXtLZXl3b3JkfVwlIjsKICAgICAgICAkUGFyYW17S2V5d29yZH0gPX4gcy9cKi8lL2c7CiAgICAgICAgJFBhcmFte0tleXdvcmR9ID1+IHMvJSUvJS9nOwogICAgICAgICRQYXJhbXtLZXl3b3JkfSA9ICRTZWxmLT57REJPYmplY3R9LT5RdW90ZSggJFBhcmFte0tleXdvcmR9LCAnTGlrZScgKTsKCiAgICAgICAgaWYgKCAkU2VsZi0+e0RCT2JqZWN0fS0+R2V0RGF0YWJhc2VGdW5jdGlvbignTm9Mb3dlckluTGFyZ2VUZXh0JykgKSB7CiAgICAgICAgICAgICRFeHQgLj0gIiBpLmZfa2V5d29yZHMgTElLRSAnIiAuICRQYXJhbXtLZXl3b3JkfSAuICInICRTZWxmLT57TGlrZUVzY2FwZVN0cmluZ30iOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRTZWxmLT57REJPYmplY3R9LT5HZXREYXRhYmFzZUZ1bmN0aW9uKCdMY2FzZUxpa2VJbkxhcmdlVGV4dCcpICkgewogICAgICAgICAgICAkRXh0CiAgICAgICAgICAgICAgICAuPSAiIExDQVNFKGkuZl9rZXl3b3JkcykgTElLRSBMQ0FTRSgnIgogICAgICAgICAgICAgICAgLiAkUGFyYW17S2V5d29yZH0KICAgICAgICAgICAgICAgIC4gIicpICRTZWxmLT57TGlrZUVzY2FwZVN0cmluZ30iOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJEV4dAogICAgICAgICAgICAgICAgLj0gIiBMT1dFUihpLmZfa2V5d29yZHMpIExJS0UgTE9XRVIoJyIKICAgICAgICAgICAgICAgIC4gJFBhcmFte0tleXdvcmR9CiAgICAgICAgICAgICAgICAuICInKSAkU2VsZi0+e0xpa2VFc2NhcGVTdHJpbmd9IjsKICAgICAgICB9CiAgICB9CgogICAgIyBzaG93IG9ubHkgYXBwcm92ZWQgZmFxIGFydGljbGVzIGZvciBwdWJsaWMgYW5kIGN1c3RvbWVyIGludGVyZmFjZQogICAgaWYgKCAkUGFyYW17SW50ZXJmYWNlfS0+e05hbWV9IGVxICdwdWJsaWMnIHx8ICRQYXJhbXtJbnRlcmZhY2V9LT57TmFtZX0gZXEgJ2V4dGVybmFsJyApIHsKICAgICAgICBpZiAoJEV4dCkgewogICAgICAgICAgICAkRXh0IC49ICcgQU5EJzsKICAgICAgICB9CiAgICAgICAgJEV4dCAuPSAnIGkuYXBwcm92ZWQgPSAxJzsKICAgIH0KCiAgICAjIG90aGVyd2lzZSBjaGVjayBpZiBuZWVkIHRvIHNlYXJjaCBmb3IgYXBwcm92ZWQgc3RhdHVzCiAgICBlbHNpZiAoIGRlZmluZWQgJFBhcmFte0FwcHJvdmVkfSApIHsKICAgICAgICBteSAkQXBwcm92ZWRWYWx1ZSA9ICRQYXJhbXtBcHByb3ZlZH0gPyAxIDogMDsKICAgICAgICBpZiAoJEV4dCkgewogICAgICAgICAgICAkRXh0IC49ICcgQU5EJzsKICAgICAgICB9CiAgICAgICAgJEV4dCAuPSAiIGkuYXBwcm92ZWQgPSAkQXBwcm92ZWRWYWx1ZSI7CiAgICB9CgogICAgIyBzZWFyY2ggZm9yIGNyZWF0ZSB1c2VycwogICAgaWYgKAogICAgICAgICRQYXJhbXtDcmVhdGVkVXNlcklEc30KICAgICAgICAmJiByZWYgJFBhcmFte0NyZWF0ZWRVc2VySURzfSBlcSAnQVJSQVknCiAgICAgICAgJiYgQHsgJFBhcmFte0NyZWF0ZWRVc2VySURzfSB9CiAgICAgICAgKQogICAgewoKICAgICAgICBteSAkSW5TdHJpbmcgPSAkU2VsZi0+X0luQ29uZGl0aW9uR2V0KAogICAgICAgICAgICBUYWJsZUNvbHVtbiA9PiAnaS5jcmVhdGVkX2J5JywKICAgICAgICAgICAgSURSZWYgICAgICAgPT4gJFBhcmFte0NyZWF0ZWRVc2VySURzfSwKICAgICAgICApOwoKICAgICAgICBpZiAoJEV4dCkgewogICAgICAgICAgICAkRXh0IC49ICcgQU5EJzsKICAgICAgICB9CiAgICAgICAgJEV4dCAuPSAkSW5TdHJpbmc7CiAgICB9CgogICAgIyBzZWFyY2ggZm9yIGxhc3QgY2hhbmdlIHVzZXJzCiAgICBpZiAoCiAgICAgICAgJFBhcmFte0xhc3RDaGFuZ2VkVXNlcklEc30KICAgICAgICAmJiByZWYgJFBhcmFte0xhc3RDaGFuZ2VkVXNlcklEc30gZXEgJ0FSUkFZJwogICAgICAgICYmIEB7ICRQYXJhbXtMYXN0Q2hhbmdlZFVzZXJJRHN9IH0KICAgICAgICApCiAgICB7CgogICAgICAgIG15ICRJblN0cmluZyA9ICRTZWxmLT5fSW5Db25kaXRpb25HZXQoCiAgICAgICAgICAgIFRhYmxlQ29sdW1uID0+ICdpLmNoYW5nZWRfYnknLAogICAgICAgICAgICBJRFJlZiAgICAgICA9PiAkUGFyYW17TGFzdENoYW5nZWRVc2VySURzfSwKICAgICAgICApOwoKICAgICAgICBpZiAoJEV4dCkgewogICAgICAgICAgICAkRXh0IC49ICcgQU5EJzsKICAgICAgICB9CiAgICAgICAgJEV4dCAuPSAkSW5TdHJpbmc7CiAgICB9CgogICAgIyBzZWFyY2ggZm9yIGNyZWF0ZSBhbmQgY2hhbmdlIHRpbWVzCiAgICAjIHJlbWVtYmVyIGN1cnJlbnQgdGltZSB0byBwcmV2ZW50IHNlYXJjaGVzIGZvciBmdXR1cmUgdGltZXN0YW1wcwogICAgbXkgJEN1cnJlbnRTeXN0ZW1UaW1lID0gJFNlbGYtPntUaW1lT2JqZWN0fS0+U3lzdGVtVGltZSgpOwoKICAgICMgZ2V0IEZBUSBpdGVtcyBjcmVhdGVkIG9sZGVyIHRoYW4geCBtaW51dGVzCiAgICBpZiAoIGRlZmluZWQgJFBhcmFte0l0ZW1DcmVhdGVUaW1lT2xkZXJNaW51dGVzfSApIHsKCiAgICAgICAgJFBhcmFte0l0ZW1DcmVhdGVUaW1lT2xkZXJNaW51dGVzfSB8fD0gMDsKCiAgICAgICAgbXkgJFRpbWVTdGFtcCA9ICRTZWxmLT57VGltZU9iamVjdH0tPlN5c3RlbVRpbWUoKTsKICAgICAgICAkVGltZVN0YW1wIC09ICggJFBhcmFte0l0ZW1DcmVhdGVUaW1lT2xkZXJNaW51dGVzfSAqIDYwICk7CgogICAgICAgICRQYXJhbXtJdGVtQ3JlYXRlVGltZU9sZGVyRGF0ZX0gPSAkU2VsZi0+e1RpbWVPYmplY3R9LT5TeXN0ZW1UaW1lMlRpbWVTdGFtcCgKICAgICAgICAgICAgU3lzdGVtVGltZSA9PiAkVGltZVN0YW1wLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgRkFRIGl0ZW1zIGNyZWF0ZWQgbmV3ZXIgdGhhbiB4IG1pbnV0ZXMKICAgIGlmICggZGVmaW5lZCAkUGFyYW17SXRlbUNyZWF0ZVRpbWVOZXdlck1pbnV0ZXN9ICkgewoKICAgICAgICAkUGFyYW17SXRlbUNyZWF0ZVRpbWVOZXdlck1pbnV0ZXN9IHx8PSAwOwoKICAgICAgICBteSAkVGltZVN0YW1wID0gJFNlbGYtPntUaW1lT2JqZWN0fS0+U3lzdGVtVGltZSgpOwogICAgICAgICRUaW1lU3RhbXAgLT0gKCAkUGFyYW17SXRlbUNyZWF0ZVRpbWVOZXdlck1pbnV0ZXN9ICogNjAgKTsKCiAgICAgICAgJFBhcmFte0l0ZW1DcmVhdGVUaW1lTmV3ZXJEYXRlfSA9ICRTZWxmLT57VGltZU9iamVjdH0tPlN5c3RlbVRpbWUyVGltZVN0YW1wKAogICAgICAgICAgICBTeXN0ZW1UaW1lID0+ICRUaW1lU3RhbXAsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBGQVEgaXRlbXMgY3JlYXRlZCBvbGRlciB0aGFuIHh4eHgteHgteHggeHg6eHggZGF0ZQogICAgbXkgJENvbXBhcmVDcmVhdGVUaW1lT2xkZXJOZXdlckRhdGU7CiAgICBpZiAoICRQYXJhbXtJdGVtQ3JlYXRlVGltZU9sZGVyRGF0ZX0gKSB7CgogICAgICAgICMgY2hlY2sgdGltZSBmb3JtYXQKICAgICAgICBpZiAoCiAgICAgICAgICAgICRQYXJhbXtJdGVtQ3JlYXRlVGltZU9sZGVyRGF0ZX0KICAgICAgICAgICAgIX4gL1xkXGRcZFxkLShcZFxkfFxkKS0oXGRcZHxcZCkgKFxkXGR8XGQpOihcZFxkfFxkKTooXGRcZHxcZCkvCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJJbnZhbGlkIHRpbWUgZm9ybWF0ICckUGFyYW17SXRlbUNyZWF0ZVRpbWVPbGRlckRhdGV9JyEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIG15ICRUaW1lID0gJFNlbGYtPntUaW1lT2JqZWN0fS0+VGltZVN0YW1wMlN5c3RlbVRpbWUoCiAgICAgICAgICAgIFN0cmluZyA9PiAkUGFyYW17SXRlbUNyZWF0ZVRpbWVPbGRlckRhdGV9LAogICAgICAgICk7CiAgICAgICAgaWYgKCAhJFRpbWUgKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAiU2VhcmNoIG5vdCBleGVjdXRlZCBkdWUgdG8gaW52YWxpZCB0aW1lICciCiAgICAgICAgICAgICAgICAgICAgLiAkUGFyYW17SXRlbUNyZWF0ZVRpbWVPbGRlckRhdGV9IC4gIichIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAkQ29tcGFyZUNyZWF0ZVRpbWVPbGRlck5ld2VyRGF0ZSA9ICRUaW1lOwoKICAgICAgICAkRXh0IC49ICIgQU5EIGkuY3JlYXRlZCA8PSAnIgogICAgICAgICAgICAuICRTZWxmLT57REJPYmplY3R9LT5RdW90ZSggJFBhcmFte0l0ZW1DcmVhdGVUaW1lT2xkZXJEYXRlfSApIC4gIiciOwogICAgfQoKICAgICMgZ2V0IEl0ZW1zIGNoYW5nZWQgbmV3ZXIgdGhhbiB4eHh4LXh4LXh4IHh4Onh4IGRhdGUKICAgIGlmICggJFBhcmFte0l0ZW1DcmVhdGVUaW1lTmV3ZXJEYXRlfSApIHsKICAgICAgICBpZiAoCiAgICAgICAgICAgICRQYXJhbXtJdGVtQ3JlYXRlVGltZU5ld2VyRGF0ZX0KICAgICAgICAgICAgIX4gL1xkXGRcZFxkLShcZFxkfFxkKS0oXGRcZHxcZCkgKFxkXGR8XGQpOihcZFxkfFxkKTooXGRcZHxcZCkvCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJJbnZhbGlkIHRpbWUgZm9ybWF0ICckUGFyYW17SXRlbUNyZWF0ZVRpbWVOZXdlckRhdGV9JyEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIG15ICRUaW1lID0gJFNlbGYtPntUaW1lT2JqZWN0fS0+VGltZVN0YW1wMlN5c3RlbVRpbWUoCiAgICAgICAgICAgIFN0cmluZyA9PiAkUGFyYW17SXRlbUNyZWF0ZVRpbWVOZXdlckRhdGV9LAogICAgICAgICk7CiAgICAgICAgaWYgKCAhJFRpbWUgKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAiU2VhcmNoIG5vdCBleGVjdXRlZCBkdWUgdG8gaW52YWxpZCB0aW1lICciCiAgICAgICAgICAgICAgICAgICAgLiAkUGFyYW17SXRlbUNyZWF0ZVRpbWVOZXdlckRhdGV9IC4gIichIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyBkb24ndCBleGVjdXRlIHF1ZXJpZXMgaWYgbmV3ZXIgZGF0ZSBpcyBhZnRlciBjdXJyZW50IGRhdGUKICAgICAgICByZXR1cm4gaWYgJFRpbWUgPiAkQ3VycmVudFN5c3RlbVRpbWU7CgogICAgICAgICMgZG9uJ3QgZXhlY3V0ZSBxdWVyaWVzIGlmIG9sZGVyL25ld2VyIGRhdGUgcmVzdHJpY3Rpb24gc2hvdyBub3cgdmFsaWQgdGltZWZyYW1lCiAgICAgICAgcmV0dXJuIGlmICRDb21wYXJlQ3JlYXRlVGltZU9sZGVyTmV3ZXJEYXRlICYmICRUaW1lID4gJENvbXBhcmVDcmVhdGVUaW1lT2xkZXJOZXdlckRhdGU7CgogICAgICAgICRFeHQgLj0gIiBBTkQgaS5jcmVhdGVkID49ICciCiAgICAgICAgICAgIC4gJFNlbGYtPntEQk9iamVjdH0tPlF1b3RlKCAkUGFyYW17SXRlbUNyZWF0ZVRpbWVOZXdlckRhdGV9ICkgLiAiJyI7CiAgICB9CgogICAgIyBnZXQgRkFRIGl0ZW1zIGNoYW5nZWQgb2xkZXIgdGhhbiB4IG1pbnV0ZXMKICAgIGlmICggZGVmaW5lZCAkUGFyYW17SXRlbUNoYW5nZVRpbWVPbGRlck1pbnV0ZXN9ICkgewoKICAgICAgICAkUGFyYW17SXRlbUNoYW5nZVRpbWVPbGRlck1pbnV0ZXN9IHx8PSAwOwoKICAgICAgICBteSAkVGltZVN0YW1wID0gJFNlbGYtPntUaW1lT2JqZWN0fS0+U3lzdGVtVGltZSgpOwogICAgICAgICRUaW1lU3RhbXAgLT0gKCAkUGFyYW17SXRlbUNoYW5nZVRpbWVPbGRlck1pbnV0ZXN9ICogNjAgKTsKCiAgICAgICAgJFBhcmFte0l0ZW1DaGFuZ2VUaW1lT2xkZXJEYXRlfSA9ICRTZWxmLT57VGltZU9iamVjdH0tPlN5c3RlbVRpbWUyVGltZVN0YW1wKAogICAgICAgICAgICBTeXN0ZW1UaW1lID0+ICRUaW1lU3RhbXAsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBGQVEgaXRlbXMgY2hhbmdlZCBuZXdlciB0aGFuIHggbWludXRlcwogICAgaWYgKCBkZWZpbmVkICRQYXJhbXtJdGVtQ2hhbmdlVGltZU5ld2VyTWludXRlc30gKSB7CgogICAgICAgICRQYXJhbXtJdGVtQ2hhbmdlVGltZU5ld2VyTWludXRlc30gfHw9IDA7CgogICAgICAgIG15ICRUaW1lU3RhbXAgPSAkU2VsZi0+e1RpbWVPYmplY3R9LT5TeXN0ZW1UaW1lKCk7CiAgICAgICAgJFRpbWVTdGFtcCAtPSAoICRQYXJhbXtJdGVtQ2hhbmdlVGltZU5ld2VyTWludXRlc30gKiA2MCApOwoKICAgICAgICAkUGFyYW17SXRlbUNoYW5nZVRpbWVOZXdlckRhdGV9ID0gJFNlbGYtPntUaW1lT2JqZWN0fS0+U3lzdGVtVGltZTJUaW1lU3RhbXAoCiAgICAgICAgICAgIFN5c3RlbVRpbWUgPT4gJFRpbWVTdGFtcCwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IEZBUSBpdGVtcyBjaGFuZ2VkIG9sZGVyIHRoYW4geHh4eC14eC14eCB4eDp4eCBkYXRlCiAgICBteSAkQ29tcGFyZUNoYW5nZVRpbWVPbGRlck5ld2VyRGF0ZTsKICAgIGlmICggJFBhcmFte0l0ZW1DaGFuZ2VUaW1lT2xkZXJEYXRlfSApIHsKCiAgICAgICAgIyBjaGVjayB0aW1lIGZvcm1hdAogICAgICAgIGlmICgKICAgICAgICAgICAgJFBhcmFte0l0ZW1DaGFuZ2VUaW1lT2xkZXJEYXRlfQogICAgICAgICAgICAhfiAvXGRcZFxkXGQtKFxkXGR8XGQpLShcZFxkfFxkKSAoXGRcZHxcZCk6KFxkXGR8XGQpOihcZFxkfFxkKS8KICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkludmFsaWQgdGltZSBmb3JtYXQgJyRQYXJhbXtJdGVtQ2hhbmdlVGltZU9sZGVyRGF0ZX0nISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgbXkgJFRpbWUgPSAkU2VsZi0+e1RpbWVPYmplY3R9LT5UaW1lU3RhbXAyU3lzdGVtVGltZSgKICAgICAgICAgICAgU3RyaW5nID0+ICRQYXJhbXtJdGVtQ2hhbmdlVGltZU9sZGVyRGF0ZX0sCiAgICAgICAgKTsKICAgICAgICBpZiAoICEkVGltZSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICJTZWFyY2ggbm90IGV4ZWN1dGVkIGR1ZSB0byBpbnZhbGlkIHRpbWUgJyIKICAgICAgICAgICAgICAgICAgICAuICRQYXJhbXtJdGVtQ2hhbmdlVGltZU9sZGVyRGF0ZX0gLiAiJyEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgICRDb21wYXJlQ2hhbmdlVGltZU9sZGVyTmV3ZXJEYXRlID0gJFRpbWU7CgogICAgICAgICRFeHQgLj0gIiBBTkQgaS5jaGFuZ2VkIDw9ICciCiAgICAgICAgICAgIC4gJFNlbGYtPntEQk9iamVjdH0tPlF1b3RlKCAkUGFyYW17SXRlbUNoYW5nZVRpbWVPbGRlckRhdGV9ICkgLiAiJyI7CiAgICB9CgogICAgIyBnZXQgSXRlbXMgY2hhbmdlZCBuZXdlciB0aGFuIHh4eHgteHgteHggeHg6eHggZGF0ZQogICAgaWYgKCAkUGFyYW17SXRlbUNoYW5nZVRpbWVOZXdlckRhdGV9ICkgewogICAgICAgIGlmICgKICAgICAgICAgICAgJFBhcmFte0l0ZW1DaGFuZ2VUaW1lTmV3ZXJEYXRlfQogICAgICAgICAgICAhfiAvXGRcZFxkXGQtKFxkXGR8XGQpLShcZFxkfFxkKSAoXGRcZHxcZCk6KFxkXGR8XGQpOihcZFxkfFxkKS8KICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkludmFsaWQgdGltZSBmb3JtYXQgJyRQYXJhbXtJdGVtQ2hhbmdlVGltZU5ld2VyRGF0ZX0nISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgbXkgJFRpbWUgPSAkU2VsZi0+e1RpbWVPYmplY3R9LT5UaW1lU3RhbXAyU3lzdGVtVGltZSgKICAgICAgICAgICAgU3RyaW5nID0+ICRQYXJhbXtJdGVtQ2hhbmdlVGltZU5ld2VyRGF0ZX0sCiAgICAgICAgKTsKICAgICAgICBpZiAoICEkVGltZSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICJTZWFyY2ggbm90IGV4ZWN1dGVkIGR1ZSB0byBpbnZhbGlkIHRpbWUgJyIKICAgICAgICAgICAgICAgICAgICAuICRQYXJhbXtJdGVtQ2hhbmdlVGltZU5ld2VyRGF0ZX0gLiAiJyEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAjIGRvbid0IGV4ZWN1dGUgcXVlcmllcyBpZiBuZXdlciBkYXRlIGlzIGFmdGVyIGN1cnJlbnQgZGF0ZQogICAgICAgIHJldHVybiBpZiAkVGltZSA+ICRDdXJyZW50U3lzdGVtVGltZTsKCiAgICAgICAgIyBkb24ndCBleGVjdXRlIHF1ZXJpZXMgaWYgb2xkZXIvbmV3ZXIgZGF0ZSByZXN0cmljdGlvbiBzaG93IG5vdyB2YWxpZCB0aW1lZnJhbWUKICAgICAgICByZXR1cm4gaWYgJENvbXBhcmVDaGFuZ2VUaW1lT2xkZXJOZXdlckRhdGUgJiYgJFRpbWUgPiAkQ29tcGFyZUNoYW5nZVRpbWVPbGRlck5ld2VyRGF0ZTsKCiAgICAgICAgJEV4dCAuPSAiIEFORCBpLmNoYW5nZWQgPj0gJyIKICAgICAgICAgICAgLiAkU2VsZi0+e0RCT2JqZWN0fS0+UXVvdGUoICRQYXJhbXtJdGVtQ2hhbmdlVGltZU5ld2VyRGF0ZX0gKSAuICInIjsKICAgIH0KCiAgICAjIGFkZCBXSEVSRSBzdGF0ZW1lbnQKICAgIGlmICgkRXh0KSB7CiAgICAgICAgJEV4dCA9ICcgV0hFUkUgJyAuICRFeHQ7CiAgICB9CgogICAgIyBhZGQgR1JPVVAgQlkKICAgICRFeHQKICAgICAgICAuPSAnIEdST1VQIEJZIGkuaWQsIGkuZl9zdWJqZWN0LCBpLmZfbGFuZ3VhZ2VfaWQsIGkuY3JlYXRlZCwgaS5jaGFuZ2VkLCBzLm5hbWUsIHYuaXRlbV9pZCAnOwoKICAgICMgYWRkIEhBVklORyBjbGF1c2UgKCBWb3RlcyBhbmQgUmF0ZSBhcmUgYWdyZWdnYXRlZCBjb2x1bW5zLCB0aGV5IGNhbid0IGJlIGluIHRoZSBXSEVSRSBjbGF1c2UpCiAgICAjIGRlZmluZWQgdm90aW5nIHBhcmFtZXRlcnMgKGZvciBWb3RlcyBhbmQgUmF0ZSkKICAgIG15ICVWb3RpbmdPcGVyYXRvcnMgPSAoCiAgICAgICAgRXF1YWxzICAgICAgICAgICAgPT4gJz0nLAogICAgICAgIEdyZWF0ZXJUaGFuICAgICAgID0+ICc+JywKICAgICAgICBHcmVhdGVyVGhhbkVxdWFscyA9PiAnPj0nLAogICAgICAgIFNtYWxsZXJUaGFuICAgICAgID0+ICc8JywKICAgICAgICBTbWFsbGVyVGhhbkVxdWFscyA9PiAnPD0nLAogICAgKTsKCiAgICBteSAkSGF2aW5nUHJpbnQ7CiAgICBteSAkQWRkZWRDb25kaXRpb247CgogICAgSEFWSU5HX1BBUkFNOgogICAgZm9yIG15ICRIYXZpbmdQYXJhbSAocXcoVm90ZXMgUmF0ZSkpIHsKICAgICAgICBteSAkU2VhcmNoUGFyYW0gPSAkUGFyYW17JEhhdmluZ1BhcmFtfTsKCiAgICAgICAgbmV4dCBIQVZJTkdfUEFSQU0gaWYgKCAhJFNlYXJjaFBhcmFtICk7CiAgICAgICAgbmV4dCBIQVZJTkdfUEFSQU0gaWYgKCByZWYgJFNlYXJjaFBhcmFtIG5lICdIQVNIJyApOwoKICAgICAgICBPUEVSQVRPUjoKICAgICAgICBmb3IgbXkgJE9wZXJhdG9yICggc29ydCBrZXlzICV7JFNlYXJjaFBhcmFtfSApIHsKCiAgICAgICAgICAgIG5leHQgT1BFUkFUT1IgaWYgISggJFZvdGluZ09wZXJhdG9yc3skT3BlcmF0b3J9ICk7CgogICAgICAgICAgICAjIHByaW50IEhBVklORyBjbGF1c2UganVzdCBvbmNlIGlmIGFuZCBqdXN0IGlmIHRoZSBvcGVyYXRvciBpcyB2YWxpZAogICAgICAgICAgICBpZiAoICEkSGF2aW5nUHJpbnQgKSB7CiAgICAgICAgICAgICAgICAkRXh0IC49ICcgSEFWSU5HICc7CiAgICAgICAgICAgICAgICAkSGF2aW5nUHJpbnQgPSAxOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkU1FMRXh0U3ViOwoKICAgICAgICAgICAgbXkgQFNlYXJjaFBhcmFtcwogICAgICAgICAgICAgICAgPSAoIHJlZiAkU2VhcmNoUGFyYW0tPnskT3BlcmF0b3J9IGVxICdBUlJBWScgKQogICAgICAgICAgICAgICAgPyBAeyAkU2VhcmNoUGFyYW0tPnskT3BlcmF0b3J9IH0KICAgICAgICAgICAgICAgIDogKCAkU2VhcmNoUGFyYW0tPnskT3BlcmF0b3J9ICk7CgogICAgICAgICAgICAjIGRvIG5vdCB1c2UgQU5EIG9uIHRoZSBmaXJzdCBjb25kaXRpb24KICAgICAgICAgICAgaWYgKCRBZGRlZENvbmRpdGlvbikgewogICAgICAgICAgICAgICAgJFNRTEV4dFN1YiAuPSAnIEFORCAoJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRTUUxFeHRTdWIgLj0gJyAoJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBteSAkQ291bnRlciA9IDA7CiAgICAgICAgICAgIFRFWFQ6CiAgICAgICAgICAgIGZvciBteSAkVGV4dCAoQFNlYXJjaFBhcmFtcykgewogICAgICAgICAgICAgICAgbmV4dCBURVhUIGlmICggIWRlZmluZWQgJFRleHQgfHwgJFRleHQgZXEgJycgKTsKCiAgICAgICAgICAgICAgICAkVGV4dCA9fiBzL1wqLyUvZ2k7CgogICAgICAgICAgICAgICAgIyBjaGVjayBzZWFyY2ggYXR0cmlidXRlLCB3ZSBkbyBub3QgbmVlZCB0byBzZWFyY2ggZm9yICoKICAgICAgICAgICAgICAgIG5leHQgaWYgJFRleHQgPX4gL15cJXsxLDN9JC87CgogICAgICAgICAgICAgICAgJFNRTEV4dFN1YiAuPSAnIE9SICcgaWYgKCRDb3VudGVyKTsKCiAgICAgICAgICAgICAgICAjIGRlZmluZSBhZ2dyZWdhdGlvbiBjb2x1bW4KICAgICAgICAgICAgICAgIG15ICRBZ2dyZWdhdGVDb2x1bW4gPSAnY291bnQoIHYuaXRlbV9pZCApJzsKICAgICAgICAgICAgICAgIGlmICggJEhhdmluZ1BhcmFtIGVxICdSYXRlJyApIHsKICAgICAgICAgICAgICAgICAgICAkQWdncmVnYXRlQ29sdW1uID0gJ2F2Zyggdi5yYXRlICknOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgc2V0IGNvbmRpdGlvbgogICAgICAgICAgICAgICAgJFNRTEV4dFN1YiAuPSAiICRBZ2dyZWdhdGVDb2x1bW4gJFZvdGluZ09wZXJhdG9yc3skT3BlcmF0b3J9ICI7CiAgICAgICAgICAgICAgICAkU1FMRXh0U3ViIC49ICRTZWxmLT57REJPYmplY3R9LT5RdW90ZSggJFRleHQsICdOdW1iZXInICkgLiAiICI7CgogICAgICAgICAgICAgICAgJENvdW50ZXIrKzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBjbG9zZSBjb25kaXRpb24KICAgICAgICAgICAgJFNRTEV4dFN1YiAuPSAnKSAnOwoKICAgICAgICAgICAgIyBhZGQgY29uZGl0aW9uIHRvIHRoZSBmaW5hbCBTUUwgc3RhdGVtZW50CiAgICAgICAgICAgIGlmICgkQ291bnRlcikgewogICAgICAgICAgICAgICAgJEV4dCAuPSAkU1FMRXh0U3ViOwogICAgICAgICAgICAgICAgJEFkZGVkQ29uZGl0aW9uID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGFkZCB0aGUgT1JERVIgQlkgY2xhdXNlCiAgICBpZiAoQFNRTE9yZGVyQnkpIHsKICAgICAgICAkRXh0IC49ICdPUkRFUiBCWSAnOwogICAgICAgICRFeHQgLj0gam9pbiAnLCAnLCBAU1FMT3JkZXJCeTsKICAgICAgICAkRXh0IC49ICcgJzsKICAgIH0KCiAgICAjIGFkZCBleHRlbmRlZCBTUUwKICAgICRTUUwgLj0gJEV4dDsKCiAgICAjIGFzayBkYXRhYmFzZQogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJFNRTCwKICAgICAgICBMaW1pdCA9PiAkUGFyYW17TGltaXR9IHx8IDUwMAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15IEBMaXN0OwogICAgd2hpbGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBwdXNoIEBMaXN0LCAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiBATGlzdDsKfQoKPWJlZ2luIEludGVybmFsOgoKPWN1dAoKPWl0ZW0gX0luQ29uZGl0aW9uR2V0KCkKCmludGVybmFsIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhbgoKICAgIHRhYmxlLmNvbHVtbiBJTiAodmFsdWVzKQoKY29uZGl0aW9uIHN0cmluZyBmcm9tIGFuIGFycmF5LgoKICAgIG15ICRTUUxQYXJ0ID0gJFRpY2tldE9iamVjdC0+X0luQ29uZGl0aW9uR2V0KAogICAgICAgIFRhYmxlQ29sdW1uID0+ICd0YWJsZS5jb2x1bW4nLAogICAgICAgIElEUmVmICAgICAgID0+ICRBcnJheVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgX0luQ29uZGl0aW9uR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkS2V5IChxdyhUYWJsZUNvbHVtbiBJRFJlZikpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEtleX0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRLZXkhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNvcnQgaWRzIHRvIGNhY2hlIHRoZSBTUUwgcXVlcnkKICAgIG15IEBTb3J0ZWRJRHMgPSBzb3J0IHsgJGEgPD0+ICRiIH0gQHsgJFBhcmFte0lEUmVmfSB9OwoKICAgICMgcXVvdGUgdmFsdWVzCiAgICBmb3IgbXkgJFZhbHVlIChAU29ydGVkSURzKSB7CiAgICAgICAgcmV0dXJuIGlmICFkZWZpbmVkICRTZWxmLT57REJPYmplY3R9LT5RdW90ZSggJFZhbHVlLCAnSW50ZWdlcicgKTsKICAgIH0KCiAgICByZXR1cm4gIiAkUGFyYW17VGFibGVDb2x1bW59IElOICgiIC4gKCBqb2luICcsJywgQFNvcnRlZElEcyApIC4gIikiOwp9CgoxOwoKPWVuZCBJbnRlcm5hbDoKCj1iYWNrCgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChodHRwOi8vb3Rycy5vcmcvKS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIEw8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0Pi4KCj1jdXQK
IyAtLQojIEtlcm5lbC9TeXN0ZW0vTGlua09iamVjdC9GQVEucG0gLSB0byBsaW5rIGZhcSBvYmplY3RzCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdDo6RkFROwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpHcm91cDsKdXNlIEtlcm5lbDo6U3lzdGVtOjpGQVE7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3Q6OkZBUQoKPWhlYWQxIFNZTk9QU0lTCgpGQVEgYmFja2VuZCBmb3IgdGhlIGxpbmsgb2JqZWN0LgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1vdmVyIDQKCj1jdXQKCj1pdGVtIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgdXNlIEtlcm5lbDo6Q29uZmlnOwogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpFbmNvZGU7CiAgICB1c2UgS2VybmVsOjpTeXN0ZW06OkxvZzsKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6VGltZTsKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6TWFpbjsKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6REI7CiAgICB1c2UgS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3Q6OkZBUTsKCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gS2VybmVsOjpDb25maWctPm5ldygpOwogICAgbXkgJEVuY29kZU9iamVjdCA9IEtlcm5lbDo6U3lzdGVtOjpFbmNvZGUtPm5ldygKICAgICAgICBDb25maWdPYmplY3QgPT4gJENvbmZpZ09iamVjdCwKICAgICk7CiAgICBteSAkTG9nT2JqZWN0ID0gS2VybmVsOjpTeXN0ZW06OkxvZy0+bmV3KAogICAgICAgIENvbmZpZ09iamVjdCA9PiAkQ29uZmlnT2JqZWN0LAogICAgICAgIEVuY29kZU9iamVjdCA9PiAkRW5jb2RlT2JqZWN0LAogICAgKTsKICAgIG15ICRUaW1lT2JqZWN0ID0gS2VybmVsOjpTeXN0ZW06OlRpbWUtPm5ldygKICAgICAgICBDb25maWdPYmplY3QgPT4gJENvbmZpZ09iamVjdCwKICAgICAgICBMb2dPYmplY3QgICAgPT4gJExvZ09iamVjdCwKICAgICk7CiAgICBteSAkTWFpbk9iamVjdCA9IEtlcm5lbDo6U3lzdGVtOjpNYWluLT5uZXcoCiAgICAgICAgQ29uZmlnT2JqZWN0ID0+ICRDb25maWdPYmplY3QsCiAgICAgICAgRW5jb2RlT2JqZWN0ID0+ICRFbmNvZGVPYmplY3QsCiAgICAgICAgTG9nT2JqZWN0ICAgID0+ICRMb2dPYmplY3QsCiAgICApOwogICAgbXkgJERCT2JqZWN0ID0gS2VybmVsOjpTeXN0ZW06OkRCLT5uZXcoCiAgICAgICAgQ29uZmlnT2JqZWN0ID0+ICRDb25maWdPYmplY3QsCiAgICAgICAgRW5jb2RlT2JqZWN0ID0+ICRFbmNvZGVPYmplY3QsCiAgICAgICAgTG9nT2JqZWN0ICAgID0+ICRMb2dPYmplY3QsCiAgICAgICAgTWFpbk9iamVjdCAgID0+ICRNYWluT2JqZWN0LAogICAgKTsKICAgIG15ICRGQVFPYmplY3RCYWNrZW5kID0gS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3Q6OkZBUS0+bmV3KAogICAgICAgIENvbmZpZ09iamVjdCAgICAgICA9PiAkQ29uZmlnT2JqZWN0LAogICAgICAgIExvZ09iamVjdCAgICAgICAgICA9PiAkTG9nT2JqZWN0LAogICAgICAgIERCT2JqZWN0ICAgICAgICAgICA9PiAkREJPYmplY3QsCiAgICAgICAgTWFpbk9iamVjdCAgICAgICAgID0+ICRNYWluT2JqZWN0LAogICAgICAgIFRpbWVPYmplY3QgICAgICAgICA9PiAkVGltZU9iamVjdCwKICAgICAgICBFbmNvZGVPYmplY3QgICAgICAgPT4gJEVuY29kZU9iamVjdCwKICAgICk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgY2hlY2sgbmVlZGVkIG9iamVjdHMKICAgIGZvciBteSAkT2JqZWN0IChxdyhEQk9iamVjdCBDb25maWdPYmplY3QgTG9nT2JqZWN0IE1haW5PYmplY3QgRW5jb2RlT2JqZWN0IFRpbWVPYmplY3QpKSB7CiAgICAgICAgJFNlbGYtPnskT2JqZWN0fSA9ICRQYXJhbXskT2JqZWN0fSB8fCBkaWUgIkdvdCBubyAkT2JqZWN0ISI7CiAgICB9CgogICAgIyBjcmVhdGUgYWRkaXRpb25hbCBvYmplY3RzCiAgICAkU2VsZi0+e0dyb3VwT2JqZWN0fSA9IEtlcm5lbDo6U3lzdGVtOjpHcm91cC0+bmV3KCAleyRTZWxmfSApOwogICAgJFNlbGYtPntGQVFPYmplY3R9ICAgPSBLZXJuZWw6OlN5c3RlbTo6RkFRLT5uZXcoICV7JFNlbGZ9ICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aXRlbSBMaW5rTGlzdFdpdGhEYXRhKCkKCmZpbGwgdXAgdGhlIGxpbmsgbGlzdCB3aXRoIGRhdGEKCiAgICAkU3VjY2VzcyA9ICRGQVFMaW5rT2JqZWN0LT5MaW5rTGlzdFdpdGhEYXRhKAogICAgICAgIExpbmtMaXN0ID0+ICRIYXNoUmVmLAogICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIExpbmtMaXN0V2l0aERhdGEgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoTGlua0xpc3QgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGxpbmsgbGlzdAogICAgaWYgKCByZWYgJFBhcmFte0xpbmtMaXN0fSBuZSAnSEFTSCcgKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdMaW5rTGlzdCBtdXN0IGJlIGEgaGFzaCByZWZlcmVuY2UhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBmb3IgbXkgJExpbmtUeXBlICggc29ydCBrZXlzICV7ICRQYXJhbXtMaW5rTGlzdH0gfSApIHsKCiAgICAgICAgZm9yIG15ICREaXJlY3Rpb24gKCBzb3J0IGtleXMgJXsgJFBhcmFte0xpbmtMaXN0fS0+eyRMaW5rVHlwZX0gfSApIHsKCiAgICAgICAgICAgIEZBUUlEOgogICAgICAgICAgICBmb3IgbXkgJEZBUUlEICggc29ydCBrZXlzICV7ICRQYXJhbXtMaW5rTGlzdH0tPnskTGlua1R5cGV9LT57JERpcmVjdGlvbn0gfSApIHsKCiAgICAgICAgICAgICAgICAjIGdldCBmYXEgZGF0YQogICAgICAgICAgICAgICAgbXkgJUZBUURhdGEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUUdldCgKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgICAgID0+ICRGQVFJRCwKICAgICAgICAgICAgICAgICAgICBJdGVtRmllbGRzID0+IDEsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyByZW1vdmUgaWQgZnJvbSBoYXNoIGlmIG5vIGZhcSBkYXRhIHdhcyBmb3VuZAogICAgICAgICAgICAgICAgaWYgKCAhJUZBUURhdGEgKSB7CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlICRQYXJhbXtMaW5rTGlzdH0tPnskTGlua1R5cGV9LT57JERpcmVjdGlvbn0tPnskRkFRSUR9OwogICAgICAgICAgICAgICAgICAgIG5leHQgRkFRSUQ7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBhZGQgZmFxIGRhdGEKICAgICAgICAgICAgICAgICRQYXJhbXtMaW5rTGlzdH0tPnskTGlua1R5cGV9LT57JERpcmVjdGlvbn0tPnskRkFRSUR9ID0gXCVGQVFEYXRhOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBPYmplY3RQZXJtaXNzaW9uKCkKCmNoZWNrcyByZWFkIHBlcm1pc3Npb24gZm9yIGEgZ2l2ZW4gb2JqZWN0IGFuZCBVc2VySUQuCgogICAgJFBlcm1pc3Npb24gPSAkRkFRTGlua09iamVjdC0+T2JqZWN0UGVybWlzc2lvbigKICAgICAgICBPYmplY3QgID0+ICdGQVEnLAogICAgICAgIEtleSAgICAgPT4gMTIzLAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgT2JqZWN0UGVybWlzc2lvbiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhPYmplY3QgS2V5IFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBtb2R1bGUgcmVnaXN0cnkgb2YgQWdlbnRGQVFab29tCiAgICBteSAkTW9kdWxlUmVnID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0Zyb250ZW5kOjpNb2R1bGUnKS0+e0FnZW50RkFRWm9vbX07CgogICAgIyBkbyBub3QgZ3JhbnQgYWNjZXNzIGlmIGZyb250ZW5kIG1vZHVsZSBpcyBub3QgcmVnaXN0ZXJlZAogICAgcmV0dXJuIGlmICEkTW9kdWxlUmVnOwoKICAgICMgZ3JhbnQgYWNjZXNzIGlmIG1vZHVsZSBwZXJtaXNzb24gaGFzIG5vIEdyb3VwIG9yIEdyb3VwUm8gZGVmaW5lZAogICAgaWYgKCAhJE1vZHVsZVJlZy0+e0dyb3VwUm99ICYmICEkTW9kdWxlUmVnLT57R3JvdXB9ICkgewogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgIFBFUk1JU1NJT046CiAgICBmb3IgbXkgJFBlcm1pc3Npb24gKHF3KEdyb3VwUm8gR3JvdXApKSB7CgogICAgICAgIG5leHQgUEVSTUlTU0lPTiBpZiAhJE1vZHVsZVJlZy0+eyRQZXJtaXNzaW9ufTsKICAgICAgICBuZXh0IFBFUk1JU1NJT04gaWYgcmVmICRNb2R1bGVSZWctPnskUGVybWlzc2lvbn0gbmUgJ0FSUkFZJzsKCiAgICAgICAgZm9yIG15ICRHcm91cCAoIEB7ICRNb2R1bGVSZWctPnskUGVybWlzc2lvbn0gfSApIHsKCiAgICAgICAgICAgICMgZ2V0IHRoZSBncm91cCBpZAogICAgICAgICAgICBteSAkR3JvdXBJRCA9ICRTZWxmLT57R3JvdXBPYmplY3R9LT5Hcm91cExvb2t1cCggR3JvdXAgPT4gJEdyb3VwICk7CgogICAgICAgICAgICBteSAkVHlwZTsKICAgICAgICAgICAgaWYgKCAkUGVybWlzc2lvbiBlcSAnR3JvdXBSbycgKSB7CiAgICAgICAgICAgICAgICAkVHlwZSA9ICdybyc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkUGVybWlzc2lvbiBlcSAnR3JvdXAnICkgewogICAgICAgICAgICAgICAgJFR5cGUgPSAncncnOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGdldCB1c2VyIGdyb3Vwcywgd2hlcmUgdGhlIHVzZXIgaGFzIHRoZSBhcHByb3ByaWF0ZSBwcml2aWxlZ2UKICAgICAgICAgICAgbXkgJUdyb3VwcyA9ICRTZWxmLT57R3JvdXBPYmplY3R9LT5Hcm91cE1lbWJlckxpc3QoCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICBUeXBlICAgPT4gJFR5cGUsCiAgICAgICAgICAgICAgICBSZXN1bHQgPT4gJ0hBU0gnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBncmFudCBhY2Nlc3MgaWYgYWdlbnQgaXMgYSBtZW1iZXIgaW4gdGhlIGdyb3VwCiAgICAgICAgICAgIHJldHVybiAxIGlmICRHcm91cHN7JEdyb3VwSUR9OwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm47Cn0KCj1pdGVtIE9iamVjdERlc2NyaXB0aW9uR2V0KCkKCnJldHVybiBhIGhhc2ggb2Ygb2JqZWN0IGRlc2NyaXB0aW9ucwoKUmV0dXJuCiAgICAlRGVzY3JpcHRpb24gPSAoCiAgICAgICAgTm9ybWFsID0+ICJGQVEjIDEyMzQiLAogICAgICAgIExvbmcgICA9PiAiRkFRIyAxMjM0OiBGQVFUaXRsZSIsCiAgICApOwoKICAgICVEZXNjcmlwdGlvbiA9ICRMaW5rT2JqZWN0LT5PYmplY3REZXNjcmlwdGlvbkdldCgKICAgICAgICBLZXkgICAgID0+IDEyMywKICAgICAgICBVc2VySUQgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIE9iamVjdERlc2NyaXB0aW9uR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KE9iamVjdCBLZXkgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNyZWF0ZSBkZXNjcmlwdGlvbgogICAgbXkgJURlc2NyaXB0aW9uID0gKAogICAgICAgIE5vcm1hbCA9PiAnRkFRJywKICAgICAgICBMb25nICAgPT4gJ0ZBUScsCiAgICApOwoKICAgIHJldHVybiAlRGVzY3JpcHRpb24gaWYgJFBhcmFte01vZGV9ICYmICRQYXJhbXtNb2RlfSBlcSAnVGVtcG9yYXJ5JzsKCiAgICAjIGdldCBmYXEKICAgIG15ICVGQVEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUUdldCgKICAgICAgICBJdGVtSUQgICAgID0+ICRQYXJhbXtLZXl9LAogICAgICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICByZXR1cm4gaWYgISVGQVE7CgogICAgIyBkZWZpbmUgZGVzY3JpcHRpb24gdGV4dAogICAgbXkgJEZBUUhvb2sgICAgICAgICA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkZBUUhvb2snKTsKICAgIG15ICREZXNjcmlwdGlvblRleHQgPSAiJEZBUUhvb2sgJEZBUXtOdW1iZXJ9IjsKCiAgICAjIGNyZWF0ZSBkZXNjcmlwdGlvbgogICAgJURlc2NyaXB0aW9uID0gKAogICAgICAgIE5vcm1hbCA9PiAkRGVzY3JpcHRpb25UZXh0LAogICAgICAgIExvbmcgICA9PiAiJERlc2NyaXB0aW9uVGV4dDogJEZBUXtUaXRsZX0iLAogICAgKTsKCiAgICByZXR1cm4gJURlc2NyaXB0aW9uOwp9Cgo9aXRlbSBPYmplY3RTZWFyY2goKQoKcmV0dXJuIGEgaGFzaCBsaXN0IG9mIHRoZSBzZWFyY2ggcmVzdWx0cwoKUmV0dXJuCiAgICAkU2VhcmNoTGlzdCA9IHsKICAgICAgICBOT1RMSU5LRUQgPT4gewogICAgICAgICAgICBTb3VyY2UgPT4gewogICAgICAgICAgICAgICAgMTIgID0+ICREYXRhT2ZJdGVtMTIsCiAgICAgICAgICAgICAgICAyMTIgPT4gJERhdGFPZkl0ZW0yMTIsCiAgICAgICAgICAgICAgICAzMzIgPT4gJERhdGFPZkl0ZW0zMzIsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH07CgogICAgJFNlYXJjaExpc3QgPSAkTGlua09iamVjdEJhY2tlbmQtPk9iamVjdFNlYXJjaCgKICAgICAgICBTZWFyY2hQYXJhbXMgPT4gJEhhc2hSZWYsICAjIChvcHRpb25hbCkKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgT2JqZWN0U2VhcmNoIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBVc2VySUQhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHNldCBkZWZhdWx0IHBhcmFtcwogICAgJFBhcmFte1NlYXJjaFBhcmFtc30gfHw9IHt9OwoKICAgICMgYWRkIHdpbGRjYXJkcwogICAgbXkgJVNlYXJjaDsKICAgIGlmICggJFBhcmFte1NlYXJjaFBhcmFtc30tPntUaXRsZX0gKSB7CiAgICAgICAgJFNlYXJjaHtUaXRsZX0gPSAnKicgLiAkUGFyYW17U2VhcmNoUGFyYW1zfS0+e1RpdGxlfSAuICcqJzsKICAgIH0KICAgIGlmICggJFBhcmFte1NlYXJjaFBhcmFtc30tPntOdW1iZXJ9ICkgewogICAgICAgICRTZWFyY2h7TnVtYmVyfSA9ICcqJyAuICRQYXJhbXtTZWFyY2hQYXJhbXN9LT57TnVtYmVyfSAuICcqJzsKICAgIH0KICAgIGlmICggJFBhcmFte1NlYXJjaFBhcmFtc30tPntXaGF0fSApIHsKICAgICAgICAkU2VhcmNoe1doYXR9ID0gJyonIC4gJFBhcmFte1NlYXJjaFBhcmFtc30tPntXaGF0fSAuICcqJzsKICAgIH0KCiAgICAjIHNlYXJjaCB0aGUgZmFxcwogICAgbXkgQEZBUUlEcyA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRU2VhcmNoKAogICAgICAgICV7ICRQYXJhbXtTZWFyY2hQYXJhbXN9IH0sCiAgICAgICAgJVNlYXJjaCwKICAgICAgICBPcmRlciAgPT4gJ0NyZWF0ZWQnLAogICAgICAgIFNvcnQgICA9PiAnZG93bicsCiAgICAgICAgTGltaXQgID0+IDUwLAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgbXkgJVNlYXJjaExpc3Q7CiAgICBGQVFJRDoKICAgIGZvciBteSAkRkFRSUQgKEBGQVFJRHMpIHsKCiAgICAgICAgIyBnZXQgRkFRIGRhdGEKICAgICAgICBteSAlRkFRRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRR2V0KAogICAgICAgICAgICBJdGVtSUQgICAgID0+ICRGQVFJRCwKICAgICAgICAgICAgSXRlbUZpZWxkcyA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIG5leHQgRkFRSUQgaWYgISVGQVFEYXRhOwoKICAgICAgICAjIGFkZCBGQVEgZGF0YQogICAgICAgICRTZWFyY2hMaXN0e05PVExJTktFRH0tPntTb3VyY2V9LT57JEZBUUlEfSA9IFwlRkFRRGF0YTsKICAgIH0KCiAgICByZXR1cm4gXCVTZWFyY2hMaXN0Owp9Cgo9aXRlbSBMaW5rQWRkUHJlKCkKCmxpbmsgYWRkIHByZSBldmVudCBtb2R1bGUKCiAgICAkVHJ1ZSA9ICRGQVFMaW5rT2JqZWN0LT5MaW5rQWRkUHJlKAogICAgICAgIEtleSAgICAgICAgICA9PiAxMjMsCiAgICAgICAgU291cmNlT2JqZWN0ID0+ICdGQVEnLAogICAgICAgIFNvdXJjZUtleSAgICA9PiAzMjEsCiAgICAgICAgVHlwZSAgICAgICAgID0+ICdOb3JtYWwnLAogICAgICAgIFN0YXRlICAgICAgICA9PiAnVmFsaWQnLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCiAgICBvcgoKICAgICRUcnVlID0gJEZBUUxpbmtPYmplY3QtPkxpbmtBZGRQcmUoCiAgICAgICAgS2V5ICAgICAgICAgID0+IDEyMywKICAgICAgICBUYXJnZXRPYmplY3QgPT4gJ0ZBUScsCiAgICAgICAgVGFyZ2V0S2V5ICAgID0+IDMyMSwKICAgICAgICBUeXBlICAgICAgICAgPT4gJ05vcm1hbCcsCiAgICAgICAgU3RhdGUgICAgICAgID0+ICdWYWxpZCcsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIExpbmtBZGRQcmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IFR5cGUgU3RhdGUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMSBpZiAkUGFyYW17U3RhdGV9IGVxICdUZW1wb3JhcnknOwoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBMaW5rQWRkUG9zdCgpCgpsaW5rIGFkZCBwcmUgZXZlbnQgbW9kdWxlCgogICAgJFRydWUgPSAkRkFRTGlua09iamVjdC0+TGlua0FkZFBvc3QoCiAgICAgICAgS2V5ICAgICAgICAgID0+IDEyMywKICAgICAgICBTb3VyY2VPYmplY3QgPT4gJ0ZBUScsCiAgICAgICAgU291cmNlS2V5ICAgID0+IDMyMSwKICAgICAgICBUeXBlICAgICAgICAgPT4gJ05vcm1hbCcsCiAgICAgICAgU3RhdGUgICAgICAgID0+ICdWYWxpZCcsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKICAgIG9yCgogICAgJFRydWUgPSAkRkFRTGlua09iamVjdC0+TGlua0FkZFBvc3QoCiAgICAgICAgS2V5ICAgICAgICAgID0+IDEyMywKICAgICAgICBUYXJnZXRPYmplY3QgPT4gJ0ZBUScsCiAgICAgICAgVGFyZ2V0S2V5ICAgID0+IDMyMSwKICAgICAgICBUeXBlICAgICAgICAgPT4gJ05vcm1hbCcsCiAgICAgICAgU3RhdGUgICAgICAgID0+ICdWYWxpZCcsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIExpbmtBZGRQb3N0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBUeXBlIFN0YXRlIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDEgaWYgJFBhcmFte1N0YXRlfSBlcSAnVGVtcG9yYXJ5JzsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gTGlua0RlbGV0ZVByZSgpCgpsaW5rIGRlbGV0ZSBwcmUgZXZlbnQgbW9kdWxlCgogICAgJFRydWUgPSAkRkFRTGlua09iamVjdC0+TGlua0RlbGV0ZVByZSgKICAgICAgICBLZXkgICAgICAgICAgPT4gMTIzLAogICAgICAgIFNvdXJjZU9iamVjdCA9PiAnRkFRJywKICAgICAgICBTb3VyY2VLZXkgICAgPT4gMzIxLAogICAgICAgIFR5cGUgICAgICAgICA9PiAnTm9ybWFsJywKICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgogICAgb3IKCiAgICAkVHJ1ZSA9ICRGQVFMaW5rT2JqZWN0LT5MaW5rRGVsZXRlUHJlKAogICAgICAgIEtleSAgICAgICAgICA9PiAxMjMsCiAgICAgICAgVGFyZ2V0T2JqZWN0ID0+ICdGQVEnLAogICAgICAgIFRhcmdldEtleSAgICA9PiAzMjEsCiAgICAgICAgVHlwZSAgICAgICAgID0+ICdOb3JtYWwnLAogICAgICAgIFN0YXRlICAgICAgICA9PiAnVmFsaWQnLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBMaW5rRGVsZXRlUHJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBUeXBlIFN0YXRlIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDEgaWYgJFBhcmFte1N0YXRlfSBlcSAnVGVtcG9yYXJ5JzsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gTGlua0RlbGV0ZVBvc3QoKQoKbGluayBkZWxldGUgcG9zdCBldmVudCBtb2R1bGUKCiAgICAkVHJ1ZSA9ICRGQVFMaW5rT2JqZWN0LT5MaW5rRGVsZXRlUG9zdCgKICAgICAgICBLZXkgICAgICAgICAgPT4gMTIzLAogICAgICAgIFNvdXJjZU9iamVjdCA9PiAnRkFRJywKICAgICAgICBTb3VyY2VLZXkgICAgPT4gMzIxLAogICAgICAgIFR5cGUgICAgICAgICA9PiAnTm9ybWFsJywKICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgogICAgb3IKCiAgICAkVHJ1ZSA9ICRGQVFMaW5rT2JqZWN0LT5MaW5rRGVsZXRlUG9zdCgKICAgICAgICBLZXkgICAgICAgICAgPT4gMTIzLAogICAgICAgIFRhcmdldE9iamVjdCA9PiAnRkFRJywKICAgICAgICBUYXJnZXRLZXkgICAgPT4gMzIxLAogICAgICAgIFR5cGUgICAgICAgICA9PiAnTm9ybWFsJywKICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgTGlua0RlbGV0ZVBvc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IFR5cGUgU3RhdGUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMSBpZiAkUGFyYW17U3RhdGV9IGVxICdUZW1wb3JhcnknOwoKICAgIHJldHVybiAxOwp9CgoxOwoKPWJhY2sKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKEw8aHR0cDovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQ+LgoKPWN1dAo=
IyAtLQojIEtlcm5lbC9TeXN0ZW0vU3RhdHMvU3RhdGljL0ZBUUFjY2Vzcy5wbS5wbQojIENvcHlyaWdodCAoQykgMjAwMS0yMDEzIE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OlN0YXRzOjpTdGF0aWM6OkZBUUFjY2VzczsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIERhdGU6OlBjYWxjIHF3KERheXNfaW5fTW9udGgpOwp1c2UgS2VybmVsOjpTeXN0ZW06OkZBUTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBjaGVjayBhbGwgbmVlZGVkIG9iamVjdHMKICAgIGZvciBteSAkT2JqZWN0IChxdyhEQk9iamVjdCBDb25maWdPYmplY3QgTG9nT2JqZWN0IFVzZXJJRCkpIHsKICAgICAgICBkaWUgIkdvdCBubyAkT2JqZWN0IiBpZiAhJFNlbGYtPnskT2JqZWN0fTsKICAgIH0KCiAgICAjIGNyZWF0ZSBuZWVkZWQgb2JqZWN0CiAgICAkU2VsZi0+e0ZBUU9iamVjdH0gPSBLZXJuZWw6OlN5c3RlbTo6RkFRLT5uZXcoJVBhcmFtKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBQYXJhbSB7CgogICAgbXkgJFNlbGYgPSBzaGlmdDsKCiAgICBteSBAUGFyYW1zID0gKCk7CgogICAgIyBnZXQgY3VycmVudCB0aW1lCiAgICBteSAoICRzLCAkbSwgJGgsICRELCAkTSwgJFkgKSA9ICRTZWxmLT57VGltZU9iamVjdH0tPlN5c3RlbVRpbWUyRGF0ZSgKICAgICAgICBTeXN0ZW1UaW1lID0+ICRTZWxmLT57VGltZU9iamVjdH0tPlN5c3RlbVRpbWUoKSwKICAgICk7CiAgICAkRCA9IHNwcmludGYoICIlMDJkIiwgJEQgKTsKICAgICRNID0gc3ByaW50ZiggIiUwMmQiLCAkTSApOwogICAgJFkgPSBzcHJpbnRmKCAiJTAyZCIsICRZICk7CgogICAgIyBjcmVhdGUgcG9zc2libGUgdGltZSBzZWxlY3Rpb25zCiAgICBteSAlWWVhciA9IG1hcCB7ICRfLCAkXyB9ICggJFkgLSAxMCAuLiAkWSArIDEgKTsKICAgIG15ICVNb250aCA9IG1hcCB7IHNwcmludGYoICIlMDJkIiwgJF8gKSwgc3ByaW50ZiggIiUwMmQiLCAkXyApIH0gKCAxIC4uIDEyICk7CiAgICBteSAlRGF5ICAgPSBtYXAgeyBzcHJpbnRmKCAiJTAyZCIsICRfICksIHNwcmludGYoICIlMDJkIiwgJF8gKSB9ICggMSAuLiAzMSApOwoKICAgIHB1c2ggQFBhcmFtcywgewogICAgICAgIEZyb250ZW5kICAgPT4gJ1N0YXJ0IGRheScsCiAgICAgICAgTmFtZSAgICAgICA9PiAnU3RhcnREYXknLAogICAgICAgIE11bHRpcGxlICAgPT4gMCwKICAgICAgICBTaXplICAgICAgID0+IDAsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAnMDEnLAogICAgICAgIERhdGEgICAgICAgPT4gewogICAgICAgICAgICAlRGF5LAogICAgICAgIH0sCiAgICB9OwogICAgcHVzaCBAUGFyYW1zLCB7CiAgICAgICAgRnJvbnRlbmQgICA9PiAnU3RhcnQgbW9udGgnLAogICAgICAgIE5hbWUgICAgICAgPT4gJ1N0YXJ0TW9udGgnLAogICAgICAgIE11bHRpcGxlICAgPT4gMCwKICAgICAgICBTaXplICAgICAgID0+IDAsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkTSwKICAgICAgICBEYXRhICAgICAgID0+IHsKICAgICAgICAgICAgJU1vbnRoLAogICAgICAgIH0sCiAgICB9OwogICAgcHVzaCBAUGFyYW1zLCB7CiAgICAgICAgRnJvbnRlbmQgICA9PiAnU3RhcnQgeWVhcicsCiAgICAgICAgTmFtZSAgICAgICA9PiAnU3RhcnRZZWFyJywKICAgICAgICBNdWx0aXBsZSAgID0+IDAsCiAgICAgICAgU2l6ZSAgICAgICA9PiAwLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFksCiAgICAgICAgRGF0YSAgICAgICA9PiB7CiAgICAgICAgICAgICVZZWFyLAogICAgICAgIH0sCiAgICB9OwogICAgcHVzaCBAUGFyYW1zLCB7CiAgICAgICAgRnJvbnRlbmQgICA9PiAnRW5kIGRheScsCiAgICAgICAgTmFtZSAgICAgICA9PiAnRW5kRGF5JywKICAgICAgICBNdWx0aXBsZSAgID0+IDAsCiAgICAgICAgU2l6ZSAgICAgICA9PiAwLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJEQsCiAgICAgICAgRGF0YSAgICAgICA9PiB7CiAgICAgICAgICAgICVEYXksCiAgICAgICAgfSwKICAgIH07CiAgICBwdXNoIEBQYXJhbXMsIHsKICAgICAgICBGcm9udGVuZCAgID0+ICdFbmQgbW9udGgnLAogICAgICAgIE5hbWUgICAgICAgPT4gJ0VuZE1vbnRoJywKICAgICAgICBNdWx0aXBsZSAgID0+IDAsCiAgICAgICAgU2l6ZSAgICAgICA9PiAwLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJE0sCiAgICAgICAgRGF0YSAgICAgICA9PiB7CiAgICAgICAgICAgICVNb250aCwKICAgICAgICB9LAogICAgfTsKICAgIHB1c2ggQFBhcmFtcywgewogICAgICAgIEZyb250ZW5kICAgPT4gJ0VuZCB5ZWFyJywKICAgICAgICBOYW1lICAgICAgID0+ICdFbmRZZWFyJywKICAgICAgICBNdWx0aXBsZSAgID0+IDAsCiAgICAgICAgU2l6ZSAgICAgICA9PiAwLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFksCiAgICAgICAgRGF0YSAgICAgICA9PiB7CiAgICAgICAgICAgICVZZWFyLAogICAgICAgIH0sCiAgICB9OwoKICAgIHJldHVybiBAUGFyYW1zOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkUGFyYW1OYW1lIChxdyhTdGFydFllYXIgU3RhcnRNb250aCBTdGFydERheSBFbmRZZWFyIEVuZE1vbnRoIEVuZERheSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JFBhcmFtTmFtZX0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRQYXJhbU5hbWUhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNvcnJlY3Qgc3RhcnQgZGF5IG9mIG1vbnRoIGlmIGVudGVyZWQgd3JvbmcgYnkgdXNlcgogICAgbXkgJFN0YXJ0RGF5ID0gc3ByaW50ZiggIiUwMmQiLCBEYXlzX2luX01vbnRoKCAkUGFyYW17U3RhcnRZZWFyfSwgJFBhcmFte1N0YXJ0TW9udGh9ICkgKTsKICAgIGlmICggJFBhcmFte1N0YXJ0RGF5fSA8ICRTdGFydERheSApIHsKICAgICAgICAkU3RhcnREYXkgPSAkUGFyYW17U3RhcnREYXl9OwogICAgfQoKICAgICMgY29ycmVjdCBlbmQgZGF5IG9mIG1vbnRoIGlmIGVudGVyZWQgd3JvbmcgYnkgdXNlcgogICAgbXkgJEVuZERheSA9IHNwcmludGYoICIlMDJkIiwgRGF5c19pbl9Nb250aCggJFBhcmFte0VuZFllYXJ9LCAkUGFyYW17RW5kTW9udGh9ICkgKTsKICAgIGlmICggJFBhcmFte0VuZERheX0gPCAkRW5kRGF5ICkgewogICAgICAgICRFbmREYXkgPSAkUGFyYW17RW5kRGF5fTsKICAgIH0KCiAgICAjIHNldCBzdGFydCBhbmQgZW5kIGRhdGUKICAgIG15ICRTdGFydERhdGUgPSAiJFBhcmFte1N0YXJ0WWVhcn0tJFBhcmFte1N0YXJ0TW9udGh9LSRTdGFydERheSAwMDowMDowMCI7CiAgICBteSAkRW5kRGF0ZSAgID0gIiRQYXJhbXtFbmRZZWFyfS0kUGFyYW17RW5kTW9udGh9LSRFbmREYXkgMjM6NTk6NTkiOwoKICAgICMgZ2V0IGEgY291bnQgb2YgYWxsIGZhcSBhcnRpY2xlcwogICAgbXkgJFRvcDEwSXRlbUlEc1JlZiA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRVG9wMTBHZXQoCiAgICAgICAgSW50ZXJmYWNlID0+ICdpbnRlcm5hbCcsCiAgICAgICAgU3RhcnREYXRlID0+ICRTdGFydERhdGUsCiAgICAgICAgRW5kRGF0ZSAgID0+ICRFbmREYXRlLAogICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgYnVpbGQgcmVzdWx0IHRhYmxlCiAgICBteSBARGF0YTsKICAgIGZvciBteSAkSXRlbUlEUmVmICggQHskVG9wMTBJdGVtSURzUmVmfSApIHsKCiAgICAgICAgIyBnZXQgZmFxIGRhdGEKICAgICAgICBteSAlRkFRRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRR2V0KAogICAgICAgICAgICBJdGVtSUQgICAgID0+ICRJdGVtSURSZWYtPntJdGVtSUR9LAogICAgICAgICAgICBJdGVtRmllbGRzID0+IDAsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHZvdGUgZGF0YQogICAgICAgIG15ICRWb3RlRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+SXRlbVZvdGVEYXRhR2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJEl0ZW1JRFJlZi0+e0l0ZW1JRH0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICBteSAkVm90ZVJlc3VsdCA9IHNwcmludGYoCiAgICAgICAgICAgICIlMC4iCiAgICAgICAgICAgICAgICAuICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KAogICAgICAgICAgICAgICAgIkZBUTo6RXhwbG9yZXI6Okl0ZW1MaXN0OjpWb3RpbmdSZXN1bHREZWNpbWFsUGxhY2VzIgogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLiAiZiIsICRWb3RlRGF0YS0+e1Jlc3VsdH0gfHwgMAogICAgICAgICk7CiAgICAgICAgbXkgJFZvdGVzID0gJFZvdGVEYXRhLT57Vm90ZXN9IHx8IDA7CgogICAgICAgICMgYnVpbGQgdGFibGUgcm93CiAgICAgICAgcHVzaCBARGF0YSwgWwogICAgICAgICAgICAkRkFRRGF0YXtOdW1iZXJ9LAogICAgICAgICAgICAkRkFRRGF0YXtUaXRsZX0sCiAgICAgICAgICAgICRJdGVtSURSZWYtPntDb3VudH0sCiAgICAgICAgICAgICRWb3RlUmVzdWx0LAogICAgICAgICAgICAkVm90ZXMsCiAgICAgICAgXTsKICAgIH0KCiAgICAjIHNldCByZXBvcnQgdGl0bGUKICAgIG15ICRUaXRsZQogICAgICAgID0gIiRQYXJhbXtTdGFydFllYXJ9LSRQYXJhbXtTdGFydE1vbnRofS0kU3RhcnREYXkgLSAkUGFyYW17RW5kWWVhcn0tJFBhcmFte0VuZE1vbnRofS0kRW5kRGF5IjsKCiAgICAjIHRhYmxlIGhlYWRsaW5lcwogICAgbXkgQEhlYWREYXRhID0gKAogICAgICAgICdGQVEgIycsCiAgICAgICAgJ1RpdGxlJywKICAgICAgICAnQ291bnQnLAogICAgICAgICdWb3RlIFJlc3VsdCcsCiAgICAgICAgJ1ZvdGVzJywKICAgICk7CgogICAgbXkgQFJlc3VsdCA9ICggWyRUaXRsZV0sIFtASGVhZERhdGFdLCBARGF0YSApOwoKICAgIHJldHVybiBAUmVzdWx0Owp9CgoxOwo=
IyAtLQojIEZBUS50IC0gRkFRIHRlc3RzCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIHZhcnMgcXcoJFNlbGYpOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpGQVE7CgpteSAkRkFRT2JqZWN0ID0gS2VybmVsOjpTeXN0ZW06OkZBUS0+bmV3KCAleyRTZWxmfSApOwoKbXkgJEZBUUlEID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgVGl0bGUgICAgICA9PiAnU29tZSBUZXh0JywKICAgIENhdGVnb3J5SUQgPT4gMSwKICAgIFN0YXRlSUQgICAgPT4gMSwKICAgIExhbmd1YWdlSUQgPT4gMSwKICAgIEtleXdvcmRzICAgPT4gJ3NvbWUga2V5d29yZHMnLAogICAgRmllbGQxICAgICA9PiAnUHJvYmxlbS4uLicsCiAgICBGaWVsZDIgICAgID0+ICdTb2x1dGlvbi4uLicsCiAgICBVc2VySUQgICAgID0+IDEsCik7CgokU2VsZi0+VHJ1ZSgKICAgICRGQVFJRCwKICAgICJGQVFBZGQoKSAtIDEiLAopOwoKbXkgJUZBUSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgIEl0ZW1JRCAgICAgPT4gJEZBUUlELAogICAgSXRlbUZpZWxkcyA9PiAxLAogICAgVXNlcklEICAgICA9PiAxLAopOwoKbXkgJUZBUVRlc3QgPSAoCiAgICBUaXRsZSAgICAgID0+ICdTb21lIFRleHQnLAogICAgQ2F0ZWdvcnlJRCA9PiAxLAogICAgU3RhdGVJRCAgICA9PiAxLAogICAgTGFuZ3VhZ2VJRCA9PiAxLAogICAgS2V5d29yZHMgICA9PiAnc29tZSBrZXl3b3JkcycsCiAgICBGaWVsZDEgICAgID0+ICdQcm9ibGVtLi4uJywKICAgIEZpZWxkMiAgICAgPT4gJ1NvbHV0aW9uLi4uJywKKTsKCmZvciBteSAkVGVzdCAoIHNvcnQga2V5cyAlRkFRVGVzdCApIHsKICAgICRTZWxmLT5JcygKICAgICAgICAkRkFReyRUZXN0fSwKICAgICAgICAkRkFRVGVzdHskVGVzdH0sCiAgICAgICAgIkZBUUdldCgpIC0gJFRlc3QiLAogICAgKTsKfQoKbXkgJEZBUVVwZGF0ZSA9ICRGQVFPYmplY3QtPkZBUVVwZGF0ZSgKICAgIEl0ZW1JRCAgICAgPT4gJEZBUUlELAogICAgQ2F0ZWdvcnlJRCA9PiAxLAogICAgU3RhdGVJRCAgICA9PiAyLAogICAgTGFuZ3VhZ2VJRCA9PiAyLAogICAgQXBwcm92ZWQgICA9PiAxLAogICAgVGl0bGUgICAgICA9PiAnU29tZSBUZXh0MicsCiAgICBLZXl3b3JkcyAgID0+ICdzb21lIGtleXdvcmRzMicsCiAgICBGaWVsZDEgICAgID0+ICdQcm9ibGVtLi4uMicsCiAgICBGaWVsZDIgICAgID0+ICdTb2x1dGlvbiBmb3VuZC4uLjInLAogICAgVXNlcklEICAgICA9PiAxLAopOwoKJUZBUSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgIEl0ZW1JRCAgICAgPT4gJEZBUUlELAogICAgSXRlbUZpZWxkcyA9PiAxLAogICAgVXNlcklEICAgICA9PiAxLAopOwoKJUZBUVRlc3QgPSAoCiAgICBUaXRsZSAgICAgID0+ICdTb21lIFRleHQyJywKICAgIENhdGVnb3J5SUQgPT4gMSwKICAgIFN0YXRlSUQgICAgPT4gMiwKICAgIExhbmd1YWdlSUQgPT4gMiwKICAgIEtleXdvcmRzICAgPT4gJ3NvbWUga2V5d29yZHMyJywKICAgIEZpZWxkMSAgICAgPT4gJ1Byb2JsZW0uLi4yJywKICAgIEZpZWxkMiAgICAgPT4gJ1NvbHV0aW9uIGZvdW5kLi4uMicsCik7Cgpmb3IgbXkgJFRlc3QgKCBzb3J0IGtleXMgJUZBUVRlc3QgKSB7CiAgICAkU2VsZi0+SXMoCiAgICAgICAgJEZBUVRlc3R7JFRlc3R9LAogICAgICAgICRGQVF7JFRlc3R9LAogICAgICAgICJGQVFHZXQoKSAtICRUZXN0IiwKICAgICk7Cn0KCm15ICRPayA9ICRGQVFPYmplY3QtPlZvdGVBZGQoCiAgICBDcmVhdGVkQnkgPT4gJ1NvbWUgVGV4dCcsCiAgICBJdGVtSUQgICAgPT4gJEZBUUlELAogICAgSVAgICAgICAgID0+ICc1NC40My4zMC4xJywKICAgIEludGVyZmFjZSA9PiAnMicsCiAgICBSYXRlICAgICAgPT4gMTAwLAogICAgVXNlcklEICAgID0+IDEsCik7CgokU2VsZi0+VHJ1ZSgKICAgICRPaywKICAgICJWb3RlQWRkKCkiLAopOwoKbXkgJFZvdGUgPSAkRkFRT2JqZWN0LT5Wb3RlR2V0KAogICAgQ3JlYXRlQnkgID0+ICdTb21lIFRleHQnLAogICAgSXRlbUlEICAgID0+ICRGQVFJRCwKICAgIElQICAgICAgICA9PiAnNTQuNDMuMzAuMScsCiAgICBJbnRlcmZhY2UgPT4gJzInLAogICAgVXNlcklEICAgID0+IDEsCik7CgokU2VsZi0+SXMoCiAgICAkVm90ZS0+e0lQfSwKICAgICc1NC40My4zMC4xJywKICAgICJWb3RlR2V0KCkgLSBJUCIsCik7CgpteSAkRkFRSUQyID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgVGl0bGUgICAgICA9PiAnVGl0bGUnLAogICAgQ2F0ZWdvcnlJRCA9PiAxLAogICAgU3RhdGVJRCAgICA9PiAxLAogICAgTGFuZ3VhZ2VJRCA9PiAxLAogICAgS2V5d29yZHMgICA9PiAnJywKICAgIEZpZWxkMSAgICAgPT4gJ1Byb2JsZW0gRGVzY3JpcHRpb24gMS4uLicsCiAgICBGaWVsZDIgICAgID0+ICdTb2x1dGlvbiBub3QgZm91bmQxLi4uJywKICAgIFVzZXJJRCAgICAgPT4gMSwKKTsKCiRTZWxmLT5UcnVlKAogICAgJEZBUUlEMiwKICAgICJGQVFBZGQoKSAtIDIiLAopOwoKbXkgJEhvbWUgICAgICAgICAgICA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdIb21lJyk7Cm15IEBBdHRhY2htZW50VGVzdHMgPSAoCiAgICB7CiAgICAgICAgRmlsZSA9PiAnRkFRLVRlc3QxLnBkZicsCiAgICAgICAgTUQ1ICA9PiAnNWVlNzY3ZjNiNjhmMjRhOTIxM2UwYmVmODJkYzUzZTUnLAogICAgfSwKICAgIHsKICAgICAgICBGaWxlID0+ICdGQVEtVGVzdDEuZG9jJywKICAgICAgICBNRDUgID0+ICcyZTUyMDAzNmEwY2RhNmE4MDZhODgzOGIxMDAwZDlkNycsCiAgICB9LAopOwpmb3IgbXkgJEF0dGFjaG1lbnRUZXN0IChAQXR0YWNobWVudFRlc3RzKSB7CiAgICBteSAkQ29udGVudFNDQUxBUlJlZiA9ICRTZWxmLT57TWFpbk9iamVjdH0tPkZpbGVSZWFkKAogICAgICAgIExvY2F0aW9uID0+ICRIb21lIC4gJy9zY3JpcHRzL3Rlc3Qvc2FtcGxlLycgLiAkQXR0YWNobWVudFRlc3QtPntGaWxlfSwKICAgICk7CiAgICBteSAkQWRkID0gJEZBUU9iamVjdC0+QXR0YWNobWVudEFkZCgKICAgICAgICBJdGVtSUQgICAgICA9PiAkRkFRSUQyLAogICAgICAgIENvbnRlbnQgICAgID0+ICR7JENvbnRlbnRTQ0FMQVJSZWZ9LAogICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3htbCcsCiAgICAgICAgRmlsZW5hbWUgICAgPT4gJEF0dGFjaG1lbnRUZXN0LT57RmlsZX0sCiAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICk7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkQWRkLAogICAgICAgICJBdHRhY2htZW50QWRkKCkgLSAkQXR0YWNobWVudFRlc3QtPntGaWxlfSIsCiAgICApOwogICAgbXkgQEF0dGFjaG1lbnRJbmRleCA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRJbmRleCgKICAgICAgICBJdGVtSUQgPT4gJEZBUUlEMiwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CiAgICBteSAlRmlsZSA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRHZXQoCiAgICAgICAgSXRlbUlEID0+ICRGQVFJRDIsCiAgICAgICAgRmlsZUlEID0+ICRBdHRhY2htZW50SW5kZXhbMF0tPntGaWxlSUR9LAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKICAgICRTZWxmLT5JcygKICAgICAgICAkRmlsZXtGaWxlbmFtZX0sCiAgICAgICAgJEF0dGFjaG1lbnRUZXN0LT57RmlsZX0sCiAgICAgICAgIkF0dGFjaG1lbnRHZXQoKSAtIEZpbGVuYW1lICRBdHRhY2htZW50VGVzdC0+e0ZpbGV9IiwKICAgICk7CiAgICBteSAkTUQ1ID0gJFNlbGYtPntNYWluT2JqZWN0fS0+TUQ1c3VtKAogICAgICAgIFN0cmluZyA9PiBcJEZpbGV7Q29udGVudH0sCiAgICApOwogICAgJFNlbGYtPklzKAogICAgICAgICRNRDUsCiAgICAgICAgJEF0dGFjaG1lbnRUZXN0LT57TUQ1fSwKICAgICAgICAiQXR0YWNobWVudEdldCgpIC0gTUQ1ICRBdHRhY2htZW50VGVzdC0+e0ZpbGV9IiwKICAgICk7CgogICAgbXkgJERlbGV0ZSA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnREZWxldGUoCiAgICAgICAgSXRlbUlEID0+ICRGQVFJRDIsCiAgICAgICAgRmlsZUlEID0+ICRBdHRhY2htZW50SW5kZXhbMF0tPntGaWxlSUR9LAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKICAgICRTZWxmLT5UcnVlKAogICAgICAgICREZWxldGUsCiAgICAgICAgIkF0dGFjaG1lbnREZWxldGUoKSAtICRBdHRhY2htZW50VGVzdC0+e0ZpbGV9IiwKICAgICk7Cn0KCm15ICRWb3RlSURzUmVmID0gJEZBUU9iamVjdC0+Vm90ZVNlYXJjaCgKICAgIEl0ZW1JRCA9PiAkRkFRSUQsCiAgICBVc2VySUQgPT4gMSwKKTsKCmZvciBteSAkVm90ZUlEICggQHskVm90ZUlEc1JlZn0gKSB7CiAgICBteSAkVm90ZURlbGV0ZSA9ICRGQVFPYmplY3QtPlZvdGVEZWxldGUoCiAgICAgICAgVm90ZUlEID0+IDEsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJFZvdGVEZWxldGUsCiAgICAgICAgIlZvdGVEZWxldGUoKSIsCiAgICApOwp9CgojIGFkZCBGQVEgYXJ0aWNsZSB0byBsb2cKbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFMb2dBZGQoCiAgICBJdGVtSUQgICAgPT4gJEZBUUlELAogICAgSW50ZXJmYWNlID0+ICdpbnRlcm5hbCcsCiAgICBVc2VySUQgICAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkU3VjY2VzcywKICAgICJGQVFMb2dBZGQoKSAtICRGQVFJRCIsCik7CgojIHRyeSB0byBhZGQgc2FtZSBGQVEgYXJ0aWNsZSB0byBsb2cgYWdhaW4gKG11c3QgcmV0dXJuIGZhbHNlKQokU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUUxvZ0FkZCgKICAgIEl0ZW1JRCAgICA9PiAkRkFRSUQsCiAgICBJbnRlcmZhY2UgPT4gJ2ludGVybmFsJywKICAgIFVzZXJJRCAgICA9PiAxLAopOwokU2VsZi0+RmFsc2UoCiAgICAkU3VjY2VzcywKICAgICJGQVFMb2dBZGQoKSAtICRGQVFJRCIsCik7CgojIGFkZCBhbm90aGVyIEZBUSBhcnRpY2xlIHRvIGxvZwokU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUUxvZ0FkZCgKICAgIEl0ZW1JRCAgICA9PiAkRkFRSUQyLAogICAgSW50ZXJmYWNlID0+ICdpbnRlcm5hbCcsCiAgICBVc2VySUQgICAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkU3VjY2VzcywKICAgICJGQVFMb2dBZGQoKSAtICRGQVFJRDIiLAopOwoKIyBnZXQgRkFRIFRvcDEwCm15ICRUb3AxMElEc1JlZiA9ICRGQVFPYmplY3QtPkZBUVRvcDEwR2V0KAogICAgSW50ZXJmYWNlID0+ICdpbnRlcm5hbCcsCiAgICBMaW1pdCAgICAgPT4gMTAsCiAgICBVc2VySUQgICAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICBzY2FsYXIgQHskVG9wMTBJRHNSZWZ9LAogICAgIkZBUVRvcDEwR2V0KCkiLAopOwoKIyB0ZXN0IExhbmd1YWdlTG9va3VwKCkKbXkgJExhbmd1YWdlTmFtZSA9ICRGQVFPYmplY3QtPkxhbmd1YWdlTG9va3VwKAogICAgTGFuZ3VhZ2VJRCA9PiAxLAogICAgVXNlcklEICAgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRMYW5ndWFnZU5hbWUsCiAgICAiTGFuZ3VhZ2VMb29rdXAoKSBmb3IgTGFuZ3VhZ2VJRCAnMScgaXMgJyRMYW5ndWFnZU5hbWUnIiwKKTsKCm15ICRMYW5ndWFnZUlEID0gJEZBUU9iamVjdC0+TGFuZ3VhZ2VMb29rdXAoCiAgICBOYW1lICAgPT4gJExhbmd1YWdlTmFtZSwKICAgIFVzZXJJRCA9PiAxLAopOwokU2VsZi0+SXMoCiAgICAkTGFuZ3VhZ2VJRCwKICAgIDEsCiAgICAiTGFuZ3VhZ2VMb29rdXAoKSBmb3IgTGFuZ3VhZ2VOYW1lICckTGFuZ3VhZ2VOYW1lJyIsCik7CgpteSAkRkFRRGVsZXRlID0gJEZBUU9iamVjdC0+RkFRRGVsZXRlKAogICAgSXRlbUlEID0+ICRGQVFJRCwKICAgIFVzZXJJRCA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRGQVFEZWxldGUsCiAgICAiRkFRRGVsZXRlKCkgLSBGQVFJRDogJEZBUUlEIiwKKTsKCm15ICRGQVFEZWxldGUyID0gJEZBUU9iamVjdC0+RkFRRGVsZXRlKAogICAgSXRlbUlEID0+ICRGQVFJRDIsCiAgICBVc2VySUQgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkRkFRRGVsZXRlMiwKICAgICJGQVFEZWxldGUoKSAtIEZBUUlEOiAkRkFRSUQyIiwKKTsKCm15ICRDYXRlZ29yeUlEID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlBZGQoCiAgICBOYW1lICAgICA9PiAnVGVzdENhdGVnb3J5JywKICAgIENvbW1lbnQgID0+ICdDYXRlZ29yeSBmb3IgdGVzdGluZycsCiAgICBQYXJlbnRJRCA9PiAwLAogICAgVmFsaWRJRCAgPT4gMSwKICAgIFVzZXJJRCAgID0+IDEsCik7CgokU2VsZi0+VHJ1ZSgKICAgICRDYXRlZ29yeUlELAogICAgIkNhdGVnb3J5QWRkKCkgLSBSb290IENhdGVnb3J5IiwKKTsKCiMgc2V0IFBhcmVudElEIHRvIGVtcHR5IHRvIG1ha2UgaXQgZmFpbApteSAkQ2F0ZWdvcnlJREZhaWwgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUFkZCgKICAgIE5hbWUgICAgID0+ICdUZXN0Q2F0ZWdvcnknLAogICAgQ29tbWVudCAgPT4gJ0NhdGVnb3J5IGZvciB0ZXN0aW5nJywKICAgIFBhcmVudElEID0+ICcnLAogICAgVmFsaWRJRCAgPT4gMSwKICAgIFVzZXJJRCAgID0+IDEsCik7CgokU2VsZi0+RmFsc2UoCiAgICAkQ2F0ZWdvcnlJREZhaWwsCiAgICAiQ2F0ZWdvcnlBZGQoKSAtIFJvb3QgQ2F0ZWdvcnkiLAopOwoKbXkgJENhdGVnb3J5VXBkYXRlID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlVcGRhdGUoCiAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgUGFyZW50SUQgICA9PiAwLAogICAgTmFtZSAgICAgICA9PiAnUm9vdENhdGVnb3J5JywKICAgIENvbW1lbnQgICAgPT4gJ1Jvb3QgQ2F0ZWdvcnkgZm9yIHRlc3RpbmcnLAogICAgVmFsaWRJRCAgICA9PiAxLAogICAgVXNlcklEICAgICA9PiAxLAopOwoKJFNlbGYtPlRydWUoCiAgICAkQ2F0ZWdvcnlVcGRhdGUsCiAgICAiQ2F0ZWdvcnlVcGRhdGUoKSAtIFJvb3QgQ2F0ZWdvcnkiLAopOwoKIyBzZXQgUGFyZW50SUQgdG8gZW1wdHkgdG8gbWFrZSBpdCBmYWlsCm15ICRDYXRlZ29yeVVwZGF0ZUZhaWwgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeVVwZGF0ZSgKICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICBQYXJlbnRJRCAgID0+ICcnLAogICAgTmFtZSAgICAgICA9PiAnUm9vdENhdGVnb3J5JywKICAgIENvbW1lbnQgICAgPT4gJ1Jvb3QgQ2F0ZWdvcnkgZm9yIHRlc3RpbmcnLAogICAgVmFsaWRJRCAgICA9PiAxLAogICAgVXNlcklEICAgICA9PiAxLAopOwoKJFNlbGYtPkZhbHNlKAogICAgJENhdGVnb3J5VXBkYXRlRmFpbCwKICAgICJDYXRlZ29yeVVwZGF0ZSgpIC0gUm9vdCBDYXRlZ29yeSIsCik7CgpteSAkQ2hpbGRDYXRlZ29yeUlEID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlBZGQoCiAgICBOYW1lICAgICA9PiAnQ2hpbGRDYXRlZ29yeScsCiAgICBDb21tZW50ICA9PiAnQ2hpbGQgQ2F0ZWdvcnkgZm9yIHRlc3RpbmcnLAogICAgUGFyZW50SUQgPT4gJENhdGVnb3J5SUQsCiAgICBWYWxpZElEICA9PiAxLAogICAgVXNlcklEICAgPT4gMSwKKTsKCiRTZWxmLT5UcnVlKAogICAgJENoaWxkQ2F0ZWdvcnlJRCwKICAgICJDYXRlZ29yeUFkZCgpIC0gQ2hpbGQgQ2F0ZWdvcnkiLAopOwoKbXkgJENoaWxkQ2F0ZWdvcnlEZWxldGUgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeURlbGV0ZSgKICAgIENhdGVnb3J5SUQgPT4gJENoaWxkQ2F0ZWdvcnlJRCwKICAgIFVzZXJJRCAgICAgPT4gMSwKKTsKCiRTZWxmLT5UcnVlKAogICAgJENoaWxkQ2F0ZWdvcnlEZWxldGUsCiAgICAiQ2F0ZWdvcnlEZWxldGUoKSAtIENoaWxkIENhdGVnb3J5IiwKKTsKCm15ICRDYXRlZ29yeURlbGV0ZSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5RGVsZXRlKAogICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgIFVzZXJJRCAgICAgPT4gMSwKKTsKCiRTZWxmLT5UcnVlKAogICAgJENhdGVnb3J5RGVsZXRlLAogICAgIkNhdGVnb3J5RGVsZXRlKCkgLSBSb290IENhdGVnb3J5IiwKKTsKCiNJdGVtRmllbGRHZXQgVGVzdHMKbXkgJVRlc3RGaWVsZHMgPSAoCiAgICBGaWVsZDEgPT4gJ1N5bXB0b20uLi4nLAogICAgRmllbGQyID0+ICdQcm9ibGVtLi4uJywKICAgIEZpZWxkMyA9PiAnU29sdXRpb24uLi4nLAogICAgRmllbGQ0ID0+ICdVc2VyIEZpZWxkNC4uLicsCiAgICBGaWVsZDUgPT4gJ1VzZXIgRmllbGQ1Li4uJywKICAgIEZpZWxkNiA9PiAnQ29tbWVudC4uLicsCik7CgokRkFRSUQgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICBUaXRsZSAgICAgID0+ICdTb21lIFRleHQnLAogICAgQ2F0ZWdvcnlJRCA9PiAxLAogICAgU3RhdGVJRCAgICA9PiAxLAogICAgTGFuZ3VhZ2VJRCA9PiAxLAogICAgS2V5d29yZHMgICA9PiAnc29tZSBrZXl3b3JkcycsCiAgICAlVGVzdEZpZWxkcywKICAgIFVzZXJJRCA9PiAxLAopOwoKJFNlbGYtPlRydWUoCiAgICAkRkFRSUQsCiAgICAiRkFRQWRkKCkgZm9yIEl0ZW1GaWVsZEdldCB3aXRoIFRydWUiLAopOwoKbXkgJVJlc3VsdEZpZWxkczsKCm15ICRDaGVja0ZpZWxkcyA9IHN1YiB7CiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBmb3IgbXkgJEZpZWxkQ291bnQgKCAxIC4uIDYgKSB7CiAgICAgICAgbXkgJEZpZWxkID0gIkZpZWxkJEZpZWxkQ291bnQiOwoKICAgICAgICAjIGNoZWNrIHRoYXQgY2FjaGUgaXMgY2xlYW4KICAgICAgICBteSAkQ2FjaGUgPSAkRkFRT2JqZWN0LT57Q2FjaGVPYmplY3R9LT5HZXQoCiAgICAgICAgICAgIFR5cGUgPT4gJ0ZBUScsCiAgICAgICAgICAgIEtleSAgPT4gIkl0ZW1GaWVsZEdldDo6SXRlbUlEOjokRkFRSUQiLAogICAgICAgICk7CgogICAgICAgIyBvbiBiZWZvcmUgZmlyc3QgR2V0IGNjaGUgc2hvdWxkIGJlIHVuZGVmLCBhZnRlciBmaXJzIGNhY2hlIGV4aXN0LCBidXQgdGhlIEZpZWxkIGtleSBtdXN0IGJlCiAgICAgICAjIHVuZGVmCiAgICAgICAgaWYgKCByZWYgJENhY2hlIGVxICdIQVNIJyApIHsKICAgICAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAgICAgJENhY2hlLT57JEZpZWxkfSwKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgIkNhY2hlIGJlZm9yZSBJdGVtRmllbGRHZXQoKTogJEZpZWxkIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgICAgICRDYWNoZSwKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgIkNhY2hlIGJlZm9yZSBJdGVtRmllbGRHZXQoKTogQ29tcGxldGUgY2FjaGUiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgdGhlIGZpZWxkCiAgICAgICAgJFJlc3VsdEZpZWxkc3skRmllbGR9ID0gJEZBUU9iamVjdC0+SXRlbUZpZWxkR2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJEZBUUlELAogICAgICAgICAgICBGaWVsZCAgPT4gJEZpZWxkLAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGNhY2hlIGlzIHNldAogICAgICAgICRDYWNoZSA9ICRGQVFPYmplY3QtPntDYWNoZU9iamVjdH0tPkdldCgKICAgICAgICAgICAgVHlwZSA9PiAnRkFRJywKICAgICAgICAgICAgS2V5ICA9PiAiSXRlbUZpZWxkR2V0OjpJdGVtSUQ6OiRGQVFJRCIsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICByZWYgJENhY2hlLAogICAgICAgICAgICAnSEFTSCcsCiAgICAgICAgICAgICJDYWNoZSBhZnRlciBJdGVtRmllbGRHZXQoKTogcmVmIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJENhY2hlLT57JEZpZWxkfSwKICAgICAgICAgICAgJFBhcmFte0NvbXBhcmVGaWVsZHN9LT57JEZpZWxkfSwKICAgICAgICAgICAgIkNhY2hlIGFmdGVyIEl0ZW1GaWVsZEdldCgpOiAkRmllbGQgbWF0Y2hlZCB3aXRoIG9yaWdpbmFsIGZpZWxkIGRhdGEiLAogICAgICAgICk7CiAgICB9Cn07CgokQ2hlY2tGaWVsZHMtPiggQ29tcGFyZUZpZWxkcyA9PiBcJVRlc3RGaWVsZHMgKTsKCiRTZWxmLT5Jc0RlZXBseSgKICAgIFwlUmVzdWx0RmllbGRzLAogICAgXCVUZXN0RmllbGRzLAogICAgIkl0ZW1GaWVsZEdldCgpOiBmb3IgYWxsIGZpZWxkcyBtYXRjaCBleHBlY3RlZCBkYXRhIiwKKTsKCiMgdXBkYXRlIHRoZSBGQVEgaXRlbQpteSAlVXBkYXRlZFRlc3RGaWVsZHMgPSAoCiAgICBGaWVsZDEgPT4gJ1VwZGF0ZWQgU3ltcHRvbS4uLicsCiAgICBGaWVsZDIgPT4gJ1VwZGF0ZWQgUHJvYmxlbS4uLicsCiAgICBGaWVsZDMgPT4gJ1VwZGF0ZWQgU29sdXRpb24uLi4nLAogICAgRmllbGQ0ID0+ICdVcGRhdGVkIFVzZXIgRmllbGQ0Li4uJywKICAgIEZpZWxkNSA9PiAnVXBkYXRlZCBVc2VyIEZpZWxkNS4uLicsCiAgICBGaWVsZDYgPT4gJ1VwZGF0ZWQgQ29tbWVudC4uLicsCik7CgokRkFRVXBkYXRlID0gJEZBUU9iamVjdC0+RkFRVXBkYXRlKAogICAgSXRlbUlEICAgICA9PiAkRkFRSUQsCiAgICBUaXRsZSAgICAgID0+ICdTb21lIFRleHQnLAogICAgQ2F0ZWdvcnlJRCA9PiAxLAogICAgU3RhdGVJRCAgICA9PiAxLAogICAgTGFuZ3VhZ2VJRCA9PiAxLAogICAgS2V5d29yZHMgICA9PiAnc29tZSBrZXl3b3JkcycsCiAgICAlVXBkYXRlZFRlc3RGaWVsZHMsCiAgICBVc2VySUQgPT4gMSwKKTsKCiRTZWxmLT5UcnVlKAogICAgJEZBUVVwZGF0ZSwKICAgICJGQVFVcGRhdGUoKSBmb3IgSXRlbUZpZWxkR2V0IHdpdGggVHJ1ZSIsCik7CgokQ2hlY2tGaWVsZHMtPiggQ29tcGFyZUZpZWxkcyA9PiBcJVVwZGF0ZWRUZXN0RmllbGRzICk7CgokRkFRRGVsZXRlID0gJEZBUU9iamVjdC0+RkFRRGVsZXRlKAogICAgSXRlbUlEID0+ICRGQVFJRCwKICAgIFVzZXJJRCA9PiAxLAopOwoKJFNlbGYtPlRydWUoCiAgICAkRkFRRGVsZXRlLAogICAgIkZBUURlbGV0ZSgpIGZvciBJdGVtRmllbGRHZXQ6IHdpdGggVHJ1ZSIsCik7CgojIGNoZWNrIHRoYXQgY2FjaGUgaXMgY2xlYW4KbXkgJENhY2hlID0gJEZBUU9iamVjdC0+e0NhY2hlT2JqZWN0fS0+R2V0KAogICAgVHlwZSA9PiAnRkFRJywKICAgIEtleSAgPT4gIkl0ZW1GaWVsZEdldDo6SXRlbUlEOjokRkFRSUQiLAopOwoKJFNlbGYtPklzKAogICAgJENhY2hlLAogICAgdW5kZWYsCiAgICAiQ2FjaGUgZm9yIEl0ZW1GaWVsZEdldCgpIGFmdGVyIEZBUURlbGV0ZTogQ29tcGxldGUgY2FjaGUiLAopOwoKIyBGQVEgaXRlbSBjYWNoZSB0ZXN0cwokRkFRSUQgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICBUaXRsZSAgICAgID0+ICdTb21lIFRleHQnLAogICAgQ2F0ZWdvcnlJRCA9PiAxLAogICAgU3RhdGVJRCAgICA9PiAxLAogICAgTGFuZ3VhZ2VJRCA9PiAxLAogICAgS2V5d29yZHMgICA9PiAnc29tZSBrZXl3b3JkcycsCiAgICAlVGVzdEZpZWxkcywKICAgIFVzZXJJRCA9PiAxLAopOwoKIyBjaGVjayB0aGF0IGNhY2hlIGlzIGNsZWFuCiRDYWNoZSA9ICRGQVFPYmplY3QtPntDYWNoZU9iamVjdH0tPkdldCgKICAgIFR5cGUgPT4gJ0ZBUScsCiAgICBLZXkgID0+ICdGQVFHZXQ6Okl0ZW1JRDo6JyAuICRGQVFJRCAuICc6Okl0ZW1GaWVsZHM6OjAnLAopOwokU2VsZi0+SXMoCiAgICAkQ2FjaGUsCiAgICB1bmRlZiwKICAgICJDYWNoZSBmb3IgRkFRIE5vIEl0ZW1GaWVsZHMgQmVmb3JlIEZBUUdldCgpOiBDb21wbGV0ZSBjYWNoZSIsCik7CiRDYWNoZSA9ICRGQVFPYmplY3QtPntDYWNoZU9iamVjdH0tPkdldCgKICAgIFR5cGUgPT4gJ0ZBUScsCiAgICBLZXkgID0+ICdGQVFHZXQ6Okl0ZW1JRDo6JyAuICRGQVFJRCAuICc6Okl0ZW1GaWVsZHM6OjEnLAopOwokU2VsZi0+SXMoCiAgICAkQ2FjaGUsCiAgICB1bmRlZiwKICAgICJDYWNoZSBmb3IgRkFRIFdpdGggSXRlbUZpZWxkcyBCZWZvcmUgRkFRR2V0KCk6IENvbXBsZXRlIGNhY2hlIiwKKTsKCiMgZ2V0IEZBUSBubyBJdGVtIEZpZWxkcwpteSAlRkFRRGF0YSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgIEl0ZW1JRCAgICAgPT4gJEZBUUlELAogICAgSXRlbUZpZWxkcyA9PiAwLAogICAgVXNlcklEICAgICA9PiAxCik7CgokU2VsZi0+SXMoCiAgICAkRkFRRGF0YXtJdGVtSUR9LAogICAgJEZBUUlELAogICAgIlNhbml0eSBDaGVjayBmb3IgRkFRR2V0KCk6IG1hdGNoIEl0ZW1JRCIKKTsKCiMgc2FuaXR5IGNoZWNrIEl0ZW0gRmllbGRzCmZvciBteSAkRmllbGRDb3VudCAoIDEgLi4gNiApIHsKICAgIG15ICRGaWVsZCA9ICJGaWVsZCRGaWVsZENvdW50IjsKCiAgICAkU2VsZi0+SXMoCiAgICAgICAgJEZBUURhdGF7JEZpZWxkfSwKICAgICAgICB1bmRlZiwKICAgICAgICAiU2FuaXR5IENoZWNrIGZvciBGQVFHZXQoKTogbm8gSXRlbUZpZWxkcyAkRmllbGQiLAogICAgKTsKfQokQ2FjaGUgPSAkRkFRT2JqZWN0LT57Q2FjaGVPYmplY3R9LT5HZXQoCiAgICBUeXBlID0+ICdGQVEnLAogICAgS2V5ICA9PiAnRkFRR2V0OjpJdGVtSUQ6OicgLiAkRkFRSUQgLiAnOjpJdGVtRmllbGRzOjowJywKKTsKJFNlbGYtPklzKAogICAgcmVmICRDYWNoZSwKICAgICdIQVNIJywKICAgICJDYWNoZSBmb3IgRkFRIE5vIEl0ZW1GaWVsZHMgQWZ0ZXIgRkFRR2V0KCk6IENvbXBsZXRlIGNhY2hlIHJlZiIsCik7CiRDYWNoZSA9ICRGQVFPYmplY3QtPntDYWNoZU9iamVjdH0tPkdldCgKICAgIFR5cGUgPT4gJ0ZBUScsCiAgICBLZXkgID0+ICdGQVFHZXQ6Okl0ZW1JRDo6JyAuICRGQVFJRCAuICc6Okl0ZW1GaWVsZHM6OjEnLAopOwokU2VsZi0+SXMoCiAgICAkQ2FjaGUsCiAgICB1bmRlZiwKICAgICJDYWNoZSBmb3IgRkFRIFdpdGggSXRlbUZpZWxkcyBBZnRlciBGQVFHZXQoKTogQ29tcGxldGUgY2FjaGUiLAopOwoKIyBnZXQgRkFRIHdpdGggSXRlbSBGaWVsZHMKJUZBUURhdGEgPSAkRkFRT2JqZWN0LT5GQVFHZXQoCiAgICBJdGVtSUQgICAgID0+ICRGQVFJRCwKICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgIFVzZXJJRCAgICAgPT4gMQopOwoKJFNlbGYtPklzKAogICAgJEZBUURhdGF7SXRlbUlEfSwKICAgICRGQVFJRCwKICAgICJTYW5pdHkgQ2hlY2sgZm9yIEZBUUdldCgpOiBtYXRjaCBJdGVtSUQiCik7CgojIHNhbml0eSBjaGVjayBJdGVtIEZpZWxkcwpmb3IgbXkgJEZpZWxkQ291bnQgKCAxIC4uIDYgKSB7CiAgICBteSAkRmllbGQgPSAiRmllbGQkRmllbGRDb3VudCI7CgogICAgJFNlbGYtPklzTm90KAogICAgICAgICRGQVFEYXRheyRGaWVsZH0sCiAgICAgICAgdW5kZWYsCiAgICAgICAgIlNhbml0eSBDaGVjayBmb3IgRkFRR2V0KCk6IHdpdGggSXRlbUZpZWxkcyAkRmllbGQiLAogICAgKTsKfQokQ2FjaGUgPSAkRkFRT2JqZWN0LT57Q2FjaGVPYmplY3R9LT5HZXQoCiAgICBUeXBlID0+ICdGQVEnLAogICAgS2V5ICA9PiAnRkFRR2V0OjpJdGVtSUQ6OicgLiAkRkFRSUQgLiAnOjpJdGVtRmllbGRzOjowJywKKTsKJFNlbGYtPklzKAogICAgcmVmICRDYWNoZSwKICAgICdIQVNIJywKICAgICJDYWNoZSBmb3IgRkFRIE5vIEl0ZW1GaWVsZHMgQWZ0ZXIgRkFRR2V0KCk6IENvbXBsZXRlIGNhY2hlIHJlZiIsCik7CiRDYWNoZSA9ICRGQVFPYmplY3QtPntDYWNoZU9iamVjdH0tPkdldCgKICAgIFR5cGUgPT4gJ0ZBUScsCiAgICBLZXkgID0+ICdGQVFHZXQ6Okl0ZW1JRDo6JyAuICRGQVFJRCAuICc6Okl0ZW1GaWVsZHM6OjEnLAopOwokU2VsZi0+SXMoCiAgICByZWYgJENhY2hlLAogICAgJ0hBU0gnLAogICAgIkNhY2hlIGZvciBGQVEgV2l0aCBJdGVtRmllbGRzIEFmdGVyIEZBUUdldCgpOiBDb21wbGV0ZSBjYWNoZSByZWYiLAopOwoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgRkFRIFN0YXRlIHRlc3RzCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpteSAlU3RhdGVzID0gJEZBUU9iamVjdC0+U3RhdGVMaXN0KAogICAgVXNlcklEID0+IDEsCik7CgokU2VsZi0+SXNOb3QoCiAgICBzY2FsYXIga2V5cyAlU3RhdGVzLAogICAgMCwKICAgICJTdGF0ZUxpc3QoKSBudW1iZXIgb2YgZWxlbWVudHMgc2hvdWxkIG5vdCBiZSAwIgopOwoKZm9yIG15ICRTdGF0ZUlEICggc29ydCBrZXlzICVTdGF0ZXMgKSB7CiAgICBteSAlU3RhdGUgPSAkRkFRT2JqZWN0LT5TdGF0ZUdldCgKICAgICAgICBTdGF0ZUlEID0+ICRTdGF0ZUlELAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICk7CgogICAgJFNlbGYtPklzTm90KAogICAgICAgICRTdGF0ZXtTdGF0ZUlEfSwKICAgICAgICB1bmRlZiwKICAgICAgICAiU3RhdGVHZXQoKSBTdGF0ZUlEIGZvciBTdGF0ZUlEOiAnJFN0YXRlSUQnIHNob3VsZCBub3QgYmUgdW5kZWYiCiAgICApOwogICAgJFNlbGYtPklzTm90KAogICAgICAgICRTdGF0ZXtOYW1lfSwKICAgICAgICB1bmRlZiwKICAgICAgICAiU3RhdGVHZXQoKSBOYW1lIGZvciBTdGF0ZUlEOiAgICAnJFN0YXRlSUQnIHNob3VsZCBub3QgYmUgdW5kZWYiCiAgICApOwogICAgJFNlbGYtPklzTm90KAogICAgICAgICRTdGF0ZXtUeXBlSUR9LAogICAgICAgIHVuZGVmLAogICAgICAgICJTdGF0ZUdldCgpIFR5cGVJRCBmb3IgU3RhdGVJRDogICckU3RhdGVJRCcgc2hvdWxkIG5vdCBiZSB1bmRlZiIKICAgICk7Cn0KCm15ICRTdGF0ZVR5cGVMaXN0ID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlTGlzdCgKICAgIFVzZXJJRCA9PiAxLAopOwoKJFNlbGYtPklzKAogICAgcmVmICRTdGF0ZVR5cGVMaXN0LAogICAgJ0hBU0gnLAogICAgIlN0YXRlVHlwZUxpc3QoKSByZXR1cm5zIGhhc2hyZWYiLAopOwoKJFNlbGYtPklzKAogICAgc2NhbGFyIGtleXMgJXskU3RhdGVUeXBlTGlzdH0sCiAgICAzLAogICAgIlN0YXRlVHlwZUxpc3QoKSBoYXMgMyBrZXlzIiwKKTsKCiRTZWxmLT5JcygKICAgICRTdGF0ZVR5cGVMaXN0LT57MX0sCiAgICAnaW50ZXJuYWwnLAogICAgIlN0YXRlVHlwZUxpc3QoKSAxIGlzIGludGVybmFsIiwKKTsKCiRTZWxmLT5JcygKICAgICRTdGF0ZVR5cGVMaXN0LT57Mn0sCiAgICAnZXh0ZXJuYWwnLAogICAgIlN0YXRlVHlwZUxpc3QoKSAyIGlzIGV4dGVybmFsIiwKKTsKCiRTZWxmLT5JcygKICAgICRTdGF0ZVR5cGVMaXN0LT57M30sCiAgICAncHVibGljJywKICAgICJTdGF0ZVR5cGVMaXN0KCkgMyBpcyBwdWJsaWMiLAopOwoKJFN0YXRlVHlwZUxpc3QgPSAkRkFRT2JqZWN0LT5TdGF0ZVR5cGVMaXN0KAogICAgVHlwZXMgPT4gWyAncHVibGljJywgJ2V4dGVybmFsJyBdLAogICAgVXNlcklEID0+IDEsCik7CgokU2VsZi0+SXMoCiAgICBzY2FsYXIga2V5cyAleyRTdGF0ZVR5cGVMaXN0fSwKICAgIDIsCiAgICAiU3RhdGVUeXBlTGlzdCgpIGhhcyAyIGtleXMiLAopOwoKJFNlbGYtPklzKAogICAgJFN0YXRlVHlwZUxpc3QtPnsyfSwKICAgICdleHRlcm5hbCcsCiAgICAiU3RhdGVUeXBlTGlzdCgpIDIgaXMgZXh0ZXJuYWwiLAopOwoKJFNlbGYtPklzKAogICAgJFN0YXRlVHlwZUxpc3QtPnszfSwKICAgICdwdWJsaWMnLAogICAgIlN0YXRlVHlwZUxpc3QoKSAzIGlzIHB1YmxpYyIsCik7CgokU3RhdGVUeXBlTGlzdCA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUxpc3QoCiAgICBUeXBlcyAgPT4gWydpbnRlcm5hbCddLAogICAgVXNlcklEID0+IDEsCik7CgokU2VsZi0+SXMoCiAgICBzY2FsYXIga2V5cyAleyRTdGF0ZVR5cGVMaXN0fSwKICAgIDEsCiAgICAiU3RhdGVUeXBlTGlzdCgpIGhhcyAxIGtleSIsCik7CgokU2VsZi0+SXMoCiAgICAkU3RhdGVUeXBlTGlzdC0+ezF9LAogICAgJ2ludGVybmFsJywKICAgICJTdGF0ZVR5cGVMaXN0KCkgMSBpcyBpbnRlcm5hbCIsCik7CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiMgY2xlYW4gdGhlIHN5c3RlbQokRkFRRGVsZXRlID0gJEZBUU9iamVjdC0+RkFRRGVsZXRlKAogICAgSXRlbUlEID0+ICRGQVFJRCwKICAgIFVzZXJJRCA9PiAxLAopOwoKJFNlbGYtPlRydWUoCiAgICAkRkFRRGVsZXRlLAogICAgIkZBUURlbGV0ZSgpIGZvciBJdGVtRmllbGRHZXQ6IHdpdGggVHJ1ZSIsCik7CgojIGNoZWNrIHRoYXQgY2FjaGUgaXMgY2xlYW4KJENhY2hlID0gJEZBUU9iamVjdC0+e0NhY2hlT2JqZWN0fS0+R2V0KAogICAgVHlwZSA9PiAnRkFRJywKICAgIEtleSAgPT4gJ0ZBUUdldDo6SXRlbUlEOjonIC4gJEZBUUlEIC4gJzo6SXRlbUZpZWxkczo6MCcsCik7CiRTZWxmLT5JcygKICAgICRDYWNoZSwKICAgIHVuZGVmLAogICAgIkNhY2hlIGZvciBGQVEgTm8gSXRlbUZpZWxkcyBBZnRlciBGQVFEZWxldGUoKTogQ29tcGxldGUgY2FjaGUiLAopOwokQ2FjaGUgPSAkRkFRT2JqZWN0LT57Q2FjaGVPYmplY3R9LT5HZXQoCiAgICBUeXBlID0+ICdGQVEnLAogICAgS2V5ICA9PiAnRkFRR2V0OjpJdGVtSUQ6OicgLiAkRkFRSUQgLiAnOjpJdGVtRmllbGRzOjoxJywKKTsKJFNlbGYtPklzKAogICAgJENhY2hlLAogICAgdW5kZWYsCiAgICAiQ2FjaGUgZm9yIEZBUSBXaXRoIEl0ZW1GaWVsZHMgQWZ0ZXIgRkFRRGVsZXRlKCk6IENvbXBsZXRlIGNhY2hlIiwKKTsKCjE7Cg==
IyAtLQojIEZBUVNlYXJjaC50IC0gRkFRIHNlYXJjaCB0ZXN0cwojIENvcHlyaWdodCAoQykgMjAwMS0yMDEzIE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIHF3KCRTZWxmKTsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6RkFROwp1c2UgS2VybmVsOjpTeXN0ZW06OlRpbWU7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcjsKdXNlIEtlcm5lbDo6U3lzdGVtOjpVc2VyOwp1c2UgS2VybmVsOjpDb25maWc7CgpteSAkQ29uZmlnT2JqZWN0ID0gS2VybmVsOjpDb25maWctPm5ldyggJXskU2VsZn0gKTsKCiMgc2V0IGNvbmZpZyBvcHRpdW9ucwokQ29uZmlnT2JqZWN0LT5TZXQoCiAgICBLZXkgICA9PiAnRkFROjpBcHByb3ZhbFJlcXVpcmVkJywKICAgIFZhbHVlID0+IDAsCik7CgojIGNyZWF0ZSBhZGRpdGlvbmFsIG9iamVjdHMKbXkgJEZBUU9iamVjdCA9IEtlcm5lbDo6U3lzdGVtOjpGQVEtPm5ldygKICAgICV7JFNlbGZ9LAogICAgQ29uZmlnT2JqZWN0ID0+ICRDb25maWdPYmplY3QsCik7CgpteSAkSGVscGVyT2JqZWN0ID0gS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXItPm5ldygKICAgICUkU2VsZiwKICAgIENvbmZpZ09iamVjdCAgID0+ICRDb25maWdPYmplY3QsCiAgICBVbml0VGVzdE9iamVjdCA9PiAkU2VsZiwKKTsKCm15ICRUaW1lT2JqZWN0ID0gS2VybmVsOjpTeXN0ZW06OlRpbWUtPm5ldygKICAgICUkU2VsZiwKICAgIENvbmZpZ09iamVjdCA9PiAkQ29uZmlnT2JqZWN0LAopOwoKbXkgJFVzZXJPYmplY3QgPSBLZXJuZWw6OlN5c3RlbTo6VXNlci0+bmV3KAogICAgJSRTZWxmLAogICAgQ29uZmlnT2JqZWN0ID0+ICRDb25maWdPYmplY3QsCik7CgojIGdlbmVyYXRlIGEgcmFuZG9tIHN0cmluZyB0byBoZWxwIHNlYXJjaGVzCm15ICRSYW5kb21JRCA9ICRIZWxwZXJPYmplY3QtPkdldFJhbmRvbUlEKCk7CgojIGNyZWF0ZSBkaWZmZXJlbnQgdXNlcnMgZm9yIENyZWF0ZWRVc2VySURzIHNlYXJjaApteSBAQWRkZWRVc2VyczsKZm9yIG15ICRDb3VudGVyICggMSAuLiA0ICkgewogICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyT2JqZWN0LT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnLCAnZmFxJywgJ2ZhcV9hZG1pbicsICdmYXFfYXBwcm92YWwnIF0sCiAgICApOwogICAgbXkgJFVzZXJJRCA9ICRVc2VyT2JqZWN0LT5Vc2VyTG9va3VwKAogICAgICAgIFVzZXJMb2dpbiA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICk7CiAgICBwdXNoIEBBZGRlZFVzZXJzLCAkVXNlcklEOwp9CgpteSBAQWRkZWRGQVFzOwoKIyBhZGQgc29tZSBGQVFzCm15ICVGQVFBZGRUZW1wbGF0ZSA9ICgKICAgIFRpdGxlICAgICAgPT4gIlNvbWUgVGV4dCAkUmFuZG9tSUQiLAogICAgQ2F0ZWdvcnlJRCA9PiAxLAogICAgU3RhdGVJRCAgICA9PiAxLAogICAgTGFuZ3VhZ2VJRCA9PiAxLAogICAgS2V5d29yZHMgICA9PiAkUmFuZG9tSUQsCiAgICBGaWVsZDEgICAgID0+ICdQcm9ibGVtLi4uJywKICAgIEZpZWxkMiAgICAgPT4gJ1NvbHV0aW9uLi4uJywKICAgIFVzZXJJRCAgICAgPT4gMSwKKTsKCiMgZnJlZXplIHRpbWUKJEhlbHBlck9iamVjdC0+Rml4ZWRUaW1lU2V0KCk7Cgpmb3IgbXkgJENvdW50ZXIgKCAxIC4uIDIgKSB7CiAgICBteSAkRkFRSUQgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICAgICAgJUZBUUFkZFRlbXBsYXRlLAogICAgICAgIFVzZXJJRCA9PiAkQWRkZWRVc2Vyc1sgJENvdW50ZXIgLSAxIF0sCiAgICApOwoKICAgICRTZWxmLT5Jc05vdCgKICAgICAgICB1bmRlZiwKICAgICAgICAkRkFRSUQsCiAgICAgICAgIkZBUUFkZCgpIEZBUUlEOickRkFRSUQnIGZvciBGQVFTZWFyY2goKSIsCiAgICApOwoKICAgIHB1c2ggQEFkZGVkRkFRcywgJEZBUUlEOwoKICAgICMgYWRkIDEgbWludXRlIHRvIGZyZWV6ZWQgdGltZQogICAgJEhlbHBlck9iamVjdC0+Rml4ZWRUaW1lQWRkU2Vjb25kcyg2MCk7Cn0KCiMgYWRkIHNvbWUgdm90ZXMKbXkgQFZvdGVzVG9BZGQgPSAoCiAgICB7CiAgICAgICAgQ3JlYXRlZEJ5ID0+ICdTb21lIFRleHQnLAogICAgICAgIEl0ZW1JRCAgICA9PiAkQWRkZWRGQVFzWzBdLAogICAgICAgIElQICAgICAgICA9PiAnNTQuNDMuMzAuMScsCiAgICAgICAgSW50ZXJmYWNlID0+ICcyJywKICAgICAgICBSYXRlICAgICAgPT4gMTAwLAogICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBDcmVhdGVkQnkgPT4gJ1NvbWUgVGV4dCcsCiAgICAgICAgSXRlbUlEICAgID0+ICRBZGRlZEZBUXNbMF0sCiAgICAgICAgSVAgICAgICAgID0+ICc1NC40My4zMC4yJywKICAgICAgICBJbnRlcmZhY2UgPT4gJzInLAogICAgICAgIFJhdGUgICAgICA9PiA1MCwKICAgICAgICBVc2VySUQgICAgPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgQ3JlYXRlZEJ5ID0+ICdTb21lIFRleHQnLAogICAgICAgIEl0ZW1JRCAgICA9PiAkQWRkZWRGQVFzWzBdLAogICAgICAgIElQICAgICAgICA9PiAnNTQuNDMuMzAuMycsCiAgICAgICAgSW50ZXJmYWNlID0+ICcyJywKICAgICAgICBSYXRlICAgICAgPT4gNTAsCiAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICB9LAogICAgewogICAgICAgIENyZWF0ZWRCeSA9PiAnU29tZSBUZXh0JywKICAgICAgICBJdGVtSUQgICAgPT4gJEFkZGVkRkFRc1sxXSwKICAgICAgICBJUCAgICAgICAgPT4gJzU0LjQzLjMwLjEnLAogICAgICAgIEludGVyZmFjZSA9PiAnMicsCiAgICAgICAgUmF0ZSAgICAgID0+IDUwLAogICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBDcmVhdGVkQnkgPT4gJ1NvbWUgVGV4dCcsCiAgICAgICAgSXRlbUlEICAgID0+ICRBZGRlZEZBUXNbMV0sCiAgICAgICAgSVAgICAgICAgID0+ICc1NC40My4zMC4yJywKICAgICAgICBJbnRlcmZhY2UgPT4gJzInLAogICAgICAgIFJhdGUgICAgICA9PiA1MCwKICAgICAgICBVc2VySUQgICAgPT4gMSwKICAgIH0sCgopOwpmb3IgbXkgJFZvdGUgKEBWb3Rlc1RvQWRkKSB7CiAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPlZvdGVBZGQoICV7JFZvdGV9ICk7CgogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgIlZvdGVBZGQoKTogRkFRSUQ6JyRWb3RlLT57SXRlbUlEfScgSVA6JyRWb3RlLT57SVB9JyBSYXRlOickVm90ZS0+e1JhdGV9JyB3aXRoIHRydWUiLAogICAgKTsKfQoKIyBkbyB2b3RlIHNlYXJjaCB0ZXN0cwpteSAlU2VhcmNoQ29uZmlnVGVtcGxhdGUgPSAoCiAgICBLZXl3b3JkICAgICAgICAgID0+ICIkUmFuZG9tSUQiLAogICAgU3RhdGVzICAgICAgICAgICA9PiBbICdwdWJsaWMnLCAnaW50ZXJuYWwnIF0sCiAgICBPcmRlckJ5ICAgICAgICAgID0+IFsnRkFRSUQnXSwKICAgIE9yZGVyQnlEaXJlY3Rpb24gPT4gWydVcCddLAogICAgTGltaXQgICAgICAgICAgICA9PiAxNTAsCiAgICBVc2VySUQgICAgICAgICAgID0+IDEsCgopOwpteSBAVGVzdHMgPSAoCgogICAgIyB2b3RlcyB0ZXN0cwogICAgewogICAgICAgIE5hbWUgICA9PiAnVm90ZXMsIFNpbXBsZSBFcXVhbHMgT3BlcmF0b3InLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgVm90ZXMgPT4gewogICAgICAgICAgICAgICAgRXF1YWxzID0+IDMsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzBdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnVm90ZXMsIFNpbXBsZSBHcmVhdGVyVGhhbiBPcGVyYXRvcicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBWb3RlcyA9PiB7CiAgICAgICAgICAgICAgICBHcmVhdGVyVGhhbiA9PiAyLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1ZvdGVzLCBTaW1wbGUgR3JlYXRlclRoYW5FcXVhbHMgT3BlcmF0b3InLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgVm90ZXMgPT4gewogICAgICAgICAgICAgICAgR3JlYXRlclRoYW5FcXVhbHMgPT4gMiwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdWb3RlcywgU2ltcGxlIFNtYWxsZXJUaGFuIE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFZvdGVzID0+IHsKICAgICAgICAgICAgICAgIFNtYWxsZXJUaGFuID0+IDMsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnVm90ZXMsIFNpbXBsZSBTbWFsbGVyVGhhbkVxdWFscyBPcGVyYXRvcicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBWb3RlcyA9PiB7CiAgICAgICAgICAgICAgICBTbWFsbGVyVGhhbkVxdWFscyA9PiAzLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1ZvdGVzLCBNdWx0aXBsZSBFcXVhbHMgT3BlcmF0b3InLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgVm90ZXMgPT4gewogICAgICAgICAgICAgICAgRXF1YWxzID0+IFsgMiwgMyBdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1ZvdGVzLCBNdWx0aXBsZSBHcmVhdGVyVGhhbiBPcGVyYXRvcicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBWb3RlcyA9PiB7CiAgICAgICAgICAgICAgICBHcmVhdGVyVGhhbiA9PiBbIDEsIDIgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdWb3RlcywgTXVsdGlwbGUgR3JlYXRlclRoYW5FcXVhbHMgT3BlcmF0b3InLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgVm90ZXMgPT4gewogICAgICAgICAgICAgICAgR3JlYXRlclRoYW5FcXVhbHMgPT4gWyAyLCAzIF0KICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdWb3RlcywgTXVsdGlwbGUgU21hbGxlclRoYW4gT3BlcmF0b3InLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgVm90ZXMgPT4gewogICAgICAgICAgICAgICAgU21hbGxlclRoYW4gPT4gWyAzLCAyIF0KICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdWb3RlcywgTXVsdGlwbGUgU21hbGxlclRoYW5FcXVhbHMgT3BlcmF0b3InLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgVm90ZXMgPT4gewogICAgICAgICAgICAgICAgU21hbGxlclRoYW5FcXVhbHMgPT4gWyAyLCAzIF0KICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdWb3RlcywgV3JvbmcgT3BlcmF0b3InLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgVm90ZXMgPT4gewogICAgICAgICAgICAgICAgTGVzc1RoYW5FcXVhbHMgPT4gWzRdCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzBdLAogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnVm90ZXMsIENvbXBsZXggT3BlcmF0b3InLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgVm90ZXMgPT4gewogICAgICAgICAgICAgICAgR3JlYXRlclRoYW4gICAgICAgPT4gMiwKICAgICAgICAgICAgICAgIFNtYWxsZXJUaGFuRXF1YWxzID0+IDMsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzBdLAogICAgICAgIF0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1JhdGUsIFNpbXBsZSBFcXVhbHMgT3BlcmF0b3InLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgUmF0ZSA9PiB7CiAgICAgICAgICAgICAgICBFcXVhbHMgPT4gNTAsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgUmF0ZSB0ZXN0cwogICAgewogICAgICAgIE5hbWUgICA9PiAnUmF0ZSwgU2ltcGxlIEdyZWF0ZXJUaGFuIE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFJhdGUgPT4gewogICAgICAgICAgICAgICAgR3JlYXRlclRoYW4gPT4gNTAsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzBdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnUmF0ZSwgU2ltcGxlIEdyZWF0ZXJUaGFuRXF1YWxzIE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFJhdGUgPT4gewogICAgICAgICAgICAgICAgR3JlYXRlclRoYW5FcXVhbHMgPT4gNTAsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzBdLAogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnUmF0ZSwgU2ltcGxlIFNtYWxsZXJUaGFuIE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFJhdGUgPT4gewogICAgICAgICAgICAgICAgU21hbGxlclRoYW4gPT4gNjYsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnUmF0ZSwgU2ltcGxlIFNtYWxsZXJUaGFuRXF1YWxzIE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFJhdGUgPT4gewogICAgICAgICAgICAgICAgU21hbGxlclRoYW5FcXVhbHMgPT4gNjcsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzBdLAogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnUmF0ZSwgTXVsdGlwbGUgRXF1YWxzIE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFJhdGUgPT4gewogICAgICAgICAgICAgICAgRXF1YWxzID0+IFsgNTAsIDY2LjY3IF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnUmF0ZSwgTXVsdGlwbGUgR3JlYXRlclRoYW4gT3BlcmF0b3InLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgUmF0ZSA9PiB7CiAgICAgICAgICAgICAgICBHcmVhdGVyVGhhbiA9PiBbIDIwLCA0MCBdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1JhdGUsIE11bHRpcGxlIEdyZWF0ZXJUaGFuRXF1YWxzIE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFJhdGUgPT4gewogICAgICAgICAgICAgICAgR3JlYXRlclRoYW5FcXVhbHMgPT4gWyA1MCwgNjYgXQogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1JhdGUsIE11bHRpcGxlIFNtYWxsZXJUaGFuIE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFJhdGUgPT4gewogICAgICAgICAgICAgICAgU21hbGxlclRoYW4gPT4gWyA2NiwgNjAgXQogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1JhdGUsIE11bHRpcGxlIFNtYWxsZXJUaGFuRXF1YWxzIE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFJhdGUgPT4gewogICAgICAgICAgICAgICAgU21hbGxlclRoYW5FcXVhbHMgPT4gWyA1MCwgNjcgXQogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1JhdGUsIFdyb25nIE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFJhdGUgPT4gewogICAgICAgICAgICAgICAgTGVzc1RoYW5FcXVhbHMgPT4gWzEwXQogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1JhdGUsIENvbXBsZXggT3BlcmF0b3InLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgUmF0ZSA9PiB7CiAgICAgICAgICAgICAgICBHcmVhdGVyVGhhbiA9PiBbIDUwLCA2MCBdLAogICAgICAgICAgICAgICAgU21hbGxlclRoYW5FcXVhbHMgPT4gNjcsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzBdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgY29tcGxleCB0ZXN0cwogICAgewogICAgICAgIE5hbWUgICA9PiAnVm90ZXMsIFJhdGUsIENvbXBsZXggKyBXcm9uZyBPcGVyYXRvcicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBWb3RlcyA9PiB7CiAgICAgICAgICAgICAgICBFcXVhbHMgPT4gWyAyLCAzLCA0IF0sCiAgICAgICAgICAgICAgICBHcmVhdGVyVGhhbkVxdWFscyA9PiBbM10sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFJhdGUgPT4gewogICAgICAgICAgICAgICAgR3JlYXRlclRoYW4gPT4gWyAyMCwgIDUwIF0sCiAgICAgICAgICAgICAgICBTbWFsbGVyVGhhbiA9PiBbIDEwMCwgMTIwIF0sCiAgICAgICAgICAgICAgICBMb3dlclRoYW4gICA9PiBbOTldLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICBdLAogICAgfSwKKTsKCiMgZXhlY3V0ZSB0aGUgdGVzdHMKZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKICAgIG15IEBGQVFJRHMgPSAkRkFRT2JqZWN0LT5GQVFTZWFyY2goICV7ICRUZXN0LT57Q29uZmlnfSB9ICk7CgogICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgIFxARkFRSURzLAogICAgICAgICRUZXN0LT57RXhwZWN0ZWRSZXN1bHRzfSwKICAgICAgICAiJFRlc3QtPntOYW1lfSBGQVFTZWFyY2goKSIsCiAgICApOwp9CgojIHRpbWUgYmFzZWQgdGVzdHMKCiMgdXBkYXRlIEZBUXMKbXkgJUZBUVVwZGF0ZVRlbXBsYXRlID0gKAogICAgVGl0bGUgICAgICA9PiAiTmV3IFRleHQgJFJhbmRvbUlEIiwKICAgIENhdGVnb3J5SUQgPT4gMSwKICAgIFN0YXRlSUQgICAgPT4gMSwKICAgIExhbmd1YWdlSUQgPT4gMSwKICAgIEtleXdvcmRzICAgPT4gJFJhbmRvbUlELAogICAgRmllbGQxICAgICA9PiAnUHJvYmxlbS4uLicsCiAgICBGaWVsZDIgICAgID0+ICdTb2x1dGlvbi4uLicsCiAgICBVc2VySUQgICAgID0+IDEsCik7CgojIGFkZCAxIG1pbnV0ZSB0byBmcmVlemVkIHRpbWUKJEhlbHBlck9iamVjdC0+Rml4ZWRUaW1lQWRkU2Vjb25kcyg2MCk7CgpteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUVVwZGF0ZSgKICAgICVGQVFVcGRhdGVUZW1wbGF0ZSwKICAgIEl0ZW1JRCA9PiAkQWRkZWRGQVFzWzBdLAogICAgVXNlcklEID0+ICRBZGRlZFVzZXJzWzJdLAopOwoKJFNlbGYtPlRydWUoCiAgICAkU3VjY2VzcywKICAgICJGQVFVcGRhdGUoKSBGQVFJRDonJEFkZGVkRkFRc1swXScgZm9yIEZBUVNlYXJjaCgpIiwKKTsKCiRIZWxwZXJPYmplY3QtPkZpeGVkVGltZUFkZFNlY29uZHMoNjApOwoKJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFVcGRhdGUoCiAgICAlRkFRVXBkYXRlVGVtcGxhdGUsCiAgICBJdGVtSUQgPT4gJEFkZGVkRkFRc1sxXSwKICAgIFVzZXJJRCA9PiAkQWRkZWRVc2Vyc1szXSwKKTsKCiRTZWxmLT5UcnVlKAogICAgJFN1Y2Nlc3MsCiAgICAiRkFRVXBkYXRlKCkgRkFRSUQ6JyRBZGRlZEZBUXNbMV0nIGZvciBGQVFTZWFyY2goKSIsCik7CgojIGFkZCAyIG1pbnV0ZXMgdG8gZnJlZXplZCB0aW1lCiRIZWxwZXJPYmplY3QtPkZpeGVkVGltZUFkZFNlY29uZHMoMTIwKTsKCm15ICRTeXN0ZW1UaW1lID0gJFRpbWVPYmplY3QtPlN5c3RlbVRpbWUoKTsKCm15ICREYXRlTWludXMyTWlucyA9ICRUaW1lT2JqZWN0LT5TeXN0ZW1UaW1lMlRpbWVTdGFtcCgKICAgIFN5c3RlbVRpbWUgPT4gKCAkU3lzdGVtVGltZSAtIDEyMCAtIDEgKSwKKTsKbXkgJERhdGVNaW51czVNaW5zID0gJFRpbWVPYmplY3QtPlN5c3RlbVRpbWUyVGltZVN0YW1wKAogICAgU3lzdGVtVGltZSA9PiAoICRTeXN0ZW1UaW1lIC0gMzAwIC0gMSApLAopOwpteSAkRGF0ZU1pbnVzNk1pbnMgPSAkVGltZU9iamVjdC0+U3lzdGVtVGltZTJUaW1lU3RhbXAoCiAgICBTeXN0ZW1UaW1lID0+ICggJFN5c3RlbVRpbWUgLSAzNjAgLSAxICksCik7CgpAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdDcmVhdGVUaW1lT2xkZXJNaW51dGVzIDMgbWluJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIEl0ZW1DcmVhdGVUaW1lT2xkZXJNaW51dGVzID0+IDMsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzBdLAogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnQ3JlYXRlVGltZU9sZGVyTWludXRlcyA2IG1pbicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZU9sZGVyTWludXRlcyA9PiA2LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ0NyZWF0ZVRpbWVOZXdlck1pbnV0ZXMgNiBtaW4nLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgSXRlbUNyZWF0ZVRpbWVOZXdlck1pbnV0ZXMgPT4gNiwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdDcmVhdGVUaW1lTmV3ZXJNaW51dGVzIDUgbWluJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIEl0ZW1DcmVhdGVUaW1lTmV3ZXJNaW51dGVzID0+IDUsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnQ3JlYXRlVGltZU9sZGVyRGF0ZSA1IG1pbicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZU9sZGVyRGF0ZSA9PiAkRGF0ZU1pbnVzNU1pbnMsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzBdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnQ3JlYXRlVGltZU5ld2VyRGF0ZSA1IG1pbicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZU5ld2VyRGF0ZSA9PiAkRGF0ZU1pbnVzNU1pbnMsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnQ3JlYXRlVGltZU9sZGVyRGF0ZSBDcmVhdGVUaW1lTmV3ZXJEYXRlJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIEl0ZW1DcmVhdGVUaW1lTmV3ZXJEYXRlID0+ICREYXRlTWludXM2TWlucywKICAgICAgICAgICAgSXRlbUNyZWF0ZVRpbWVPbGRlckRhdGUgPT4gJERhdGVNaW51czVNaW5zLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ0NoYW5nZVRpbWVPbGRlck1pbnV0ZXMgMyBtaW4nLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgSXRlbUNoYW5nZVRpbWVPbGRlck1pbnV0ZXMgPT4gMywKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdDaGFuZ2VUaW1lTmV3ZXJNaW51dGVzIDIgbWluJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIEl0ZW1DaGFuZ2VUaW1lTmV3ZXJNaW51dGVzID0+IDIsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnQ2hhbmdlVGltZU9sZGVyRGF0ZSAyIE1pbnMnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgSXRlbUNoYW5nZVRpbWVPbGRlckRhdGUgPT4gJERhdGVNaW51czJNaW5zLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ0NoYW5nZVRpbWVOZXdlckRhdGUgMiBNaW4nLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgSXRlbUNoYW5nZVRpbWVOZXdlckRhdGUgPT4gJERhdGVNaW51czJNaW5zLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfQopOwoKIyBleGVjdXRlIHRoZSB0ZXN0cwpmb3IgbXkgJFRlc3QgKEBUZXN0cykgewoKICAgIG15IEBGQVFJRHMgPSAkRkFRT2JqZWN0LT5GQVFTZWFyY2goICV7ICRUZXN0LT57Q29uZmlnfSB9ICk7CgogICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgIFxARkFRSURzLAogICAgICAgICRUZXN0LT57RXhwZWN0ZWRSZXN1bHRzfSwKICAgICAgICAiJFRlc3QtPntOYW1lfSBGQVFTZWFyY2goKSIsCiAgICApOwp9CgojIGNyZWF0ZWQgdXNlciB0ZXN0cwpAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdDcmVhdGVkVXNlcklEcyAxJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIENyZWF0ZWRVc2VySURzID0+IFsgJEFkZGVkVXNlcnNbMF0gXSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdDcmVhdGVkVXNlcklEcyAyJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIENyZWF0ZWRVc2VySURzID0+IFsgJEFkZGVkVXNlcnNbMV0gXSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdDcmVhdGVkVXNlcklEcyAxIGFuZCAyJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIENyZWF0ZWRVc2VySURzID0+IFsgJEFkZGVkVXNlcnNbMF0sICRBZGRlZFVzZXJzWzFdIF0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzBdLAogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnV3JvbmcgQ3JlYXRlZFVzZXJJRHMgRm9ybWF0JywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIENyZWF0ZWRVc2VySURzID0+ICRBZGRlZFVzZXJzWzBdLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKKTsKCiMgbGFzdCBjaGFuZ2VkIHVzZXIgdGVzdHMKQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICA9PiAnTGFzdENoYW5nZWRVc2VySURzIDMnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgTGFzdENoYW5nZWRVc2VySURzID0+IFsgJEFkZGVkVXNlcnNbMl0gXSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdMYXN0Q2hhbmdlZFVzZXJJRHMgNCcsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBMYXN0Q2hhbmdlZFVzZXJJRHMgPT4gWyAkQWRkZWRVc2Vyc1szXSBdLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ0xhc3RDaGFuZ2VkVXNlcklEcyAzIGFuZCA0JywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIExhc3RDaGFuZ2VkVXNlcklEcyA9PiBbICRBZGRlZFVzZXJzWzJdLCAkQWRkZWRVc2Vyc1szXSBdLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1dyb25nIExhc3RDaGFuZ2VkVXNlcklEcyBGb3JtYXQnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgQ3JlYXRlZFVzZXJJRHMgPT4gJEFkZGVkVXNlcnNbMl0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzBdLAogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAopOwoKIyBleGVjdXRlIHRoZSB0ZXN0cwpmb3IgbXkgJFRlc3QgKEBUZXN0cykgewoKICAgIG15IEBGQVFJRHMgPSAkRkFRT2JqZWN0LT5GQVFTZWFyY2goICV7ICRUZXN0LT57Q29uZmlnfSB9ICk7CgogICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgIFxARkFRSURzLAogICAgICAgICRUZXN0LT57RXhwZWN0ZWRSZXN1bHRzfSwKICAgICAgICAiJFRlc3QtPntOYW1lfSBGQVFTZWFyY2goKSIsCiAgICApOwp9CgojIGFwcHJvdmFsIHRlc3RzCiMgdXBkYXRlIGRhdGFiYXNlIHRvIHByZXZlbnQgZ2VuZXJhdGlvbiBvZiBhcHByb3ZhbCB0aWNrZXQKcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+RG8oCiAgICBTUUwgPT4gJwogICAgICAgIFVQREFURSBmYXFfaXRlbQogICAgICAgIFNFVCBhcHByb3ZlZCA9ID8KICAgICAgICBXSEVSRSBpZCA9ID8nLAogICAgQmluZCA9PiBbCiAgICAgICAgXDAsCiAgICAgICAgXCRBZGRlZEZBUXNbMV0sCiAgICBdLAopOwoKQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICA9PiAnQXBwcm92ZWQgMScsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBBcHByb3ZlZCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ0FwcHJvdmVkIDAnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgQXBwcm92ZWQgPT4gMCwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCik7CgojIGV4ZWN1dGUgdGhlIHRlc3RzCmZvciBteSAkVGVzdCAoQFRlc3RzKSB7CgogICAgbXkgQEZBUUlEcyA9ICRGQVFPYmplY3QtPkZBUVNlYXJjaCggJXsgJFRlc3QtPntDb25maWd9IH0gKTsKCiAgICAkU2VsZi0+SXNEZWVwbHkoCiAgICAgICAgXEBGQVFJRHMsCiAgICAgICAgJFRlc3QtPntFeHBlY3RlZFJlc3VsdHN9LAogICAgICAgICIkVGVzdC0+e05hbWV9IEZBUVNlYXJjaCgpIiwKICAgICk7Cn0KCiMgY2xlYW4gdGhlIHN5c3RlbQpmb3IgbXkgJEZBUUlEIChAQWRkZWRGQVFzKSB7CiAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUURlbGV0ZSgKICAgICAgICBJdGVtSUQgPT4gJEZBUUlELAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKCiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkU3VjY2VzcywKICAgICAgICAiRkFRRGVsZXRlKCkgZm9yIEZBUUlEOickRkFRSUQnIHdpdGggVHJ1ZSIsCiAgICApOwp9CgojIHJlc3RvcmUgdGltZQokSGVscGVyT2JqZWN0LT5GaXhlZFRpbWVVbnNldCgpOwoKIyBleGVjdXRlIG9sZCB0ZXN0cwokU2VsZi0+VHJ1ZSgKICAgIDEsCiAgICAiLS1FeGVjdXRlIEZvcm1lciBUZXN0cy0tIiwKKTsKewogICAgbXkgJEZBUUlEMSA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICBDYXRlZ29yeUlEID0+IDEsCiAgICAgICAgU3RhdGVJRCAgICA9PiAyLAogICAgICAgIExhbmd1YWdlSUQgPT4gMiwKICAgICAgICBBcHByb3ZlZCAgID0+IDEsCiAgICAgICAgVGl0bGUgICAgICA9PiAnU29tZSBUZXh0MicsCiAgICAgICAgS2V5d29yZHMgICA9PiAnc29tZSBrZXl3b3JkczInLAogICAgICAgIEZpZWxkMSAgICAgPT4gJ1Byb2JsZW0uLi4yJywKICAgICAgICBGaWVsZDIgICAgID0+ICdTb2x1dGlvbiBmb3VuZC4uLjInLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJEZBUUlEMSwKICAgICAgICAiRkFRQWRkKCkgLSAxIiwKICAgICk7CgogICAgbXkgJEZBUUlEMiA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICBUaXRsZSAgICAgID0+ICdUaXRsZScsCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAxLAogICAgICAgIFN0YXRlSUQgICAgPT4gMSwKICAgICAgICBMYW5ndWFnZUlEID0+IDEsCiAgICAgICAgS2V5d29yZHMgICA9PiAnJywKICAgICAgICBGaWVsZDEgICAgID0+ICdQcm9ibGVtIERlc2NyaXB0aW9uIDEuLi4nLAogICAgICAgIEZpZWxkMiAgICAgPT4gJ1NvbHV0aW9uIG5vdCBmb3VuZDEuLi4nLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJEZBUUlEMiwKICAgICAgICAiRkFRQWRkKCkgLSAyIiwKICAgICk7CgogICAgbXkgQEZBUUlEcyA9ICRGQVFPYmplY3QtPkZBUVNlYXJjaCgKICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICcqJywKICAgICAgICBXaGF0ICAgICAgICAgICAgID0+ICcqcyonLAogICAgICAgIEtleXdvcmQgICAgICAgICAgPT4gJ3NvbWUqJywKICAgICAgICBTdGF0ZXMgICAgICAgICAgID0+IFsgJ3B1YmxpYycsICdpbnRlcm5hbCcgXSwKICAgICAgICBPcmRlckJ5ICAgICAgICAgID0+IFsnVm90ZXMnXSwKICAgICAgICBPcmRlckJ5RGlyZWN0aW9uID0+IFsnVXAnXSwKICAgICAgICBMaW1pdCAgICAgICAgICAgID0+IDE1MCwKICAgICAgICBVc2VySUQgICAgICAgICAgID0+IDEsCiAgICApOwoKICAgIG15ICRGQVFTZWFyY2hGb3VuZCAgPSAwOwogICAgbXkgJEZBUVNlYXJjaEZvdW5kMiA9IDA7CiAgICBmb3IgbXkgJEZBUUlEU2VhcmNoIChARkFRSURzKSB7CiAgICAgICAgaWYgKCAkRkFRSURTZWFyY2ggZXEgJEZBUUlEMSApIHsKICAgICAgICAgICAgJEZBUVNlYXJjaEZvdW5kID0gMTsKICAgICAgICB9CiAgICAgICAgaWYgKCAkRkFRSURTZWFyY2ggZXEgJEZBUUlEMiApIHsKICAgICAgICAgICAgJEZBUVNlYXJjaEZvdW5kMiA9IDE7CiAgICAgICAgfQogICAgfQogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJEZBUVNlYXJjaEZvdW5kLAogICAgICAgICJGQVFTZWFyY2goKSAtICRGQVFJRDEiLAogICAgKTsKICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAkRkFRU2VhcmNoRm91bmQyLAogICAgICAgICJGQVFTZWFyY2goKSAtICRGQVFJRDIiLAogICAgKTsKCiAgICBARkFRSURzID0gJEZBUU9iamVjdC0+RkFRU2VhcmNoKAogICAgICAgIE51bWJlciAgICAgICAgICAgPT4gJyonLAogICAgICAgIFRpdGxlICAgICAgICAgICAgPT4gJ3RJVExlJywKICAgICAgICBXaGF0ICAgICAgICAgICAgID0+ICdsJywKICAgICAgICBTdGF0ZXMgICAgICAgICAgID0+IFsgJ3B1YmxpYycsICdpbnRlcm5hbCcgXSwKICAgICAgICBPcmRlckJ5ICAgICAgICAgID0+IFsnQ3JlYXRlZCddLAogICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gPT4gWydVcCddLAogICAgICAgIExpbWl0ICAgICAgICAgICAgPT4gMTUwLAogICAgICAgIFVzZXJJRCAgICAgICAgICAgPT4gMSwKICAgICk7CgogICAgJEZBUVNlYXJjaEZvdW5kICA9IDA7CiAgICAkRkFRU2VhcmNoRm91bmQyID0gMDsKICAgIGZvciBteSAkRkFRSURTZWFyY2ggKEBGQVFJRHMpIHsKICAgICAgICBpZiAoICRGQVFJRFNlYXJjaCBlcSAkRkFRSUQxICkgewogICAgICAgICAgICAkRkFRU2VhcmNoRm91bmQgPSAxOwogICAgICAgIH0KICAgICAgICBpZiAoICRGQVFJRFNlYXJjaCBlcSAkRkFRSUQyICkgewogICAgICAgICAgICAkRkFRU2VhcmNoRm91bmQyID0gMTsKICAgICAgICB9CiAgICB9CiAgICAkU2VsZi0+RmFsc2UoCiAgICAgICAgJEZBUVNlYXJjaEZvdW5kLAogICAgICAgICJGQVFTZWFyY2goKSAtICRGQVFJRDEiLAogICAgKTsKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRGQVFTZWFyY2hGb3VuZDIsCiAgICAgICAgIkZBUVNlYXJjaCgpIC0gJEZBUUlEMiIsCiAgICApOwoKICAgIEBGQVFJRHMgPSAkRkFRT2JqZWN0LT5GQVFTZWFyY2goCiAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAnKicsCiAgICAgICAgVGl0bGUgICAgICAgICAgICA9PiAnJywKICAgICAgICBXaGF0ICAgICAgICAgICAgID0+ICdzb2x1dGlvbiBmb3VuZCcsCiAgICAgICAgU3RhdGVzICAgICAgICAgICA9PiBbICdwdWJsaWMnLCAnaW50ZXJuYWwnIF0sCiAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiBbJ0NyZWF0ZWQnXSwKICAgICAgICBPcmRlckJ5RGlyZWN0aW9uID0+IFsnVXAnXSwKICAgICAgICBMaW1pdCAgICAgICAgICAgID0+IDE1MCwKICAgICAgICBVc2VySUQgICAgICAgICAgID0+IDEsCiAgICApOwoKICAgICRGQVFTZWFyY2hGb3VuZCAgPSAwOwogICAgJEZBUVNlYXJjaEZvdW5kMiA9IDA7CiAgICBmb3IgbXkgJEZBUUlEU2VhcmNoIChARkFRSURzKSB7CiAgICAgICAgaWYgKCAkRkFRSURTZWFyY2ggZXEgJEZBUUlEMSApIHsKICAgICAgICAgICAgJEZBUVNlYXJjaEZvdW5kID0gMTsKICAgICAgICB9CiAgICAgICAgaWYgKCAkRkFRSURTZWFyY2ggZXEgJEZBUUlEMiApIHsKICAgICAgICAgICAgJEZBUVNlYXJjaEZvdW5kMiA9IDE7CiAgICAgICAgfQogICAgfQogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJEZBUVNlYXJjaEZvdW5kLAogICAgICAgICJGQVFTZWFyY2goKSBsaXRlcmFsIHRleHQgLSAkRkFRSUQxIiwKICAgICk7CiAgICAkU2VsZi0+RmFsc2UoCiAgICAgICAgJEZBUVNlYXJjaEZvdW5kMiwKICAgICAgICAiRkFRU2VhcmNoKCkgbGl0ZXJhbCB0ZXh0IC0gJEZBUUlEMiIsCiAgICApOwoKICAgIEBGQVFJRHMgPSAkRkFRT2JqZWN0LT5GQVFTZWFyY2goCiAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAnKicsCiAgICAgICAgVGl0bGUgICAgICAgICAgICA9PiAnJywKICAgICAgICBXaGF0ICAgICAgICAgICAgID0+ICdzb2x1dGlvbitmb3VuZCcsCiAgICAgICAgU3RhdGVzICAgICAgICAgICA9PiBbICdwdWJsaWMnLCAnaW50ZXJuYWwnIF0sCiAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiBbJ0NyZWF0ZWQnXSwKICAgICAgICBPcmRlckJ5RGlyZWN0aW9uID0+IFsnVXAnXSwKICAgICAgICBMaW1pdCAgICAgICAgICAgID0+IDE1MCwKICAgICAgICBVc2VySUQgICAgICAgICAgID0+IDEsCiAgICApOwoKICAgICRGQVFTZWFyY2hGb3VuZCAgPSAwOwogICAgJEZBUVNlYXJjaEZvdW5kMiA9IDA7CiAgICBmb3IgbXkgJEZBUUlEU2VhcmNoIChARkFRSURzKSB7CiAgICAgICAgaWYgKCAkRkFRSURTZWFyY2ggZXEgJEZBUUlEMSApIHsKICAgICAgICAgICAgJEZBUVNlYXJjaEZvdW5kID0gMTsKICAgICAgICB9CiAgICAgICAgaWYgKCAkRkFRSURTZWFyY2ggZXEgJEZBUUlEMiApIHsKICAgICAgICAgICAgJEZBUVNlYXJjaEZvdW5kMiA9IDE7CiAgICAgICAgfQogICAgfQogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJEZBUVNlYXJjaEZvdW5kLAogICAgICAgICJGQVFTZWFyY2goKSBBTkQgLSAkRkFRSUQxIiwKICAgICk7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkRkFRU2VhcmNoRm91bmQyLAogICAgICAgICJGQVFTZWFyY2goKSBBTkQgLSAkRkFRSUQyIiwKICAgICk7CgogICAgIyBjbGVhbnVwIHRoZSBzeXN0ZW0KICAgIGZvciBteSAkRkFRSUQgKCAkRkFRSUQxLCAkRkFRSUQyICkgewogICAgICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRRGVsZXRlKAogICAgICAgICAgICBJdGVtSUQgPT4gJEZBUUlELAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICJGQVFEZWxldGUoKSBmb3IgRkFRSUQ6JyRGQVFJRCcgd2l0aCBUcnVlIiwKICAgICAgICApOwogICAgfQp9CjE7Cg==
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
Ly8gLS0KLy8gRkFRLkFnZW50LkNvbmZpcm1hdGlvbkRpYWxvZy5qcyAtIHByb3ZpZGVzIHRoZSBzcGVjaWFsIG1vZHVsZSBmdW5jdGlvbnMgZm9yIHRoZQovLyBjb25maXJtYXRpb24gZGlhbG9ncwovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxMCBPVFJTIEFHLCBodHRwOi8vb3Rycy5vcmcvXG4iOwovLyAtLQovLyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQovLyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91Ci8vIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgRkFRID0gRkFRIHx8IHt9OwpGQVEuQWdlbnQgPSBGQVEuQWdlbnQgfHwge307CgovKioKICogQG5hbWVzcGFjZQogKiBAZXhwb3J0cyBUYXJnZXROUyBhcyBGQVEuQWdlbnQuQ29uZmlybWF0aW9uRGlhbG9nCiAqIEBkZXNjcmlwdGlvbgogKiAgICAgIFRoaXMgbmFtZXNwYWNlIGNvbnRhaW5zIHRoZSBzcGVjaWFsIG1vZHVsZSBmdW5jdGlvbnMgZm9yIENvbmZpcm1hdGlvbkRpYWxvZy4KICovCkZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cgPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7CgogICAgLyoqCiAgICAgKiBAdmFyaWFibGUKICAgICAqIEBwcml2YXRlCiAgICAgKiAgICAgVGhpcyB2YXJpYWJsZSBzdG9yZXMgdGhlIHBhcmFtZXRlcnMgdGhhdCBhcmUgcGFzc2VkIGZyb20gdGhlIERUTCBhbmQgY29udGFpbiBhbGwgdGhlIGRhdGEgdGhhdCB0aGUgZGlhbG9nIG5lZWRzLgogICAgICovCiAgICB2YXIgRGlhbG9nRGF0YSA9IFtdOwoKICAgIC8qKgogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcHJpdmF0ZQogICAgICogQHJldHVybiBub3RoaW5nCiAgICAgKiBAZGVzY3JpcHRpb24gU2hvd3Mgd2FpdGluZyBkaWFsb2cgdW50aWwgc2VhcmNoIHNjcmVlbiBpcyByZWFkeS4KICAgICAqLwogICAgZnVuY3Rpb24gU2hvd1dhaXRpbmdEaWFsb2coUG9zaXRpb25Ub3ApewogICAgICAgIENvcmUuVUkuRGlhbG9nLlNob3dDb250ZW50RGlhbG9nKCc8ZGl2IGNsYXNzPSJTcGFjaW5nIENlbnRlciI+PHNwYW4gY2xhc3M9IkFKQVhMb2FkZXIiIHRpdGxlPSInICsgQ29yZS5Db25maWcuR2V0KCdMb2FkaW5nTXNnJykgKyAnIj48L3NwYW4+PC9kaXY+JywgJycsIFBvc2l0aW9uVG9wLCAnQ2VudGVyJywgdHJ1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7RXZlbnRPYmplY3R9IGV2ZW50IG9iamVjdCBvZiB0aGUgY2xpY2tlZCBlbGVtZW50LgogICAgICogQHJldHVybiBub3RoaW5nCiAgICAgKiAgICAgIFRoaXMgZnVuY3Rpb24gc2hvd3MgYSBjb25maXJtYXRpb24gZGlhbG9nIHdpdGggMiBidXR0b25zOiBZZXMgYW5kIE5vCiAgICAgKi8KICAgIFRhcmdldE5TLlNob3dDb25maXJtYXRpb25EaWFsb2cgPSBmdW5jdGlvbiAoRXZlbnQpIHsKCiAgICAgICAgdmFyIExvY2FsRGlhbG9nRGF0YSwKICAgICAgICAgICAgUG9zaXRpb25Ub3AsCiAgICAgICAgICAgIERhdGEsCiAgICAgICAgICAgIEJ1dHRvbnM7CgogICAgICAgIC8vIGdldCBnbG9iYWwgc2F2ZWQgRGlhbG9nRGF0YSBmb3IgdGhpcyBmdW5jdGlvbgogICAgICAgIExvY2FsRGlhbG9nRGF0YSA9IERpYWxvZ0RhdGFbJChFdmVudC50YXJnZXQpLmF0dHIoJ2lkJyldOwoKICAgICAgICAvLyBkZWZpbmUgdGhlIHBvc2l0aW9uIG9mIHRoZSBkaWFsb2cKICAgICAgICBQb3NpdGlvblRvcCA9ICQod2luZG93KS5zY3JvbGxUb3AoKSArICgkKHdpbmRvdykuaGVpZ2h0KCkgKiAwLjMpOwoKICAgICAgICAvLyBzaG93IHdhaXRpbmcgZGlhbG9nCiAgICAgICAgU2hvd1dhaXRpbmdEaWFsb2coUG9zaXRpb25Ub3ApOwoKICAgICAgICAvLyBhamF4IGNhbGwgdG8gdGhlIG1vZHVsZSB0aGF0IGRlbGV0ZXMgdGhlIHRlbXBsYXRlCiAgICAgICAgRGF0YSA9IExvY2FsRGlhbG9nRGF0YS5EaWFsb2dDb250ZW50UXVlcnlTdHJpbmc7CiAgICAgICAgQ29yZS5BSkFYLkZ1bmN0aW9uQ2FsbChDb3JlLkNvbmZpZy5HZXQoJ0Jhc2VsaW5rJyksIERhdGEsIGZ1bmN0aW9uIChSZXNwb25zZSkgewoKICAgICAgICAgICAgLy8gJ0NvbmZpcm1hdGlvbicgb3BlbnMgYSBkaWFsb2cgd2l0aCAyIGJ1dHRvbnM6IFllcyBhbmQgTm8KICAgICAgICAgICAgaWYgKFJlc3BvbnNlLkRpYWxvZ1R5cGUgPT09ICdDb25maXJtYXRpb24nKSB7CgogICAgICAgICAgICAgICAgLy8gZGVmaW5lIHllcyBhbmQgbm8gYnV0dG9ucwogICAgICAgICAgICAgICAgQnV0dG9ucyA9IFt7CiAgICAgICAgICAgICAgICAgICAgTGFiZWw6IExvY2FsRGlhbG9nRGF0YS5UcmFuc2xhdGVkVGV4dC5ZZXMsCiAgICAgICAgICAgICAgICAgICAgQ2xhc3M6ICJQcmltYXJ5IiwKCiAgICAgICAgICAgICAgICAgICAgLy8gZGVmaW5lIHRoZSBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aGVuIHRoZSAnWWVzJyBidXR0b24gaXMgcHJlc3NlZAogICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uOiBmdW5jdGlvbigpewoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGlzYWJsZSBZZXMgYW5kIE5vIGJ1dHRvbnMgdG8gcHJldmVudCBtdWx0aXBsZSBzdWJtaXRzCiAgICAgICAgICAgICAgICAgICAgICAgICQoJ2Rpdi5EaWFsb2c6dmlzaWJsZSBkaXYuQ29udGVudEZvb3RlciBidXR0b24nKS5hdHRyKCdkaXNhYmxlZCcsICdkaXNhYmxlZCcpOwoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVkaXJlY3QgdG8gdGhlIG1vZHVsZSB0aGF0IGRvZXMgdGhlIGNvbmZpcm1lZCBhY3Rpb24gYWZ0ZXIgcHJlc3NpbmcgdGhlIFllcyBidXR0b24KICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24uaHJlZiA9IENvcmUuQ29uZmlnLkdldCgnQmFzZWxpbmsnKSArIExvY2FsRGlhbG9nRGF0YS5Db25maXJtZWRBY3Rpb25RdWVyeVN0cmluZzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgTGFiZWw6IExvY2FsRGlhbG9nRGF0YS5UcmFuc2xhdGVkVGV4dC5ObywKICAgICAgICAgICAgICAgICAgICBUeXBlOiAiQ2xvc2UiCiAgICAgICAgICAgICAgICB9XTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gJ01lc3NhZ2UnIG9wZW5zIGEgZGlhbG9nIHdpdGggMSBidXR0b246IE9rCiAgICAgICAgICAgIGVsc2UgaWYgKFJlc3BvbnNlLkRpYWxvZ1R5cGUgPT09ICdNZXNzYWdlJykgewoKICAgICAgICAgICAgICAgIC8vIGRlZmluZSBPayBidXR0b24KICAgICAgICAgICAgICAgIEJ1dHRvbnMgPSBbewogICAgICAgICAgICAgICAgICAgIExhYmVsOiBMb2NhbERpYWxvZ0RhdGEuVHJhbnNsYXRlZFRleHQuT2ssCiAgICAgICAgICAgICAgICAgICAgQ2xhc3M6ICJQcmltYXJ5IiwKICAgICAgICAgICAgICAgICAgICBUeXBlOiAiQ2xvc2UiCiAgICAgICAgICAgICAgICB9XTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gc2hvdyB0aGUgY29uZmlybWF0aW9uIGRpYWxvZyB0byBjb25maXJtIHRoZSBhY3Rpb24KICAgICAgICAgICAgQ29yZS5VSS5EaWFsb2cuU2hvd0NvbnRlbnREaWFsb2coUmVzcG9uc2UuSFRNTCwgTG9jYWxEaWFsb2dEYXRhLkRpYWxvZ1RpdGxlLCBQb3NpdGlvblRvcCwgIkNlbnRlciIsIHRydWUsIEJ1dHRvbnMpOwogICAgICAgIH0sICdqc29uJyk7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfTsKCiAgICAvKioKICAgICAqIEBmdW5jdGlvbgogICAgICogQHBhcmFtIHtFdmVudE9iamVjdH0gZXZlbnQgb2JqZWN0IG9mIHRoZSBjbGlja2VkIGVsZW1lbnQuCiAgICAgKiBAcmV0dXJuIG5vdGhpbmcKICAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBzaG93cyBhIGNvbmZpcm1hdGlvbiBkaWFsb2cgd2l0aCAyIGJ1dHRvbnM6IFllcyBhbmQgTm8KICAgICAqLwogICAgVGFyZ2V0TlMuQmluZENvbmZpcm1hdGlvbkRpYWxvZyA9IGZ1bmN0aW9uIChEYXRhKSB7CiAgICAgICAgRGlhbG9nRGF0YVtEYXRhLkVsZW1lbnRJRF0gPSBEYXRhOwoKICAgICAgICAvLyBiaW5kaW5nIGEgY2xpY2sgZXZlbnQgdG8gdGhlIGRlZmluZWQgZWxlbWVudAogICAgICAgICQoRGlhbG9nRGF0YVtEYXRhLkVsZW1lbnRJRF0uRWxlbWVudFNlbGVjdG9yKS5iaW5kKCdjbGljaycsIEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cuU2hvd0NvbmZpcm1hdGlvbkRpYWxvZyk7CiAgICB9OwoKICAgIHJldHVybiBUYXJnZXROUzsKfShGQVEuQWdlbnQuQ29uZmlybWF0aW9uRGlhbG9nIHx8IHt9KSk7Cg==
Ly8gLS0KLy8gRkFRLkFnZW50LkZBUVpvb20uanMgLSBwcm92aWRlcyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zIGZvciBGQVFab29tCi8vIENvcHlyaWdodCAoQykgMjAwMS0yMDEyIE9UUlMgQUcsIGh0dHA6Ly9vdHJzLm9yZy8KLy8gLS0KLy8gVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKLy8gdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQovLyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgovLyAtLQoKInVzZSBzdHJpY3QiOwoKdmFyIEZBUSA9IEZBUSB8fCB7fTsKRkFRLkFnZW50ID0gRkFRLkFnZW50IHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UKICogQGV4cG9ydHMgVGFyZ2V0TlMgYXMgRkFRLkFnZW50LlRpY2tldFpvb20KICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgVGlja2V0Wm9vbS4KICovCkZBUS5BZ2VudC5GQVFab29tID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgIC8qKgogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0ge2pRdWVyeU9iamVjdH0gJElmcmFtZSBUaGUgaWZyYW1lIHdoaWNoIHNob3VsZCBiZSBhdXRvLWhlaWdodGVkCiAgICAgKiBAcmV0dXJuIG5vdGhpbmcKICAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBpbml0aWFsaXplcyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zCiAgICAgKi8KICAgIFRhcmdldE5TLklmcmFtZUF1dG9IZWlnaHQgPSBmdW5jdGlvbiAoJElmcmFtZSkgewogICAgICAgIGlmIChpc0pRdWVyeU9iamVjdCgkSWZyYW1lKSkgewogICAgICAgICAgICB2YXIgTmV3SGVpZ2h0ID0gJElmcmFtZS5jb250ZW50cygpLmhlaWdodCgpOwogICAgICAgICAgICBpZiAoIU5ld0hlaWdodCB8fCBpc05hTihOZXdIZWlnaHQpKSB7CiAgICAgICAgICAgICAgICBOZXdIZWlnaHQgPSBDb3JlLkNvbmZpZy5HZXQoJ0ZBUTo6RnJvbnRlbmQ6OkFnZW50SFRNTEZpZWxkSGVpZ2h0RGVmYXVsdCcpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgaWYgKE5ld0hlaWdodCA+IENvcmUuQ29uZmlnLkdldCgnRkFROjpGcm9udGVuZDo6QWdlbnRIVE1MRmllbGRIZWlnaHRNYXgnKSkgewogICAgICAgICAgICAgICAgICAgIE5ld0hlaWdodCA9IENvcmUuQ29uZmlnLkdldCgnRkFROjpGcm9udGVuZDo6QWdlbnRIVE1MRmllbGRIZWlnaHRNYXgnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkSWZyYW1lLmhlaWdodChOZXdIZWlnaHQgKyAncHgnKTsKICAgICAgICB9CiAgICB9OwoKCgogICAgcmV0dXJuIFRhcmdldE5TOwp9KEZBUS5BZ2VudC5GQVFab29tIHx8IHt9KSk7Cg==
Ly8gLS0KLy8gRkFRLkFnZW50LlRpY2tldENvbXBvc2UuanMgLSBwcm92aWRlcyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zIGZvciBBZ2VudEZBUVpvb20KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMub3JnL1xuIjsKLy8gLS0KLy8gVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKLy8gdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQovLyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgovLyAtLQoKInVzZSBzdHJpY3QiOwoKdmFyIEZBUSA9IEZBUSB8fCB7fTsKRkFRLkFnZW50ID0gRkFRLkFnZW50IHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UKICogQGV4cG9ydHMgVGFyZ2V0TlMgYXMgRkFRLkFnZW50LlRpY2tldENvbXBvc2UKICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgVGlja2V0Q29tcG9zZS4KICovCkZBUS5BZ2VudC5UaWNrZXRDb21wb3NlID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgIC8qKgogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0ge2pRdWVyeU9iamVjdH0gJEVsZW1lbnQgVGhlIGVkaXRvcgogICAgICogQHJldHVybiBub3RoaW5nCiAgICAgKiAgICAgIEluaXRpYWxpemUgdGhlIG5lZWRlZCBzdHVmZiBmb3IgdGhlIEZBUSBmdW5jdGlvbmFsaXR5IG9mIHRoZSB0aWNrZXQgc2NyZWVucy4KICAgICAqLwogICAgVGFyZ2V0TlMuSW5pdEZBUVRpY2tldENvbXBvc2UgPSBmdW5jdGlvbiAoJEVsZW1lbnQpIHsKICAgICAgICBmdW5jdGlvbiBHZXRDdXJzb3JQb3NpdGlvbigpIHsKICAgICAgICAgICAgdmFyIEVsZW1lbnQgPSAkRWxlbWVudFswXSwKICAgICAgICAgICAgICAgIEVsZW1lbnRWYWx1ZSA9ICRFbGVtZW50LnZhbCgpLAogICAgICAgICAgICAgICAgUmFuZ2UsCiAgICAgICAgICAgICAgICBUZXh0UmFuZ2UsCiAgICAgICAgICAgICAgICBUZXh0UmFuZ2VEdXBsaWNhdGUsCiAgICAgICAgICAgICAgICBTdGFydFJhbmdlID0gMCwKICAgICAgICAgICAgICAgIEVuZFJhbmdlID0gMDsKICAgICAgICAgICAgLy8gRmlyZWZveAogICAgICAgICAgICBpZiAoRWxlbWVudC5zZWxlY3Rpb25TdGFydCkgewogICAgICAgICAgICAgICAgU3RhcnRSYW5nZSA9IEVsZW1lbnQuc2VsZWN0aW9uU3RhcnQ7CiAgICAgICAgICAgICAgICBFbmRSYW5nZSA9IEVsZW1lbnQuc2VsZWN0aW9uRW5kOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIElFCiAgICAgICAgICAgIGVsc2UgaWYgKGRvY3VtZW50LnNlbGVjdGlvbikgewogICAgICAgICAgICAgICAgUmFuZ2UgPSBkb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKS5kdXBsaWNhdGUoKTsKICAgICAgICAgICAgICAgIFRleHRSYW5nZSA9IEVsZW1lbnQuY3JlYXRlVGV4dFJhbmdlKCk7CiAgICAgICAgICAgICAgICBUZXh0UmFuZ2VEdXBsaWNhdGUgPSBUZXh0UmFuZ2UuZHVwbGljYXRlKCk7CiAgICAgICAgICAgICAgICBUZXh0UmFuZ2UubW92ZVRvQm9va21hcmsoUmFuZ2UuZ2V0Qm9va21hcmsoKSk7CiAgICAgICAgICAgICAgICBUZXh0UmFuZ2VEdXBsaWNhdGUuc2V0RW5kUG9pbnQoJ0VuZFRvU3RhcnQnLCBUZXh0UmFuZ2UpOwogICAgICAgICAgICAgICAgU3RhcnRSYW5nZSA9IEVuZFJhbmdlID0gVGV4dFJhbmdlRHVwbGljYXRlLnRleHQubGVuZ3RoOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBTYXZlIGN1cnNvciBwb3NpdGlvbiBmb3IgbGF0ZXIgdXNhZ2UKICAgICAgICAgICAgJEVsZW1lbnQuZGF0YSgnQ3Vyc29yJywgewogICAgICAgICAgICAgICAgU3RhcnRSYW5nZTogU3RhcnRSYW5nZSwKICAgICAgICAgICAgICAgIEVuZFJhbmdlOiBFbmRSYW5nZQogICAgICAgICAgICB9KTsKICAgICAgICB9CgogICAgICAgIC8vIFNlZSBidWcjOTExNjoKICAgICAgICAvLyBJbiBDaHJvbWUgc29tZXRpbWVzIHRoZSBjbGljayBldmVudCBpcyB0cmlnZ2VyZWQgYmVmb3JlIHRoZSBmb2N1cyBldmVudAogICAgICAgIC8vIHdlIHByZXZlbnQgdGhhdCBieSBjaGVja2luZyBFZGl0b3JHb3RGb2N1cyBmaXJzdAoKICAgICAgICB2YXIgSW5zdGFuY2VOYW1lID0gJEVsZW1lbnQuYXR0cignaWQnKSwKICAgICAgICAgICAgRWRpdG9yR290Rm9jdXMgPSBmYWxzZTsKICAgICAgICAvLyBSZWdpc3RlciBSVEUgZXZlbnRzIGZvciBzYXZpbmcgdGhlIGN1cnNvciBwb3NpdGlvbgogICAgICAgIGlmICh0eXBlb2YgQ0tFRElUT1IgIT09ICd1bmRlZmluZWQnICYmIENLRURJVE9SICYmIENLRURJVE9SLmluc3RhbmNlcy5SaWNoVGV4dCkgewogICAgICAgICAgICAvLyBHZXQgbGFzdCBjdXJzb3IgcG9zaXRpb24gYW5kIHNhdmUgaXQgKG9uIGZvY3VzIHdlIGNvbWUgYmFjayB0byB0aGlzIHBvc2l0aW9uKQogICAgICAgICAgICBDS0VESVRPUi5pbnN0YW5jZXNbSW5zdGFuY2VOYW1lXS5vbignY29udGVudERvbScsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgQ0tFRElUT1IuaW5zdGFuY2VzW0luc3RhbmNlTmFtZV0uZG9jdW1lbnQub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIGlmIChFZGl0b3JHb3RGb2N1cykgewogICAgICAgICAgICAgICAgICAgICAgICAkKCcjJyArIEluc3RhbmNlTmFtZSkuZGF0YSgnUlRFQ3Vyc29yJywgQ0tFRElUT1IuaW5zdGFuY2VzW0luc3RhbmNlTmFtZV0uZ2V0U2VsZWN0aW9uKCkuZ2V0UmFuZ2VzKCkpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgQ0tFRElUT1IuaW5zdGFuY2VzW0luc3RhbmNlTmFtZV0uZG9jdW1lbnQub24oJ2tleXVwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIGlmIChFZGl0b3JHb3RGb2N1cykgewogICAgICAgICAgICAgICAgICAgICAgICAkKCcjJyArIEluc3RhbmNlTmFtZSkuZGF0YSgnUlRFQ3Vyc29yJywgQ0tFRElUT1IuaW5zdGFuY2VzW0luc3RhbmNlTmFtZV0uZ2V0U2VsZWN0aW9uKCkuZ2V0UmFuZ2VzKCkpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIC8vIG5lZWRlZCBmb3IgY2xpZW50LXNpZGUgdmFsaWRhdGlvbiBhbmQgaW5zZXJ0aW5nIGRhdGEgaW50byBSVEUKICAgICAgICAgICAgQ0tFRElUT1IuaW5zdGFuY2VzW0luc3RhbmNlTmFtZV0ub24oJ2ZvY3VzJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgLy8gaWYgYSBzYXZlZCBjdXJzb3IgcG9zaXRpb24gZXhpc3RzLCBzZXQgdGhpcyBwb3NpdGlvbiBub3cKICAgICAgICAgICAgICAgIHZhciBSVEVDdXJzb3JSYW5nZSA9ICQoJyMnICsgSW5zdGFuY2VOYW1lKS5kYXRhKCdSVEVDdXJzb3InKSwKICAgICAgICAgICAgICAgICAgICBTZWxlY3Rpb247CgogICAgICAgICAgICAgICAgRWRpdG9yR290Rm9jdXMgPSB0cnVlOwoKICAgICAgICAgICAgICAgIGlmIChSVEVDdXJzb3JSYW5nZSkgewogICAgICAgICAgICAgICAgICAgIFNlbGVjdGlvbiA9IG5ldyBDS0VESVRPUi5kb20uc2VsZWN0aW9uKENLRURJVE9SLmluc3RhbmNlc1tJbnN0YW5jZU5hbWVdLmRvY3VtZW50KTsKICAgICAgICAgICAgICAgICAgICBTZWxlY3Rpb24uc2VsZWN0UmFuZ2VzKFJURUN1cnNvclJhbmdlKTsKICAgICAgICAgICAgICAgICAgICAvLyBkZWxldGUgc2F2ZWQgY3Vyc29yIHBvc2l0aW9uICh0byBub3Qga2VlcCBvbGQgc3R1ZmYpCiAgICAgICAgICAgICAgICAgICAgJCgnIycgKyBJbnN0YW5jZU5hbWUpLmRhdGEoJ1JURUN1cnNvcicsIHVuZGVmaW5lZCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgICAvLyBSZWdpc3RlciBldmVudHMgZm9yIHNhdmluZyB0aGUgY3Vyc29yIHBvc2l0aW9uIG9mIHRleHRhcmVhCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRFbGVtZW50LnVuYmluZCgnY2xpY2suRkFRQ29tcG9zaW5nJykuYmluZCgnY2xpY2suRkFRQ29tcG9zaW5nJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgR2V0Q3Vyc29yUG9zaXRpb24oKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICRFbGVtZW50LnVuYmluZCgna2V5dXAuRkFRQ29tcG9zaW5nJykuYmluZCgna2V5dXAuRkFRQ29tcG9zaW5nJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgR2V0Q3Vyc29yUG9zaXRpb24oKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgfTsKCiAgICAvKioKICAgICAqIEBmdW5jdGlvbgogICAgICogQHBhcmFtIHtTdHJpbmd9IFRpdGxlIG9mIGEgRkFRIGFydGljbGUgdG8gYmUgcmV0dXJuZWQgaW50byB0aWNrZXQgU3ViamVjdAogICAgICogQHBhcmFtIHtTdHJpbmd9IEZpZWxkcyBvZiBhIEZBUSBhcnRpY2xlIGFuZCBvciBMaW5rIHRvIHRoZSBwdWJsaWMgaW50ZXJmYWNlIGluIHBsYWluIHRleHQKICAgICAqIEBwYXJhbSB7U3RyaW5nfSBGaWVsZHMgb2YgYSBGQVEgYXJ0aWNsZSBhbmQgb3IgTGluayB0byB0aGUgcHVibGljIGludGVyZmFjZSBpbiBIVE1MCiAgICAgKiBAcmV0dXJuIG5vdGhpbmcKICAgICAqICAgICAgRG8gbm90aGluZyBhbmQgc2hvdyBhbiBlcnJvciBtZXNzYWdlLgogICAgICovCiAgICBmdW5jdGlvbiBTZXREYXRhIChGQVFUaXRsZSwgRkFRQ29udGVudCwgRkFRSFRNTENvbnRlbnQpIHsKICAgICAgICBpZiAoJCgnI1N1YmplY3QnLCBwYXJlbnQuZG9jdW1lbnQpLmxlbmd0aCAmJiAkKCcjUmljaFRleHQnLCBwYXJlbnQuZG9jdW1lbnQpLmxlbmd0aCkgewogICAgICAgICAgICB2YXIgJFBhcmVudFN1YmplY3QgPSAkKCcjU3ViamVjdCcsIHBhcmVudC5kb2N1bWVudCksCiAgICAgICAgICAgICAgICAkUGFyZW50Qm9keSA9ICQoJyNSaWNoVGV4dCcsIHBhcmVudC5kb2N1bWVudCksCiAgICAgICAgICAgICAgICBQYXJlbnRCb2R5ID0gJFBhcmVudEJvZHlbMF0sCiAgICAgICAgICAgICAgICBQYXJlbnRCb2R5VmFsdWUgPSAkUGFyZW50Qm9keS52YWwoKSwKICAgICAgICAgICAgICAgIFJhbmdlLAogICAgICAgICAgICAgICAgU3RhcnRSYW5nZSA9IDAsCiAgICAgICAgICAgICAgICBFbmRSYW5nZSA9IDAsCiAgICAgICAgICAgICAgICBOZXdQb3NpdGlvbiA9IDAsCiAgICAgICAgICAgICAgICBOZXdIVE1MOwoKICAgICAgICAgICAgLy8gY29weSBzdWJqZWN0CiAgICAgICAgICAgIGlmICgkUGFyZW50U3ViamVjdC52YWwoKSA9PT0gJycpIHsKICAgICAgICAgICAgICAgICRQYXJlbnRTdWJqZWN0LnZhbChGQVFUaXRsZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkUGFyZW50U3ViamVjdC52YWwoJFBhcmVudFN1YmplY3QudmFsKCkgKyAnIC0gJyArIEZBUVRpdGxlKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gYWRkIEZBUSB0ZXh0IGFuZC9vciBsaW5rIHRvIFdZU0lXWUcgZWRpdG9yIGluIHBhcmVudCB3aW5kb3cKICAgICAgICAgICAgaWYgKHBhcmVudC5DS0VESVRPUiAmJiBwYXJlbnQuQ0tFRElUT1IuaW5zdGFuY2VzLlJpY2hUZXh0KSB7CiAgICAgICAgICAgICAgICBwYXJlbnQuQ0tFRElUT1IuaW5zdGFuY2VzLlJpY2hUZXh0LmZvY3VzKCk7CiAgICAgICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dCggZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIC8vIEluIHNvbWUgY2lyY3Vtc3RhbmNlcywgdGhpcyBjb21tYW5kIHRocm93cyBhbiBlcnJvciAoYWx0aG91Z2ggaW5zZXJ0aW5nIHRoZSBIVE1MIHdvcmtzKQogICAgICAgICAgICAgICAgICAgIC8vIEJlY2F1c2UgdGhlIGludGVuZGVkIGZ1bmN0aW9uYWxpdHkgYWxzbyB3b3Jrcywgd2UganVzdCB3cmFwIGl0IGluIGEgdHJ5LWNhdGNoLXN0YXRlbWVudAogICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5DS0VESVRPUi5pbnN0YW5jZXMuUmljaFRleHQuaW5zZXJ0SHRtbChGQVFIVE1MQ29udGVudCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGNhdGNoIChFcnJvcikgewogICAgICAgICAgICAgICAgICAgICAgICAkLm5vb3AoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuQ29yZS5VSS5EaWFsb2cuQ2xvc2VEaWFsb2coJCgnLkRpYWxvZycsIHBhcmVudC5kb2N1bWVudCkpOwogICAgICAgICAgICAgICAgICAgIH0sIDUwKTsKICAgICAgICAgICAgICAgIH0sIDEwMCk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIGluc2VydCBib2R5IGFuZC9vciBsaW5rIHRvIHRleHRhcmVhIChpZiBwb3NzaWJsZSB0byBjdXJzb3IgcG9zaXRpb24gb3RoZXJ3aXNlIHRvIHRoZSB0b3ApCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgLy8gR2V0IHByZXZpb3VzbHkgc2F2ZWQgY3Vyc29yIHBvc2l0aW9uIG9mIHRleHRhcmVhCiAgICAgICAgICAgICAgICBpZiAocGFyZW50LiQoJyNSaWNoVGV4dCcsIHBhcmVudC5kb2N1bWVudCkuZGF0YSgnQ3Vyc29yJykpIHsKICAgICAgICAgICAgICAgICAgICBTdGFydFJhbmdlID0gcGFyZW50LiQoJyNSaWNoVGV4dCcsIHBhcmVudC5kb2N1bWVudCkuZGF0YSgnQ3Vyc29yJykuU3RhcnRSYW5nZTsKICAgICAgICAgICAgICAgICAgICBFbmRSYW5nZSA9IHBhcmVudC4kKCcjUmljaFRleHQnLCBwYXJlbnQuZG9jdW1lbnQpLmRhdGEoJ0N1cnNvcicpLkVuZFJhbmdlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIEFkZCBuZXcgdGV4dCB0byB0ZXh0YXJlYQogICAgICAgICAgICAgICAgJFBhcmVudEJvZHkudmFsKFBhcmVudEJvZHlWYWx1ZS5zdWJzdHIoMCwgU3RhcnRSYW5nZSkgKyBGQVFDb250ZW50ICsgUGFyZW50Qm9keVZhbHVlLnN1YnN0cihFbmRSYW5nZSwgUGFyZW50Qm9keVZhbHVlLmxlbmd0aCkpOwogICAgICAgICAgICAgICAgTmV3UG9zaXRpb24gPSBTdGFydFJhbmdlICsgRkFRQ29udGVudC5sZW5ndGg7CgogICAgICAgICAgICAgICAgLy8gSnVtcCB0byBuZXcgY3Vyc29yIHBvc2l0aW9uIChhZnRlciBpbnNlcnRlZCB0ZXh0KQogICAgICAgICAgICAgICAgaWYgKFBhcmVudEJvZHkuc2VsZWN0aW9uU3RhcnQpIHsKICAgICAgICAgICAgICAgICAgICBQYXJlbnRCb2R5LnNlbGVjdGlvblN0YXJ0ID0gTmV3UG9zaXRpb247CiAgICAgICAgICAgICAgICAgICAgUGFyZW50Qm9keS5zZWxlY3Rpb25FbmQgPSBOZXdQb3NpdGlvbjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRvY3VtZW50LnNlbGVjdGlvbikgewogICAgICAgICAgICAgICAgICAgIFJhbmdlID0gZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCkuZHVwbGljYXRlKCk7CiAgICAgICAgICAgICAgICAgICAgUmFuZ2UubW92ZVN0YXJ0KCdjaGFyYWN0ZXInLCBOZXdQb3NpdGlvbik7CiAgICAgICAgICAgICAgICAgICAgUmFuZ2Uuc2VsZWN0KCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcGFyZW50LkNvcmUuVUkuRGlhbG9nLkNsb3NlRGlhbG9nKCQoJy5EaWFsb2cnLCBwYXJlbnQuZG9jdW1lbnQpKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgYWxlcnQoJyRKU1RleHR7IlRoaXMgd2luZG93IG11c3QgYmUgY2FsbGVkIGZyb20gY29tcG9zZSB3aW5kb3cifScpOwogICAgICAgICAgICBwYXJlbnQuQ29yZS5VSS5EaWFsb2cuQ2xvc2VEaWFsb2coJCgnLkRpYWxvZycsIHBhcmVudC5kb2N1bWVudCkpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IFNldHRpbmcgdG8gYWRkIEZBUSBpdGVtIHRleHQgb3Igbm90CiAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IFNldHRpbmcgdG8gYWRkIEZBUSBpdGVtIGxpbmsgb3Igbm90CiAgICAgKiBAcmV0dXJuIG5vdGhpbmcKICAgICAqLwogICAgVGFyZ2V0TlMuU2V0VGV4dCA9IGZ1bmN0aW9uIChJbnNlcnRUZXh0LCBJbnNlcnRMaW5rKSB7CiAgICAgICAgdmFyIEZBUVRpdGxlID0gJCgnI0ZBUVRpdGxlJykudmFsKCksCiAgICAgICAgRkFRQ29udGVudCA9ICcnLAogICAgICAgIEZBUUhUTUxDb250ZW50ID0gJycsCiAgICAgICAgRkFRTGluazsKCiAgICAgICAgaWYgKCBJbnNlcnRUZXh0ID09PSAxICkgewogICAgICAgICAgICBGQVFDb250ZW50ID0gJCgnI0ZBUUJvZHknKS52YWwoKTsKICAgICAgICAgICAgRkFRSFRNTENvbnRlbnQgPSBGQVFDb250ZW50OwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgRkFRQ29udGVudCA9ICcnOwogICAgICAgICAgICBGQVFIVE1MQ29udGVudCA9IEZBUUNvbnRlbnQ7CiAgICAgICAgfQoKICAgICAgICBpZiAoSW5zZXJ0TGluayA9PT0gMSApIHsKICAgICAgICAgICAgRkFRTGluayA9ICQoJyNGQVFQdWJsaWNMaW5rJykudmFsKCk7CiAgICAgICAgICAgIEZBUUNvbnRlbnQgPSBGQVFDb250ZW50ICsgJ1xuJyArIEZBUUxpbms7CiAgICAgICAgICAgIEZBUUhUTUxDb250ZW50ID0gRkFRSFRNTENvbnRlbnQgKyAnPGJyLz4nICsgJzxhIGhyZWY9IicgKyBGQVFMaW5rICsgJyI+JyArIEZBUVRpdGxlICsgJzwvYT4nOwogICAgICAgIH0KCiAgICAgICAgU2V0RGF0YSAoRkFRVGl0bGUsIEZBUUNvbnRlbnQsIEZBUUhUTUxDb250ZW50KTsKICAgIH07CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gU2V0dGluZyB0byBhZGQgRkFRIGl0ZW0gdGV4dCBvciBub3QKICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gU2V0dGluZyB0byBhZGQgRkFRIGl0ZW0gbGluayBvciBub3QKICAgICAqIEByZXR1cm4gbm90aGluZwogICAgICovCiAgICBUYXJnZXROUy5TZXRGdWxsRkFRID0gZnVuY3Rpb24gKEluc2VydFRleHQsIEluc2VydExpbmspIHsKCiAgICAgICAgLy8gZ2V0IHRoZSBGQVEgcmljaHRleHQgYW5kIHRyaWdnZXIgYXR0YWNobWVudCBwcm9jZXNzaW5nCiAgICAgICAgcGFyZW50LkNvcmUuQUpBWC5GdW5jdGlvbkNhbGwoCiAgICAgICAgICAgIHBhcmVudC5Db3JlLkNvbmZpZy5HZXQoJ0Jhc2VsaW5rJyksCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEFjdGlvbjogJ0FnZW50RkFRUmljaFRleHQnLAogICAgICAgICAgICAgICAgSXRlbUlEOiAkKCdpbnB1dFtuYW1lPUZBUUlEXScpLnZhbCgpLAogICAgICAgICAgICAgICAgRm9ybUlEOiBwYXJlbnQuJCgnaW5wdXRbbmFtZT1Gb3JtSURdJykudmFsKCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZnVuY3Rpb24gKFJlc3BvbnNlKSB7CiAgICAgICAgICAgICAgICB2YXIgRkFRVGl0bGUgPSBSZXNwb25zZS5GQVFUaXRsZSwKICAgICAgICAgICAgICAgICAgICBGQVFDb250ZW50ID0gJycsCiAgICAgICAgICAgICAgICAgICAgRkFRSFRNTENvbnRlbnQgPSAnJywKICAgICAgICAgICAgICAgICAgICBGQVFMaW5rOwoKICAgICAgICAgICAgICAgIGlmICggSW5zZXJ0VGV4dCA9PT0gMSApIHsKICAgICAgICAgICAgICAgICAgICBGQVFDb250ZW50ID0gUmVzcG9uc2UuRkFRQ29udGVudDsKICAgICAgICAgICAgICAgICAgICBGQVFIVE1MQ29udGVudCA9IFJlc3BvbnNlLkZBUUhUTUxDb250ZW50OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmIChJbnNlcnRMaW5rID09PSAxICkgewogICAgICAgICAgICAgICAgICAgIEZBUUxpbmsgPSAkKCcjRkFRUHVibGljTGluaycpLnZhbCgpOwogICAgICAgICAgICAgICAgICAgIEZBUUNvbnRlbnQgPSBGQVFDb250ZW50ICsgJ1xuJyArIEZBUUxpbms7CiAgICAgICAgICAgICAgICAgICAgRkFRSFRNTENvbnRlbnQgPSBGQVFIVE1MQ29udGVudCArICc8YnIvPjxici8+JyArICc8YSBocmVmPSInICsgRkFRTGluayArICciPicgKyBGQVFUaXRsZSArICc8L2E+JzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyBzeW5jIHRoZSBhdHRhY2htZW50IGxpc3Qgd2l0aCB0aGUgYXR0YWNobWVudHMgaW4gdGhlIFVwbG9hZENhY2hlCiAgICAgICAgICAgICAgICAvLyAxc3Q6IGRlbGV0ZSB0aGUgY3VycmVudCBhdHRhY2htZW50IGxpc3QKICAgICAgICAgICAgICAgICQoJyNGaWxlVXBsb2FkJywgcGFyZW50LmRvY3VtZW50KS5wYXJlbnQoKS5zaWJsaW5ncygnbGknKS5yZW1vdmUoKTsKCiAgICAgICAgICAgICAgICAvLyAybmQ6IGFkZCBhbGwgZmlsZXMgYmFzZWQgb24gdGhlIG1ldGFkYXRhIHJldHVybmVkIGluIFJlc3BvbnNlCiAgICAgICAgICAgICAgICAkKFJlc3BvbnNlLlRpY2tldEF0dGFjaG1lbnRzKS5lYWNoKGZ1bmN0aW9uKGluZGV4KSB7CiAgICAgICAgICAgICAgICAgICAgJCgnI0ZpbGVVcGxvYWQnLCBwYXJlbnQuZG9jdW1lbnQpLmJlZm9yZSgKICAgICAgICAgICAgICAgICAgICAgICAgJzxsaT4nICsgdGhpcy5GaWxlbmFtZSArICcgKCcgKyB0aGlzLkZpbGVzaXplICsgJyk8YnV0dG9uIHR5cGU9InN1Ym1pdCIgaWQ9IkF0dGFjaG1lbnREZWxldGUnICsgdGhpcy5GaWxlSUQgKyAnIiBuYW1lPSJBdHRhY2htZW50RGVsZXRlJyArIHRoaXMuRmlsZUlEICsgJyIgdmFsdWU9IkRlbGV0ZSIgY2xhc3M9IlNwYWNpbmdMZWZ0Ij4nICsgUmVzcG9uc2UuTG9jYWxpemF0aW9uLkRlbGV0ZSArICc8L2J1dHRvbj48L2xpPicKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgU2V0RGF0YSAoRkFRVGl0bGUsIEZBUUNvbnRlbnQsIEZBUUhUTUxDb250ZW50KTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJ2pzb24nCiAgICAgICAgKTsKICAgIH07CiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oRkFRLkFnZW50LlRpY2tldENvbXBvc2UgfHwge30pKTsK
Ly8gLS0KLy8gRkFRLkN1c3RvbWVyLkZBUVpvb20uanMgLSBwcm92aWRlcyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zIGZvciBGQVFab29tCi8vIENvcHlyaWdodCAoQykgMjAwMS0yMDEyIE9UUlMgQUcsIGh0dHA6Ly9vdHJzLm9yZy8KLy8gLS0KLy8gVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKLy8gdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQovLyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgovLyAtLQoKInVzZSBzdHJpY3QiOwoKdmFyIEZBUSA9IEZBUSB8fCB7fTsKRkFRLkN1c3RvbWVyID0gRkFRLkN1c3RvbWVyIHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UKICogQGV4cG9ydHMgVGFyZ2V0TlMgYXMgRkFRLkN1c3RvbWVyLlRpY2tldFpvb20KICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgVGlja2V0Wm9vbS4KICovCkZBUS5DdXN0b21lci5GQVFab29tID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgIC8qKgogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0ge2pRdWVyeU9iamVjdH0gJElmcmFtZSBUaGUgaWZyYW1lIHdoaWNoIHNob3VsZCBiZSBhdXRvLWhlaWdodGVkCiAgICAgKiBAcmV0dXJuIG5vdGhpbmcKICAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBpbml0aWFsaXplcyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zCiAgICAgKi8KICAgIFRhcmdldE5TLklmcmFtZUF1dG9IZWlnaHQgPSBmdW5jdGlvbiAoJElmcmFtZSkgewogICAgICAgIGlmIChpc0pRdWVyeU9iamVjdCgkSWZyYW1lKSkgewogICAgICAgICAgICB2YXIgTmV3SGVpZ2h0ID0gJElmcmFtZS5jb250ZW50cygpLmhlaWdodCgpOwogICAgICAgICAgICBpZiAoIU5ld0hlaWdodCB8fCBpc05hTihOZXdIZWlnaHQpKSB7CiAgICAgICAgICAgICAgICBOZXdIZWlnaHQgPSBDb3JlLkNvbmZpZy5HZXQoJ0ZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVySFRNTEZpZWxkSGVpZ2h0RGVmYXVsdCcpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgaWYgKE5ld0hlaWdodCA+IENvcmUuQ29uZmlnLkdldCgnRkFROjpGcm9udGVuZDo6Q3VzdG9tZXJIVE1MRmllbGRIZWlnaHRNYXgnKSkgewogICAgICAgICAgICAgICAgICAgIE5ld0hlaWdodCA9IENvcmUuQ29uZmlnLkdldCgnRkFROjpGcm9udGVuZDo6Q3VzdG9tZXJIVE1MRmllbGRIZWlnaHRNYXgnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkSWZyYW1lLmhlaWdodChOZXdIZWlnaHQgKyAncHgnKTsKICAgICAgICB9CiAgICB9OwoKICAgIC8qKgogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBjaGVja3MgdGhlIHZhbHVlIG9mIGEgaGlkZGVuIGlucHV0IGZpZWxkIGNvbnRhaW5pbmcgdGhlIHN0YXRlIG9mIHRoZSBhcnRpY2xlOgogICAgICogICAgICB1bnRvdWNoZWQgKD0gbm90IHlldCBsb2FkZWQpLCB0cnVlIG9yIGZhbHNlLiBJZiB0aGUgYXJ0aWNsZSBpcyBhbHJlYWR5IGxvYWRlZCAoLT4gdHJ1ZSksIGFuZAogICAgICogICAgICB1c2VyIGNhbGxzIHRoaXMgZnVuY3Rpb24gYnkgY2xpY2tpbmcgb24gdGhlIG1lc3NhZ2UgaGVhZCwgdGhlIGFydGljbGUgZ2V0cyBoaWRkZW4gYnkgcmVtb3ZpbmcKICAgICAqICAgICAgdGhlIGNsYXNzICdWaXNpYmxlJyBhbmQgdGhlIHN0YXR1cyBjaGFuZ2VzIHRvIGZhbHNlLiBJZiB0aGUgbWVzc2FnZSBoZWFkIGlzIGNsaWNrZWQgd2hpbGUgdGhlCiAgICAgKiAgICAgIHN0YXR1cyBpcyBmYWxzZSAoZS5nLiB0aGUgYXJ0aWNsZSBpcyBoaWRkZW4pLCB0aGUgYXJ0aWNsZSBnZXRzIHRoZSBjbGFzcyAnVmlzaWJsZScgYWdhaW4gYW5kCiAgICAgKiAgICAgIHRoZSBzdGF0dXMgZ2V0cyBjaGFuZ2VkIHRvIHRydWUuCiAgICAgKi8KCiAgICBmdW5jdGlvbiBUb2dnbGVNZXNzYWdlKCRNZXNzYWdlKXsKICAgICAgICB2YXIgJFN0YXR1cyA9ICQoJz4gaW5wdXRbbmFtZT1GaWVsZFN0YXRlXScsICRNZXNzYWdlKTsKICAgICAgICBzd2l0Y2ggKCRTdGF0dXMudmFsKCkpewogICAgICAgICAgICBjYXNlICJ0cnVlIjoKICAgICAgICAgICAgICAgICRNZXNzYWdlLnJlbW92ZUNsYXNzKCdWaXNpYmxlJyk7CiAgICAgICAgICAgICAgICAkU3RhdHVzLnZhbCgiZmFsc2UiKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgImZhbHNlIjoKICAgICAgICAgICAgICAgICRNZXNzYWdlLmFkZENsYXNzKCdWaXNpYmxlJyk7CiAgICAgICAgICAgICAgICAkU3RhdHVzLnZhbCgidHJ1ZSIpOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBUaGlzIGZ1bmN0aW9uIGJpbmRzIGZ1bmN0aW9ucyB0byB0aGUgJ01lc3NhZ2VIZWFkZXInCiAgICAgKiAgICAgIHRvIHRvZ2dsZSB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgTWVzc2FnZUJvZHkgYW5kIHRoZSByZXBseSBmb3JtLgogICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24oKXsKICAgICAgICB2YXIgJE1lc3NhZ2VzID0gJCgnI01lc3NhZ2VzID4gbGknKSwKICAgICAgICAgICAgJFZpc2libGVNZXNzYWdlID0gJE1lc3NhZ2VzLmxhc3QoKSwKICAgICAgICAgICAgJE1lc3NhZ2VIZWFkZXJzID0gJCgnLk1lc3NhZ2VIZWFkZXInLCAkTWVzc2FnZXMpOwoKICAgICAgICAkTWVzc2FnZUhlYWRlcnMuY2xpY2soZnVuY3Rpb24oRXZlbnQpewogICAgICAgICAgICBUb2dnbGVNZXNzYWdlKCQodGhpcykucGFyZW50KCkpOwogICAgICAgICAgICBFdmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgIH0pOwogICAgfTsKCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oRkFRLkN1c3RvbWVyLkZBUVpvb20gfHwge30pKTsK
LyoqCiAqIEBwcm9qZWN0ICAgICBPVFJTIChodHRwOi8vd3d3Lm90cnMub3JnKSAtIEFnZW50IEZyb250ZW5kCiAqIEBjb3B5cmlnaHQgICBPVFJTIEFHCiAqIEBsaWNlbnNlICAgICBBR1BMIChodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQpCiAqLwoKLyoqCiAqIEBwYWNrYWdlICAgICBTa2luICJEZWZhdWx0IgogKiBAc2VjdGlvbiAgICAgRGVmYXVsdCBTZXR0aW5ncwogKi8KCkBtZWRpYSBzY3JlZW4scHJvamVjdGlvbix0dixoYW5kaGVsZCB7CgovKioKICogQHN1YnNlY3Rpb24gQXJ0aWNsZUxpc3QgRXhwYW5kaW5nCiAqLwoKLkZBUSAuT3ZlcnZpZXdDb250cm9sIGRpdiB7CiAgICBwYWRkaW5nOiAwcHg7Cn0KCi5GQVEgI092ZXJ2aWV3Qm9keSB7CiAgICBtYXJnaW46IDAgMCA4cHggMDsKfQoKLyoqCiAqIEBzdWJzZWN0aW9uIExhcmdlIFNpZGViYXJDb2x1bW4KICovCgouTGF5b3V0Rml4ZWRTaWRlYmFyLlNpZGViYXJMYXN0ID4gLlNpZGViYXJDb2x1bW4uTGFyZ2UgewogICAgd2lkdGg6IDM1MHB4OwogICAgZmxvYXQ6IHJpZ2h0OwogICAgbWFyZ2luLWxlZnQ6IDE2cHg7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCi5MYXlvdXRGaXhlZFNpZGViYXIuU2lkZWJhckxhc3QgPiAuU2lkZWJhckNvbHVtbi5NZWRpdW0gewogICAgd2lkdGg6IDI5MHB4OwogICAgZmxvYXQ6IHJpZ2h0OwogICAgbWFyZ2luLWxlZnQ6IDE2cHg7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCi8qKgogKiBAc3Vic2VjdGlvbiBGQVFNaW5pTGlzdAogKi8KCnVsLkZBUU1pbmlMaXN0IHNwYW4gewogICAgZGlzcGxheTogYmxvY2s7CiAgICBmb250LXNpemU6IDEwcHg7Cn0KCgovKioKICogQHN1YnNlY3Rpb24gQ2F0ZWdvcnkgcGF0aAogKi8KCi5GQVFQYXRoQ2F0ZWdvcnkgewogICAgbWFyZ2luLWJvdHRvbTogMTNweCAhaW1wb3J0YW50OwogICAgaGVpZ2h0OiBhdXRvOwogICAgbWluLWhlaWdodDogMjVweDsKICAgIG1hcmdpbjogMCAtMXB4OwogICAgYmFja2dyb3VuZDogI2U1ZTZlNjsKICAgIGJhY2tncm91bmQ6IC1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgICNmNGY1ZjUgMCUsICNlNWU2ZTYgMTAwJSk7CiAgICBiYWNrZ3JvdW5kOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBjb2xvci1zdG9wKDAlLCNmNGY1ZjUpLCBjb2xvci1zdG9wKDEwMCUsI2U1ZTZlNikpOwogICAgYmFja2dyb3VuZDogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAgI2Y0ZjVmNSAwJSwjZTVlNmU2IDEwMCUpOwogICAgYmFja2dyb3VuZDogLW8tbGluZWFyLWdyYWRpZW50KHRvcCwgICNmNGY1ZjUgMCUsI2U1ZTZlNiAxMDAlKTsKICAgIGJhY2tncm91bmQ6IC1tcy1saW5lYXItZ3JhZGllbnQodG9wLCAgI2Y0ZjVmNSAwJSwjZTVlNmU2IDEwMCUpOwogICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgICNmNGY1ZjUgMCUsI2U1ZTZlNiAxMDAlKTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogM3B4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiAzcHg7CiAgICBvdmVyZmxvdzogaGlkZGVuOwp9CgouRkFRUGF0aENhdGVnb3J5IGgzIHsKICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgZm9udC1zaXplOiAxMnB4OwogICAgcGFkZGluZy1sZWZ0OiA1cHg7CiAgICBwYWRkaW5nLXRvcDogN3B4Owp9CgouRkFRUGF0aENhdGVnb3J5IGgzID4gc3BhbjpsYXN0LWNoaWxkIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCmlmcmFtZS5UZXh0T3B0aW9uLkZBUSB7CiAgICB3aWR0aDogOTAwcHg7CiAgICBtaW4taGVpZ2h0OiA2MDBweDsKfQoKaWZyYW1lLkZBUUZpZWxkIHsKICAgIHdpZHRoOiAxMDAlOwogICAgZnJhbWVib3JkZXI6IDA7Cn0KCmZpZWxkc2V0LlRhYmxlU21hbGwgPiBkaXYuRmllbGQgewogICAgbWFyZ2luLWxlZnQ6IDI0JSAhaW1wb3J0YW50Owp9CgpmaWVsZHNldC5UYWJsZVNtYWxsID4gbGFiZWwgewogICAgd2lkdGg6IDI0JSAhaW1wb3J0YW50Owp9CgpmaWVsZHNldC5UYWJsZVNtYWxsID4gZGl2LkZBUURpdmlkZXIgewogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNDQ0NDQ0M7CiAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgIG1hcmdpbi1yaWdodDogYXV0bzsKfQoKfQoK
LyoqCiAqIEBwcm9qZWN0ICAgICBPVFJTIChodHRwOi8vd3d3Lm90cnMub3JnKSAtIEFnZW50IEZyb250ZW5kCiAqIEBjb3B5cmlnaHQgICBPVFJTIEFHCiAqIEBsaWNlbnNlICAgICBBR1BMIChodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQpCiAqLwoKLyoqCiAqIEBwYWNrYWdlICAgICBTa2luICJEZWZhdWx0IgogKiBAc2VjdGlvbiAgICAgRkFRRGV0YWlscwogKi8KCkBtZWRpYSBzY3JlZW4scHJvamVjdGlvbix0dixoYW5kaGVsZCB7CgoKLyoqCiAqIEBzdWJzZWN0aW9uICBBcnRpY2xlIHRhYmxlIGJvZHkKICovCgouQXJ0aWNsZUZBUUhlYWRlciB7CiAgICBtYXJnaW46IDAgOHB4OwogICAgcGFkZGluZzogMnB4IDAgN3B4OwogICAgZm9udC1zaXplOiAxNHB4OwogICAgY29sb3I6IEdyYXk7Cn0KCi5BcnRpY2xlRkFRQ29udGVudCB7CiAgICBwYWRkaW5nOiAxMXB4IDEycHg7CiAgICBsaW5lLWhlaWdodDogMS4zOwp9CgouQXJ0aWNsZUZBUUNvbnRlbnQgLkZBUVZvdGVGb3JtIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgbWFyZ2luLXRvcDogMTBweDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLkFydGljbGVGQVFDb250ZW50IHAuQ2VudGVyIHsKICAgIHBhZGRpbmctYm90dG9tOiAxMHB4OwogICAgbWFyZ2luOiAwcHggNTBweDsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjY2NjOwp9CgouQXJ0aWNsZUZBUUNvbnRlbnQgLkZBUVZvdGVGb3JtIC5DYWxsRm9yQWN0aW9uIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgbWFyZ2luOiAxMHB4IGF1dG8gMHB4IGF1dG87Cn0KCi5BcnRpY2xlRkFRQ29udGVudCAuRkFRVm90ZUZvcm0gLkNhbGxGb3JBY3Rpb24uSGlkZGVuIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5GQVFTdGF0ZU5hbWUgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgcmlnaHQ6IDEwcHg7CiAgICB0b3A6IDdweDsKICAgIGZvbnQtc2l6ZTogODAlOwogICAgZm9udC1zdHlsZTogaXRhbGljOwp9CgpmaWVsZHNldCAuRkFRU3RhdGVOYW1lIHsKICAgIHBvc2l0aW9uOiBzdGF0aWM7Cn0KCi5SYXRlQnV0dG9ucyB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cn0KCi5SYXRlQnV0dG9ucyA+IGxpIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KCi5SYXRlQnV0dG9ucyA+IGxpOmZpcnN0LWNoaWxkLAouUmF0ZUJ1dHRvbnMgPiBsaTpsYXN0LWNoaWxkIHsKICAgIGZvbnQtd2VpZ2h0OiBib2xkOwp9CgouUmF0ZUJ1dHRvbiB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGhlaWdodDogMzBweDsKICAgIHdpZHRoOiAyNXB4OwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgZmxvYXQ6IGxlZnQ7CiAgICBjb2xvcjogIzAwMDAwMDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLlJhdGVCdXR0b24gaSB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGZvbnQtc2l6ZTogMTZweDsKICAgIHdpZHRoOiAxMDAlOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgY29sb3I6ICM5OTk7Cn0KCi5SYXRlQnV0dG9uIGkuaWNvbi1zdGFyIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5SYXRlQnV0dG9uLlJhdGVDaGVja2VkIGkuaWNvbi1zdGFyIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgY29sb3I6ICNFOTdEMzQ7Cn0KCi5SYXRlQnV0dG9uLlJhdGVDaGVja2VkIGkuaWNvbi1zdGFyLWVtcHR5IHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5SYXRlQnV0dG9uOmhvdmVyIGkuaWNvbi1zdGFyLWVtcHR5IHsKICAgIGNvbG9yOiAjMDAwOwp9CgouUmF0ZVN0YXIgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBoZWlnaHQ6IDE2cHg7CiAgICBmbG9hdDogbGVmdDsKICAgIHBhZGRpbmctbGVmdDogMXB4OwogICAgZm9udC1zaXplOiAxMHB4Owp9CgouUmF0ZVN0YXJUZXh0IHsKICAgIHRleHQtaW5kZW50OjVweDsKfQoKLlJhdGVMYWJlbEJlZm9yZSwKLlJhdGVMYWJlbEFmdGVyIHsKICAgIGNvbG9yOiAjMzMzOwogICAgcGFkZGluZy10b3A6IDVweDsKICAgIGZvbnQtd2VpZ2h0OiBib2xkOwp9CgouUmF0ZUxhYmVsQmVmb3JlIHsKICAgIGZsb2F0OiBsZWZ0OwogICAgcGFkZGluZy1yaWdodDogNnB4Owp9CgouUmF0ZUxhYmVsQWZ0ZXIgewogICAgZmxvYXQ6IGxlZnQ7CiAgICBwYWRkaW5nLWxlZnQ6IDVweDsKfQoKLlpvb21TbWFsbEJ1dHRvbnsKICAgIG1hcmdpbi1sZWZ0OiAxMnB4Owp9Cgp9Cg==
LyoqCiAqIEBwcm9qZWN0ICAgICBPVFJTIChodHRwOi8vd3d3Lm90cnMub3JnKSAtIEFnZW50IEZyb250ZW5kCiAqIEBjb3B5cmlnaHQgICBPVFJTIEFHCiAqIEBsaWNlbnNlICAgICBBR1BMIChodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQpCiAqLwoKLyoqCiAqIEBwYWNrYWdlICAgICBTa2luICJEZWZhdWx0IgogKiBAc2VjdGlvbiAgICAgV2lkZ2V0cwogKi8KCkBtZWRpYSBzY3JlZW4scHJvamVjdGlvbix0dixoYW5kaGVsZCB7CgoKLyoqCiAqIEBzdWJzZWN0aW9uICBXaWRnZXRCb3gKICovCgouV2lkZ2V0Qm94ID4gLkZBUUNvbnRlbnQgewogICAgYmFja2dyb3VuZDogI2ZmZmZmZjsKICAgIGJhY2tncm91bmQ6IC1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgICNlYmViZWIgMCUsICNmZmZmZmYgNTAlLCAjZmZmZmZmIDEwMCUpOwogICAgYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgY29sb3Itc3RvcCgwJSwjZWJlYmViKSwgY29sb3Itc3RvcCg1MCUsI2ZmZmZmZiksIGNvbG9yLXN0b3AoMTAwJSwjZmZmZmZmKSk7CiAgICBiYWNrZ3JvdW5kOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICAjZWJlYmViIDAlLCNmZmZmZmYgNTAlLCNmZmZmZmYgMTAwJSk7CiAgICBiYWNrZ3JvdW5kOiAtby1saW5lYXItZ3JhZGllbnQodG9wLCAgI2ViZWJlYiAwJSwjZmZmZmZmIDUwJSwjZmZmZmZmIDEwMCUpOwogICAgYmFja2dyb3VuZDogLW1zLWxpbmVhci1ncmFkaWVudCh0b3AsICAjZWJlYmViIDAlLCNmZmZmZmYgNTAlLCNmZmZmZmYgMTAwJSk7CiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAgI2ViZWJlYiAwJSwjZmZmZmZmIDUwJSwjZmZmZmZmIDEwMCUpOwogICAgbWluLWhlaWdodDogMTAwcHg7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0M2QzVDNDsKfQoKLldpZGdldEJveCA+IC5GQVFDb250ZW50U21hbGwgewogICAgYmFja2dyb3VuZDogI2ZmZmZmZjsKICAgIGJhY2tncm91bmQ6IC1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgICNlYmViZWIgMCUsICNmZmZmZmYgNTAlLCAjZmZmZmZmIDEwMCUpOwogICAgYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgY29sb3Itc3RvcCgwJSwjZWJlYmViKSwgY29sb3Itc3RvcCg1MCUsI2ZmZmZmZiksIGNvbG9yLXN0b3AoMTAwJSwjZmZmZmZmKSk7CiAgICBiYWNrZ3JvdW5kOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICAjZWJlYmViIDAlLCNmZmZmZmYgNTAlLCNmZmZmZmYgMTAwJSk7CiAgICBiYWNrZ3JvdW5kOiAtby1saW5lYXItZ3JhZGllbnQodG9wLCAgI2ViZWJlYiAwJSwjZmZmZmZmIDUwJSwjZmZmZmZmIDEwMCUpOwogICAgYmFja2dyb3VuZDogLW1zLWxpbmVhci1ncmFkaWVudCh0b3AsICAjZWJlYmViIDAlLCNmZmZmZmYgNTAlLCNmZmZmZmYgMTAwJSk7CiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAgI2ViZWJlYiAwJSwjZmZmZmZmIDUwJSwjZmZmZmZmIDEwMCUpOwogICAgbWluLWhlaWdodDogMTAwcHg7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0M2QzVDNDsKICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjQzZDNUM0Owp9CgouV2lkZ2V0Qm94ID4gLkZBUVZvdGluZyB7CiAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmOwogICAgYmFja2dyb3VuZDogLW1vei1saW5lYXItZ3JhZGllbnQodG9wLCAgI2ViZWJlYiAwJSwgI2ZmZmZmZiA1MCUsICNmZmZmZmYgMTAwJSk7CiAgICBiYWNrZ3JvdW5kOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBjb2xvci1zdG9wKDAlLCNlYmViZWIpLCBjb2xvci1zdG9wKDUwJSwjZmZmZmZmKSwgY29sb3Itc3RvcCgxMDAlLCNmZmZmZmYpKTsKICAgIGJhY2tncm91bmQ6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgICNlYmViZWIgMCUsI2ZmZmZmZiA1MCUsI2ZmZmZmZiAxMDAlKTsKICAgIGJhY2tncm91bmQ6IC1vLWxpbmVhci1ncmFkaWVudCh0b3AsICAjZWJlYmViIDAlLCNmZmZmZmYgNTAlLCNmZmZmZmYgMTAwJSk7CiAgICBiYWNrZ3JvdW5kOiAtbXMtbGluZWFyLWdyYWRpZW50KHRvcCwgICNlYmViZWIgMCUsI2ZmZmZmZiA1MCUsI2ZmZmZmZiAxMDAlKTsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICAjZWJlYmViIDAlLCNmZmZmZmYgNTAlLCNmZmZmZmYgMTAwJSk7CiAgICBtaW4taGVpZ2h0OiAxMDBweDsKfQoKfQo=
LyoqCiAqIEBwcm9qZWN0ICAgICBPVFJTIChodHRwOi8vd3d3Lm90cnMub3JnKSAtIEFnZW50IEZyb250ZW5kCiAqIEBjb3B5cmlnaHQgICBPVFJTIEFHCiAqIEBsaWNlbnNlICAgICBBR1BMIChodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQpCiAqLwoKLyoqCiAqIEBwYWNrYWdlICAgICBTa2luICJEZWZhdWx0IgogKiBAc2VjdGlvbiAgICAgRGVmYXVsdCBTZXR0aW5ncwogKi8KCkBtZWRpYSBzY3JlZW4scHJvamVjdGlvbix0dixoYW5kaGVsZCB7CgovKioKICogQHN1YnNlY3Rpb24gIExheW91dEZpeGVkU2lkZWJhcgogKi8KCi5MYXlvdXRGaXhlZFNpZGViYXIgewogICAgZGlzcGxheTogYmxvY2s7Cn0KCi5MYXlvdXRGaXhlZFNpZGViYXIgPiAuQ29udGVudENvbHVtbiB7CiAgICAvKioKICAgICAqIEBub3RlICAgIGZvcmNlIG93biBCbG9jayBGb3JtYXR0aW5nIENvbnRleHQgZm9yIG5lc3RlZCBmbG9hdHMKICAgICAqLwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoKLkxheW91dEZpeGVkU2lkZWJhciA+IC5TaWRlYmFyQ29sdW1uIHsKICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKfQoKLkxheW91dEZpeGVkU2lkZWJhci5TaWRlYmFyTGFzdCA+IC5TaWRlYmFyQ29sdW1uIHsKICAgIHdpZHRoOiAyNzBweDsKICAgIGZsb2F0OiByaWdodDsKICAgIG1hcmdpbi1sZWZ0OiAxNnB4OwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgouUlRMIC5MYXlvdXRGaXhlZFNpZGViYXIuU2lkZWJhckxhc3QgPiAuU2lkZWJhckNvbHVtbiB7CiAgICBmbG9hdDogbGVmdDsKICAgIG1hcmdpbi1sZWZ0OiAwOwogICAgbWFyZ2luLXJpZ2h0OiAxNnB4Owp9CgouTGF5b3V0Rml4ZWRTaWRlYmFyLlNpZGViYXJGaXJzdCA+IC5TaWRlYmFyQ29sdW1uIHsKICAgIHdpZHRoOiAyNzBweDsKICAgIGZsb2F0OiBsZWZ0OwogICAgbWFyZ2luLWxlZnQ6IDA7CiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7Cn0KCi5SVEwgLkxheW91dEZpeGVkU2lkZWJhci5TaWRlYmFyRmlyc3QgPiAuU2lkZWJhckNvbHVtbiB7CiAgICBmbG9hdDogcmlnaHQ7CiAgICBtYXJnaW4tbGVmdDogMTBweDsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKLyoqCiAqIEBzdWJzZWN0aW9uIExhcmdlIFNpZGViYXJDb2x1bW4KICovCgouTGF5b3V0Rml4ZWRTaWRlYmFyLlNpZGViYXJMYXN0ID4gLlNpZGViYXJDb2x1bW4uTGFyZ2UgewogICAgd2lkdGg6IDMwMHB4OwogICAgZmxvYXQ6IHJpZ2h0OwogICAgbWFyZ2luLWxlZnQ6IDE2cHg7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCi8qKgogKiBAc3Vic2VjdGlvbiAgQ3VzdG9tZXIgV2lkZ2V0U2ltcGxlCiAqLwoKLldpZGdldFNpbXBsZSB7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjRTlFOUU5OwogICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNGRkY7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0RERDsKICAgIGJvcmRlci1yYWRpdXM6IDVweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA1cHg7CiAgICBib3JkZXItcmFkaXVzOiA1cHg7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAzcHggI0VFRTsKICAgIC1tb3otYm94LXNoYWRvdzogMCAwIDNweCAjRUVFOwogICAgYm94LXNoYWRvdzogMCAwIDJweCAjRUVFOwogICAgcGFkZGluZzogMDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHdpZHRoOiBhdXRvOwogICAgei1pbmRleDogMTA7CiAgICBtYXJnaW4tYm90dG9tOiAxMHB4Owp9CgouV2lkZ2V0U2ltcGxlIC5IZWFkZXIgewogICAgcGFkZGluZzogNXB4IDhweCAzcHg7CiAgICBjb2xvcjogIzIyMjsKICAgIGJhY2tncm91bmQ6ICNlNWU2ZTY7CiAgICBiYWNrZ3JvdW5kOiAtbW96LWxpbmVhci1ncmFkaWVudCh0b3AsICAjZjRmNWY1IDAlLCAjZTVlNmU2IDEwMCUpOwogICAgYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgY29sb3Itc3RvcCgwJSwjZjRmNWY1KSwgY29sb3Itc3RvcCgxMDAlLCNlNWU2ZTYpKTsKICAgIGJhY2tncm91bmQ6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgICNmNGY1ZjUgMCUsI2U1ZTZlNiAxMDAlKTsKICAgIGJhY2tncm91bmQ6IC1vLWxpbmVhci1ncmFkaWVudCh0b3AsICAjZjRmNWY1IDAlLCNlNWU2ZTYgMTAwJSk7CiAgICBiYWNrZ3JvdW5kOiAtbXMtbGluZWFyLWdyYWRpZW50KHRvcCwgICNmNGY1ZjUgMCUsI2U1ZTZlNiAxMDAlKTsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICAjZjRmNWY1IDAlLCNlNWU2ZTYgMTAwJSk7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0Q2RDZENjsKICAgIHRleHQtc2hhZG93OiAwIDFweCAwICNGRkY7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5XaWRnZXRTaW1wbGUgLkhlYWRlciBoMyB7CiAgICBmb250LXdlaWdodDogYm9sZDsKICAgIGZsb2F0OiBsZWZ0Owp9CgouUlRMIC5XaWRnZXRTaW1wbGUgLkhlYWRlciBoMyB7CiAgICBmbG9hdDogcmlnaHQ7Cn0KCi5XaWRnZXRTaW1wbGUgLkhlYWRlciBoMyBzcGFuIHsKICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7Cn0KCi5XaWRnZXRTaW1wbGUgLkNvbnRlbnQgewogICAgaGVpZ2h0OiBhdXRvOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIHBhZGRpbmc6IDEzcHggOHB4OwogICAgYmFja2dyb3VuZDogI0ZGRjsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjRTlFOUU5Owp9CgouV2lkZ2V0U2ltcGxlIC5QYWdpbmF0aW9uIHsKICAgIGZvbnQtc2l6ZTogMTFweDsKfQoKLyoqCiAqIEBzdWJzZWN0aW9uIEZBUUhlYWRlcgogKi8KCi5GQVFIZWFkZXIgaDIgewogICAgbWFyZ2luOiAzcHggMCAwOwogICAgZm9udC1zaXplOiAyNHB4OwogICAgbGluZS1oZWlnaHQ6IDI0cHg7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBmbG9hdDogbGVmdDsKfQouUlRMIC5GQVFIZWFkZXIgaDIgewogICAgZmxvYXQ6IHJpZ2h0Owp9CgovKioKICogQHN1YnNlY3Rpb24gT3ZlcnZpZXcKICovCgouT3ZlcnZpZXcgdGhlYWQgewogICAgYmFja2dyb3VuZDogI2VlZWVlZTsKICAgIGJhY2tncm91bmQ6IC1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgICNlZWVlZWUgMCUsICNlMGUwZTAgMTAwJSk7CiAgICBiYWNrZ3JvdW5kOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBjb2xvci1zdG9wKDAlLCNlZWVlZWUpLCBjb2xvci1zdG9wKDEwMCUsI2UwZTBlMCkpOwogICAgYmFja2dyb3VuZDogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAgI2VlZWVlZSAwJSwjZTBlMGUwIDEwMCUpOwogICAgYmFja2dyb3VuZDogLW8tbGluZWFyLWdyYWRpZW50KHRvcCwgICNlZWVlZWUgMCUsI2UwZTBlMCAxMDAlKTsKICAgIGJhY2tncm91bmQ6IC1tcy1saW5lYXItZ3JhZGllbnQodG9wLCAgI2VlZWVlZSAwJSwjZTBlMGUwIDEwMCUpOwogICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgICNlZWVlZWUgMCUsI2UwZTBlMCAxMDAlKTsKICAgIGRpc3BsYXk6IHRhYmxlLWhlYWRlci1ncm91cDsKfQoKLk92ZXJ2aWV3IHRoZWFkIHRoIHsKICAgIGNvbG9yOiAjNEI0QjRCOwogICAgZm9udC1zaXplOiAxMXB4OwogICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgIGJhY2tncm91bmQ6IG5vbmU7CiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI0ZGRjsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjQkJCOwogICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI0NDQzsKICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwp9CgovKioKICogQHN1YnNlY3Rpb24gRkFRTWluaUxpc3QKICovCgp1bC5GQVFNaW5pTGlzdCBzcGFuIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgZm9udC1zaXplOiAxMHB4Owp9CgovKioKICogQHN1YnNlY3Rpb24gQ2F0ZWdvcnkgcGF0aAogKi8KLkZBUVBhdGhDYXRlZ29yeSB7CiAgICBwYWRkaW5nOiA0cHggOHB4IDRweDsKICAgIGNvbG9yOiAjNkE2QTZBOwogICAgYmFja2dyb3VuZDogI2U1ZTZlNjsKICAgIGJhY2tncm91bmQ6IC1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgICNmNGY1ZjUgMCUsICNlNWU2ZTYgMTAwJSk7CiAgICBiYWNrZ3JvdW5kOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBjb2xvci1zdG9wKDAlLCNmNGY1ZjUpLCBjb2xvci1zdG9wKDEwMCUsI2U1ZTZlNikpOwogICAgYmFja2dyb3VuZDogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAgI2Y0ZjVmNSAwJSwjZTVlNmU2IDEwMCUpOwogICAgYmFja2dyb3VuZDogLW8tbGluZWFyLWdyYWRpZW50KHRvcCwgICNmNGY1ZjUgMCUsI2U1ZTZlNiAxMDAlKTsKICAgIGJhY2tncm91bmQ6IC1tcy1saW5lYXItZ3JhZGllbnQodG9wLCAgI2Y0ZjVmNSAwJSwjZTVlNmU2IDEwMCUpOwogICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgICNmNGY1ZjUgMCUsI2U1ZTZlNiAxMDAlKTsKICAgIC1tb3otYm9yZGVyLWJvdHRvbS1jb2xvcnM6IG5vbmU7CiAgICAtbW96LWJvcmRlci1sZWZ0LWNvbG9yczogbm9uZTsKICAgIC1tb3otYm9yZGVyLXJpZ2h0LWNvbG9yczogbm9uZTsKICAgIC1tb3otYm9yZGVyLXRvcC1jb2xvcnM6IG5vbmU7CiAgICBib3JkZXItY29sb3I6ICNFOUU5RTkgI0U5RTlFOSAjREREREREOwogICAgYm9yZGVyLWltYWdlOiBub25lOwogICAgYm9yZGVyLXJhZGl1czogNXB4IDVweCA1cHggNXB4OwogICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsKICAgIGJvcmRlci13aWR0aDogMXB4OwogICAgYm94LXNoYWRvdzogMCAwIDJweCAjRUVFRUVFOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgbWFyZ2luLXRvcDogMTBweDsKICAgIG1hcmdpbi1ib3R0b206IDEwcHg7Cn0KCi5GQVFQYXRoQ2F0ZWdvcnkuRkFRWm9vbSB7CiAgICBtYXJnaW4tcmlnaHQ6IDVweDsKfQoKLkZBUVBhdGhDYXRlZ29yeSBoMyB7CiAgICBmb250LXdlaWdodDogYm9sZDsKfQoKaWZyYW1lLkZBUUZpZWxkIHsKICAgIHdpZHRoOiAxMDAlOwogICAgZnJhbWVib3JkZXI6IDA7Cn0KCn0KCgo=
LyoqCiAqIEBwcm9qZWN0ICAgICBPVFJTIChodHRwOi8vd3d3Lm90cnMub3JnKSAtIEFnZW50IEZyb250ZW5kCiAqIEBjb3B5cmlnaHQgICBPVFJTIEFHCiAqIEBsaWNlbnNlICAgICBBR1BMIChodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQpCiAqLwoKLyoqCiAqIEBwYWNrYWdlICAgICBTa2luICJEZWZhdWx0IgogKiBAc2VjdGlvbiAgICAgRkFRRGV0YWlscwogKi8KCkBtZWRpYSBzY3JlZW4scHJvamVjdGlvbix0dixoYW5kaGVsZCB7CgouQXJ0aWNsZUZBUUNvbnRlbnQgewogICAgcGFkZGluZzogMTFweCAxMnB4OwogICAgbGluZS1oZWlnaHQ6IDEuMzsKfQoKLlJhdGVCdXR0b24gewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBoZWlnaHQ6IDMwcHg7CiAgICB3aWR0aDogMjVweDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGZsb2F0OiBsZWZ0OwogICAgY29sb3I6ICMwMDAwMDA7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5SVEwgLlJhdGVCdXR0b24gewogICAgZmxvYXQ6IHJpZ2h0Owp9CgouUmF0ZUJ1dHRvbiBpIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgZm9udC1zaXplOiAxNnB4OwogICAgd2lkdGg6IDEwMCU7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBjb2xvcjogIzk5OTsKfQoKLlJhdGVCdXR0b24gaS5pY29uLXN0YXIgewogICAgZGlzcGxheTogbm9uZTsKfQoKLlJhdGVCdXR0b24uUmF0ZUNoZWNrZWQgaS5pY29uLXN0YXIgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBjb2xvcjogI0U5N0QzNDsKfQoKLlJhdGVCdXR0b24uUmF0ZUNoZWNrZWQgaS5pY29uLXN0YXItZW1wdHkgewogICAgZGlzcGxheTogbm9uZTsKfQoKLlJhdGVCdXR0b246aG92ZXIgaS5pY29uLXN0YXItZW1wdHkgewogICAgY29sb3I6ICMwMDA7Cn0KCi5SYXRlU3RhciB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGhlaWdodDogMTZweDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGZsb2F0OiBsZWZ0OwogICAgcGFkZGluZy1sZWZ0OiAxcHg7CiAgICBmb250LXNpemU6IDEwcHg7Cn0KCi5SVEwgLlJhdGVTdGFyIHsKICAgIGZsb2F0OiByaWdodDsKfQoKLlJhdGVTdGFyVGV4dCB7CiAgICBtYXJnaW4tbGVmdDogNnB4Owp9CgouUlRMIC5SYXRlU3RhclRleHQgewogICAgbWFyZ2luLWxlZnQ6IDBweDsKICAgIG1hcmdpbi1yaWdodDogNnB4Owp9CgouUmF0ZUxhYmVsQmVmb3JlIHsKICAgIGZsb2F0OiBsZWZ0OwogICAgcGFkZGluZy1yaWdodDogMTVweDsKICAgIG1hcmdpbi1sZWZ0OiAxMHB4OwogICAgY29sb3I6IEdyYXk7Cn0KCi5SVEwgLlJhdGVMYWJlbEJlZm9yZSB7CiAgICBmbG9hdDogcmlnaHQ7Cn0KCi5SYXRlTGFiZWxBZnRlciB7CiAgICBmbG9hdDogbGVmdDsKICAgIG1hcmdpbi1sZWZ0OiA1cHg7CiAgICBtYXJnaW4tcmlnaHQ6IDI1cHg7CiAgICBjb2xvcjogR3JheTsKfQoKLlJUTCAuUmF0ZUxhYmVsQWZ0ZXIgewogICAgZmxvYXQ6IGxlZnQ7CiAgICBtYXJnaW4tcmlnaHQ6IDVweDsKICAgIG1hcmdpbi1sZWZ0OiA2NXB4Owp9CgouUmF0aW5nTGFiZWwgewogICAgZmxvYXQ6IGxlZnQ7CiAgICBwYWRkaW5nLXJpZ2h0OiAycHg7Cn0KCi5SVEwgLlJhdGluZ0xhYmVsIHsKICAgIGZsb2F0OiByaWdodDsKICAgIHBhZGRpbmctbGVmdDogMnB4Cn0KCi5TcGFjaW5nVG9wIHsKICAgIG1hcmdpbi10b3A6IDEzcHg7Cn0KCi5TcGFjaW5nVG9wTGFyZ2UgewogICAgbWFyZ2luLXRvcDogMjZweDsKfQoKLlJUTCAuVm90aW5nQ29udGFpbmVyIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLlZvdGluZ1F1ZXN0aW9uIHsKICAgIG1hcmdpbi1sZWZ0OiAxMHB4OwogICAgbWFyZ2luLXJpZ2h0OjEwcHg7CiAgICBjb2xvcjogIzAwMDAwMDsKfQoKLlZvdGluZ0JveCB7CiAgICBtaW4td2lkdGg6IDIwcGM7CiAgICBtYXJnaW46IDAgMzBweCAyMXB4OwogICAgY29sb3I6ICM2QTZBNkE7CiAgICBiYWNrZ3JvdW5kOiAjRjBGMEYwOwogICAgYmFja2dyb3VuZDogLW1vei1saW5lYXItZ3JhZGllbnQodG9wLCAjRjlGOUY5LCAjRjBGMEYwKTsKICAgIGJhY2tncm91bmQ6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgbGVmdCBib3R0b20sIGZyb20oI0Y5RjlGOSksIHRvKCNGMEYwRjApKTsKICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI0Q2RDZENjsKICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNENkQ2RDY7CiAgICAtd2Via2l0LWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA1cHg7CiAgICAtd2Via2l0LWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDVweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21yaWdodDogNXB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbWxlZnQ6IDVweDsKICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA1cHg7CiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA1cHg7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0Q2RDZENjsKfQoKLlZvdGluZ0JveCA+ICNNZXNzZW5nZXIgewogICAgaGVpZ2h0OiBhdXRvOwogICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNFRUU7Cn0KCi5SU1NJY29uIHsKICAgIGZsb2F0OiByaWdodDsKICAgIGhlaWdodDogMTZweDsKICAgIHdpZHRoOiAyOHB4Owp9CgouRG93bmxvYWRBdHRhY2htZW50IGEsCi5LZXl3b3JkIGEgewogICAgY29sb3I6ICNGRjk5MjI7Cn0KCi5Eb3dubG9hZEF0dGFjaG1lbnQgYTpob3ZlciwKLiBLZXl3b3JkIGE6aG92ZXIgewogICAgY29sb3I6ICNGRjc3MjI7Cn0KCi5Wb3RpbmdBY3Rpb25Sb3cgewogICAgaGVpZ2h0OiAyM3B4Owp9Cn0K
LyoqCiAqIEBwcm9qZWN0ICAgICBPVFJTIChodHRwOi8vd3d3Lm90cnMub3JnKSAtIEFnZW50IEZyb250ZW5kCiAqIEBjb3B5cmlnaHQgICBPVFJTIEFHCiAqIEBsaWNlbnNlICAgICBBR1BMIChodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQpCiAqLwoKLyoqCiAqIEBwYWNrYWdlICAgICBTa2luICJEZWZhdWx0IgogKiBAc2VjdGlvbiAgICAgV2lkZ2V0cwogKi8KCkBtZWRpYSBzY3JlZW4scHJvamVjdGlvbix0dixoYW5kaGVsZCB7CgoKLyoqCiAqIEBzdWJzZWN0aW9uICBXaWRnZXRCb3gKICovCgouQ2FsbEZvckFjdGlvbiB7CiAgICBwYWRkaW5nOiAwOwogICAgYmFja2dyb3VuZDogI2ZmZmZmZjsKICAgIGJhY2tncm91bmQ6IC1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgICNlYmViZWIgMCUsICNmZmZmZmYgNTAlLCAjZmZmZmZmIDEwMCUpOwogICAgYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgY29sb3Itc3RvcCgwJSwjZWJlYmViKSwgY29sb3Itc3RvcCg1MCUsI2ZmZmZmZiksIGNvbG9yLXN0b3AoMTAwJSwjZmZmZmZmKSk7CiAgICBiYWNrZ3JvdW5kOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICAjZWJlYmViIDAlLCNmZmZmZmYgNTAlLCNmZmZmZmYgMTAwJSk7CiAgICBiYWNrZ3JvdW5kOiAtby1saW5lYXItZ3JhZGllbnQodG9wLCAgI2ViZWJlYiAwJSwjZmZmZmZmIDUwJSwjZmZmZmZmIDEwMCUpOwogICAgYmFja2dyb3VuZDogLW1zLWxpbmVhci1ncmFkaWVudCh0b3AsICAjZWJlYmViIDAlLCNmZmZmZmYgNTAlLCNmZmZmZmYgMTAwJSk7CiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAgI2ViZWJlYiAwJSwjZmZmZmZmIDUwJSwjZmZmZmZmIDEwMCUpOwogICAgYm9yZGVyOiAxcHggc29saWQgIzk5OTsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjODg4OwogICAgYm94LXNoYWRvdzogMCAxcHggMCAjRTZFNkU2OwogICAgLW1vei1ib3gtc2hhZG93OiAwIDFweCAwICNFNkU2RTY7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMXB4IDAgI0U2RTZFNjsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogM3B4OwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAzcHg7CiAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBjdXJzb3I6IHBvaW50ZXI7Cn0KCi8qKgogKiBAY3NzLWZvciAgICAgRmlyZWZveAogKiBAbm90ZSAgICAgICAgYnVnOiBidXR0b24gY29udGFpbmluZyBhbiBlbGVtZW50IGhhcyBhbiBoaWRkZW4gcGFkZGluZwogKi8KCi5DYWxsRm9yQWN0aW9uOjotbW96LWZvY3VzLWlubmVyIHsKICAgIGJvcmRlcjogMDsKICAgIHBhZGRpbmc6IDA7Cn0KCi5DYWxsRm9yQWN0aW9uOmhvdmVyIHsKICAgIGNvbG9yOiAjMDAwOwogICAgYm9yZGVyLWNvbG9yOiAjNjk2OTY5Owp9CgouQ2FsbEZvckFjdGlvbiBzcGFuIHsKICAgIGhlaWdodDogMTJweDsKICAgIHBhZGRpbmc6IDNweCA3cHggNnB4OwogICAgbGluZS1oZWlnaHQ6IDE0cHg7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgY29sb3I6ICMzMzM7CiAgICBmb250OiBib2xkIDExcHgvMTRweCAiSGVsdmV0aWNhIE5ldWUiLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmOwogICAgYm9yZGVyOiAxcHggc29saWQgI0ZGRjsKICAgIGJvcmRlci1ib3R0b206IG5vbmU7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDNweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogM3B4OwogICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgZGlzcGxheTogYmxvY2s7CiAgICB0ZXh0LXNoYWRvdzogMCAxcHggMCAjRkZGOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgYmFja2dyb3VuZDogI2RlZGVkZTsKICAgIGJhY2tncm91bmQ6IC1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgICNmZmZmZmYgMCUsICNkZWRlZGUgMTAwJSk7CiAgICBiYWNrZ3JvdW5kOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBjb2xvci1zdG9wKDAlLCNmZmZmZmYpLCBjb2xvci1zdG9wKDEwMCUsI2RlZGVkZSkpOwogICAgYmFja2dyb3VuZDogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAgI2ZmZmZmZiAwJSwjZGVkZWRlIDEwMCUpOwogICAgYmFja2dyb3VuZDogLW8tbGluZWFyLWdyYWRpZW50KHRvcCwgICNmZmZmZmYgMCUsI2RlZGVkZSAxMDAlKTsKICAgIGJhY2tncm91bmQ6IC1tcy1saW5lYXItZ3JhZGllbnQodG9wLCAgI2ZmZmZmZiAwJSwjZGVkZWRlIDEwMCUpOwogICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgICNmZmZmZmYgMCUsI2RlZGVkZSAxMDAlKTsKCn0KCi5DYWxsRm9yQWN0aW9uOmFjdGl2ZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjREREOwogICAgLW1vei1ib3gtc2hhZG93OiBub25lOwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lOwogICAgYm94LXNoYWRvdzogbm9uZTsKfQoKLkNhbGxGb3JBY3Rpb246YWN0aXZlIHNwYW4gewogICAgcGFkZGluZzogNHB4IDdweCA1cHg7CiAgICBib3JkZXItY29sb3I6ICNEREQ7CiAgICBib3JkZXItYm90dG9tOiBub25lOwogICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgI0RERDsKICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7CiAgICBiYWNrZ3JvdW5kOiAtbW96LWxpbmVhci1ncmFkaWVudCh0b3AsICAjZWJlYmViIDAlLCAjZmZmZmZmIDUwJSwgI2ZmZmZmZiAxMDAlKTsKICAgIGJhY2tncm91bmQ6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgbGVmdCBib3R0b20sIGNvbG9yLXN0b3AoMCUsI2ViZWJlYiksIGNvbG9yLXN0b3AoNTAlLCNmZmZmZmYpLCBjb2xvci1zdG9wKDEwMCUsI2ZmZmZmZikpOwogICAgYmFja2dyb3VuZDogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAgI2ViZWJlYiAwJSwjZmZmZmZmIDUwJSwjZmZmZmZmIDEwMCUpOwogICAgYmFja2dyb3VuZDogLW8tbGluZWFyLWdyYWRpZW50KHRvcCwgICNlYmViZWIgMCUsI2ZmZmZmZiA1MCUsI2ZmZmZmZiAxMDAlKTsKICAgIGJhY2tncm91bmQ6IC1tcy1saW5lYXItZ3JhZGllbnQodG9wLCAgI2ViZWJlYiAwJSwjZmZmZmZmIDUwJSwjZmZmZmZmIDEwMCUpOwogICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgICNlYmViZWIgMCUsI2ZmZmZmZiA1MCUsI2ZmZmZmZiAxMDAlKTsKCn0KCi5TZWFyY2hCb3ggewogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgouU2VhcmNoQm94IGlucHV0W3R5cGU9J3RleHQnXSB7CiAgICBoZWlnaHQ6IDE1cHg7CiAgICBtYXJnaW46IDA7CiAgICBwYWRkaW5nOiA0cHggNXB4OwogICAgZm9udDogbm9ybWFsIDEycHgvMTVweCAiSGVsdmV0aWNhIE5ldWUiLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmOwogICAgYm9yZGVyLWNvbG9yOiAjOTk5OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiAzcHggMCAwIDNweDsKICAgIC13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7CiAgICAtd2Via2l0LWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOwogICAgYm9yZGVyLXJhZGl1czogM3B4IDAgMCAzcHg7CiAgICBib3JkZXItcmlnaHQ6IG5vbmU7CiAgICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tOwogICAgd2lkdGg6IDEwcGM7Cn0KCi5SVEwgLlNlYXJjaEJveCBpbnB1dFt0eXBlPSd0ZXh0J117CiAgICBib3JkZXItbGVmdDogbm9uZTsKICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICM5OTk7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDAgM3B4IDNweCAwOwogICAgLXdlYmtpdC1ib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogM3B4OwogICAgLXdlYmtpdC1ib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogM3B4OwogICAgLXdlYmtpdC1ib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwogICAgLXdlYmtpdC1ib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwOwogICAgYm9yZGVyLXJhZGl1czogMCAzcHggM3B4IDA7CiAgICB3aWR0aDogMTBwYzsKfQoKLlNlYXJjaEJveCBpbnB1dDpmb2N1cyB7CiAgICBib3JkZXItY29sb3I6ICM2NjY7CiAgICBib3JkZXItcmlnaHQ6IG5vbmU7Cn0KLlJUTCAuU2VhcmNoQm94IGlucHV0OmZvY3VzIHsKICAgIGJvcmRlci1jb2xvcjogIzY2NjsKICAgIGJvcmRlci1sZWZ0OiBub25lOwp9CgouU2VhcmNoQm94IGJ1dHRvbiB7CiAgICBoZWlnaHQ6IDI1cHg7CiAgICBtYXJnaW46IDAgMCAwIC00cHg7CiAgICBwYWRkaW5nOiAzcHggM3B4IDRweDsKICAgIGNvbG9yOiAjMzMzOwogICAgZm9udDogYm9sZCAxMXB4LzE0cHggIkhlbHZldGljYSBOZXVlIixIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjsKICAgIGJhY2tncm91bmQ6ICNkZWRlZGU7CiAgICBiYWNrZ3JvdW5kOiAtbW96LWxpbmVhci1ncmFkaWVudCh0b3AsICAjZmZmZmZmIDAlLCAjZGVkZWRlIDEwMCUpOwogICAgYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgY29sb3Itc3RvcCgwJSwjZmZmZmZmKSwgY29sb3Itc3RvcCgxMDAlLCNkZWRlZGUpKTsKICAgIGJhY2tncm91bmQ6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgICNmZmZmZmYgMCUsI2RlZGVkZSAxMDAlKTsKICAgIGJhY2tncm91bmQ6IC1vLWxpbmVhci1ncmFkaWVudCh0b3AsICAjZmZmZmZmIDAlLCNkZWRlZGUgMTAwJSk7CiAgICBiYWNrZ3JvdW5kOiAtbXMtbGluZWFyLWdyYWRpZW50KHRvcCwgICNmZmZmZmYgMCUsI2RlZGVkZSAxMDAlKTsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICAjZmZmZmZmIDAlLCNkZWRlZGUgMTAwJSk7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjODg4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiAwIDNweCAzcHggMDsKICAgIC13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDNweDsKICAgIC13ZWJraXQtYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDNweDsKICAgIGJvcmRlci1yYWRpdXM6IDAgM3B4IDNweCAwOwogICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgI0ZGRjsKICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKfQoKLlJUTCAuU2VhcmNoQm94IGJ1dHRvbiB7CiAgICBoZWlnaHQ6IDI1cHg7CiAgICBtYXJnaW46IDAgLTRweCAwIDA7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDNweCAwIDAgM3B4OwogICAgLXdlYmtpdC1ib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAzcHg7CiAgICAtd2Via2l0LWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwogICAgLXdlYmtpdC1ib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsKICAgIC13ZWJraXQtYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogM3B4OwogICAgYm9yZGVyLXJhZGl1czogM3B4IDAgMCAzcHg7CiAgICB0ZXh0LXNoYWRvdzogMCAxcHggMCAjRkZGOwogICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOwogICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgIzg4ODsKfQoKLlNlYXJjaEJveCBidXR0b246aG92ZXIgewogICAgYm9yZGVyLWNvbG9yOiAjNjk2OTY5OwogICAgY3Vyc29yOiBwb2ludGVyOwp9CgouU2VhcmNoQm94IGJ1dHRvbjphY3RpdmUgewogICAgcGFkZGluZzogNHB4IDNweCAzcHg7CiAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmOwogICAgYmFja2dyb3VuZDogLW1vei1saW5lYXItZ3JhZGllbnQodG9wLCAgI2ViZWJlYiAwJSwgI2ZmZmZmZiA1MCUsICNmZmZmZmYgMTAwJSk7CiAgICBiYWNrZ3JvdW5kOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBjb2xvci1zdG9wKDAlLCNlYmViZWIpLCBjb2xvci1zdG9wKDUwJSwjZmZmZmZmKSwgY29sb3Itc3RvcCgxMDAlLCNmZmZmZmYpKTsKICAgIGJhY2tncm91bmQ6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgICNlYmViZWIgMCUsI2ZmZmZmZiA1MCUsI2ZmZmZmZiAxMDAlKTsKICAgIGJhY2tncm91bmQ6IC1vLWxpbmVhci1ncmFkaWVudCh0b3AsICAjZWJlYmViIDAlLCNmZmZmZmYgNTAlLCNmZmZmZmYgMTAwJSk7CiAgICBiYWNrZ3JvdW5kOiAtbXMtbGluZWFyLWdyYWRpZW50KHRvcCwgICNlYmViZWIgMCUsI2ZmZmZmZiA1MCUsI2ZmZmZmZiAxMDAlKTsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICAjZWJlYmViIDAlLCNmZmZmZmYgNTAlLCNmZmZmZmYgMTAwJSk7CiAgICBvdXRsaW5lOiBub25lOwp9Cgp9Cg==
LyoqCiAqIEBwcm9qZWN0ICAgICBGQVEgKGh0dHA6Ly93d3cub3Rycy5vcmcpIC0gQ3VzdG9tZXIgRnJvbnRlbmQKICogQGNvcHlyaWdodCAgIE9UUlMgQUcKICogQGxpY2Vuc2UgICAgIEFHUEwgKGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dCkKICovCgpAbWVkaWEgc2NyZWVuLHByb2plY3Rpb24sdHYsaGFuZGhlbGQgewoKLyoqCiAqIEBwYWNrYWdlICAgICBGQVEgLSBTa2luICJEZWZhdWx0IgogKiBAc2VjdGlvbiAgICAgRkFRWm9vbQogKi8KCi8qKgogKiBAc2VjdGlvbiAgICAgSGVhZGVyCiAqLwoKLkZBUUhlYWRlciB7CiAgICB3aWR0aDogODAlOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLkZBUUhlYWRlciBoMiB7CiAgICBtYXJnaW46IDNweCAwIDA7CiAgICBmb250LXNpemU6IDI0cHg7CiAgICBsaW5lLWhlaWdodDogMjRweDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGZsb2F0OiBsZWZ0Owp9Ci5SVEwgLkZBUUhlYWRlciBoMiB7CiAgICBwYWRkaW5nOiAwIDM2cHggMCAwOwogICAgZmxvYXQ6IHJpZ2h0Owp9CgouRkFRSGVhZGVyIC5GQVFIb29rIHsKICAgIGNvbG9yOiAjNjY2OwogICAgZm9udC1zaXplOiAxMnB4Owp9CgojRkFRT3B0aW9ucyB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICByaWdodDogMHB4OwogICAgdG9wOiA1cHg7CiAgICBvdmVyZmxvdzogaGlkZGVuOwp9CgojRkFRT3B0aW9ucyBsaSB7CiAgICBmbG9hdDogbGVmdDsKICAgIG1hcmdpbi1sZWZ0OiA1cHg7Cn0KCiNGQVFPcHRpb25zIC5QcmludCB7CiAgICB3aWR0aDogMTZweDsKICAgIGhlaWdodDogMTZweDsKICAgIG1hcmdpbjogMCAwIDAgMnB4OwogICAgbGluZS1oZWlnaHQ6IDE2cHg7CiAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1nL3ByaW50ZXIucG5nKSBuby1yZXBlYXQ7CiAgICB0ZXh0LWluZGVudDogLTk5OTlweDsKICAgIGRpc3BsYXk6IGJsb2NrOwp9CgouUlRMICNGQVFPcHRpb25zIC5QcmludCB7CiAgICBtYXJnaW46IC0ycHggNHB4IDAgMDsKfQoKbGkuS2V5d29yZHNDb250YWluZXIgewogICAgbWFyZ2luLXRvcDogNXB4OwogICAgbWFyZ2luLWJvdHRvbTogNXB4Owp9CgpkaXYuQXR0YWNobWVudHMgewogICAgbWFyZ2luLXRvcDogMTBweDsKICAgIG1hcmdpbi1ib3R0b206IDVweDsKfQoKLkF0dGFjaG1lbnRzIC5MYWJlbCB7CiAgICBiYWNrZ3JvdW5kOiB1cmwoIi4uL2ltZy9wYXBlci1jbGlwLnBuZyIpIG5vLXJlcGVhdCBzY3JvbGwgcmlnaHQgY2VudGVyIHRyYW5zcGFyZW50OwogICAgdGV4dC1hbGlnbjogbGVmdDsKICAgIHRleHQtaW5kZW50OiAtOTk5OXB4OwogICAgY29sb3I6ICNBQUFBQUE7CiAgICBmbG9hdDogbGVmdDsKICAgIG1hcmdpbjogMCAzcHg7CiAgICB3aWR0aDogNjVweDsKfQoKLlJUTCAuQXR0YWNobWVudHMgLkxhYmVsIHsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IGxlZnQ7CiAgICB0ZXh0LWluZGVudDogLTk5OTlweDsKICAgIHRleHQtYWxpZ246cmlnaHQ7CiAgICBmbG9hdDogcmlnaHQ7Cn0KCi5BdHRhY2htZW50cyBkaXYgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwp9CgouQXR0YWNobWVudHMgLkRvd25sb2FkQXR0YWNobWVudCB7CiAgICBtYXJnaW4tbGVmdDogMTBweDsKfQoKfSAvKiBlbmQgQG1lZGlhICov
IyAtLQojIEZBUS5wbSAtIGNvZGUgdG8gZXhjZWN1dGUgZHVyaW5nIHBhY2thZ2UgaW5zdGFsbGF0aW9uCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSB2YXI6OnBhY2thZ2VzZXR1cDo6RkFROwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6Q29uZmlnOwp1c2UgS2VybmVsOjpTeXN0ZW06OkNhY2hlOwp1c2UgS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZzsKdXNlIEtlcm5lbDo6U3lzdGVtOjpDU1Y7CnVzZSBLZXJuZWw6OlN5c3RlbTo6R3JvdXA7CnVzZSBLZXJuZWw6OlN5c3RlbTo6U3RhdHM7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VXNlcjsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYWxpZDsKdXNlIEtlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Owp1c2UgS2VybmVsOjpTeXN0ZW06OkZBUTsKCj1oZWFkMSBOQU1FCgpGQVEucG0gLSBjb2RlIHRvIGV4Y2VjdXRlIGR1cmluZyBwYWNrYWdlIGluc3RhbGxhdGlvbgoKPWhlYWQxIFNZTk9QU0lTCgpBbGwgZnVuY3Rpb25zCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPW92ZXIgNAoKPWN1dAoKPWl0ZW0gbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICB1c2UgS2VybmVsOjpDb25maWc7CiAgICB1c2UgS2VybmVsOjpTeXN0ZW06OkxvZzsKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6TWFpbjsKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6VGltZTsKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6REI7CiAgICB1c2UgS2VybmVsOjpTeXN0ZW06OlhNTDsKICAgIHVzZSB2YXI6OnBhY2thZ2VzZXR1cDo6RkFROwoKICAgIG15ICRDb25maWdPYmplY3QgPSBLZXJuZWw6OkNvbmZpZy0+bmV3KCk7CiAgICBteSAkTG9nT2JqZWN0ICAgID0gS2VybmVsOjpTeXN0ZW06OkxvZy0+bmV3KAogICAgICAgIENvbmZpZ09iamVjdCA9PiAkQ29uZmlnT2JqZWN0LAogICAgKTsKICAgIG15ICRNYWluT2JqZWN0ID0gS2VybmVsOjpTeXN0ZW06Ok1haW4tPm5ldygKICAgICAgICBDb25maWdPYmplY3QgPT4gJENvbmZpZ09iamVjdCwKICAgICAgICBMb2dPYmplY3QgICAgPT4gJExvZ09iamVjdCwKICAgICk7CiAgICBteSAkVGltZU9iamVjdCA9IEtlcm5lbDo6U3lzdGVtOjpUaW1lLT5uZXcoCiAgICAgICAgQ29uZmlnT2JqZWN0ID0+ICRDb25maWdPYmplY3QsCiAgICAgICAgTG9nT2JqZWN0ICAgID0+ICRMb2dPYmplY3QsCiAgICApOwogICAgbXkgJERCT2JqZWN0ID0gS2VybmVsOjpTeXN0ZW06OkRCLT5uZXcoCiAgICAgICAgQ29uZmlnT2JqZWN0ID0+ICRDb25maWdPYmplY3QsCiAgICAgICAgTG9nT2JqZWN0ICAgID0+ICRMb2dPYmplY3QsCiAgICAgICAgTWFpbk9iamVjdCAgID0+ICRNYWluT2JqZWN0LAogICAgKTsKICAgIG15ICRYTUxPYmplY3QgPSBLZXJuZWw6OlN5c3RlbTo6WE1MLT5uZXcoCiAgICAgICAgQ29uZmlnT2JqZWN0ID0+ICRDb25maWdPYmplY3QsCiAgICAgICAgTG9nT2JqZWN0ICAgID0+ICRMb2dPYmplY3QsCiAgICAgICAgREJPYmplY3QgICAgID0+ICREQk9iamVjdCwKICAgICAgICBNYWluT2JqZWN0ICAgPT4gJE1haW5PYmplY3QsCiAgICApOwogICAgbXkgJENvZGVPYmplY3QgPSB2YXI6OnBhY2thZ2VzZXR1cDo6RkFRLT5uZXcoCiAgICAgICAgQ29uZmlnT2JqZWN0ID0+ICRDb25maWdPYmplY3QsCiAgICAgICAgTG9nT2JqZWN0ICAgID0+ICRMb2dPYmplY3QsCiAgICAgICAgTWFpbk9iamVjdCAgID0+ICRNYWluT2JqZWN0LAogICAgICAgIFRpbWVPYmplY3QgICA9PiAkVGltZU9iamVjdCwKICAgICAgICBEQk9iamVjdCAgICAgPT4gJERCT2JqZWN0LAogICAgICAgIFhNTE9iamVjdCAgICA9PiAkWE1MT2JqZWN0LAogICAgKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBjaGVjayBuZWVkZWQgb2JqZWN0cwogICAgZm9yIG15ICRPYmplY3QgKAogICAgICAgIHF3KENvbmZpZ09iamVjdCBMb2dPYmplY3QgTWFpbk9iamVjdCBUaW1lT2JqZWN0IERCT2JqZWN0IFhNTE9iamVjdCBFbmNvZGVPYmplY3QpCiAgICAgICAgKQogICAgewogICAgICAgICRTZWxmLT57JE9iamVjdH0gPSAkUGFyYW17JE9iamVjdH0gfHwgZGllICJHb3Qgbm8gJE9iamVjdCEiOwogICAgfQoKICAgICMgY3JlYXRlIG5lZWRlZCBzeXNjb25maWcgb2JqZWN0CiAgICAkU2VsZi0+e1N5c0NvbmZpZ09iamVjdH0gPSBLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnLT5uZXcoICV7JFNlbGZ9ICk7CgogICAgIyByZWJ1aWxkIFpaWiogZmlsZXMKICAgICRTZWxmLT57U3lzQ29uZmlnT2JqZWN0fS0+V3JpdGVEZWZhdWx0KCk7CgogICAgIyBkZWZpbmUgdGhlIFpaWiBmaWxlcwogICAgbXkgQFpaWkZpbGVzID0gKAogICAgICAgICdaWlpBQXV0by5wbScsCiAgICAgICAgJ1paWkF1dG8ucG0nLAogICAgKTsKCiAgICAjIHJlbG9hZCB0aGUgWlpaIGZpbGVzIChtb2RfcGVybCB3b3JrYXJvdW5kKQogICAgZm9yIG15ICRaWlpGaWxlIChAWlpaRmlsZXMpIHsKCiAgICAgICAgUFJFRklYOgogICAgICAgIGZvciBteSAkUHJlZml4IChASU5DKSB7CiAgICAgICAgICAgIG15ICRGaWxlID0gJFByZWZpeCAuICcvS2VybmVsL0NvbmZpZy9GaWxlcy8nIC4gJFpaWkZpbGU7CiAgICAgICAgICAgIG5leHQgUFJFRklYIGlmICEtZiAkRmlsZTsKICAgICAgICAgICAgZG8gJEZpbGU7CiAgICAgICAgICAgIGxhc3QgUFJFRklYOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNyZWF0ZSBuZWVkZWQgb2JqZWN0cwogICAgJFNlbGYtPntDb25maWdPYmplY3R9ID0gS2VybmVsOjpDb25maWctPm5ldygpOwogICAgJFNlbGYtPntDU1ZPYmplY3R9ICAgID0gS2VybmVsOjpTeXN0ZW06OkNTVi0+bmV3KCAleyRTZWxmfSApOwogICAgJFNlbGYtPntHcm91cE9iamVjdH0gID0gS2VybmVsOjpTeXN0ZW06Okdyb3VwLT5uZXcoICV7JFNlbGZ9ICk7CiAgICAkU2VsZi0+e1VzZXJPYmplY3R9ICAgPSBLZXJuZWw6OlN5c3RlbTo6VXNlci0+bmV3KCAleyRTZWxmfSApOwogICAgJFNlbGYtPntWYWxpZE9iamVjdH0gID0gS2VybmVsOjpTeXN0ZW06OlZhbGlkLT5uZXcoICV7JFNlbGZ9ICk7CiAgICAkU2VsZi0+e0xpbmtPYmplY3R9ICAgPSBLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdC0+bmV3KCAleyRTZWxmfSApOwogICAgJFNlbGYtPntGQVFPYmplY3R9ICAgID0gS2VybmVsOjpTeXN0ZW06OkZBUS0+bmV3KCAleyRTZWxmfSApOwogICAgJFNlbGYtPntDYWNoZU9iamVjdH0gID0gS2VybmVsOjpTeXN0ZW06OkNhY2hlLT5uZXcoICV7JFNlbGZ9ICk7CiAgICAkU2VsZi0+e1N0YXRzT2JqZWN0fSAgPSBLZXJuZWw6OlN5c3RlbTo6U3RhdHMtPm5ldygKICAgICAgICAleyRTZWxmfSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgogICAgIyBkZWZpbmUgZmlsZSBwcmVmaXgKICAgICRTZWxmLT57RmlsZVByZWZpeH0gPSAnRkFRJzsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1pdGVtIENvZGVJbnN0YWxsKCkKCnJ1biB0aGUgY29kZSBpbnN0YWxsIHBhcnQKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVJbnN0YWxsKCk7Cgo9Y3V0CgpzdWIgQ29kZUluc3RhbGwgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGluc2VydCB0aGUgZmFxIHN0YXRlcwogICAgJFNlbGYtPl9JbnNlcnRGQVFTdGF0ZXMoKTsKCiAgICAjIGFkZCB0aGUgZ3JvdXAgZmFxCiAgICAkU2VsZi0+X0dyb3VwQWRkKAogICAgICAgIE5hbWUgICAgICAgID0+ICdmYXEnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICdmYXEgZGF0YWJhc2UgdXNlcnMnLAogICAgKTsKCiAgICAjIGFkZCB0aGUgZ3JvdXAgZmFxX2FkbWluCiAgICAkU2VsZi0+X0dyb3VwQWRkKAogICAgICAgIE5hbWUgICAgICAgID0+ICdmYXFfYWRtaW4nLAogICAgICAgIERlc2NyaXB0aW9uID0+ICdmYXEgYWRtaW4gdXNlcnMnLAogICAgKTsKCiAgICAjIGFkZCB0aGUgZ3JvdXAgZmFxX2FwcHJvdmFsCiAgICAkU2VsZi0+X0dyb3VwQWRkKAogICAgICAgIE5hbWUgICAgICAgID0+ICdmYXFfYXBwcm92YWwnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICdmYXEgYXBwcm92YWwgdXNlcnMnLAogICAgKTsKCiAgICAjIGFkZCB0aGUgZmFxIGdyb3VwcyB0byB0aGUgY2F0ZWdvcnkgJ01pc2MnCiAgICAkU2VsZi0+X0NhdGVnb3J5R3JvdXBTZXQoCiAgICAgICAgQ2F0ZWdvcnkgPT4gJ01pc2MnLAogICAgICAgIEdyb3VwcyA9PiBbICdmYXEnLCAnZmFxX2FkbWluJywgJ2ZhcV9hcHByb3ZhbCcgXSwKICAgICk7CgogICAgIyBjcmVhdGUgYWRpdGlvbmFsIEZBUSBsYW5ndWFnZXMKICAgICRTZWxmLT5fQ3JlYXRlQWRpdGlvbmFsRkFRTGFuZ3VhZ2VzKCk7CgogICAgIyBpbnN0YWxsIHN0YXRzCiAgICAkU2VsZi0+e1N0YXRzT2JqZWN0fS0+U3RhdHNJbnN0YWxsKAogICAgICAgIEZpbGVQcmVmaXggPT4gJFNlbGYtPntGaWxlUHJlZml4fSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIENvZGVSZWluc3RhbGwoKQoKcnVuIHRoZSBjb2RlIHJlaW5zdGFsbCBwYXJ0CgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5Db2RlUmVpbnN0YWxsKCk7Cgo9Y3V0CgpzdWIgQ29kZVJlaW5zdGFsbCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgaW5zZXJ0IHRoZSBmYXEgc3RhdGVzCiAgICAkU2VsZi0+X0luc2VydEZBUVN0YXRlcygpOwoKICAgICMgYWRkIHRoZSBncm91cCBmYXEKICAgICRTZWxmLT5fR3JvdXBBZGQoCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2ZhcScsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gJ2ZhcSBkYXRhYmFzZSB1c2VycycsCiAgICApOwoKICAgICMgYWRkIHRoZSBncm91cCBmYXFfYWRtaW4KICAgICRTZWxmLT5fR3JvdXBBZGQoCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2ZhcV9hZG1pbicsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gJ2ZhcSBhZG1pbiB1c2VycycsCiAgICApOwoKICAgICMgYWRkIHRoZSBncm91cCBmYXFfYXBwcm92YWwKICAgICRTZWxmLT5fR3JvdXBBZGQoCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2ZhcV9hcHByb3ZhbCcsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gJ2ZhcSBhcHByb3ZhbCB1c2VycycsCiAgICApOwoKICAgICMgaW5zdGFsbCBzdGF0cwogICAgJFNlbGYtPntTdGF0c09iamVjdH0tPlN0YXRzSW5zdGFsbCgKICAgICAgICBGaWxlUHJlZml4ID0+ICRTZWxmLT57RmlsZVByZWZpeH0sCiAgICApOwoKICAgICMgY3JlYXRlIGFkaXRpb25hbCBGQVEgbGFuZ3VhZ2VzCiAgICAkU2VsZi0+X0NyZWF0ZUFkaXRpb25hbEZBUUxhbmd1YWdlcygpOwoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBDb2RlVXBncmFkZSgpCgpydW4gdGhlIGNvZGUgdXBncmFkZSBwYXJ0CgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5Db2RlVXBncmFkZSgpOwoKPWN1dAoKc3ViIENvZGVVcGdyYWRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBpbnN0YWxsIHN0YXRzCiAgICAkU2VsZi0+e1N0YXRzT2JqZWN0fS0+U3RhdHNJbnN0YWxsKAogICAgICAgIEZpbGVQcmVmaXggPT4gJFNlbGYtPntGaWxlUHJlZml4fSwKICAgICk7CgogICAgIyBjcmVhdGUgYWRpdGlvbmFsIEZBUSBsYW5ndWFnZXMKICAgICRTZWxmLT5fQ3JlYXRlQWRpdGlvbmFsRkFRTGFuZ3VhZ2VzKCk7CgogICAgIyBkZWxldGUgdGhlIEZBUSBjYWNoZSAodG8gYXZvaWQgb2xkIGRhdGEgZnJvbSBwcmV2aW91cyBGQVEgbW9kdWxlcykKICAgICRTZWxmLT57Q2FjaGVPYmplY3R9LT5DbGVhblVwKAogICAgICAgIFR5cGUgPT4gJ0ZBUScsCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBDb2RlVXBncmFkZVNwZWNpYWwoKQoKcnVuIHNwZWNpYWwgY29kZSB1cGdyYWRlIHBhcnQKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVVcGdyYWRlU3BlY2lhbCgpOwoKPWN1dAoKc3ViIENvZGVVcGdyYWRlU3BlY2lhbCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY29udmVydCBcbiB0byA8YnI+IGZvciBleGlzdGluZyBhcnRpY2xlcwogICAgJFNlbGYtPl9Db252ZXJ0TmV3bGluZXMoKTsKCiAgICAjIHN0YXJ0IG5vcm1hbCBjb2RlIHVwZ3JhZGUKICAgICRTZWxmLT5Db2RlVXBncmFkZSgpOwoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBDb2RlVW5pbnN0YWxsKCkKCnJ1biB0aGUgY29kZSB1bmluc3RhbGwgcGFydAoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZVVuaW5zdGFsbCgpOwoKPWN1dAoKc3ViIENvZGVVbmluc3RhbGwgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGRlYWN0aXZhdGUgdGhlIGdyb3VwIGZhcQogICAgJFNlbGYtPl9Hcm91cERlYWN0aXZhdGUoCiAgICAgICAgTmFtZSA9PiAnZmFxJywKICAgICk7CgogICAgIyBkZWFjdGl2YXRlIHRoZSBncm91cCBmYXFfYWRtaW4KICAgICRTZWxmLT5fR3JvdXBEZWFjdGl2YXRlKAogICAgICAgIE5hbWUgPT4gJ2ZhcV9hZG1pbicsCiAgICApOwoKICAgICMgZGVhY3RpdmF0ZSB0aGUgZ3JvdXAgZmFxX2FwcHJvdmFsCiAgICAkU2VsZi0+X0dyb3VwRGVhY3RpdmF0ZSgKICAgICAgICBOYW1lID0+ICdmYXFfYXBwcm92YWwnLAogICAgKTsKCiAgICAjIHVuaW5zdGFsbCBzdGF0cwogICAgJFNlbGYtPntTdGF0c09iamVjdH0tPlN0YXRzVW5pbnN0YWxsKAogICAgICAgIEZpbGVQcmVmaXggPT4gJFNlbGYtPntGaWxlUHJlZml4fSwKICAgICk7CgogICAgIyBkZWxldGUgYWxsIGxpbmtzIHdpdGggRkFRIGFydGljbGVzCiAgICAkU2VsZi0+X0xpbmtEZWxldGUoKTsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gX0luc2VydEZBUVN0YXRlcygpCgppbnNlcnRzIG5lZWRlZCBGQVEgc3RhdGVzIGludG8gdGFibGUKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPl9JbnNlcnRGQVFTdGF0ZXMoKTsKCj1jdXQKCnN1YiBfSW5zZXJ0RkFRU3RhdGVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBkZWZpbmUgZmFxX3N0YXRlX3R5cGVzID0+IGZhcV9zdGF0ZXMKICAgIG15ICVTdGF0ZSA9ICgKICAgICAgICAnaW50ZXJuYWwnID0+ICdpbnRlcm5hbCAoYWdlbnQpJywKICAgICAgICAnZXh0ZXJuYWwnID0+ICdleHRlcm5hbCAoY3VzdG9tZXIpJywKICAgICAgICAncHVibGljJyAgID0+ICdwdWJsaWMgKGFsbCknLAogICAgKTsKCiAgICBmb3IgbXkgJFR5cGUgKCBzb3J0IGtleXMgJVN0YXRlICkgewoKICAgICAgICAjIGdldCB0aGUgc3RhdGUgdHlwZQogICAgICAgIG15ICRTdGF0ZVR5cGVSZWYgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUdldCgKICAgICAgICAgICAgTmFtZSAgID0+ICRUeXBlLAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGFkZCB0aGUgc3RhdGUKICAgICAgICAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlQWRkKAogICAgICAgICAgICBOYW1lICAgPT4gJFN0YXRleyRUeXBlfSwKICAgICAgICAgICAgVHlwZUlEID0+ICRTdGF0ZVR5cGVSZWYtPntTdGF0ZUlEfSwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gX0NvbnZlcnROZXdsaW5lcygpCgpjb3ZlcnRzIGFsbCBcbiBpbnRvIDxicj4gZm9yIEZpZWxkcyAxLTYgaW4gYWxsIGV4aXN0aW5nIEZBUSBhcnRpY2xlcwoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+X0NvbnZlcnROZXdsaW5lcygpOwoKPWN1dAoKc3ViIF9Db252ZXJ0TmV3bGluZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIG9ubHkgY29udmVydCBcbiB0byA8YnI+IGlmIEhUTUwgdmlldyBpcyBlbmFibGVkCiAgICByZXR1cm4gaWYgISRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6Okl0ZW06OkhUTUwnKTsKCiAgICAjIGdldCBhbGwgRkFRIElEcwogICAgbXkgQEZBUUlEczsKICAgICRTZWxmLT57REJPYmplY3R9LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAiU0VMRUNUIGlkIEZST00gZmFxX2l0ZW0iLAogICAgKTsKICAgIHdoaWxlICggbXkgQFJvdyA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgcHVzaCggQEZBUUlEcywgJFJvd1swXSApOwogICAgfQoKICAgIElEOgogICAgZm9yIG15ICRJdGVtSUQgKEBGQVFJRHMpIHsKCiAgICAgICAgIyBnZXQgRkFRIGRhdGEKICAgICAgICBteSAlRkFRID0gJFNlbGYtPntGQVFPYmplY3R9LT5GQVFHZXQoCiAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgSXRlbUZpZWxkcyA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgRkFRIGFydGljbGUgZmllbGRzIDEtNgogICAgICAgIG15ICRGb3VuZE5ld2xpbmU7CiAgICAgICAgS0VZOgogICAgICAgIGZvciBteSAkS2V5IChxdyAoRmllbGQxIEZpZWxkMiBGaWVsZDMgRmllbGQ0IEZpZWxkNSBGaWVsZDYpKSB7CiAgICAgICAgICAgIG5leHQgS0VZIGlmICEkRkFReyRLZXl9OwoKICAgICAgICAgICAgIyByZXBsYWNlIFxuIHdpdGggPGJyPgogICAgICAgICAgICAkRkFReyRLZXl9ID1+IHMvXG4vPGJyXC8+XG4vZzsKCiAgICAgICAgICAgICRGb3VuZE5ld2xpbmUgPSAxOwogICAgICAgIH0KICAgICAgICBuZXh0IElEIGlmICEkRm91bmROZXdsaW5lOwoKICAgICAgICAjIHVwZGF0ZSBGQVEgZGF0YQogICAgICAgICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRVXBkYXRlKAogICAgICAgICAgICAlRkFRLAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBfR3JvdXBBZGQoKQoKYWRkIGEgZ3JvdXAKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPl9Hcm91cEFkZCgKICAgICAgICBOYW1lICAgICAgICA9PiAndGhlLWdyb3VwLW5hbWUnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICdUaGUgZ3JvdXAgZGVzY3JpcHRpb24uJywKICAgICk7Cgo9Y3V0CgpzdWIgX0dyb3VwQWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KE5hbWUgRGVzY3JpcHRpb24pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IHZhbGlkIGxpc3QKICAgIG15ICVWYWxpZExpc3QgPSAkU2VsZi0+e1ZhbGlkT2JqZWN0fS0+VmFsaWRMaXN0KAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKICAgIG15ICVWYWxpZExpc3RSZXZlcnNlID0gcmV2ZXJzZSAlVmFsaWRMaXN0OwoKICAgICMgZ2V0IGxpc3Qgb2YgYWxsIGdyb3VwcwogICAgbXkgJUdyb3VwTGlzdCA9ICRTZWxmLT57R3JvdXBPYmplY3R9LT5Hcm91cExpc3QoKTsKCiAgICAjIHJldmVyc2UgdGhlIGdyb3VwIGxpc3QgZm9yIGVhc2llciBsb29rdXAKICAgIG15ICVHcm91cExpc3RSZXZlcnNlID0gcmV2ZXJzZSAlR3JvdXBMaXN0OwoKICAgICMgY2hlY2sgaWYgZ3JvdXAgYWxyZWFkeSBleGlzdHMKICAgIG15ICRHcm91cElEID0gJEdyb3VwTGlzdFJldmVyc2V7ICRQYXJhbXtOYW1lfSB9OwoKICAgICMgcmVhY3RpdmF0ZSB0aGUgZ3JvdXAKICAgIGlmICgkR3JvdXBJRCkgewoKICAgICAgICAjIGdldCBjdXJyZW50IGdyb3VwIGRhdGEKICAgICAgICBteSAlR3JvdXBEYXRhID0gJFNlbGYtPntHcm91cE9iamVjdH0tPkdyb3VwR2V0KAogICAgICAgICAgICBJRCAgICAgPT4gJEdyb3VwSUQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgcmVhY3RpdmF0ZSBncm91cAogICAgICAgICRTZWxmLT57R3JvdXBPYmplY3R9LT5Hcm91cFVwZGF0ZSgKICAgICAgICAgICAgJUdyb3VwRGF0YSwKICAgICAgICAgICAgVmFsaWRJRCA9PiAkVmFsaWRMaXN0UmV2ZXJzZXt2YWxpZH0sCiAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICAjIGFkZCB0aGUgZ3JvdXAKICAgIGVsc2UgewogICAgICAgIHJldHVybiBpZiAhJFNlbGYtPntHcm91cE9iamVjdH0tPkdyb3VwQWRkKAogICAgICAgICAgICBOYW1lICAgID0+ICRQYXJhbXtOYW1lfSwKICAgICAgICAgICAgQ29tbWVudCA9PiAkUGFyYW17RGVzY3JpcHRpb259LAogICAgICAgICAgICBWYWxpZElEID0+ICRWYWxpZExpc3RSZXZlcnNle3ZhbGlkfSwKICAgICAgICAgICAgVXNlcklEICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgIyBsb29rdXAgdGhlIG5ldyBncm91cCBpZAogICAgbXkgJE5ld0dyb3VwSUQgPSAkU2VsZi0+e0dyb3VwT2JqZWN0fS0+R3JvdXBMb29rdXAoCiAgICAgICAgR3JvdXAgID0+ICRQYXJhbXtOYW1lfSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgogICAgIyBhZGQgdXNlciByb290IHRvIHRoZSBncm91cAogICAgJFNlbGYtPntHcm91cE9iamVjdH0tPkdyb3VwTWVtYmVyQWRkKAogICAgICAgIEdJRCAgICAgICAgPT4gJE5ld0dyb3VwSUQsCiAgICAgICAgVUlEICAgICAgICA9PiAxLAogICAgICAgIFBlcm1pc3Npb24gPT4gewogICAgICAgICAgICBybyAgICAgICAgPT4gMSwKICAgICAgICAgICAgbW92ZV9pbnRvID0+IDEsCiAgICAgICAgICAgIGNyZWF0ZSAgICA9PiAxLAogICAgICAgICAgICBvd25lciAgICAgPT4gMSwKICAgICAgICAgICAgcHJpb3JpdHkgID0+IDEsCiAgICAgICAgICAgIHJ3ICAgICAgICA9PiAxLAogICAgICAgIH0sCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBfR3JvdXBEZWFjdGl2YXRlKCkKCmRlYWN0aXZhdGUgYSBncm91cAoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+X0dyb3VwRGVhY3RpdmF0ZSgKICAgICAgICBOYW1lID0+ICd0aGUtZ3JvdXAtbmFtZScsCiAgICApOwoKPWN1dAoKc3ViIF9Hcm91cERlYWN0aXZhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte05hbWV9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBOYW1lIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBsb29rdXAgZ3JvdXAgaWQKICAgIG15ICRHcm91cElEID0gJFNlbGYtPntHcm91cE9iamVjdH0tPkdyb3VwTG9va3VwKAogICAgICAgIEdyb3VwID0+ICRQYXJhbXtOYW1lfSwKICAgICk7CgogICAgcmV0dXJuIGlmICEkR3JvdXBJRDsKCiAgICAjIGdldCB2YWxpZCBsaXN0CiAgICBteSAlVmFsaWRMaXN0ID0gJFNlbGYtPntWYWxpZE9iamVjdH0tPlZhbGlkTGlzdCgKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CiAgICBteSAlVmFsaWRMaXN0UmV2ZXJzZSA9IHJldmVyc2UgJVZhbGlkTGlzdDsKCiAgICAjIGdldCBjdXJyZW50IGdyb3VwIGRhdGEKICAgIG15ICVHcm91cERhdGEgPSAkU2VsZi0+e0dyb3VwT2JqZWN0fS0+R3JvdXBHZXQoCiAgICAgICAgSUQgICAgID0+ICRHcm91cElELAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKCiAgICAjIGRlYWN0aXZhdGUgZ3JvdXAKICAgICRTZWxmLT57R3JvdXBPYmplY3R9LT5Hcm91cFVwZGF0ZSgKICAgICAgICAlR3JvdXBEYXRhLAogICAgICAgIFZhbGlkSUQgPT4gJFZhbGlkTGlzdFJldmVyc2V7aW52YWxpZH0sCiAgICAgICAgVXNlcklEICA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gX0xpbmtEZWxldGUoKQoKZGVsZXRlIGFsbCBleGlzdGluZyBsaW5rcyB0byBmYXEgYXJ0aWNsZXMKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPl9MaW5rRGVsZXRlKCk7Cgo9Y3V0CgpzdWIgX0xpbmtEZWxldGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBhbGwgZmFxIGFydGljbGUgaWRzCiAgICBteSBARkFRSURzID0gKCk7CiAgICAkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCBpZCBGUk9NIGZhcV9pdGVtJwogICAgKTsKICAgIHdoaWxlICggbXkgQFJvdyA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgcHVzaCBARkFRSURzLCAkUm93WzBdOwogICAgfQogICAgcmV0dXJuIGlmICFARkFRSURzOwoKICAgICMgZGVsZXRlIHRoZSBmYXEgYXJ0aWNsZSBsaW5rcwogICAgZm9yIG15ICRGQVFJRCAoQEZBUUlEcykgewogICAgICAgICRTZWxmLT57TGlua09iamVjdH0tPkxpbmtEZWxldGVBbGwoCiAgICAgICAgICAgIE9iamVjdCA9PiAnRkFRJywKICAgICAgICAgICAgS2V5ICAgID0+ICRGQVFJRCwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gX0NyZWF0ZUFkaXRpb25hbEZBUUxhbmd1YWdlcygpCgpjcmVhdGVzIGFkaXRpb25hbCBGQVEgbGFuZ3VhZ2VzIGZvciBzeXN0ZW0gZGVmYXVsdCBsYW5ndWFnZSBhbmQgdXNlciBsYW5ndWFnZQoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+X0NyZWF0ZUFkaXRpb25hbEZBUUxhbmd1YWdlcygpOwoKPWN1dAoKc3ViIF9DcmVhdGVBZGl0aW9uYWxGQVFMYW5ndWFnZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBzeXN0ZW0gZGVmYXV0IGxhbmd1YWdlCiAgICBteSAkTGFuZ3VhZ2UgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRGVmYXVsdExhbmd1YWdlJyk7CiAgICBpZiAoJExhbmd1YWdlKSB7CgogICAgICAgICMgZ2V0IGN1cnJlbnQgRkFRIGxhbmd1YWdlcwogICAgICAgIG15ICVDdXJyZW50TGFuZ3VhZ2VzID0gJFNlbGYtPntGQVFPYmplY3R9LT5MYW5ndWFnZUxpc3QoCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgdXNlIHJldmVyc2UgaGFzaCBmb3IgZWFzeSBsb29rdXAKICAgICAgICBteSAlUmV2ZXJzZUxhbmd1YWdlcyA9IHJldmVyc2UgJUN1cnJlbnRMYW5ndWFnZXM7CgogICAgICAgICMgY2hlY2sgaWYgbGFuZ3VhZ2UgaXMgYWxyZWFkeSBkZWZpbmVkCiAgICAgICAgaWYgKCAhJFJldmVyc2VMYW5ndWFnZXN7JExhbmd1YWdlfSApIHsKCiAgICAgICAgICAgICMgYWRkIGxhbmd1YWdlCiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJFNlbGYtPntGQVFPYmplY3R9LT5MYW5ndWFnZUFkZCgKICAgICAgICAgICAgICAgIE5hbWUgICA9PiAkTGFuZ3VhZ2UsCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gX0NhdGVnb3J5R3JvdXBTZXQoKQoKQWRkcyB0aGUgZ2l2ZW4gZ3JvdXAgcGVybWlzc2lvbnMgdG8gdGhlIGdpdmVuIGNhdGVnb3J5LgoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+X0NhdGVnb3J5R3JvdXBTZXQoCiAgICAgICAgQ2F0ZWdvcnkgPT4gJ01pc2MnLAogICAgICAgIEdyb3VwcyAgID0+IFsgJ2ZhcScsICdmYXEtYWRtaW4nLCAnZmFxX2FwcHJvdmFsJyBdLAogICAgKTsKCj1jdXQKCnN1YiBfQ2F0ZWdvcnlHcm91cFNldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDYXRlZ29yeSBHcm91cHMpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoIHJlZiAkUGFyYW17R3JvdXBzfSBuZSAnQVJSQVknICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiR3JvdXBzIG11c3QgYmUgYW4gYXJyYXkgcmVmZXJlbmNlISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgYWxsIGNhdGVnb3JpZXMgYW5kIHRoZWlyIGlkcwogICAgbXkgJENhdGVnb3J5VHJlZSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Q2F0ZWdvcnlUcmVlTGlzdCgKICAgICAgICBWYWxpZCAgPT4gMSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgogICAgIyBjcmVhdGUgbG9va3VwIGhhc2ggZm9yIHRoZSBjYXRvcnkgaWQKICAgIG15ICVGQVEySUQgPSByZXZlcnNlICV7JENhdGVnb3J5VHJlZX07CgogICAgIyBsb29rdXAgdGhlIGNhdGVnb3J5IGlkCiAgICBteSAkQ2F0ZWdvcnlJRCA9ICRGQVEySUR7ICRQYXJhbXtDYXRlZ29yeX0gfTsKCiAgICAjIGxvb2t1cCB0aGUgZ3JvdXAgaWRzCiAgICBteSBAR3JvdXBJRHM7CiAgICBmb3IgbXkgJEdyb3VwICggQHsgJFBhcmFte0dyb3Vwc30gfSApIHsKICAgICAgICBteSAkR3JvdXBJRCA9ICRTZWxmLT57R3JvdXBPYmplY3R9LT5Hcm91cExvb2t1cCgKICAgICAgICAgICAgR3JvdXAgPT4gJEdyb3VwLAogICAgICAgICk7CiAgICAgICAgcHVzaCBAR3JvdXBJRHMsICRHcm91cElEOwogICAgfQoKICAgICMgc2V0IGNhdGVnb3J5IGdyb3VwCiAgICAkU2VsZi0+e0ZBUU9iamVjdH0tPlNldENhdGVnb3J5R3JvdXAoCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICBHcm91cElEcyAgID0+IFxAR3JvdXBJRHMsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKMTsKCj1iYWNrCgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChMPGh0dHA6Ly9vdHJzLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIEw8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0Pi4KCj1jdXQK
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KCjxvdHJzX3N0YXRzPgo8Q2FjaGU+MDwvQ2FjaGU+CjxEZXNjcmlwdGlvbj5TaG93cyBhbiBvdmVydmlldyBvZiBGQVEgYXJ0aWNsZXMgaW4gYSBkZWZpbmVkIHRpbWUgcGVyaW9kIHNvcnRlZCBieSBhY2Nlc3MgbnVtYmVycy48L0Rlc2NyaXB0aW9uPgo8Rm9ybWF0PkNTVjwvRm9ybWF0Pgo8Rm9ybWF0PlByaW50PC9Gb3JtYXQ+CjxHcmFwaFNpemU+PC9HcmFwaFNpemU+CjxPYmplY3Q+PC9PYmplY3Q+CjxPYmplY3RNb2R1bGU+S2VybmVsOjpTeXN0ZW06OlN0YXRzOjpTdGF0aWM6OkZBUUFjY2VzczwvT2JqZWN0TW9kdWxlPgo8UGVybWlzc2lvbj5zdGF0czwvUGVybWlzc2lvbj4KPFN0YXRUeXBlPnN0YXRpYzwvU3RhdFR5cGU+CjxTdW1Db2w+MDwvU3VtQ29sPgo8U3VtUm93PjA8L1N1bVJvdz4KPFRpdGxlPkZBUSBhY2Nlc3Mgb3ZlcnZpZXc8L1RpdGxlPgo8VmFsaWQ+MTwvVmFsaWQ+Cjwvb3Ryc19zdGF0cz4K
IyAtLQojIEtlcm5lbC9HZW5lcmljSW50ZXJmYWNlL09wZXJhdGlvbi9GQVEvUHVibGljQ2F0ZWdvcnlMaXN0LnBtIC0gR2VuZXJpY0ludGVyZmFjZSBGQVEgUHVibGljQ2F0ZWdvcnlMaXN0IG9wZXJhdGlvbiBiYWNrZW5kCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6RkFROjpQdWJsaWNDYXRlZ29yeUxpc3Q7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OkZBUTsKdXNlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb21tb247CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyhJc0FycmF5UmVmV2l0aERhdGEgSXNIYXNoUmVmV2l0aERhdGEgSXNTdHJpbmdXaXRoRGF0YSk7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkZBUTo6UHVibGljQ2F0ZWdvcnlMaXN0IC0gR2VuZXJpY0ludGVyZmFjZSBGQVEgUHVibGljQ2F0ZWdvcnlMaXN0IE9wZXJhdGlvbiBiYWNrZW5kCgo9aGVhZDEgU1lOT1BTSVMKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9b3ZlciA0Cgo9Y3V0Cgo9aXRlbSBuZXcoKQoKdXN1YWxseSwgeW91IHdhbnQgdG8gY3JlYXRlIGFuIGluc3RhbmNlIG9mIHRoaXMKYnkgdXNpbmcgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb24tPm5ldygpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBjaGVjayBuZWVkZWQgb2JqZWN0cwogICAgZm9yIG15ICROZWVkZWQgKAogICAgICAgIHF3KERlYnVnZ2VyT2JqZWN0IENvbmZpZ09iamVjdCBNYWluT2JqZWN0IExvZ09iamVjdCBUaW1lT2JqZWN0IERCT2JqZWN0IEVuY29kZU9iamVjdCBXZWJzZXJ2aWNlSUQpCiAgICAgICAgKQogICAgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJHb3Qgbm8gJE5lZWRlZCEiCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+eyROZWVkZWR9ID0gJFBhcmFteyROZWVkZWR9OwogICAgfQoKICAgICMgY3JlYXRlIGFkZGl0aW9uYWwgb2JqZWN0cwogICAgJFNlbGYtPntGQVFPYmplY3R9ICAgID0gS2VybmVsOjpTeXN0ZW06OkZBUS0+bmV3KCVQYXJhbSk7CiAgICAkU2VsZi0+e0NvbW1vbk9iamVjdH0gPSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29tbW9uLT5uZXcoICV7JFNlbGZ9ICk7CgogICAgIyBzZXQgVXNlcklEIHRvIHJvb3QgYmVjYXVzZSBpbiBwdWJsaWMgaW50ZXJmYWNlIHRoZXJlIGlzIG5vIHVzZXIKICAgICRTZWxmLT57VXNlcklEfSA9IDE7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aXRlbSBSdW4oKQoKcGVyZm9ybSBQdWJsaWNDYXRlZ29yeUxpc3QgT3BlcmF0aW9uLiBUaGlzIHdpbGwgcmV0dXJuIHRoZSBjdXJyZW50IEZBUSBDYXRlZ29yaWVzLgoKICAgIG15ICRSZXN1bHQgPSAkT3BlcmF0aW9uT2JqZWN0LT5SdW4oCiAgICAgICAgRGF0YSA9PiB7fSwKICAgICk7CgogICAgJFJlc3VsdCA9IHsKICAgICAgICBTdWNjZXNzICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgMCBvciAxCiAgICAgICAgRXJyb3JNZXNzYWdlID0+ICcnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEluIGNhc2Ugb2YgYW4gZXJyb3IKICAgICAgICBEYXRhICAgICAgICAgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcmVzdWx0IGRhdGEgcGF5bG9hZCBhZnRlciBPcGVyYXRpb24KICAgICAgICAgICAgQ2F0ZWdvcnkgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIElEID0+IDEsCiAgICAgICAgICAgICAgICAgICAgTmFtZT4gJ01pc2MnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBJRCA9PiAyLAogICAgICAgICAgICAgICAgICAgIE5hbWU+ICdPbmVNb3JlQ2F0ZWdvcnknLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICMgLi4uCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH07Cgo9Y3V0CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgYWxsIGNhdGVnb3JpZXMgd2l0aCB0aGVpciBsb25nIG5hbWVzCiAgICBteSAkQ2F0ZWdvcnlUcmVlID0gJFNlbGYtPntGQVFPYmplY3R9LT5HZXRQdWJsaWNDYXRlZ29yaWVzTG9uZ05hbWVzKAogICAgICAgIFZhbGlkICA9PiAxLAogICAgICAgIFR5cGUgICA9PiAncncnLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRDYXRlZ29yeVRyZWUpICkgewoKICAgICAgICBteSAkRXJyb3JNZXNzYWdlID0gJ0NvdWxkIG5vdCBnZXQgY2F0ZWdvcnkgZGF0YScKICAgICAgICAgICAgLiAnIGluIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpGQVE6OlB1YmxpY0NhdGVnb3J5TGlzdDo6UnVuKCknOwoKICAgICAgICByZXR1cm4gJFNlbGYtPntDb21tb25PYmplY3R9LT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdQdWJsaWNDYXRlZ29yeUxpc3QuTm90Q2F0ZWdvcnlEYXRhJywKICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJQdWJsaWNDYXRlZ29yeUxpc3Q6ICRFcnJvck1lc3NhZ2UiLAogICAgICAgICk7CgogICAgfQoKICAgIG15IEBQdWJsaWNDYXRlZ29yeUxpc3Q7CiAgICBmb3IgbXkgJEtleSAoIHNvcnQoIGtleXMgJXskQ2F0ZWdvcnlUcmVlfSApICkgewogICAgICAgIG15ICVDYXRlZ29yeSA9ICgKICAgICAgICAgICAgSUQgICA9PiAkS2V5LAogICAgICAgICAgICBOYW1lID0+ICRDYXRlZ29yeVRyZWUtPnskS2V5fSwKICAgICAgICApOwogICAgICAgIHB1c2ggQFB1YmxpY0NhdGVnb3J5TGlzdCwgeyVDYXRlZ29yeX07CiAgICB9CgogICAgIyBwcmVwYXJlIHJldHVybiBkYXRhCiAgICBteSAkUmV0dXJuRGF0YSA9IHsKICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgRGF0YSAgICA9PiB7fSwKICAgIH07CiAgICBpZiAoIHNjYWxhciBAUHVibGljQ2F0ZWdvcnlMaXN0ID4gMSApIHsKICAgICAgICAkUmV0dXJuRGF0YS0+e0RhdGF9LT57Q2F0ZWdvcnl9ID0gXEBQdWJsaWNDYXRlZ29yeUxpc3Q7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkUmV0dXJuRGF0YS0+e0RhdGF9LT57Q2F0ZWdvcnl9ID0gJFB1YmxpY0NhdGVnb3J5TGlzdFswXTsKICAgIH0KCiAgICAjIHJldHVybiByZXN1bHQKICAgIHJldHVybiAkUmV0dXJuRGF0YTsKfQoKMTsKCj1iYWNrCgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChMPGh0dHA6Ly9vdHJzLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIEw8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0Pi4KCj1jdXQK
IyAtLQojIEtlcm5lbC9HZW5lcmljSW50ZXJmYWNlL09wZXJhdGlvbi9GQVEvTGFuZ3VhZ2VMaXN0LnBtIC0gR2VuZXJpY0ludGVyZmFjZSBGQVEgTGFuZ3VhZ2VMaXN0IG9wZXJhdGlvbiBiYWNrZW5kCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6RkFROjpMYW5ndWFnZUxpc3Q7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OkZBUTsKdXNlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb21tb247CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyhJc0FycmF5UmVmV2l0aERhdGEgSXNIYXNoUmVmV2l0aERhdGEgSXNTdHJpbmdXaXRoRGF0YSk7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkZBUTo6TGFuZ3VhZ2VMaXN0IC0gR2VuZXJpY0ludGVyZmFjZSBGQVEgTGFuZ3VhZ2VMaXN0IE9wZXJhdGlvbiBiYWNrZW5kCgo9aGVhZDEgU1lOT1BTSVMKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9b3ZlciA0Cgo9Y3V0Cgo9aXRlbSBuZXcoKQoKdXN1YWxseSwgeW91IHdhbnQgdG8gY3JlYXRlIGFuIGluc3RhbmNlIG9mIHRoaXMKYnkgdXNpbmcgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb24tPm5ldygpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBjaGVjayBuZWVkZWQgb2JqZWN0cwogICAgZm9yIG15ICROZWVkZWQgKAogICAgICAgIHF3KERlYnVnZ2VyT2JqZWN0IENvbmZpZ09iamVjdCBNYWluT2JqZWN0IExvZ09iamVjdCBUaW1lT2JqZWN0IERCT2JqZWN0IEVuY29kZU9iamVjdCBXZWJzZXJ2aWNlSUQpCiAgICAgICAgKQogICAgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJHb3Qgbm8gJE5lZWRlZCEiCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+eyROZWVkZWR9ID0gJFBhcmFteyROZWVkZWR9OwogICAgfQoKICAgICMgY3JlYXRlIGFkZGl0aW9uYWwgb2JqZWN0cwogICAgJFNlbGYtPntGQVFPYmplY3R9ICAgID0gS2VybmVsOjpTeXN0ZW06OkZBUS0+bmV3KCVQYXJhbSk7CiAgICAkU2VsZi0+e0NvbW1vbk9iamVjdH0gPSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29tbW9uLT5uZXcoICV7JFNlbGZ9ICk7CgogICAgIyBzZXQgVXNlcklEIHRvIHJvb3QgYmVjYXVzZSBpbiBwdWJsaWMgaW50ZXJmYWNlIHRoZXJlIGlzIG5vIHVzZXIKICAgICRTZWxmLT57VXNlcklEfSA9IDE7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aXRlbSBSdW4oKQoKcGVyZm9ybSBMYW5ndWFnZUxpc3QgT3BlcmF0aW9uLiBUaGlzIHdpbGwgcmV0dXJuIHRoZSBjdXJyZW50IEZBUSBMYW5ndWFnZXMuCgogICAgbXkgJFJlc3VsdCA9ICRPcGVyYXRpb25PYmplY3QtPlJ1bigKICAgICAgICBEYXRhID0+IHt9LAogICAgKTsKCiAgICAkUmVzdWx0ID0gewogICAgICAgIFN1Y2Nlc3MgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAwIG9yIDEKICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJycsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSW4gY2FzZSBvZiBhbiBlcnJvcgogICAgICAgIERhdGEgICAgICAgICA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyByZXN1bHQgZGF0YSBwYXlsb2FkIGFmdGVyIE9wZXJhdGlvbgogICAgICAgICAgICBMYW5ndWFnZSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgSUQgPT4gMSwKICAgICAgICAgICAgICAgICAgICBOYW1lPiAnZW4nLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBJRCA9PiAyLAogICAgICAgICAgICAgICAgICAgIE5hbWU+ICdPbmVNb3JlTGFuZ3VhZ2UnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICMgLi4uCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH07Cgo9Y3V0CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbGFuZ3VhZ2VzIGxpc3QKICAgIG15ICVMYW5ndWFnZXMgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkxhbmd1YWdlTGlzdCgKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSggXCVMYW5ndWFnZXMgKSApIHsKCiAgICAgICAgbXkgJEVycm9yTWVzc2FnZSA9ICdDb3VsZCBub3QgZ2V0IGxhbmd1YWdlIGRhdGEnCiAgICAgICAgICAgIC4gJyBpbiBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6RkFROjpMYW5ndWFnZUxpc3Q6OlJ1bigpJzsKCiAgICAgICAgcmV0dXJuICRTZWxmLT57Q29tbW9uT2JqZWN0fS0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnVGlja2V0TGlzdC5Ob3RMYW5ndWFnZURhdGEnLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIlRpY2tldExpc3Q6ICRFcnJvck1lc3NhZ2UiLAogICAgICAgICk7CiAgICB9CgogICAgbXkgQExhbmd1YWdlTGlzdDsKICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICVMYW5ndWFnZXMgKSB7CiAgICAgICAgbXkgJUxhbmd1YWdlID0gKAogICAgICAgICAgICBJRCAgID0+ICRLZXksCiAgICAgICAgICAgIE5hbWUgPT4gJExhbmd1YWdlc3skS2V5fSwKICAgICAgICApOwogICAgICAgIHB1c2ggQExhbmd1YWdlTGlzdCwgeyVMYW5ndWFnZX07CiAgICB9CgogICAgIyByZXR1cm4gcmVzdWx0CiAgICByZXR1cm4gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICBEYXRhICAgID0+IHsKICAgICAgICAgICAgTGFuZ3VhZ2UgPT4gXEBMYW5ndWFnZUxpc3QsCiAgICAgICAgfSwKICAgIH07Cn0KCjE7Cgo9YmFjawoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwOi8vb3Rycy5vcmcvPikuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dD4uCgo9Y3V0Cg==
IyAtLQojIEtlcm5lbC9HZW5lcmljSW50ZXJmYWNlL09wZXJhdGlvbi9GQVEvUHVibGljRkFRU2VhcmNoLnBtIC0gR2VuZXJpY0ludGVyZmFjZSBGQVEgUHVibGljRkFRU2VhcmNoIG9wZXJhdGlvbiBiYWNrZW5kCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6RkFROjpQdWJsaWNGQVFTZWFyY2g7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgTUlNRTo6QmFzZTY0Owp1c2UgS2VybmVsOjpTeXN0ZW06OkZBUTsKdXNlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb21tb247CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyhJc0FycmF5UmVmV2l0aERhdGEgSXNIYXNoUmVmV2l0aERhdGEgSXNTdHJpbmdXaXRoRGF0YSk7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkZBUTo6UHVibGljRkFRU2VhcmNoIC0gR2VuZXJpY0ludGVyZmFjZSBGQVEgUHVibGljRkFRU2VhcmNoIE9wZXJhdGlvbiBiYWNrZW5kCgo9aGVhZDEgU1lOT1BTSVMKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9b3ZlciA0Cgo9Y3V0Cgo9aXRlbSBuZXcoKQoKdXN1YWxseSwgeW91IHdhbnQgdG8gY3JlYXRlIGFuIGluc3RhbmNlIG9mIHRoaXMKYnkgdXNpbmcgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb24tPm5ldygpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBjaGVjayBuZWVkZWQgb2JqZWN0cwogICAgZm9yIG15ICROZWVkZWQgKAogICAgICAgIHF3KERlYnVnZ2VyT2JqZWN0IENvbmZpZ09iamVjdCBNYWluT2JqZWN0IExvZ09iamVjdCBUaW1lT2JqZWN0IERCT2JqZWN0IEVuY29kZU9iamVjdCBXZWJzZXJ2aWNlSUQpCiAgICAgICAgKQogICAgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJHb3Qgbm8gJE5lZWRlZCEiCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+eyROZWVkZWR9ID0gJFBhcmFteyROZWVkZWR9OwogICAgfQoKICAgICMgY3JlYXRlIGFkZGl0aW9uYWwgb2JqZWN0cwogICAgJFNlbGYtPntGQVFPYmplY3R9ICAgID0gS2VybmVsOjpTeXN0ZW06OkZBUS0+bmV3KCVQYXJhbSk7CiAgICAkU2VsZi0+e0NvbW1vbk9iamVjdH0gPSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29tbW9uLT5uZXcoICV7JFNlbGZ9ICk7CgogICAgIyBzZXQgVXNlcklEIHRvIHJvb3QgYmVjYXVzZSBpbiBwdWJsaWMgaW50ZXJmYWNlIHRoZXJlIGlzIG5vIHVzZXIKICAgICRTZWxmLT57VXNlcklEfSA9IDE7CgogICAgIyBnZXQgY29uZmlnIGZvciBmcm9udGVuZAogICAgJFNlbGYtPntDb25maWd9ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoIkZBUTo6RnJvbnRlbmQ6OlB1YmxpY0ZBUVNlYXJjaCIpOwoKICAgICMgc2V0IGRlZmF1bHQgaW50ZXJmYWNlIHNldHRpbmdzCiAgICAkU2VsZi0+e0ludGVyZmFjZX0gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUdldCgKICAgICAgICBOYW1lICAgPT4gJ3B1YmxpYycsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUxpc3QoCiAgICAgICAgVHlwZXMgID0+ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OlB1YmxpYzo6U3RhdGVUeXBlcycpLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWl0ZW0gUnVuKCkKCnBlcmZvcm0gUHVibGljRkFRU2VhcmNoIE9wZXJhdGlvbi4gVGhpcyB3aWxsIHJldHVybiBhIGxpc3Qgb2YgcHVibGljIEZBUSBlbnRyaWVzLgoKICAgIG15IEBJRHMgPSAkT3BlcmF0aW9uT2JqZWN0LT5SdW4oCiAgICAgICAgRGF0YSA9PiB7CgogICAgICAgICAgICBOdW1iZXIgICAgPT4gJyoxMzQqJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgICAgICBUaXRsZSAgICAgPT4gJypzb21lIHRpdGxlKicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQoKICAgICAgICAgICAgIyBpcyBzZWFyY2hpbmcgaW4gTnVtYmVyLCBUaXRsZSwgS2V5d29yZCBhbmQgRmllbGQxLTYKICAgICAgICAgICAgV2hhdCAgICAgID0+ICcqc29tZSB0ZXh0KicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKCiAgICAgICAgICAgIEtleXdvcmQgICA9PiAnKndlYnNlcnZlcionLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgICAgIExhbmd1YWdlSURzID0+IFsgNCwgNSwgNiBdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgICAgIENhdGVnb3J5SURzID0+IFsgNywgOCwgOSBdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCgogICAgICAgICAgICBPcmRlckJ5ID0+IFsgJ0ZBUUlEJywgJ1RpdGxlJyBdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQoKICAgICAgICAgICAgIyBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIGZvciBPcmRlckJ5OgogICAgICAgICAgICAjIFRoZSBPcmRlckJ5RGlyZWN0aW9uIGNhbiBiZSBzcGVjaWZpZWQgZm9yIGVhY2ggT3JkZXJCeSBhdHRyaWJ1dGUuCiAgICAgICAgICAgICMgVGhlIHBhaXJpbmcgaXMgbWFkZSBieSB0aGUgYXJyYXkgaW5kZXhlcy4KCiAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gPT4gJ0Rvd24nLCAjIChEb3duIHwgVXApICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgICAgICAjIGRlZmF1bHQ6ICdEb3duJwogICAgICAgIH0sCiAgICApOwoKICAgICRSZXN1bHQgPSB7CiAgICAgICAgU3VjY2VzcyAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIDAgb3IgMQogICAgICAgIEVycm9yTWVzc2FnZSA9PiAnJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBJbiBjYXNlIG9mIGFuIGVycm9yCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJlc3VsdCBkYXRhIHBheWxvYWQgYWZ0ZXIgT3BlcmF0aW9uCiAgICAgICAgICAgIElEID0+IFsKICAgICAgICAgICAgICAgIDMyLAogICAgICAgICAgICAgICAgMTMsCiAgICAgICAgICAgICAgICAxMiwKICAgICAgICAgICAgICAgIDksCiAgICAgICAgICAgICAgICA2LAogICAgICAgICAgICAgICAgNSwKICAgICAgICAgICAgICAgIDQsCiAgICAgICAgICAgICAgICAxLAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICB9OwoKPWN1dAoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGNvbmZpZyBkYXRhCiAgICAjIHNldCBTZWFyY2hMaW1pdCBvbiAwIGJlY2F1c2Ugd2UgbmVlZCB0byBnZXQgYWxsIGVudHJpZXMKICAgICRTZWxmLT57U2VhcmNoTGltaXR9ID0gMDsKCiAgICAkU2VsZi0+e1NvcnRCeX0gPSAkUGFyYW17RGF0YX0tPntPcmRlckJ5fQogICAgICAgIHx8ICRTZWxmLT57Q29uZmlnfS0+eydTb3J0Qnk6OkRlZmF1bHQnfQogICAgICAgIHx8ICdGQVFJRCc7CgogICAgIyB0aGUgQ2F0ZWdvcnlJRCBwYXJhbSBjb3VsZCBiZSBhbiBBUlJBWSBhbiBTQ0FMQVIgb3IgYW4gZW1wdHkgdmFsdWUKICAgIGlmICggIUlzQXJyYXlSZWZXaXRoRGF0YSggJFNlbGYtPntTb3J0Qnl9ICkgJiYgJFNlbGYtPntTb3J0Qnl9IG5lICcnICkgewogICAgICAgICRTZWxmLT57U29ydEJ5fSA9IFsgJFNlbGYtPntTb3J0Qnl9IF07CiAgICB9CgogICAgJFNlbGYtPntPcmRlckJ5fSA9ICRQYXJhbXtEYXRhfS0+e09yZGVyQnlEaXJlY3Rpb259CiAgICAgICAgfHwgJFNlbGYtPntDb25maWd9LT57J09yZGVyOjpEZWZhdWx0J30KICAgICAgICB8fCAnRG93bic7CgogICAgIyB0aGUgQ2F0ZWdvcnlJRCBwYXJhbSBjb3VsZCBiZSBhbiBBUlJBWSBhbiBTQ0FMQVIgb3IgYW4gZW1wdHkgdmFsdWUKICAgICRQYXJhbXtEYXRhfS0+e0NhdGVnb3J5SURzfSA9ICRQYXJhbXtEYXRhfS0+e0NhdGVnb3J5SURzfSB8fCAnJzsKICAgIGlmICggIUlzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFte0RhdGF9LT57Q2F0ZWdvcnlJRHN9ICkgJiYgJFBhcmFte0RhdGF9LT57Q2F0ZWdvcnlJRHN9IG5lICcnICkgewogICAgICAgICRTZWxmLT57Q2F0ZWdvcnlJRHN9ID0gWyAkUGFyYW17RGF0YX0tPntDYXRlZ29yeUlEc30gXTsKICAgIH0KICAgIGVsc2lmICggJFBhcmFte0RhdGF9LT57Q2F0ZWdvcnlJRHN9IG5lICcnICkgewogICAgICAgICRTZWxmLT57Q2F0ZWdvcnlJRHN9ID0gJFBhcmFte0RhdGF9LT57Q2F0ZWdvcnlJRHN9OwogICAgfQoKICAgICMgdGhlIExhbmd1YWdlSUQgcGFyYW0gY291bGQgYmUgYW4gQVJSQVkgYW4gU0NBTEFSIG9yIGFuIGVtcHR5IHZhbHVlCiAgICAkUGFyYW17RGF0YX0tPntMYW5ndWFnZUlEc30gPSAkUGFyYW17RGF0YX0tPntMYW5ndWFnZUlEc30gfHwgJyc7CiAgICBpZiAoICFJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtEYXRhfS0+e0xhbmd1YWdlSURzfSApICYmICRQYXJhbXtEYXRhfS0+e0xhbmd1YWdlSURzfSBuZSAnJyApIHsKICAgICAgICAkU2VsZi0+e0xhbmd1YWdlSURzfSA9IFsgJFBhcmFte0RhdGF9LT57TGFuZ3VhZ2VJRHN9IF07CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtEYXRhfS0+e0xhbmd1YWdlSURzfSBuZSAnJyApIHsKICAgICAgICAkU2VsZi0+e0xhbmd1YWdlSURzfSA9ICRQYXJhbXtEYXRhfS0+e0xhbmd1YWdlSURzfTsKICAgIH0KCiAgICAjIHBlcmZvcm0gRkFRIHNlYXJjaAogICAgbXkgQFZpZXdhYmxlRkFRSURzID0gJFNlbGYtPntGQVFPYmplY3R9LT5GQVFTZWFyY2goCiAgICAgICAgTnVtYmVyICA9PiAkUGFyYW17RGF0YX0tPntOdW1iZXJ9ICB8fCAnJywKICAgICAgICBUaXRsZSAgID0+ICRQYXJhbXtEYXRhfS0+e1RpdGxlfSAgIHx8ICcnLAogICAgICAgIFdoYXQgICAgPT4gJFBhcmFte0RhdGF9LT57V2hhdH0gICAgfHwgJycsCiAgICAgICAgS2V5d29yZCA9PiAkUGFyYW17RGF0YX0tPntLZXl3b3JkfSB8fCAnJywKICAgICAgICBMYW5ndWFnZUlEcyAgICAgID0+ICRTZWxmLT57TGFuZ3VhZ2VJRHN9LAogICAgICAgIENhdGVnb3J5SURzICAgICAgPT4gJFNlbGYtPntDYXRlZ29yeUlEc30sCiAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiAkU2VsZi0+e1NvcnRCeX0sCiAgICAgICAgT3JkZXJCeURpcmVjdGlvbiA9PiBbICRTZWxmLT57T3JkZXJCeX0gXSwKICAgICAgICBMaW1pdCAgICAgICAgICAgID0+ICRTZWxmLT57U2VhcmNoTGltaXR9LAogICAgICAgIFVzZXJJRCAgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgIFN0YXRlcyAgICAgICAgICAgPT4gJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9LAogICAgICAgIEludGVyZmFjZSAgICAgICAgPT4gJFNlbGYtPntJbnRlcmZhY2V9LAogICAgKTsKICAgIGlmICggIUlzQXJyYXlSZWZXaXRoRGF0YSggXEBWaWV3YWJsZUZBUUlEcyApICkgewoKICAgICAgICBteSAkRXJyb3JNZXNzYWdlID0gJ0NvdWxkIG5vdCBnZXQgRkFRIGRhdGEnCiAgICAgICAgICAgIC4gJyBpbiBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6RkFROjpQdWJsaWNGQVFTZWFyY2g6OlJ1bigpJzsKCiAgICAgICAgcmV0dXJuICRTZWxmLT57Q29tbW9uT2JqZWN0fS0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnUHVibGljRkFRU2VhcmNoLk5vdEZBUURhdGEnLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIlB1YmxpY0ZBUVNlYXJjaDogJEVycm9yTWVzc2FnZSIsCiAgICAgICAgKTsKCiAgICB9CgogICAgIyBwcmVwYXJlIHJldHVybiBkYXRhCiAgICBteSAkUmV0dXJuRGF0YSA9IHsKICAgICAgICBEYXRhICAgID0+IHt9LAogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgIH07CgogICAgIyBzZXQgRkFRIGVudHJ5IGRhdGEKICAgIGlmICggc2NhbGFyIEBWaWV3YWJsZUZBUUlEcyA+IDEgKSB7CiAgICAgICAgJFJldHVybkRhdGEtPntEYXRhfS0+e0lEfSA9IFxAVmlld2FibGVGQVFJRHM7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkUmV0dXJuRGF0YS0+e0RhdGF9LT57SUR9ID0gJFZpZXdhYmxlRkFRSURzWzBdOwogICAgfQoKICAgICMgcmV0dXJuIHJlc3VsdAogICAgcmV0dXJuICRSZXR1cm5EYXRhOwp9CgoxOwoKPWJhY2sKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKEw8aHR0cDovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQ+LgoKPWN1dAo=
IyAtLQojIEtlcm5lbC9HZW5lcmljSW50ZXJmYWNlL09wZXJhdGlvbi9GQVEvUHVibGljRkFRR2V0LnBtIC0gR2VuZXJpY0ludGVyZmFjZSBGQVEgUHVibGljRkFRR2V0IG9wZXJhdGlvbiBiYWNrZW5kCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6RkFROjpQdWJsaWNGQVFHZXQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgTUlNRTo6QmFzZTY0Owp1c2UgS2VybmVsOjpTeXN0ZW06OkZBUTsKdXNlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb21tb247CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyhJc0FycmF5UmVmV2l0aERhdGEgSXNIYXNoUmVmV2l0aERhdGEgSXNTdHJpbmdXaXRoRGF0YSk7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkZBUTo6UHVibGljRkFRR2V0IC0gR2VuZXJpY0ludGVyZmFjZSBGQVEgUHVibGljRkFRR2V0IE9wZXJhdGlvbiBiYWNrZW5kCgo9aGVhZDEgU1lOT1BTSVMKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9b3ZlciA0Cgo9Y3V0Cgo9aXRlbSBuZXcoKQoKdXN1YWxseSwgeW91IHdhbnQgdG8gY3JlYXRlIGFuIGluc3RhbmNlIG9mIHRoaXMKYnkgdXNpbmcgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb24tPm5ldygpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBjaGVjayBuZWVkZWQgb2JqZWN0cwogICAgZm9yIG15ICROZWVkZWQgKAogICAgICAgIHF3KERlYnVnZ2VyT2JqZWN0IENvbmZpZ09iamVjdCBNYWluT2JqZWN0IExvZ09iamVjdCBUaW1lT2JqZWN0IERCT2JqZWN0IEVuY29kZU9iamVjdCBXZWJzZXJ2aWNlSUQpCiAgICAgICAgKQogICAgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJHb3Qgbm8gJE5lZWRlZCEiCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+eyROZWVkZWR9ID0gJFBhcmFteyROZWVkZWR9OwogICAgfQoKICAgICMgY3JlYXRlIGFkZGl0aW9uYWwgb2JqZWN0cwogICAgJFNlbGYtPntGQVFPYmplY3R9ICAgID0gS2VybmVsOjpTeXN0ZW06OkZBUS0+bmV3KCVQYXJhbSk7CiAgICAkU2VsZi0+e0NvbW1vbk9iamVjdH0gPSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29tbW9uLT5uZXcoICV7JFNlbGZ9ICk7CgogICAgIyBzZXQgVXNlcklEIHRvIHJvb3QgYmVjYXVzZSBpbiBwdWJsaWMgaW50ZXJmYWNlIHRoZXJlIGlzIG5vIHVzZXIKICAgICRTZWxmLT57VXNlcklEfSA9IDE7CgogICAgIyBnZXQgcHVibGljIHN0YXRlIHR5cGVzCiAgICAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUxpc3QoCiAgICAgICAgVHlwZXMgID0+ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OlB1YmxpYzo6U3RhdGVUeXBlcycpLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWl0ZW0gUnVuKCkKCnBlcmZvcm0gUHVibGljRkFRR2V0IE9wZXJhdGlvbi4gVGhpcyB3aWxsIHJldHVybiBhIFB1YmxpYyBGQVEgZW50cnkuCgogICAgbXkgJFJlc3VsdCA9ICRPcGVyYXRpb25PYmplY3QtPlJ1bigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgSXRlbUlEID0gJzMyLDMzJzsKICAgICAgICB9LAogICAgKTsKCiAgICAkUmVzdWx0ID0gewogICAgICAgIFN1Y2Nlc3MgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAwIG9yIDEKICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJycsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSW4gY2FzZSBvZiBhbiBlcnJvcgogICAgICAgIERhdGEgICAgICAgICA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyByZXN1bHQgZGF0YSBwYXlsb2FkIGFmdGVyIE9wZXJhdGlvbgogICAgICAgICAgICBJdGVtSUQgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIElEICAgICAgICAgICAgICAgID0+IDMyLAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAgICAgICAgID0+IDMyLAogICAgICAgICAgICAgICAgICAgIEZBUUlEICAgICAgICAgICAgID0+IDMyLAogICAgICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgID0+IDEwMDAzMiwKICAgICAgICAgICAgICAgICAgICBDYXRlZ29yeUlEICAgICAgICA9PiAnMicsCiAgICAgICAgICAgICAgICAgICAgQ2F0ZWdvcnlOYW1lICAgICA9PiAnQ2F0ZWdvcnlBOjpDYXRlZ29yeUInLAogICAgICAgICAgICAgICAgICAgIENhdGVnb3J5U2hvcnROYW1lID0+ICdDYXRlZ29yeUInLAogICAgICAgICAgICAgICAgICAgIExhbmd1YWdlSUQgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgTGFuZ3VhZ2UgICAgICAgICAgPT4gJ2VuJywKICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICA9PiAnQXJ0aWNsZSBUaXRsZScsCiAgICAgICAgICAgICAgICAgICAgRmllbGQxICAgICAgICAgICAgPT4gJ1RoZSBTeW1wdG9tcycsCiAgICAgICAgICAgICAgICAgICAgRmllbGQyICAgICAgICAgICAgPT4gJ1RoZSBQcm9ibGVtJywKICAgICAgICAgICAgICAgICAgICBGaWVsZDMgICAgICAgICAgICA9PiAnVGhlIFNvbHV0aW9uJywKICAgICAgICAgICAgICAgICAgICBGaWVsZDQgICAgICAgICAgICA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAgICMgTm90IGFjdGl2ZSBieSBkZWZhdWx0CiAgICAgICAgICAgICAgICAgICAgRmllbGQ1ICAgICAgICAgICAgPT4gdW5kZWYsICAgICAgICAgICAgICAgICAgICAgICAgICAjIE5vdCBhY3RpdmUgYnkgZGVmYXVsdAogICAgICAgICAgICAgICAgICAgIEZpZWxkNiAgICAgICAgICAgID0+ICdDb21tZW50cycsCiAgICAgICAgICAgICAgICAgICAgQXBwcm92ZWQgICAgICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9yIDAKICAgICAgICAgICAgICAgICAgICBLZXl3b3JkcyAgICAgICAgICA9PiAnS2V5V29yZDEgS2V5V29yZDInLAogICAgICAgICAgICAgICAgICAgIFZvdGVzICAgICAgICAgICAgID0+IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBudW1iZXIgb2Ygdm90ZXMKICAgICAgICAgICAgICAgICAgICBWb3RlUmVzdWx0ICAgICAgICA9PiAnMC4wMCcsICAgICAgICAgICAgICAgICAgICAgICAgICMgYSBudW1iZXIgYmV0d2VlbiAwLjAwIGFuZCAxMDAuMDAKICAgICAgICAgICAgICAgICAgICBTdGF0ZUlEICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgIFN0YXRlICAgICAgICAgICAgID0+ICdpbnRlcm5hbCAoYWdlbnQpJywgICAgICAgICAgICAgIyBvciAnZXh0ZXJuYWwgKGN1c3RvbWVyKScgb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgJ3B1YmxpYyAoYWxsKScKICAgICAgICAgICAgICAgICAgICBTdGF0ZVR5cGVJRCAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgIFN0YXRlVHlwZU5hbWUgICAgID0+ICdpbnRlcm5hbCcsICAgICAgICAgICAgICAgICAgICAgIyBvciAnZXh0ZXJuYWwnIG9yICdwdWJsaWMnCiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlZEJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBDaGFuZ2VkICAgICAgICAgID0+ICcyMDExLTAxLTA1IDIxOjUzOjUwJywKICAgICAgICAgICAgICAgICAgICBDaGFuZ2VkQnkgICAgICAgICA9PiAnMScsCiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlZCAgICAgICAgICAgPT4gJzIwMTEtMDEtMDUgMjE6NTM6NTAnLAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgID0+ICcxMjk0Mjg2MDMwLTMxLjE2OTcyOTcxMDQ3MzInLCAgIyBGQVEgQXJ0aWNsZSBuYW1lIG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHN5c3RlbXRpbWUgKyAnLScgKyByYW5kb20gbnVtYmVyCiAgICAgICAgICAgICAgICAgICAgQXR0YWNobWVudCA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVzaXplICAgID0+ICc1NDAyODYnLCAgICAgICAgICAgICAgICAjIGZpbGUgc2l6ZSBpbiBieXRlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ2ltYWdlL2pwZWcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJ0Vycm9yLmpwZycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAnLi4uJyAgICAgICAgICAgICAgICAgICAgIyBiYXNlNjQgY29udGVudAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlc2l6ZSAgICA9PiAnNTQwMjg2JywgICAgICAgICAgICAgICAgIyBmaWxlIHNpemUgaW4gYnl0ZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICdpbWFnZS9qcGVnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICdQZW5jaWwuanBnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICcuLi4nICAgICAgICAgICAgICAgICAgICAjIGJhc2U2NCBjb250ZW50CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgSUQgICAgICAgICAgICAgICAgPT4gMzMsCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEICAgICAgICAgICAgPT4gMzMsCiAgICAgICAgICAgICAgICAgICAgRkFRSUQgICAgICAgICAgICAgPT4gMzMsCiAgICAgICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICAgPT4gMTAwMDMzLAogICAgICAgICAgICAgICAgICAgIENhdGVnb3J5SUQgICAgICAgID0+ICczJywKICAgICAgICAgICAgICAgICAgICBDYXRlZ29yeU5hbWUgICAgID0+ICdDYXRlZ29yeUQ6OkNhdGVnb3J5RScsCiAgICAgICAgICAgICAgICAgICAgQ2F0ZWdvcnlTaG9ydE5hbWUgPT4gJ0NhdGVnb3J5RScsCiAgICAgICAgICAgICAgICAgICAgTGFuZ3VhZ2VJRCAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBMYW5ndWFnZSAgICAgICAgICA9PiAnZW4nLAogICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgID0+ICdBcnRpY2xlIFRpdGxlJywKICAgICAgICAgICAgICAgICAgICBGaWVsZDEgICAgICAgICAgICA9PiAnVGhlIFN5bXB0b21zJywKICAgICAgICAgICAgICAgICAgICBGaWVsZDIgICAgICAgICAgICA9PiAnVGhlIFByb2JsZW0nLAogICAgICAgICAgICAgICAgICAgIEZpZWxkMyAgICAgICAgICAgID0+ICdUaGUgU29sdXRpb24nLAogICAgICAgICAgICAgICAgICAgIEZpZWxkNCAgICAgICAgICAgID0+IHVuZGVmLCAgICAgICAgICAgICAgICAgICAgICAgICAgIyBOb3QgYWN0aXZlIGJ5IGRlZmF1bHQKICAgICAgICAgICAgICAgICAgICBGaWVsZDUgICAgICAgICAgICA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAgICMgTm90IGFjdGl2ZSBieSBkZWZhdWx0CiAgICAgICAgICAgICAgICAgICAgRmllbGQ2ICAgICAgICAgICAgPT4gJ0NvbW1lbnRzJywKICAgICAgICAgICAgICAgICAgICBBcHByb3ZlZCAgICAgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3IgMAogICAgICAgICAgICAgICAgICAgIEtleXdvcmRzICAgICAgICAgID0+ICdLZXlXb3JkMSBLZXlXb3JkMicsCiAgICAgICAgICAgICAgICAgICAgVm90ZXMgICAgICAgICAgICAgPT4gMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG51bWJlciBvZiB2b3RlcwogICAgICAgICAgICAgICAgICAgIFZvdGVSZXN1bHQgICAgICAgID0+ICcwLjAwJywgICAgICAgICAgICAgICAgICAgICAgICAgIyBhIG51bWJlciBiZXR3ZWVuIDAuMDAgYW5kIDEwMC4wMAogICAgICAgICAgICAgICAgICAgIFN0YXRlSUQgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgU3RhdGUgICAgICAgICAgICAgPT4gJ2ludGVybmFsIChhZ2VudCknLCAgICAgICAgICAgICAjIG9yICdleHRlcm5hbCAoY3VzdG9tZXIpJyBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAncHVibGljIChhbGwpJwogICAgICAgICAgICAgICAgICAgIFN0YXRlVHlwZUlEICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgU3RhdGVUeXBlTmFtZSAgICAgPT4gJ2ludGVybmFsJywgICAgICAgICAgICAgICAgICAgICAjIG9yICdleHRlcm5hbCcgb3IgJ3B1YmxpYycKICAgICAgICAgICAgICAgICAgICBDcmVhdGVkQnkgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgIENoYW5nZWQgICAgICAgICAgPT4gJzIwMTEtMDEtMDUgMjE6NTM6NTAnLAogICAgICAgICAgICAgICAgICAgIENoYW5nZWRCeSAgICAgICAgID0+ICcxJywKICAgICAgICAgICAgICAgICAgICBDcmVhdGVkICAgICAgICAgICA9PiAnMjAxMS0wMS0wNSAyMTo1Mzo1MCcsCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgPT4gJzEyOTQyODYwMzAtMzEuMTY5NzI5NzEwNDczMicsICAjIEZBUSBBcnRpY2xlIG5hbWUgb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgc3lzdGVtdGltZSArICctJyArIHJhbmRvbSBudW1iZXIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAjIC4uLgogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICB9OwoKPWN1dAoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICggISRQYXJhbXtEYXRhfS0+e0l0ZW1JRH0gKSB7CgogICAgICAgIHJldHVybiAkU2VsZi0+e0NvbW1vbk9iamVjdH0tPlJldHVybkVycm9yKAogICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ1B1YmxpY0ZBUUdldC5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJQdWJsaWNGQVFHZXQ6IEdvdCBubyBJdGVtSUQhIiwKICAgICAgICApOwogICAgfQoKICAgIG15ICRFcnJvck1lc3NhZ2UgPSAnJzsKCiAgICBteSAkUmV0dXJuRGF0YSA9IHsKICAgICAgICBTdWNjZXNzID0+IDEsCiAgICB9OwogICAgbXkgQEl0ZW1JRHMgPSBzcGxpdCggLywvLCAkUGFyYW17RGF0YX0tPntJdGVtSUR9ICk7CiAgICBteSBASXRlbTsKCiAgICAjIHN0YXJ0IG1haW4gbG9vcAogICAgZm9yIG15ICRJdGVtSUQgKEBJdGVtSURzKSB7CgogICAgICAgICMgZ2V0IHRoZSBGQVEgZW50cnkKICAgICAgICBteSAlRkFRRW50cnkgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUUdldCgKICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkSXRlbUlELAogICAgICAgICAgICBJdGVtRmllbGRzID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCBcJUZBUUVudHJ5ICkgKSB7CgogICAgICAgICAgICAkRXJyb3JNZXNzYWdlID0gJ0NvdWxkIG5vdCBnZXQgRkFRIGRhdGEnCiAgICAgICAgICAgICAgICAuICcgaW4gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkZBUTo6UHVibGljRkFRR2V0OjpSdW4oKSc7CgogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntDb21tb25PYmplY3R9LT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnUHVibGljRkFRR2V0Lk5vdFZhbGlkRkFRSUQnLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJQdWJsaWNGQVFHZXQ6ICRFcnJvck1lc3NhZ2UiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBwZXJtaXNzaW9ucwogICAgICAgIG15ICRBcHByb3ZhbFN1Y2Nlc3MgPSAxOwogICAgICAgIGlmICggJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6QXBwcm92YWxSZXF1aXJlZCcpICkgewogICAgICAgICAgICAkQXBwcm92YWxTdWNjZXNzID0gJEZBUUVudHJ5e0FwcHJvdmVkfTsKICAgICAgICB9CiAgICAgICAgaWYgKCAhJEFwcHJvdmFsU3VjY2VzcyB8fCAhJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9LT57ICRGQVFFbnRyeXtTdGF0ZVR5cGVJRH0gfSApIHsKCiAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgPSAnQ291bGQgbm90IGdldCBGQVEgZGF0YScKICAgICAgICAgICAgICAgIC4gJyBpbiBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6RkFROjpQdWJsaWNGQVFHZXQ6OlJ1bigpJzsKCiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0NvbW1vbk9iamVjdH0tPlJldHVybkVycm9yKAogICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdQdWJsaWNGQVFHZXQuQWNjZXNzRGVuaWVkJywKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiUHVibGljRkFRR2V0OiAkRXJyb3JNZXNzYWdlIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgc2V0IEZBUSBlbnRyeSBkYXRhCiAgICAgICAgbXkgJEFydGljbGUgPSB7CiAgICAgICAgICAgIEFydGljbGUgPT4gXCVGQVFFbnRyeSwKICAgICAgICB9OwoKICAgICAgICBteSBASW5kZXggPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkF0dGFjaG1lbnRJbmRleCgKICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkSXRlbUlELAogICAgICAgICAgICBTaG93SW5saW5lID0+IDEsICAgICAgICAgICAgICAgICAjICAgKCAwfDEsIGRlZmF1bHQgMSkKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoIFxASW5kZXggKSApIHsKICAgICAgICAgICAgbXkgQEF0dGFjaG1lbnRzOwogICAgICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKEBJbmRleCkgewogICAgICAgICAgICAgICAgbXkgJUZpbGUgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkF0dGFjaG1lbnRHZXQoCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEID0+ICRJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgRmlsZUlEID0+ICRBdHRhY2htZW50LT57RmlsZUlEfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGNvbnZlcnQgY29udGVudCB0byBiYXNlNjQKICAgICAgICAgICAgICAgICRGaWxle0NvbnRlbnR9ID0gZW5jb2RlX2Jhc2U2NCggJEZpbGV7Q29udGVudH0gKTsKICAgICAgICAgICAgICAgIHB1c2ggQEF0dGFjaG1lbnRzLCB7JUZpbGV9OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHNldCBGQVEgZW50cnkgZGF0YQogICAgICAgICAgICAkRkFRRW50cnl7QXR0YWNobWVudH0gPSBcQEF0dGFjaG1lbnRzOwogICAgICAgIH0KCiAgICAgICAgIyBhZGQKICAgICAgICBwdXNoIEBJdGVtLCBcJUZBUUVudHJ5OwogICAgfSAgICAjIGZpbmlzaCBtYWluIGxvb3AKCiAgICBpZiAoICFzY2FsYXIgQEl0ZW0gKSB7CiAgICAgICAgJEVycm9yTWVzc2FnZSA9ICdDb3VsZCBub3QgZ2V0IEZBUSBkYXRhJwogICAgICAgICAgICAuICcgaW4gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkZBUTo6UHVibGljRkFRR2V0OjpSdW4oKSc7CgogICAgICAgIHJldHVybiAkU2VsZi0+e0NvbW1vbk9iamVjdH0tPlJldHVybkVycm9yKAogICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ1B1YmxpY0ZBUUdldC5Ob0ZBUURhdGEnLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIlB1YmxpY0ZBUUdldDogJEVycm9yTWVzc2FnZSIsCiAgICAgICAgKTsKCiAgICB9CgogICAgJFJldHVybkRhdGEtPntEYXRhfS0+e0ZBUUl0ZW19ID0gXEBJdGVtOwoKICAgICMgcmV0dXJuIHJlc3VsdAogICAgcmV0dXJuICRSZXR1cm5EYXRhOwp9CgoxOwoKPWJhY2sKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKEw8aHR0cDovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQ+LgoKPWN1dAo=
LS0tCkRlYnVnZ2VyOgogIERlYnVnVGhyZXNob2xkOiBkZWJ1ZwogIFRlc3RNb2RlOiAwCkRlc2NyaXB0aW9uOiAnJwpGcmFtZXdvcmtWZXJzaW9uOiAzLjIueCBDVlMKUHJvdmlkZXI6CiAgT3BlcmF0aW9uOgogICAgTGFuZ3VhZ2VMaXN0OgogICAgICBEZXNjcmlwdGlvbjogTGlzdCAgYWxsIGF2YWlsYWJsZXMgbGFuZ3VhZ2VzCiAgICAgIFR5cGU6IEZBUTo6TGFuZ3VhZ2VMaXN0CiAgICBQdWJsaWNDYXRlZ29yeUxpc3Q6CiAgICAgIERlc2NyaXB0aW9uOiBMaXN0IGFsbCBwdWJsaWMgRkFRIGNhdGVnb3JpZXMgKHdpdGggdHJlZSBpbmZvcm1hdGlvbikKICAgICAgVHlwZTogRkFROjpQdWJsaWNDYXRlZ29yeUxpc3QKICAgIFB1YmxpY0ZBUVNlYXJjaDoKICAgICAgRGVzY3JpcHRpb246IFNlYXJjaCBmb3IgcHVibGljIEZBUXMKICAgICAgVHlwZTogRkFROjpQdWJsaWNGQVFTZWFyY2gKICAgIFB1YmxpY0ZBUUdldDoKICAgICAgRGVzY3JpcHRpb246IFJldHJpZXZlIHB1YmxpYyBGQVEgZW50cmllcwogICAgICBUeXBlOiBGQVE6OlB1YmxpY0ZBUUdldAogIFRyYW5zcG9ydDoKICAgIENvbmZpZzoKICAgICAgRW5jb2Rpbmc6IFVURi04CiAgICAgIEVuZHBvaW50OiAnJwogICAgICBNYXhMZW5ndGg6IDEwMDAwMDAwCiAgICAgIE5hbWVTcGFjZTogaHR0cDovL3d3dy5vdHJzLm9yZy9GQVFDb25uZWN0b3IvCiAgICAgIFNPQVBBY3Rpb246ICcnCiAgICBUeXBlOiBIVFRQOjpTT0FQClJlbW90ZVN5c3RlbTogJycK
IyAtLQojIEZBUUNvbm5lY3Rvci50IC0gR2VuZXJpY0ludGVyZmFjZSB0cmFuc3BvcnQgaW50ZXJmYWNlIHRlc3RzIGZvciBGQVFDb25uZWN0b3IgYmFja2VuZAojIENvcHlyaWdodCAoQykgMjAwMS0yMDEzIE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CnVzZSB2YXJzIChxdygkU2VsZikpOwoKdXNlIFNvY2tldDsKdXNlIFlBTUw7CnVzZSBNSU1FOjpCYXNlNjQ7CnVzZSBLZXJuZWw6OlN5c3RlbTo6RkFROwp1c2UgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpEZWJ1Z2dlcjsKdXNlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyOwp1c2UgS2VybmVsOjpTeXN0ZW06OkdlbmVyaWNJbnRlcmZhY2U6OldlYnNlcnZpY2U7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcjsKdXNlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpGQVE6Okxhbmd1YWdlTGlzdDsKdXNlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpGQVE6OlB1YmxpY0NhdGVnb3J5TGlzdDsKdXNlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpGQVE6OlB1YmxpY0ZBUVNlYXJjaDsKdXNlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpGQVE6OlB1YmxpY0ZBUUdldDsKCiMgaGVscGVyIG9iamVjdApteSAkSGVscGVyT2JqZWN0ID0gS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXItPm5ldygKICAgICV7JFNlbGZ9LAogICAgVW5pdFRlc3RPYmplY3QgPT4gJFNlbGYsCik7CgpteSAkUmFuZG9tSUQgPSAkSGVscGVyT2JqZWN0LT5HZXRSYW5kb21JRCgpOwoKIyBzZXQgd2Vic2VydmljZSBuYW1lCm15ICRXZWJzZXJ2aWNlTmFtZSA9ICctVGVzdC0nIC4gJEhlbHBlck9iamVjdC0+R2V0UmFuZG9tSUQoKTsKCiMgc2V0IFVzZXJJRCBvbiAxCm15ICRVc2VySUQgPSAxOwoKIyBjcmVhdGUgYWxsIEZBUSBzdHVmZiBuZWVkZWQKbXkgJEZBUU9iamVjdCA9IEtlcm5lbDo6U3lzdGVtOjpGQVEtPm5ldyggJXskU2VsZn0gKTsKCiMgZ2V0IHB1YmxpYyBzdGF0ZXMKbXkgJVN0YXRlcyA9ICRGQVFPYmplY3QtPlN0YXRlTGlzdCgKICAgIFVzZXJJRCA9PiAkVXNlcklELAopOwpteSAkUHVibGljU3RhdGVJRDsKZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJVN0YXRlcyApIHsKICAgIGlmICggJFN0YXRlc3skS2V5fSA9fiAvXnB1YmxpYy4qLyApIHsKICAgICAgICAkUHVibGljU3RhdGVJRCA9ICRLZXk7CiAgICB9Cn0KCiRTZWxmLT5Jc05vdCgKICAgICRQdWJsaWNTdGF0ZUlELAogICAgdW5kZWYsCiAgICAiU2VhcmNoIGZvciBwdWJsaWMgU3RhdGVJRCIsCik7CgojIGNhdGVnb3J5IG9uZQpteSAkQ2F0ZWdvcnlJRE9uZSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5QWRkKAogICAgTmFtZSAgICAgPT4gJ0Nvbm5lY3RvckNhdGVnb3J5T25lJyAuICRXZWJzZXJ2aWNlTmFtZSwKICAgIENvbW1lbnQgID0+ICdDYXRlZ29yeSBmb3IgdGVzdGluZycsCiAgICBQYXJlbnRJRCA9PiAwLAogICAgVmFsaWRJRCAgPT4gMSwKICAgIFVzZXJJRCAgID0+ICRVc2VySUQsCik7CgokU2VsZi0+VHJ1ZSgKICAgICRDYXRlZ29yeUlET25lLAogICAgIkNhdGVnb3J5QWRkKCkgLSBDYXRlZ29yeSIsCik7CgojIGNhdGVnb3J5IHR3bwpteSAkQ2F0ZWdvcnlJRFR3byA9ICRGQVFPYmplY3QtPkNhdGVnb3J5QWRkKAogICAgTmFtZSAgICAgPT4gJ0Nvbm5lY3RvckNhdGVnb3J5VHdvJyAuICRXZWJzZXJ2aWNlTmFtZSwKICAgIENvbW1lbnQgID0+ICdDaGlsZCBDYXRlZ29yeSBmb3IgdGVzdGluZycsCiAgICBQYXJlbnRJRCA9PiAkQ2F0ZWdvcnlJRE9uZSwKICAgIFZhbGlkSUQgID0+IDEsCiAgICBVc2VySUQgICA9PiAkVXNlcklELAopOwoKJFNlbGYtPlRydWUoCiAgICAkQ2F0ZWdvcnlJRFR3bywKICAgICJDYXRlZ29yeUFkZCgpIC0gQ2hpbGQgQ2F0ZWdvcnkiLAopOwoKIyBjYXRlZ29yeSB0aHJlZQpteSAkQ2F0ZWdvcnlJRFRocmVlID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlBZGQoCiAgICBOYW1lICAgICA9PiAnISLCpyQlJi8oKT0/w5wqw4TDlkw6TEAsLi0nIC4gJFdlYnNlcnZpY2VOYW1lLAogICAgQ29tbWVudCAgPT4gJ0NoaWxkIENhdGVnb3J5IGZvciB0ZXN0aW5nJywKICAgIFBhcmVudElEID0+ICRDYXRlZ29yeUlEVHdvLAogICAgVmFsaWRJRCAgPT4gMSwKICAgIFVzZXJJRCAgID0+ICRVc2VySUQsCik7CgokU2VsZi0+VHJ1ZSgKICAgICRDYXRlZ29yeUlEVGhyZWUsCiAgICAiQ2F0ZWdvcnlBZGQoKSAtIENoaWxkIENhdGVnb3J5IiwKKTsKCiMgY2F0ZWdvcnkgZm91cgpteSAkQ2F0ZWdvcnlJREZvdXIgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUFkZCgKICAgIE5hbWUgICAgID0+ICdDb25uZWN0b3JDYXRlZ29yeUZvdXInIC4gJFdlYnNlcnZpY2VOYW1lLAogICAgQ29tbWVudCAgPT4gJ0NhdGVnb3J5IGZvciB0ZXN0aW5nJywKICAgIFBhcmVudElEID0+IDAsCiAgICBWYWxpZElEICA9PiAxLAogICAgVXNlcklEICAgPT4gJFVzZXJJRCwKKTsKCiRTZWxmLT5UcnVlKAogICAgJENhdGVnb3J5SURGb3VyLAogICAgIkNhdGVnb3J5QWRkKCkgLSBDaGlsZCBDYXRlZ29yeSIsCik7CgpteSAkRkFRSURPbmUgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICBUaXRsZSAgICAgID0+ICdUaXRsZSBGQVEgJyAuICRSYW5kb21JRCAuICdPbmUnIC4gJFdlYnNlcnZpY2VOYW1lLAogICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRE9uZSwKICAgIFN0YXRlSUQgICAgPT4gJFB1YmxpY1N0YXRlSUQsCiAgICBMYW5ndWFnZUlEID0+IDEsCiAgICBLZXl3b3JkcyAgID0+ICdzb21lIGtleXdvcmRzJywKICAgIEZpZWxkMSAgICAgPT4gJ1Byb2JsZW0uLi4nLAogICAgRmllbGQyICAgICA9PiAnU29sdXRpb24uLi4nLAogICAgVXNlcklEICAgICA9PiAkVXNlcklELAogICAgQXBwcm92ZWQgICA9PiAxLAopOwoKJFNlbGYtPlRydWUoCiAgICAkRkFRSURPbmUsCiAgICAiRkFRQWRkKCkgLSBGQVEgT25lIiwKKTsKCm15ICRGQVFJRFR3byA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgIFRpdGxlICAgICAgPT4gJ1RpdGxlIEZBUSAnIC4gJFJhbmRvbUlEIC4gJyBUd28nIC4gJFdlYnNlcnZpY2VOYW1lLAogICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRFRocmVlLAogICAgU3RhdGVJRCAgICA9PiAkUHVibGljU3RhdGVJRCwKICAgIExhbmd1YWdlSUQgPT4gMSwKICAgIEtleXdvcmRzICAgPT4gJycsCiAgICBGaWVsZDEgICAgID0+ICdQcm9ibGVtIERlc2NyaXB0aW9uIDEuLi4nLAogICAgRmllbGQyICAgICA9PiAnU29sdXRpb24gbm90IGZvdW5kMS4uLicsCiAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCiAgICBBcHByb3ZlZCAgID0+IDEsCik7CgokU2VsZi0+VHJ1ZSgKICAgICRGQVFJRFR3bywKICAgICJGQVFBZGQoKSAtIEZBUSBUd28iLAopOwoKbXkgJEZBUUlEVGhyZWUgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICBUaXRsZSAgICAgID0+ICdUaXRsZSDkvb/nlKjkuIvliJfor63oqIAgVGhyZWUnIC4gJFdlYnNlcnZpY2VOYW1lLAogICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJREZvdXIsCiAgICBTdGF0ZUlEICAgID0+ICRQdWJsaWNTdGF0ZUlELAogICAgTGFuZ3VhZ2VJRCA9PiAxLAogICAgS2V5d29yZHMgICA9PiAnJywKICAgIEZpZWxkMSAgICAgPT4gJ0xvb2sgZm9yIG1lICcgLiAkUmFuZG9tSUQgLiAnIG9uIHRoZSBzZWFyY2gnLAogICAgRmllbGQyICAgICA9PiAnU29sdXRpb24gbm90IGZvdW5kMS4uLicsCiAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCiAgICBBcHByb3ZlZCAgID0+IDEsCik7CgokU2VsZi0+VHJ1ZSgKICAgICRGQVFJRFRocmVlLAogICAgIkZBUUFkZCgpIC0gRkFRIFRocmVlIiwKKTsKCiMgZmlsZSBjaGVja3MKZm9yIG15ICRGaWxlIChxdyhiaW4gdHh0KSkgewogICAgbXkgJExvY2F0aW9uID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0hvbWUnKQogICAgICAgIC4gIi9zY3JpcHRzL3Rlc3Qvc2FtcGxlL0dlbmVyaWNJbnRlcmZhY2UvRkFRL0dJLUZBUS1UZXN0LXV0ZjgtMS4kRmlsZSI7CgogICAgbXkgJENvbnRlbnRSZWYgPSAkU2VsZi0+e01haW5PYmplY3R9LT5GaWxlUmVhZCgKICAgICAgICBMb2NhdGlvbiA9PiAkTG9jYXRpb24sCiAgICAgICAgTW9kZSAgICAgPT4gJ2Jpbm1vZGUnLAogICAgKTsKCiAgICBteSAkQXR0YWNobWVudCA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRBZGQoCiAgICAgICAgSXRlbUlEICAgICAgPT4gJEZBUUlEVGhyZWUsCiAgICAgICAgQ29udGVudCAgICAgPT4gJHskQ29udGVudFJlZn0sCiAgICAgICAgQ29udGVudFR5cGUgPT4gJ3Rlc3QvJyAuICRGaWxlLAogICAgICAgIEZpbGVuYW1lICAgID0+ICd0ZXN0LicgLiAkRmlsZSwKICAgICAgICBJbmxpbmUgICAgICA9PiAwLCAgICAgICAgICAgICAgICAgIyAoMHwxLCBkZWZhdWx0IDApCiAgICAgICAgVXNlcklEICAgICAgPT4gJFVzZXJJRCwKICAgICk7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkQXR0YWNobWVudCwKICAgICAgICAiQXR0YWNobWVudEFkZCgpIC0gRmlsZSAiIC4gJEZpbGUsCiAgICApOwp9CgpteSAkRkFRSURGb3VyID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgVGl0bGUgICAgICA9PiAnVGl0bGUgRkFRICcgLiAkUmFuZG9tSUQgLiAnINCv0LfRi9C60L7QstGL0LUgRm91cicgLiAkV2Vic2VydmljZU5hbWUsCiAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlERm91ciwKICAgIFN0YXRlSUQgICAgPT4gJFB1YmxpY1N0YXRlSUQsCiAgICBMYW5ndWFnZUlEID0+IDEsCiAgICBLZXl3b3JkcyAgID0+ICcnLAogICAgRmllbGQxICAgICA9PiAnUHJvYmxlbSBEZXNjcmlwdGlvbiAxLi4uJywKICAgIEZpZWxkMiAgICAgPT4gJ1NvbHV0aW9uIG5vdCBmb3VuZDEuLi4nLAogICAgVXNlcklEICAgICA9PiAxLAogICAgQXBwcm92ZWQgICA9PiAxLAopOwoKJFNlbGYtPlRydWUoCiAgICAkRkFRSURGb3VyLAogICAgIkZBUUFkZCgpIC0gRkFRIEZvdXIiLAopOwoKIyBnZXQgbGFuZ3VhZ2VzIGxpc3QKbXkgJUxhbmd1YWdlcyA9ICRGQVFPYmplY3QtPkxhbmd1YWdlTGlzdCgKICAgIFVzZXJJRCA9PiAxLAopOwoKbXkgQExhbmd1YWdlTGlzdDsKZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJUxhbmd1YWdlcyApIHsKICAgIG15ICVMYW5ndWFnZSA9ICgKICAgICAgICBJRCAgID0+ICRLZXksCiAgICAgICAgTmFtZSA9PiAkTGFuZ3VhZ2VzeyRLZXl9LAogICAgKTsKICAgIHB1c2ggQExhbmd1YWdlTGlzdCwgeyVMYW5ndWFnZX07Cn0KCiMgZ2V0IEZBUQpteSAlRkFRT25lID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgSXRlbUlEICAgICA9PiAkRkFRSURPbmUsCiAgICBJdGVtRmllbGRzID0+IDEsCiAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCik7CmZvcmVhY2ggbXkgJEtleSAoIGtleXMgJUZBUU9uZSApIHsKICAgIGlmICggISRGQVFPbmV7JEtleX0gKSB7CiAgICAgICAgJEZBUU9uZXskS2V5fSA9ICcnOwogICAgfQp9CgpteSAlRkFRVHdvID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgSXRlbUlEICAgICA9PiAkRkFRSURUd28sCiAgICBJdGVtRmllbGRzID0+IDEsCiAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCik7CmZvcmVhY2ggbXkgJEtleSAoIGtleXMgJUZBUVR3byApIHsKICAgIGlmICggISRGQVFUd297JEtleX0gKSB7CiAgICAgICAgJEZBUVR3b3skS2V5fSA9ICcnOwogICAgfQp9CgpteSAlRkFRVGhyZWUgPSAkRkFRT2JqZWN0LT5GQVFHZXQoCiAgICBJdGVtSUQgICAgID0+ICRGQVFJRFRocmVlLAogICAgSXRlbUZpZWxkcyA9PiAxLAogICAgVXNlcklEICAgICA9PiAkVXNlcklELAopOwpmb3JlYWNoIG15ICRLZXkgKCBrZXlzICVGQVFUaHJlZSApIHsKICAgIGlmICggISRGQVFUaHJlZXskS2V5fSApIHsKICAgICAgICAkRkFRVGhyZWV7JEtleX0gPSAnJzsKICAgIH0KfQoKbXkgQEluZGV4ID0gJEZBUU9iamVjdC0+QXR0YWNobWVudEluZGV4KAogICAgSXRlbUlEICAgICA9PiAkRkFRSURUaHJlZSwKICAgIFNob3dJbmxpbmUgPT4gMSwgICAgICAgICAgICAgIyAgICggMHwxLCBkZWZhdWx0IDEpCiAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCik7CgpteSBAQXR0YWNobWVudHNUaHJlZTsKZm9yIG15ICRBdHRhY2htZW50IChASW5kZXgpIHsKICAgIG15ICVGaWxlID0gJEZBUU9iamVjdC0+QXR0YWNobWVudEdldCgKICAgICAgICBJdGVtSUQgPT4gJEZBUUlEVGhyZWUsCiAgICAgICAgRmlsZUlEID0+ICRBdHRhY2htZW50LT57RmlsZUlEfSwKICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICk7CgogICAgIyBjb252ZXJ0IGNvbnRlbnQgdG8gYmFzZTY0CiAgICAkRmlsZXtDb250ZW50fSA9IGVuY29kZV9iYXNlNjQoICRGaWxle0NvbnRlbnR9ICk7CiAgICBwdXNoIEBBdHRhY2htZW50c1RocmVlLCB7JUZpbGV9Owp9CgpteSAlRkFRRm91ciA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgIEl0ZW1JRCAgICAgPT4gJEZBUUlERm91ciwKICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgIFVzZXJJRCAgICAgPT4gJFVzZXJJRCwKKTsKZm9yZWFjaCBteSAkS2V5ICgga2V5cyAlRkFRRm91ciApIHsKICAgIGlmICggISRGQVFGb3VyeyRLZXl9ICkgewogICAgICAgICRGQVFGb3VyeyRLZXl9ID0gJyc7CiAgICB9Cn0KCiMgZ2V0IGFsbCBjYXRlZ29yaWVzIHdpdGggdGhlaXIgbG9uZyBuYW1lcwpteSAkQ2F0ZWdvcnlUcmVlID0gJEZBUU9iamVjdC0+R2V0UHVibGljQ2F0ZWdvcmllc0xvbmdOYW1lcygKICAgIFZhbGlkICA9PiAxLAogICAgVHlwZSAgID0+ICdydycsCiAgICBVc2VySUQgPT4gJFVzZXJJRCwKKTsKbXkgQFB1YmxpY0NhdGVnb3J5TGlzdDsKZm9yIG15ICRLZXkgKCBzb3J0KCBrZXlzICV7JENhdGVnb3J5VHJlZX0gKSApIHsKICAgIG15ICVDYXRlZ29yeSA9ICgKICAgICAgICBJRCAgID0+ICRLZXksCiAgICAgICAgTmFtZSA9PiAkQ2F0ZWdvcnlUcmVlLT57JEtleX0sCiAgICApOwogICAgcHVzaCBAUHVibGljQ2F0ZWdvcnlMaXN0LCB7JUNhdGVnb3J5fTsKfQoKIyBjcmVhdGUgd2Vic2VydmljZSBvYmplY3QKbXkgJFdlYnNlcnZpY2VPYmplY3QgPSBLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZS0+bmV3KCAleyRTZWxmfSApOwokU2VsZi0+SXMoCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyaWNJbnRlcmZhY2U6OldlYnNlcnZpY2UnLAogICAgcmVmICRXZWJzZXJ2aWNlT2JqZWN0LAogICAgIkNyZWF0ZSB3ZWJzZXJ2aWNlIG9iamVjdCIsCik7CgpteSAkV2Vic2VydmljZUlEID0gJFdlYnNlcnZpY2VPYmplY3QtPldlYnNlcnZpY2VBZGQoCiAgICBOYW1lICAgPT4gJFdlYnNlcnZpY2VOYW1lLAogICAgQ29uZmlnID0+IHsKICAgICAgICBEZWJ1Z2dlciA9PiB7CiAgICAgICAgICAgIERlYnVnVGhyZXNob2xkID0+ICdkZWJ1ZycsCiAgICAgICAgICAgIFRlc3RNb2RlICAgICAgID0+IDEsCiAgICAgICAgfSwKICAgICAgICBQcm92aWRlciA9PiB7CiAgICAgICAgICAgIFRyYW5zcG9ydCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdIVFRQOjpTT0FQJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKICAgIFZhbGlkSUQgPT4gMSwKICAgIFVzZXJJRCAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkV2Vic2VydmljZUlELAogICAgIkFkZGVkIFdlYnNlcnZpY2UiLAopOwoKIyBnZXQgcmVtb3RlIGhvc3Qgd2l0aCBzb21lIHByZWNhdXRpb25zIGZvciBjZXJ0YWluIHVuaXQgdGVzdCBzeXN0ZW1zCm15ICRIb3N0OwpteSAkRlFETiA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGUUROJyk7CgojIHRyeSB0byByZXNvbHZlIGZxZG4gaG9zdAppZiAoICRGUUROIG5lICd5b3VyaG9zdC5leGFtcGxlLmNvbScgJiYgZ2V0aG9zdGJ5bmFtZSgkRlFETikgKSB7CiAgICAkSG9zdCA9ICRGUUROOwp9CgojIHRyeSB0byByZXNvbHZlIGxvY2FsaG9zdCBpbnN0ZWFkCmlmICggISRIb3N0ICYmIGdldGhvc3RieW5hbWUoJ2xvY2FsaG9zdCcpICkgewogICAgJEhvc3QgPSAnbG9jYWxob3N0JzsKfQoKIyB1c2UgaGFyZGNvZGVkIGxvY2FsaG9zdCBpcCBhZGRyZXNzCmlmICggISRIb3N0ICkgewogICAgJEhvc3QgPSAnMTI3LjAuMC4xJzsKfQoKIyBwcmVwYXJlIHdlYnNlcnZpY2UgY29uZmlnCm15ICRSZW1vdGVTeXN0ZW0gPQogICAgJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0h0dHBUeXBlJykKICAgIC4gJzovLycKICAgIC4gJEhvc3QKICAgIC4gJy8nCiAgICAuICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdTY3JpcHRBbGlhcycpCiAgICAuICcvbnBoLWdlbmVyaWNpbnRlcmZhY2UucGwvV2Vic2VydmljZUlELycKICAgIC4gJFdlYnNlcnZpY2VJRDsKCm15ICRXZWJzZXJ2aWNlQ29uZmlnID0gewoKICAgICMgICAgTmFtZSA9PiAnJywKICAgIERlc2NyaXB0aW9uID0+CiAgICAgICAgJ1Rlc3QgZm9yICB1c2luZyBTT0FQIHRyYW5zcG9ydCBiYWNrZW5kLicsCiAgICBEZWJ1Z2dlciA9PiB7CiAgICAgICAgRGVidWdUaHJlc2hvbGQgPT4gJ2RlYnVnJywKICAgICAgICBUZXN0TW9kZSAgICAgICA9PiAxLAogICAgfSwKICAgIFByb3ZpZGVyID0+IHsKICAgICAgICBUcmFuc3BvcnQgPT4gewogICAgICAgICAgICBUeXBlICAgPT4gJ0hUVFA6OlNPQVAnLAogICAgICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDEwMDAwMDAwLAogICAgICAgICAgICAgICAgTmFtZVNwYWNlID0+ICdodHRwOi8vb3Rycy5vcmcvU29hcFRlc3RJbnRlcmZhY2UvJywKICAgICAgICAgICAgICAgIEVuZHBvaW50ICA9PiAkUmVtb3RlU3lzdGVtLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+IHsKICAgICAgICAgICAgTGFuZ3VhZ2VMaXN0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ0ZBUTo6TGFuZ3VhZ2VMaXN0JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgUHVibGljQ2F0ZWdvcnlMaXN0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ0ZBUTo6UHVibGljQ2F0ZWdvcnlMaXN0JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgUHVibGljRkFRU2VhcmNoID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ0ZBUTo6UHVibGljRkFRU2VhcmNoJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgUHVibGljRkFRR2V0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ0ZBUTo6UHVibGljRkFRR2V0JywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKICAgIFJlcXVlc3RlciA9PiB7CiAgICAgICAgVHJhbnNwb3J0ID0+IHsKICAgICAgICAgICAgVHlwZSAgID0+ICdIVFRQOjpTT0FQJywKICAgICAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgICAgIE5hbWVTcGFjZSA9PiAnaHR0cDovL290cnMub3JnL1NvYXBUZXN0SW50ZXJmYWNlLycsCiAgICAgICAgICAgICAgICBFbmNvZGluZyAgPT4gJ1VURi04JywKICAgICAgICAgICAgICAgIEVuZHBvaW50ICA9PiAkUmVtb3RlU3lzdGVtLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgSW52b2tlciA9PiB7CiAgICAgICAgICAgIExhbmd1YWdlTGlzdCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdUZXN0OjpUZXN0U2ltcGxlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgUHVibGljQ2F0ZWdvcnlMaXN0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1Rlc3Q6OlRlc3RTaW1wbGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBQdWJsaWNGQVFTZWFyY2ggPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnVGVzdDo6VGVzdFNpbXBsZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFB1YmxpY0ZBUUdldCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdUZXN0OjpUZXN0U2ltcGxlJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKfTsKCiMgdXBkYXRlIHdlYnNlcnZpY2Ugd2l0aCByZWFsIGNvbmZpZwpteSAkV2Vic2VydmljZVVwZGF0ZSA9ICRXZWJzZXJ2aWNlT2JqZWN0LT5XZWJzZXJ2aWNlVXBkYXRlKAogICAgSUQgICAgICA9PiAkV2Vic2VydmljZUlELAogICAgTmFtZSAgICA9PiAkV2Vic2VydmljZU5hbWUsCiAgICBDb25maWcgID0+ICRXZWJzZXJ2aWNlQ29uZmlnLAogICAgVmFsaWRJRCA9PiAxLAogICAgVXNlcklEICA9PiAkVXNlcklELAopOwokU2VsZi0+VHJ1ZSgKICAgICRXZWJzZXJ2aWNlVXBkYXRlLAogICAgIlVwZGF0ZWQgV2Vic2VydmljZSAkV2Vic2VydmljZUlEIC0gJFdlYnNlcnZpY2VOYW1lIiwKKTsKCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgPT4gJ1Rlc3QgMScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgICAgICAgICAgID0+ICcxJywKICAgICAgICBSZXF1ZXN0RGF0YSAgICAgICAgICAgICAgPT4ge30sCiAgICAgICAgRXhwZWN0ZWRSZXR1cm5SZW1vdGVEYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBMYW5ndWFnZSA9PiBcQExhbmd1YWdlTGlzdCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdMYW5ndWFnZUxpc3QnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgPT4gJ1Rlc3QgMicsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgICAgICAgICAgID0+ICcxJywKICAgICAgICBSZXF1ZXN0RGF0YSAgICAgICAgICAgICAgPT4ge30sCiAgICAgICAgRXhwZWN0ZWRSZXR1cm5SZW1vdGVEYXRhID0+IHsKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgICAgICBEYXRhICAgID0+IHsKICAgICAgICAgICAgICAgIENhdGVnb3J5ID0+IFxAUHVibGljQ2F0ZWdvcnlMaXN0LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdQdWJsaWNDYXRlZ29yeUxpc3QnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnVGVzdCAzJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAnMScsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBUaXRsZSAgID0+ICdUaXRsZSBGQVEgJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgT3JkZXJCeSA9PiAnRkFRSUQnLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXR1cm5SZW1vdGVEYXRhID0+IHsKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgICAgICBEYXRhICAgID0+IHsKICAgICAgICAgICAgICAgIElEID0+IFsKICAgICAgICAgICAgICAgICAgICAkRkFRSURGb3VyLAogICAgICAgICAgICAgICAgICAgICRGQVFJRFR3bywKICAgICAgICAgICAgICAgICAgICAkRkFRSURPbmUsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdQdWJsaWNGQVFTZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnVGVzdCA0JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAnMScsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBXaGF0ICAgID0+ICdMb29rIGZvciBtZSAnIC4gJFJhbmRvbUlELAogICAgICAgICAgICBPcmRlckJ5ID0+ICdGQVFJRCcsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJldHVyblJlbW90ZURhdGEgPT4gewogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgICAgIERhdGEgICAgPT4gewogICAgICAgICAgICAgICAgSUQgPT4gJEZBUUlEVGhyZWUsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ1B1YmxpY0ZBUVNlYXJjaCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdUZXN0IDUnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+ICcxJywKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIEl0ZW1JRCA9PiAkRkFRSURGb3VyLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXR1cm5SZW1vdGVEYXRhID0+IHsKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgICAgICBEYXRhICAgID0+IHsKICAgICAgICAgICAgICAgIEZBUUl0ZW0gPT4gewogICAgICAgICAgICAgICAgICAgICVGQVFGb3VyLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmV0dXJuTG9jYWxEYXRhID0+IHsKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgICAgICBEYXRhICAgID0+IHsKICAgICAgICAgICAgICAgIEZBUUl0ZW0gPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgJUZBUUZvdXIsCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnUHVibGljRkFRR2V0JywKICAgICAgICBJdGVtSUQgICAgPT4gJEZBUUlERm91ciwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1Rlc3QgNicsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gJzEnLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgSUQgPT4gJEZBUUlERm91ciwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmV0dXJuUmVtb3RlRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnUHVibGljRkFRR2V0Lk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnUHVibGljRkFRR2V0OiBHb3Qgbm8gSXRlbUlEIScKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMQoKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmV0dXJuTG9jYWxEYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdQdWJsaWNGQVFHZXQuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdQdWJsaWNGQVFHZXQ6IEdvdCBubyBJdGVtSUQhJwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxCgogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdQdWJsaWNGQVFHZXQnLAogICAgICAgIEl0ZW1JRCAgICA9PiAkRkFRSURGb3VyLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnVGVzdCA3JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAnMScsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBJdGVtSUQgPT4gJ05vdEl0ZW1JRCcsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJldHVyblJlbW90ZURhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ1B1YmxpY0ZBUUdldC5Ob3RWYWxpZEZBUUlEJywKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAgICAgJ1B1YmxpY0ZBUUdldDogQ291bGQgbm90IGdldCBGQVEgZGF0YSBpbiBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6RkFROjpQdWJsaWNGQVFHZXQ6OlJ1bigpJwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxCgogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXR1cm5Mb2NhbERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ1B1YmxpY0ZBUUdldC5Ob3RWYWxpZEZBUUlEJywKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAgICAgJ1B1YmxpY0ZBUUdldDogQ291bGQgbm90IGdldCBGQVEgZGF0YSBpbiBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6RkFROjpQdWJsaWNGQVFHZXQ6OlJ1bigpJwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxCgogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdQdWJsaWNGQVFHZXQnLAogICAgICAgIEl0ZW1JRCAgICA9PiAnTm90SXRlbUlEJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1Rlc3QgOCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gJzEnLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgSXRlbUlEID0+ICRGQVFJRFRocmVlLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXR1cm5SZW1vdGVEYXRhID0+IHsKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgICAgICBEYXRhICAgID0+IHsKICAgICAgICAgICAgICAgIEZBUUl0ZW0gPT4gewogICAgICAgICAgICAgICAgICAgICVGQVFUaHJlZSwKICAgICAgICAgICAgICAgICAgICBBdHRhY2htZW50ID0+IFxAQXR0YWNobWVudHNUaHJlZSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJldHVybkxvY2FsRGF0YSA9PiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICAgICAgRGF0YSAgICA9PiB7CiAgICAgICAgICAgICAgICBGQVFJdGVtID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICVGQVFUaHJlZSwKICAgICAgICAgICAgICAgICAgICAgICAgQXR0YWNobWVudCA9PiBcQEF0dGFjaG1lbnRzVGhyZWUsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ1B1YmxpY0ZBUUdldCcsCiAgICAgICAgSXRlbUlEICAgID0+ICRGQVFJRFRocmVlLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnVGVzdCA5JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAnMScsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBPcmRlckJ5ID0+ICdOb3RFeGlzdGluZ0ZpZWxkJywKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmV0dXJuUmVtb3RlRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnUHVibGljRkFRU2VhcmNoLk5vdEZBUURhdGEnLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAnUHVibGljRkFRU2VhcmNoOiBDb3VsZCBub3QgZ2V0IEZBUSBkYXRhIGluIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpGQVE6OlB1YmxpY0ZBUVNlYXJjaDo6UnVuKCknCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmV0dXJuTG9jYWxEYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdQdWJsaWNGQVFTZWFyY2guTm90RkFRRGF0YScsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgICAgICdQdWJsaWNGQVFTZWFyY2g6IENvdWxkIG5vdCBnZXQgRkFRIGRhdGEgaW4gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkZBUTo6UHVibGljRkFRU2VhcmNoOjpSdW4oKScKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMQogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdQdWJsaWNGQVFTZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnVGVzdCAxMCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gJzEnLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgV2hhdCA9PiAnTm90RXhpc3RpbmdWYWx1ZScsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJldHVyblJlbW90ZURhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ1B1YmxpY0ZBUVNlYXJjaC5Ob3RGQVFEYXRhJywKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAgICAgJ1B1YmxpY0ZBUVNlYXJjaDogQ291bGQgbm90IGdldCBGQVEgZGF0YSBpbiBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6RkFROjpQdWJsaWNGQVFTZWFyY2g6OlJ1bigpJwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJldHVybkxvY2FsRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnUHVibGljRkFRU2VhcmNoLk5vdEZBUURhdGEnLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAnUHVibGljRkFRU2VhcmNoOiBDb3VsZCBub3QgZ2V0IEZBUSBkYXRhIGluIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpGQVE6OlB1YmxpY0ZBUVNlYXJjaDo6UnVuKCknCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnUHVibGljRkFRU2VhcmNoJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1Rlc3QgMTEnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+ICcxJywKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIEl0ZW1JRCA9PiAiJEZBUUlET25lLCRGQVFJRFR3bywkRkFRSURUaHJlZSIsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJldHVyblJlbW90ZURhdGEgPT4gewogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgICAgIERhdGEgICAgPT4gewogICAgICAgICAgICAgICAgRkFRSXRlbSA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAlRkFRT25lLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAlRkFRVHdvLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAlRkFRVGhyZWUsCiAgICAgICAgICAgICAgICAgICAgICAgIEF0dGFjaG1lbnQgPT4gXEBBdHRhY2htZW50c1RocmVlLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdQdWJsaWNGQVFHZXQnLAogICAgICAgIEl0ZW1JRCAgICA9PiAiJEZBUUlET25lLCRGQVFJRFR3bywkRkFRSURUaHJlZSIsCiAgICB9LAoKKTsKCiMgZGVidWdnZXIgb2JqZWN0Cm15ICREZWJ1Z2dlck9iamVjdCA9IEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6RGVidWdnZXItPm5ldygKICAgICV7JFNlbGZ9LAogICAgRGVidWdnZXJDb25maWcgPT4gewogICAgICAgIERlYnVnVGhyZXNob2xkID0+ICdkZWJ1ZycsCiAgICAgICAgVGVzdE1vZGUgICAgICAgPT4gMSwKICAgIH0sCiAgICBXZWJzZXJ2aWNlSUQgICAgICA9PiAkV2Vic2VydmljZUlELAogICAgQ29tbXVuaWNhdGlvblR5cGUgPT4gJ1Byb3ZpZGVyJywKKTsKJFNlbGYtPklzKAogICAgcmVmICREZWJ1Z2dlck9iamVjdCwKICAgICdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OkRlYnVnZ2VyJywKICAgICdEZWJ1Z2dlck9iamVjdCBpbnN0YW5jaWF0ZSBjb3JyZWN0bHknLAopOwoKZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKCiAgICAjIGNyZWF0ZSBsb2NhbCBvYmplY3QKICAgIG15ICRMb2NhbE9iamVjdCA9ICJLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6RkFROjokVGVzdC0+e09wZXJhdGlvbn0iLT5uZXcoCiAgICAgICAgJXskU2VsZn0sCiAgICAgICAgRGVidWdnZXJPYmplY3QgPT4gJERlYnVnZ2VyT2JqZWN0LAogICAgICAgIFdlYnNlcnZpY2VJRCAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICApOwoKICAgICRTZWxmLT5JcygKICAgICAgICAiS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkZBUTo6JFRlc3QtPntPcGVyYXRpb259IiwKICAgICAgICByZWYgJExvY2FsT2JqZWN0LAogICAgICAgICIkVGVzdC0+e05hbWV9IC0gQ3JlYXRlIGxvY2FsIG9iamVjdCIsCiAgICApOwoKICAgICMgc3RhcnQgcmVxdWVzdGVyIHdpdGggb3VyIHdlYnNlcnZpY2UKICAgIG15ICRMb2NhbFJlc3VsdCA9ICRMb2NhbE9iamVjdC0+UnVuKAogICAgICAgIFdlYnNlcnZpY2VJRCA9PiAkV2Vic2VydmljZUlELAogICAgICAgIEludm9rZXIgICAgICA9PiAkVGVzdC0+e09wZXJhdGlvbn0sCiAgICAgICAgRGF0YSAgICAgICAgID0+ICRUZXN0LT57UmVxdWVzdERhdGF9LAogICAgKTsKCiAgICAjIGNoZWNrIHJlc3VsdAogICAgJFNlbGYtPklzKAogICAgICAgICdIQVNIJywKICAgICAgICByZWYgJExvY2FsUmVzdWx0LAogICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IHN0cnVjdHVyZSBpcyB2YWxpZCIsCiAgICApOwoKICAgICMgd29ya2Fyb3VuZCBiZWNhdXNlIHJlc3VsdHMgZnJvbSBkaXJlY3QgY2FsbCBhbmQKICAgICMgZnJvbSBTT0FQIGNhbGwgYXJlIGEgbGl0dGxlIGJpdCBkaWZmZXJlbnQKICAgIGlmICggJFRlc3QtPntPcGVyYXRpb259IGVxICdQdWJsaWNGQVFHZXQnICkgewoKICAgICAgICBpZiAoIHJlZiAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0ZBUUl0ZW19IGVxICdBUlJBWScgKSB7CiAgICAgICAgICAgIGZvciBteSAkRkFRSXRlbSAoIEB7ICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57RkFRSXRlbX0gfSApIHsKICAgICAgICAgICAgICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICV7JEZBUUl0ZW19ICkgewogICAgICAgICAgICAgICAgICAgIGlmICggISRGQVFJdGVtLT57JEtleX0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRGQVFJdGVtLT57JEtleX0gPSAnJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgfQoKICAgICMgcmVtb3ZlIEVycm9yTWVzc2FnZSBwYXJhbWV0ZXIgZnJvbSBkaXJlY3QgY2FsbAogICAgIyByZXN1bHQgdG8gYmUgY29uc2lzdGVudCB3aXRoIFNPQVAgY2FsbCByZXN1bHQKICAgIGlmICggJExvY2FsUmVzdWx0LT57RXJyb3JNZXNzYWdlfSApIHsKICAgICAgICBkZWxldGUgJExvY2FsUmVzdWx0LT57RXJyb3JNZXNzYWdlfTsKICAgIH0KCiAgICBpZiAoICRUZXN0LT57RXhwZWN0ZWRSZXR1cm5Mb2NhbERhdGF9ICkgewogICAgICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LAogICAgICAgICAgICAkVGVzdC0+e0V4cGVjdGVkUmV0dXJuTG9jYWxEYXRhfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgbWF0Y2hlZCB3aXRoIHJlbW90ZSByZXN1bHQuIiwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgICAgICAkTG9jYWxSZXN1bHQsCiAgICAgICAgICAgICRUZXN0LT57RXhwZWN0ZWRSZXR1cm5SZW1vdGVEYXRhfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgbWF0Y2hlZCB3aXRoIHJlbW90ZSByZXN1bHQuIiwKICAgICAgICApOwogICAgfQoKICAgICMgcmVtb3RlIGNhbGwgdXNpbmcgdGhlIHN5c3RlbSBhcyBSZXF1ZXN0ZXIgYW5kIFByb3ZpZGVyCgogICAgIyBjcmVhdGUgcmVxdWVzdGVyIG9iamVjdAogICAgbXkgJFJlcXVlc3Rlck9iamVjdCA9IEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyLT5uZXcoICV7JFNlbGZ9ICk7CiAgICAkU2VsZi0+SXMoCiAgICAgICAgJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyJywKICAgICAgICByZWYgJFJlcXVlc3Rlck9iamVjdCwKICAgICAgICAiJFRlc3QtPntOYW1lfSAtIENyZWF0ZSByZXF1ZXN0ZXIgb2JqZWN0IiwKICAgICk7CgogICAgIyBzdGFydCByZXF1ZXN0ZXIgd2l0aCBvdXIgd2Vic2VydmljZQogICAgbXkgJFJlcXVlc3RlclJlc3VsdCA9ICRSZXF1ZXN0ZXJPYmplY3QtPlJ1bigKICAgICAgICBXZWJzZXJ2aWNlSUQgPT4gJFdlYnNlcnZpY2VJRCwKICAgICAgICBJbnZva2VyICAgICAgPT4gJFRlc3QtPntPcGVyYXRpb259LAogICAgICAgIERhdGEgICAgICAgICA9PiAkVGVzdC0+e1JlcXVlc3REYXRhfSwKICAgICk7CgogICAgIyBjaGVjayByZXN1bHQKICAgICRTZWxmLT5JcygKICAgICAgICAnSEFTSCcsCiAgICAgICAgcmVmICRSZXF1ZXN0ZXJSZXN1bHQsCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBSZXF1ZXN0ZXIgcmVzdWx0IHN0cnVjdHVyZSBpcyB2YWxpZCIsCiAgICApOwoKICAgICMgd29ya2Fyb3VuZCBiZWNhdXNlIHJlc3VsdHMgZnJvbSBkaXJlY3QgY2FsbCBhbmQKICAgICMgZnJvbSBTT0FQIGNhbGwgYXJlIGEgbGl0dGxlIGJpdCBkaWZmZXJlbnQKICAgIGlmICggJFRlc3QtPntPcGVyYXRpb259IGVxICdQdWJsaWNGQVFHZXQnICYmICRUZXN0LT57U3VjY2Vzc1JlcXVlc3R9ICkgewoKICAgICAgICBpZiAoIHJlZiAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntGQVFJdGVtfSBlcSAnSEFTSCcgKSB7CiAgICAgICAgICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICV7ICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0ZBUUl0ZW19IH0gKSB7CiAgICAgICAgICAgICAgICBpZiAoICEkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntGQVFJdGVtfS0+eyRLZXl9ICkgewogICAgICAgICAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0ZBUUl0ZW19LT57JEtleX0gPSAnJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNpZiAoIHJlZiAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntGQVFJdGVtfSBlcSAnQVJSQVknICkgewogICAgICAgICAgICBmb3IgbXkgJEZBUUl0ZW0gKCBAeyAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntGQVFJdGVtfSB9ICkgewogICAgICAgICAgICAgICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJXskRkFRSXRlbX0gKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJEZBUUl0ZW0tPnskS2V5fSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEZBUUl0ZW0tPnskS2V5fSA9ICcnOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAkU2VsZi0+SXMoCiAgICAgICAgJFJlcXVlc3RlclJlc3VsdC0+e1N1Y2Nlc3N9LAogICAgICAgICRUZXN0LT57U3VjY2Vzc1JlcXVlc3R9LAogICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIC0gU3VjY2VzcyBzdGF0dXMiLAogICAgKTsKCiAgICAkU2VsZi0+SXNEZWVwbHkoCiAgICAgICAgJFJlcXVlc3RlclJlc3VsdCwKICAgICAgICAkVGVzdC0+e0V4cGVjdGVkUmV0dXJuUmVtb3RlRGF0YX0sCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBSZXF1ZXN0ZXIgc3VjY2Vzc2Z1bCByZXN1bHQgKG5lZWRzIGNvbmZpZ3VyZWQgYW5kIHJ1bm5pbmcgd2Vic2VydmVyKSIsCiAgICApOwoKfSAgICAjZW5kIGxvb3AKCiMgY2xlYW4gdXAgd2Vic2VydmljZQpteSAkV2Vic2VydmljZURlbGV0ZSA9ICRXZWJzZXJ2aWNlT2JqZWN0LT5XZWJzZXJ2aWNlRGVsZXRlKAogICAgSUQgICAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICBVc2VySUQgPT4gJFVzZXJJRCwKKTsKJFNlbGYtPlRydWUoCiAgICAkV2Vic2VydmljZURlbGV0ZSwKICAgICJEZWxldGVkIFdlYnNlcnZpY2UgJFdlYnNlcnZpY2VJRCIsCik7CgojIGNsZWFuIHVwIEZBUSBzdHVmZgpteSAkRkFRRGVsZXRlID0gJEZBUU9iamVjdC0+RkFRRGVsZXRlKAogICAgSXRlbUlEID0+ICRGQVFJRE9uZSwKICAgIFVzZXJJRCA9PiAkVXNlcklELAopOwokU2VsZi0+VHJ1ZSgKICAgICRGQVFEZWxldGUsCiAgICAiRkFRRGVsZXRlKCkgLSBGQVFJRDogJEZBUUlET25lIiwKKTsKCiRGQVFEZWxldGUgPSAkRkFRT2JqZWN0LT5GQVFEZWxldGUoCiAgICBJdGVtSUQgPT4gJEZBUUlEVHdvLAogICAgVXNlcklEID0+ICRVc2VySUQsCik7CiRTZWxmLT5UcnVlKAogICAgJEZBUURlbGV0ZSwKICAgICJGQVFEZWxldGUoKSAtIEZBUUlEOiAkRkFRSURUd28iLAopOwoKJEZBUURlbGV0ZSA9ICRGQVFPYmplY3QtPkZBUURlbGV0ZSgKICAgIEl0ZW1JRCA9PiAkRkFRSURUaHJlZSwKICAgIFVzZXJJRCA9PiAkVXNlcklELAopOwokU2VsZi0+VHJ1ZSgKICAgICRGQVFEZWxldGUsCiAgICAiRkFRRGVsZXRlKCkgLSBGQVFJRDogJEZBUUlEVGhyZWUiLAopOwoKJEZBUURlbGV0ZSA9ICRGQVFPYmplY3QtPkZBUURlbGV0ZSgKICAgIEl0ZW1JRCA9PiAkRkFRSURGb3VyLAogICAgVXNlcklEID0+ICRVc2VySUQsCik7CiRTZWxmLT5UcnVlKAogICAgJEZBUURlbGV0ZSwKICAgICJGQVFEZWxldGUoKSAtIEZBUUlEOiAkRkFRSURGb3VyIiwKKTsKCm15ICRDYXRlZ29yeURlbGV0ZSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5RGVsZXRlKAogICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJREZvdXIsCiAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCik7CgokU2VsZi0+VHJ1ZSgKICAgICRDYXRlZ29yeURlbGV0ZSwKICAgICJDYXRlZ29yeURlbGV0ZSgpIC0gQ2F0ZWdvcnk6ICRDYXRlZ29yeUlERm91ciIsCik7CgokQ2F0ZWdvcnlEZWxldGUgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeURlbGV0ZSgKICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SURUaHJlZSwKICAgIFVzZXJJRCAgICAgPT4gJFVzZXJJRCwKKTsKCiRTZWxmLT5UcnVlKAogICAgJENhdGVnb3J5RGVsZXRlLAogICAgIkNhdGVnb3J5RGVsZXRlKCkgLSBDYXRlZ29yeTogJENhdGVnb3J5SURUaHJlZSIsCik7CgokQ2F0ZWdvcnlEZWxldGUgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeURlbGV0ZSgKICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SURUd28sCiAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCik7CgokU2VsZi0+VHJ1ZSgKICAgICRDYXRlZ29yeURlbGV0ZSwKICAgICJDYXRlZ29yeURlbGV0ZSgpIC0gQ2F0ZWdvcnk6ICRDYXRlZ29yeUlEVHdvIiwKKTsKCiRDYXRlZ29yeURlbGV0ZSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5RGVsZXRlKAogICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRE9uZSwKICAgIFVzZXJJRCAgICAgPT4gJFVzZXJJRCwKKTsKCiRTZWxmLT5UcnVlKAogICAgJENhdGVnb3J5RGVsZXRlLAogICAgIkNhdGVnb3J5RGVsZXRlKCkgLSBDYXRlZ29yeTogJENhdGVnb3J5SURPbmUiLAopOwoKMTsK
fi91dGYtOC1maWxlLcOkw7bDvMOfLeOCq+OCueOCv+ODni50eHQKCkp1c3QgdGV4dCBmb3IgdGhlIGF0dGFjaG1lbnQKCuS9v+eUqOS4i+WIl+ivreiogAoK0K/Qt9GL0LrQvtCy0YvQtQoKISLCpyQlJi8oKT0/w5wqw4TDlkw6TEAsLi0K
fi91dGYtOC1maWxlLcOkw7bDvMOfLeOCq+OCueOCv+ODni50eHQKCkp1c3QgdGV4dCBmb3IgdGhlIGF0dGFjaG1lbnQKCuS9v+eUqOS4i+WIl+ivreiogAoK0K/Qt9GL0LrQvtCy0YvQtQoKISLCpyQlJi8oKT0/w5wqw4TDlkw6TEAsLi0K
JVBERi0xLjQKJaqrrK0KNCAwIG9iago8PAovUHJvZHVjZXIgKEFwYWNoZSBGT1AgVmVyc2lvbiAwLjk1KQovQ3JlYXRpb25EYXRlIChEOjIwMTMxMTAxMjMzODA4KzAxJzAwJykKPj4KZW5kb2JqCjUgMCBvYmoKPDwKICAvTiAzCiAgL0xlbmd0aCAxMiAwIFIKICAvRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeJydlndUU9kWh8+9N71QkhCKlNBraFICSA29SJEuKjEJEErAkAAiNkRUcERRkaYIMijggKNDkbEiioUBUbHrBBlE1HFwFBuWSWStGd+8ee/Nm98f935rn73P3Wfvfda6AJD8gwXCTFgJgAyhWBTh58WIjYtnYAcBDPAAA2wA4HCzs0IW+EYCmQJ82IxsmRP4F726DiD5+yrTP4zBAP+flLlZIjEAUJiM5/L42VwZF8k4PVecJbdPyZi2NE3OMErOIlmCMlaTc/IsW3z2mWUPOfMyhDwZy3PO4mXw5Nwn4405Er6MkWAZF+cI+LkyviZjg3RJhkDGb+SxGXxONgAoktwu5nNTZGwtY5IoMoIt43kA4EjJX/DSL1jMzxPLD8XOzFouEiSniBkmXFOGjZMTi+HPz03ni8XMMA43jSPiMdiZGVkc4XIAZs/8WRR5bRmyIjvYODk4MG0tbb4o1H9d/JuS93aWXoR/7hlEH/jD9ld+mQ0AsKZltdn6h21pFQBd6wFQu/2HzWAvAIqyvnUOfXEeunxeUsTiLGcrq9zcXEsBn2spL+jv+p8Of0NffM9Svt3v5WF485M4knQxQ143bmZ6pkTEyM7icPkM5p+H+B8H/nUeFhH8JL6IL5RFRMumTCBMlrVbyBOIBZlChkD4n5r4D8P+pNm5lona+BHQllgCpSEaQH4eACgqESAJe2Qr0O99C8ZHA/nNi9GZmJ37z4L+fVe4TP7IFiR/jmNHRDK4ElHO7Jr8WgI0IABFQAPqQBvoAxPABLbAEbgAD+ADAkEoiARxYDHgghSQAUQgFxSAtaAYlIKtYCeoBnWgETSDNnAYdIFj4DQ4By6By2AE3AFSMA6egCnwCsxAEISFyBAVUod0IEPIHLKFWJAb5AMFQxFQHJQIJUNCSAIVQOugUqgcqobqoWboW+godBq6AA1Dt6BRaBL6FXoHIzAJpsFa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zOTZd794/DIwFTs1/lz0/NOvm1+ov9j/0u5l73TY9P1XGa9mXpe8UX9z4C3rbf+7mHcTM7nvse8rP5h+6PkY9PHup4xPn34D94Tz+wplbmRzdHJlYW0KZW5kb2JqCjYgMCBvYmoKWy9JQ0NCYXNlZCA1IDAgUl0KZW5kb2JqCjcgMCBvYmoKPDwKICAvVHlwZSAvTWV0YWRhdGEKICAvU3VidHlwZSAvWE1MCiAgL0xlbmd0aCAxMyAwIFIKPj4Kc3RyZWFtCjw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+PHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyI+CjxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CjxyZGY6RGVzY3JpcHRpb24geG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiByZGY6YWJvdXQ9IiI+CjxkYzpsYW5ndWFnZT4KPHJkZjpCYWc+CjxyZGY6bGk+ZW48L3JkZjpsaT4KPC9yZGY6QmFnPgo8L2RjOmxhbmd1YWdlPgo8ZGM6ZGF0ZT4KPHJkZjpTZXE+CjxyZGY6bGk+MjAxMy0xMS0wMVQyMzozODowOCswMTowMDwvcmRmOmxpPgo8L3JkZjpTZXE+CjwvZGM6ZGF0ZT4KPC9yZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24geG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIiByZGY6YWJvdXQ9IiI+CjxwZGY6UERGVmVyc2lvbj4xLjQ8L3BkZjpQREZWZXJzaW9uPgo8cGRmOlByb2R1Y2VyPkFwYWNoZSBGT1AgVmVyc2lvbiAwLjk1PC9wZGY6UHJvZHVjZXI+CjwvcmRmOkRlc2NyaXB0aW9uPgo8cmRmOkRlc2NyaXB0aW9uIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgcmRmOmFib3V0PSIiPgo8eG1wOkNyZWF0ZURhdGU+MjAxMy0xMS0wMVQyMzozODowOCswMTowMDwv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L0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDw8IC9VUkkgKGh0dHA6Ly9sb2NhbGhvc3Qvb3Rycy9pbmRleC5wbD9BY3Rpb249QWRtaW5GQVFFeHBsb3JlcjtDYXRlZ29yeUlEPTEpCi9TIC9VUkkgPj4KL0ggL0kKCj4+CmVuZG9iagozOCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA5Ni41NiAyOTEuNzQxIDQ1OC4wNSAzMDEuNzMxIF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDw8IC9VUkkgKGh0dHA6Ly9sb2NhbGhvc3Qvb3Rycy9pbmRleC5wbD9BY3Rpb249QWRtaW5GQVFFeHBsb3JlcjtDYXRlZ29yeT1NaXNjKQovUyAvVVJJID4+Ci9IIC9JCgo+PgplbmRvYmoKMzkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCAyNDguODQ4OTggNDk4LjYzIDI1OC44MzkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgPDwgL1VSSSAoaHR0cDovL2xvY2FsaG9zdC9vdHJzL2luZGV4LnBsP0FjdGlvbj1BZG1pbkZBUUV4cGxvcmVyO0NhdGVnb3J5PU15JTIwQ2F0ZWdvcnkpCi9TIC9VUkkgPj4KL0ggL0kKCj4+CmVuZG9iago0MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDIyNy40MDMgMjI2LjM4IDIzNy4zOTMgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgPDwgL1VSSSAoaHR0cDovL2xvY2FsaG9zdC9vdHJzL2luZGV4LnBsP0FjdGlvbj1DdXN0b21lckZBUUV4cGxvcmVyO0NhdGVnb3J5PUdyYW5QYXJlbnQ6OlBhcmVudDo6U29uKQovUyAvVVJJID4+Ci9IIC9JCgo+PgplbmRvYmoKNDEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCAyMTUuNDAzIDQxMy40MyAy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ago2MSAwIG9iago8PAogIC9SZXNvdXJjZXMgMyAwIFIKICAvVHlwZSAvUGFnZQogIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCiAgL0JsZWVkQm94IFswIDAgNjEyIDc5Ml0KICAvVHJpbUJveCBbMCAwIDYxMiA3OTJdCiAgL1BhcmVudCAxIDAgUgogIC9Db250ZW50cyA2MiAwIFIKPj4KCmVuZG9iago2MyAwIG9iagoxMjY3CmVuZG9iago2NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDY3OS42MjkgMTE3LjE5IDY4OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjQgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI4LjU0NyA2NzkuNjI5IDUzOS45OTcgNjg5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2NCAwIFIKL0ggL0kKCj4+CmVuZG9iago2OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDY2Ny42MjkgMTUzLjY0OSA2NzcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjcwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy40OTIgNjY3LjYyOSA1MzkuODUyIDY3Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjggMCBSCi9IIC9JCgo+PgplbmRvYmoKNzIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNjU1LjYyOSAxODMuMzA3IDY2NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzEgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjQ4NSA2NTUuNjI5IDUzOS44NDUgNjY1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3MSAwIFIKL0ggL0kKCj4+CmVuZG9iago3NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA2NDMuNjI5IDIwMC43MzAwMSA2NTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDc0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjc2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy40ODU5NiA2NDMuNjI5IDUzOS44NDYgNjUzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3NCAwIFIKL0ggL0kKCj4+CmVuZG9iago3OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA2MzEuNjI5IDE3OC45ODk5OSA2NDEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDc3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjc5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy40ODUgNjMxLjYyOSA1MzkuODQ1IDY0MS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzcgMCBSCi9IIC9JCgo+PgplbmRvYmoKODEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNjE5LjYyOSAyMDUuMzIzIDYyOS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODAgMCBSCi9IIC9JCgo+PgplbmRvYmoKODIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjQ4MiA2MTkuNjI5IDUzOS44NDIgNjI5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4MCAwIFIKL0ggL0kKCj4+CmVuZG9iago4NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA2MDcuNjI5IDI3Ny4yMDcgNjE3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4MyAwIFIKL0ggL0kKCj4+CmVuZG9iago4NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuMzM0OTYgNjA3LjYyOSA1MzkuNjk1IDYxNy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODMgMCBSCi9IIC9JCgo+PgplbmRvYmoKODcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTk1LjYyOSAzNDQuMzU4IDYwNS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODYgMCBSCi9IIC9JCgo+PgplbmRvYmoKODggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjkzMiA1OTUuNjI5IDU0MC4yOTIgNjA1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4NiAwIFIKL0ggL0kKCj4+CmVuZG9iago5MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1ODMuNjI5IDE5Mi41OTQgNTkzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4OSAwIFIKL0ggL0kKCj4+CmVuZG9iago5MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNDg1OTYgNTgzLjYyOSA1MzkuODQ2IDU5My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODkgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTcxLjYyOSAyNTIuNTM1IDU4MS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTIgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjMzNDk2IDU3MS42MjkgNTM5LjY5NSA1ODEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDkyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjk2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDU1OS42MjkgMTkzLjQzNiA1NjkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDk1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjk3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy40MDkgNTU5LjYyOSA1MzkuNzY5IDU2OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTUgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTQ3LjYyOSAyODcuMTggNTU3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5OCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMDAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM0LjA4NDk2IDU0Ny42MjkgNTQwLjQ0NSA1NTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDk4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwMiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1MzUuNjI5IDMxNi4yNjQgNTQ1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMDEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTAzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy4xODUgNTM1LjYyOSA1MzkuNTQ1IDU0NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTAxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwNSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1MjMuNjI5IDIxMy4zNyA1MzMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEwNCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMDYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjQ4NSA1MjMuNjI5IDUzOS44NDUgNTMzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMDQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTA4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDUxMS42MjkgMjk0LjE0NiA1MjEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEwNyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMDkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjE4NSA1MTEuNjI5IDUzOS41NDUgNTIxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMDcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTExIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDQ5OS42MjkgMjI0LjYxMiA1MDkuNjE5MDIgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTEwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjExMiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNDg1OTYgNDk5LjYyOSA1MzkuODQ2IDUwOS42MTkwMiBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMTAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTE0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDQ4Ny42MjkgMzIzLjUxMyA0OTcuNjE5MDIgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTEzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjExNSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuMTg2MDQgNDg3LjYyOSA1MzkuNTQ2IDQ5Ny42MTkwMiBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMTMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTE3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDQ3NS42MjkgMzg5LjMgNDg1LjYxOTAyIF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDExNiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMTggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjExMzA0IDQ3NS42MjkgNTM5LjQ3MyA0ODUuNjE5MDIgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTE2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEyMCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDQ2My42MjkgMjA0Ljc2OSA0NzMuNjE5MDIgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTE5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEyMSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNDkwOTcgNDYzLjYyOSA1MzkuODUxIDQ3My42MTkwMiBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMTkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTIzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDQ1MS42MjkgMTczLjI5NyA0NjEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEyMiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMjQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjU1ODk2IDQ1MS42MjkgNTM5LjkxOSA0NjEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEyMiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMjYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNDM5LjYyOSAxNjQuNjMxIDQ0OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTI1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEyNyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNTU4OTYgNDM5LjYyOSA1MzkuOTE5IDQ0OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTI1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEyOSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0MjcuNjI5IDIwOS4zMzIgNDM3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMjggMCBSCi9IIC9JCgo+PgplbmRvYmoKMTMwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy40ODU5NiA0MjcuNjI5IDUzOS44NDYgNDM3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMjggMCBSCi9IIC9JCgo+PgplbmRvYmoKMTMyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDQxNS42MjkgMjIxLjQ2NSA0MjUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEzMSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMzMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjQwOSA0MTUuNjI5IDUzOS43NjkgNDI1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMzEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTM1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDgwLjAgNDAzLjYyOSAxNDkuMjg1IDQxMy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTM0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEzNiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNTYzOTYgNDAzLjYyOSA1MzkuOTI0IDQxMy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTM0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEzOCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAzOTEuNjI5IDE5OC43ODUgNDAxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMzcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTM5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy40ODUgMzkxLjYyOSA1MzkuODQ1IDQwMS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTM3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE0MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAzNzkuNjI5IDE5NC40MTkgMzg5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNDAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTQyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy40ODQgMzc5LjYyOSA1MzkuODQ0IDM4OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTQwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE0NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDM2Ny42MjkgMTYxLjY3OSAzNzcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE0MyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNDUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjU2Mzk2IDM2Ny42MjkgNTM5LjkyNCAzNzcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE0MyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNDcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMzU1LjYyOSAxNTcuNCAzNjUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE0NiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNDggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjU2IDM1NS42MjkgNTM5LjkyIDM2NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTQ2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE1MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAzNDMuNjI5IDI3MS4zMzggMzUzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNDkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTUxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy41NTcgMzQzLjYyOSA1MzkuOTE3IDM1My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTQ5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE1MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAzMzEuNjI5IDI5MC4wNSAzNDEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE1MiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNTQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjU1NyAzMzEuNjI5IDUzOS45MTcgMzQxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNTIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTU2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDMxOS42MjkgMjcxLjMxOCAzMjkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE1NSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNTcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjU1NiAzMTkuNjI5IDUzOS45MTYgMzI5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNTUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTU5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDMwNy42MjkgMzIxLjIyOSAzMTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE1OCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNjAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjU1NSAzMDcuNjI5IDUzOS45MTUgMzE3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNTggMCBSCi9IIC9JCgo+PgplbmRvYmoKMTYyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDI5NS42MjkgMzQwLjYyOCAzMDUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE2MSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNjMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjU1NiAyOTUuNjI5IDUzOS45MTYgMzA1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNjEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTY1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDI4My42MjkgMjc2LjI2NyAyOTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE2NCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNjYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjU1NSAyODMuNjI5IDUzOS45MTUgMjkzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNjQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTY4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDI3MS42MjkgMjc0LjE5NTk4IDI4MS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTY3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE2OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNTU2IDI3MS42MjkgNTM5LjkxNiAyODEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE2NyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNzEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjU5LjYyOSAyODMuMjU4IDI2OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTcwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE3MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNTU2IDI1OS42MjkgNTM5LjkxNiAyNjkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE3MCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNzQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjQ3LjYyODk4IDQwOS44NDkgMjU3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNzMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTc1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy41NTcgMjQ3LjYyODk4IDUzOS45MTcgMjU3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNzMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTc3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDIzNS42Mjg5OCAzNzUuMTM0IDI0NS42MTg5OSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNzYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTc4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy41NTYgMjM1LjYyODk4IDUzOS45MTYgMjQ1LjYxODk5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE3NiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxODAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjIzLjYyODk4IDMxMS44Njc5OCAyMzMuNjE4OTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTc5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE4MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNTU1IDIyMy42Mjg5OCA1MzkuOTE1IDIzMy42MTg5OSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNzkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTgzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDIxMS42Mjg5OCAzMzAuMDQyIDIyMS42MTg5OSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxODIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTg0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy41NTUgMjExLjYyODk4IDUzOS45MTUgMjIxLjYxODk5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE4MiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxODYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTk5LjYyODk4IDMyNi41MzcgMjA5LjYxODk5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE4NSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxODcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjU1NiAxOTkuNjI4OTggNTM5LjkxNiAyMDkuNjE4OTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTg1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE4OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxODcuNjI5MDEgNDE5LjY1OCAxOTcuNjE5MDIgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTg4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE5MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNTU3IDE4Ny42MjkwMSA1MzkuOTE3IDE5Ny42MTkwMiBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxODggMCBSCi9IIC9JCgo+PgplbmRvYmoKMTkyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDE3NS42MjkwMSAzMjUuMjcyIDE4NS42MTkwMiBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxOTEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTkzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy41NTUgMTc1LjYyOTAxIDUzOS45MTUgMTg1LjYxOTAyIF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE5MSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxOTUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTYzLjYyOTAxIDMyMS41MjggMTczLjYxOTAyIF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE5NCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxOTYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjU1NiAxNjMuNjI5MDEgNTM5LjkxNiAxNzMuNjE5MDIgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTk0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE5OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxNTEuNjI5MDEgNDE0LjY0OSAxNjEuNjE5MDIgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTk3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE5OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNTU3IDE1MS42MjkwMSA1MzkuOTE3IDE2MS42MTkwMiBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxOTcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjAxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDEzOS42MjkwMSAzMjAuMjYzIDE0OS42MTkwMiBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyMDAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjAyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy41NTUgMTM5LjYyOTAxIDUzOS45MTUgMTQ5LjYxOTAyIF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDIwMCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyMDQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTI3LjYyOTAyIDI5Ny4xOCAxMzcuNjE5MDIgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjAzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjIwNSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNTU3IDEyNy42MjkwMiA1MzkuOTE3IDEzNy42MTkwMiBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyMDMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjA3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDExNS42MjkwMiAyOTUuOTE0OTggMTI1LjYxOTAyIF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDIwNiAwIFIKL0ggL0kKCj4+CmVuZG9iagoyMDggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjU1NiAxMTUuNjI5MDIgNTM5LjkxNiAxMjUuNjE5MDIgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjA2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjIxMCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxMDMuNjI5MDIgMzkwLjMwMSAxMTMuNjE5MDIgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjA5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjIxMSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNTU3IDEwMy42MjkwMiA1MzkuOTE3IDExMy42MTkwMiBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyMDkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjEzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDkxLjYyOTAyIDIzMS44NjMgMTAxLjYxOTAyIF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDIxMiAwIFIKL0ggL0kKCj4+CmVuZG9iagoyMTQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjU1NyA5MS42MjkwMiA1MzkuOTE3IDEwMS42MTkwMiBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyMTIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjE2IDAgb2JqCjw8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0AHy7tnaD0oW6eW2pSWpkw+u4kuvUF7Z2EtaSTSjFDMYpfCKE22tpyBtwWeWE3MMm/B1+f9KVumxCmVuZHN0cmVhbQplbmRvYmoKMjMyIDAgb2JqCjw8CiAgL1Jlc291cmNlcyAzIDAgUgogIC9UeXBlIC9QYWdlCiAgL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KICAvQmxlZWRCb3ggWzAgMCA2MTIgNzkyXQogIC9UcmltQm94IFswIDAgNjEyIDc5Ml0KICAvUGFyZW50IDEgMCBSCiAgL0NvbnRlbnRzIDIzMyAwIFIKPj4KCmVuZG9iagoyMzQgMCBvYmoKMTcyMgplbmRvYmoKMjM2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDcwOS4wMDUgMjc1LjU5IDcxOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjM1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjIzOCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNTU2IDcwOS4wMDUgNTM5LjkxNiA3MTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDIzNSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNDAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjk3LjAwNSAyNjEuNTg5IDcwNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjM5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI0MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNTU3IDY5Ny4wMDUgNTM5LjkxNyA3MDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDIzOSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNDMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjg1LjAwNSAyNjMuOTg5IDY5NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjQyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI0NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNTU3IDY4NS4wMDUgNTM5LjkxNyA2OTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI0MiAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNDYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjczLjAwNSAyOTcuOTI3IDY4Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjQ1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI0NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNTU3IDY3My4wMDUgNTM5LjkxNyA2ODIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI0NSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNDkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjYxLjAwNSAyODQuNDQzIDY3MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjQ4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI1MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNTU2IDY2MS4wMDUgNTM5LjkxNiA2NzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI0OCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNTIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjQ5LjAwNSAyOTQuNzQgNjU4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNTEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjUzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy41NTYgNjQ5LjAwNSA1MzkuOTE2IDY1OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjUxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI1NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA2MzcuMDA1IDMyMy40NCA2NDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI1NCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNTYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjU1NiA2MzcuMDA1IDUzOS45MTYgNjQ2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNTQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjU4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDYyNS4wMDUgMjgzLjU5NyA2MzQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI1NyAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNTkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjU1NyA2MjUuMDA1IDUzOS45MTcgNjM0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNTcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjYxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDYxMy4wMDUgMjQ1Ljc5NSA2MjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI2MCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNjIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjU1NyA2MTMuMDA1IDUzOS45MTcgNjIyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNjAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjY0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDYwMS4wMDUgMjQ1Ljc5NSA2MTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI2MyAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNjUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjU1NyA2MDEuMDA1IDUzOS45MTcgNjEwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNjMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjY3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDU4OS4wMDUgMjQ1Ljc5NSA1OTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI2NiAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNjggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjU1NyA1ODkuMDA1IDUzOS45MTcgNTk4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNjYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjcwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDU3Ny4wMDUgMjQ1Ljc5NSA1ODYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI2OSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNzEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjU1NyA1NzcuMDA1IDUzOS45MTcgNTg2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNjkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjczIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDU2NS4wMDUgMjQ1Ljc5NSA1NzQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI3MiAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNzQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjU1NyA1NjUuMDA1IDUzOS45MTcgNTc0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNzIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjc2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDU1My4wMDUgMjQ1Ljc5NSA1NjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI3NSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNzcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjU1NyA1NTMuMDA1IDUzOS45MTcgNTYyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNzUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjc5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDU0MS4wMDUgMzMxLjM5NyA1NTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI3OCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyODAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjU1NyA1NDEuMDA1IDUzOS45MTcgNTUwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNzggMCBSCi9IIC9JCgo+PgplbmRvYmoKMjgyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDUyOS4wMDUgMzMxLjM5NyA1MzguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI4MSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyODMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjU1NyA1MjkuMDA1IDUzOS45MTcgNTM4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyODEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjg1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDUxNy4wMDUgMzMxLjM5NyA1MjYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI4NCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyODYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjU1NyA1MTcuMDA1IDUzOS45MTcgNTI2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyODQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjg4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDUwNS4wMDUgMzMxLjM5NyA1MTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI4NyAwIFIKL0ggL0kKCj4+CmVuZG9iagoyODkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjIyMiA1MDUuMDA1IDUzOS45NDE5NiA1MTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI4NyAwIFIKL0ggL0kKCj4+CmVuZG9iagoyOTEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNDkzLjAwNSAzNjIuMjI4IDUwMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjkwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI5MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjIxIDQ5My4wMDUgNTM5Ljk0MSA1MDIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI5MCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyOTQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNDgxLjAwNSA0MjkuNDQ3IDQ5MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjkzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI5NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjIxIDQ4MS4wMDUgNTM5Ljk0MSA0OTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI5MyAwIFIKL0ggL0kKCj4+CmVuZG9iagoyOTcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNDY5LjAwNSA0MzAuNjkyIDQ3OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjk2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI5OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjIyIDQ2OS4wMDUgNTM5Ljk0MTk2IDQ3OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjk2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjMwMCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA0NTcuMDA1IDQ2My4yNjUgNDY2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyOTkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzAxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yMiA0NTcuMDA1IDUzOS45NCA0NjYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI5OSAwIFIKL0ggL0kKCj4+CmVuZG9iagozMDMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNDQ1LjAwNSA0NDcuMjgyIDQ1NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzAyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjMwNCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjIgNDQ1LjAwNSA1MzkuOTQgNDU0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzMDIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzA2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDQzMy4wMDUgNDQzLjAxIDQ0Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzA1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjMwNyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjIgNDMzLjAwNSA1MzkuOTQgNDQyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzMDUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzA5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDQyMS4wMDUgMzczLjc1IDQzMC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzA4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjMxMCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjIyIDQyMS4wMDUgNTM5Ljk0MTk2IDQzMC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzA4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjMxMiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA0MDkuMDA1IDM5MS42NDUgNDE4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzMTEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzEzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yMjEgNDA5LjAwNSA1MzkuOTQxIDQxOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzExIDAgUgovSCAvSQoKPj4KZW5kb2JqCjMxNSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAzOTcuMDA1IDQxMS43OTEgNDA2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzMTQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzE2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yMjIgMzk3LjAwNSA1MzkuOTQxOTYgNDA2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzMTQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzE4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDM4NS4wMDUgNDQ0LjM2NSAzOTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDMxNyAwIFIKL0ggL0kKCj4+CmVuZG9iagozMTkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjIyMiAzODUuMDA1IDUzOS45NDE5NiAzOTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDMxNyAwIFIKL0ggL0kKCj4+CmVuZG9iagozMjEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMzczLjAwNSA0MjguMzgxIDM4Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzIwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjMyMiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjIgMzczLjAwNSA1MzkuOTQgMzgyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzMjAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzI0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDM2MS4wMDUgNDI0LjEwOSAzNzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDMyMyAwIFIKL0ggL0kKCj4+CmVuZG9iagozMjUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjIyIDM2MS4wMDUgNTM5Ljk0IDM3MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzIzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjMyNyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAzNDkuMDA1IDM3MC42NjMgMzU4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzMjYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzI4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yMjIgMzQ5LjAwNSA1MzkuOTQxOTYgMzU4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzMjYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzMwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDMzNy4wMDUgMjQ0LjE4MSAzNDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDMyOSAwIFIKL0ggL0kKCj4+CmVuZG9iagozMzEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjIyIDMzNy4wMDUgNTM5Ljk0IDM0Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzI5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjMzMyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAzMjUuMDA1IDM5Ny4yOTEgMzM0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzMzIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzM0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yMiAzMjUuMDA1IDUzOS45NCAzMzQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDMzMiAwIFIKL0ggL0kKCj4+CmVuZG9iagozMzYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMzEzLjAwNSA0NDUuNjI5IDMyMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzM1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjMzNyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjIgMzEzLjAwNSA1MzkuOTQgMzIyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzMzUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzM5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDMwMS4wMDUgNDI2LjcyOCAzMTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDMzOCAwIFIKL0ggL0kKCj4+CmVuZG9iagozNDAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjIyIDMwMS4wMDUgNTM5Ljk0IDMxMC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzM4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjM0MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyODkuMDA1IDM4NC4wMDcgMjk4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzNDEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzQzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yMjIgMjg5LjAwNSA1MzkuOTQxOTYgMjk4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzNDEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzQ1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDI3Ny4wMDUgNDIwLjE2NiAyODYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM0NCAwIFIKL0ggL0kKCj4+CmVuZG9iagozNDYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjIyMiAyNzcuMDA1IDUzOS45NDE5NiAyODYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM0NCAwIFIKL0ggL0kKCj4+CmVuZG9iagozNDggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjY1LjAwNSAzNDAuOTc3IDI3NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzQ3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjM0OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjIyIDI2NS4wMDUgNTM5Ljk0MTk2IDI3NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzQ3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjM1MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyNTMuMDA0OTkgMzQwLjk2Njk4IDI2Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzUwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjM1MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjIyIDI1My4wMDQ5OSA1MzkuOTQxOTYgMjYyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzNTAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzU0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDI0MS4wMDQ5OSAzNzAuODAyIDI1MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzUzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjM1NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjIxIDI0MS4wMDQ5OSA1MzkuOTQxIDI1MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzUzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjM1NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyMjkuMDA0OTkgMzY1Ljc0Mjk4IDIzOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzU2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjM1OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjIxIDIyOS4wMDQ5OSA1MzkuOTQxIDIzOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzU2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjM2MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyMTcuMDA0OTkgMzU1Ljg5Mzk4IDIyNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzU5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjM2MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjIgMjE3LjAwNDk5IDUzOS45NCAyMjYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM1OSAwIFIKL0ggL0kKCj4+CmVuZG9iagozNjMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjA1LjAwNDk5IDM4My41MTg5OCAyMTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM2MiAwIFIKL0ggL0kKCj4+CmVuZG9iagozNjQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjIyMSAyMDUuMDA0OTkgNTM5Ljk0MSAyMTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM2MiAwIFIKL0ggL0kKCj4+CmVuZG9iagozNjYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTkzLjAwNDk5IDI5MC4yNjg5OCAyMDIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM2NSAwIFIKL0ggL0kKCj4+CmVuZG9iagozNjcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjIyMiAxOTMuMDA0OTkgNTM5Ljk0MTk2IDIwMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzY1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjM2OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxODEuMDA0OTkgMzM3LjI0MiAxOTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM2OCAwIFIKL0ggL0kKCj4+CmVuZG9iagozNzAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjIyIDE4MS4wMDQ5OSA1MzkuOTQgMTkwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzNjggMCBSCi9IIC9JCgo+PgplbmRvYmoKMzcyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDE2OS4wMDQ5OSA0MTUuODM0IDE3OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzcxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjM3MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjIyIDE2OS4wMDQ5OSA1MzkuOTQxOTYgMTc4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzNzEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzc1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDE1Ny4wMDQ5OSA0MjEuMTYyIDE2Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzc0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjM3NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjIyIDE1Ny4wMDQ5OSA1MzkuOTQxOTYgMTY2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzNzQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzc4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDE0NS4wMDQ5OSA0MTYuODg5IDE1NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzc3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjM3OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjIgMTQ1LjAwNDk5IDUzOS45NCAxNTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM3NyAwIFIKL0ggL0kKCj4+CmVuZG9iagozODEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTMzLjAwNDk5IDQwNC41NzEgMTQyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzODAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzgyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yMjEgMTMzLjAwNDk5IDUzOS45NDEgMTQyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzODAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzg0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDEyMS4wMDUgNDIzLjA3NCAxMzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM4MyAwIFIKL0ggL0kKCj4+CmVuZG9iagozODUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjIyMiAxMjEuMDA1IDUzOS45NDE5NiAxMzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM4MyAwIFIKL0ggL0kKCj4+CmVuZG9iagozODcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTA5LjAwNSA0MjguNDAxIDExOC45OTQ5OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzg2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjM4OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjIgMTA5LjAwNSA1MzkuOTQgMTE4Ljk5NDk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzODYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzkwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDk3LjAwNSA0MjQuMTI5IDEwNi45OTQ5OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzg5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjM5MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjIxIDk3LjAwNSA1MzkuOTQxIDEwNi45OTQ5OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzg5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjM5MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA4NS4wMDUgNDExLjgxMSA5NC45OTQ5OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzkyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjM5NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjIyIDg1LjAwNSA1MzkuOTQxOTYgOTQuOTk0OTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM5MiAwIFIKL0ggL0kKCj4+CmVuZG9iagozOTYgMCBvYmoKPDwgL1R5cGUgL0Fu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Qm94IFswIDAgNjEyIDc5Ml0KICAvUGFyZW50IDEgMCBSCiAgL0NvbnRlbnRzIDQxNiAwIFIKPj4KCmVuZG9iago0MTcgMCBvYmoKMjQ2MgplbmRvYmoKNDE5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDcwOS4wMDUgMzUwLjM5NyA3MTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQxOCAwIFIKL0ggL0kKCj4+CmVuZG9iago0MjEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjIyIDcwOS4wMDUgNTM5Ljk0IDcxOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDE4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQyMyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA2OTcuMDA1IDM2My4yODMwMiA3MDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQyMiAwIFIKL0ggL0kKCj4+CmVuZG9iago0MjQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjIyIDY5Ny4wMDUgNTM5Ljk0IDcwNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDIyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjQyNiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA2ODUuMDA1IDM3Mi42NTQgNjk0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0MjUgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDI3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yMiA2ODUuMDA1IDUzOS45NCA2OTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQyNSAwIFIKL0ggL0kKCj4+CmVuZG9iago0MjkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjczLjAwNSAzNjguMTAzIDY4Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDI4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQzMCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjIgNjczLjAwNSA1MzkuOTQgNjgyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0MjggMCBSCi9IIC9JCgo+PgplbmRvYmoKNDMyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDY2MS4wMDUgMzgyLjgxMiA2NzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQzMSAwIFIKL0ggL0kKCj4+CmVuZG9iago0MzMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjIyMiA2NjEuMDA1IDUzOS45NDE5NiA2NzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQzMSAwIFIKL0ggL0kKCj4+CmVuZG9iago0MzUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjQ5LjAwNSAzNzEuNzM4IDY1OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDM0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQzNiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjIxIDY0OS4wMDUgNTM5Ljk0MSA2NTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQzNCAwIFIKL0ggL0kKCj4+CmVuZG9iago0MzggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjM3LjAwNSAzNjkuMjE5IDY0Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDM3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQzOSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjIyIDYzNy4wMDUgNTM5Ljk0MTk2IDY0Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDM3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ0MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA2MjUuMDA1IDM4MS41NDcgNjM0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0NDAgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDQyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yMjEgNjI1LjAwNSA1MzkuOTQxIDYzNC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDQwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ0NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA2MTMuMDA1IDQxNy42MTYgNjIyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0NDMgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDQ1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yMiA2MTMuMDA1IDUzOS45NCA2MjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ0MyAwIFIKL0ggL0kKCj4+CmVuZG9iago0NDcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjAxLjAwNSA0MjMuMTEzIDYxMC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDQ2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ0OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjIgNjAxLjAwNSA1MzkuOTQgNjEwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0NDYgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDUwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDU4OS4wMDUgNDIzLjQ1MiA1OTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ0OSAwIFIKL0ggL0kKCj4+CmVuZG9iago0NTEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjIyMSA1ODkuMDA1IDUzOS45NDEgNTk4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0NDkgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDUzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDU3Ny4wMDUgNDU2LjAyNiA1ODYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ1MiAwIFIKL0ggL0kKCj4+CmVuZG9iago0NTQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjIyMiA1NzcuMDA1IDUzOS45NDE5NiA1ODYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ1MiAwIFIKL0ggL0kKCj4+CmVuZG9iago0NTYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNTY1LjAwNSA0NDAuMDQzIDU3NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDU1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ1NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjIyIDU2NS4wMDUgNTM5Ljk0MTk2IDU3NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDU1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ1OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA1NTMuMDA1IDQzNS43NyA1NjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ1OCAwIFIKL0ggL0kKCj4+CmVuZG9iago0NjAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjIyIDU1My4wMDUgNTM5Ljk0IDU2Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDU4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ2MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA1NDEuMDA1IDM0NC42MDIgNTUwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0NjEgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDYzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yMjIgNTQxLjAwNSA1MzkuOTQxOTYgNTUwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0NjEgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDY1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDUyOS4wMDUgNDExLjgyMSA1MzguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ2NCAwIFIKL0ggL0kKCj4+CmVuZG9iago0NjYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjIyMiA1MjkuMDA1IDUzOS45NDE5NiA1MzguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ2NCAwIFIKL0ggL0kKCj4+CmVuZG9iago0NjggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNTE3LjAwNSAzODUuMzExIDUyNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDY3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ2OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjIgNTE3LjAwNSA1MzkuOTQgNTI2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0NjcgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDcxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDUwNS4wMDUgNDA0LjU1MSA1MTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ3MCAwIFIKL0ggL0kKCj4+CmVuZG9iago0NzIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjIyMSA1MDUuMDA1IDUzOS45NDEgNTE0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0NzAgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDc0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDQ5My4wMDUgNDM3LjEyNSA1MDIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ3MyAwIFIKL0ggL0kKCj4+CmVuZG9iago0NzUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjIyMiA0OTMuMDA1IDUzOS45NDE5NiA1MDIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ3MyAwIFIKL0ggL0kKCj4+CmVuZG9iago0NzcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNDgxLjAwNSA0MjEuMTQyIDQ5MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDc2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ3OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjIyIDQ4MS4wMDUgNTM5Ljk0MTk2IDQ5MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDc2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ4MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA0NjkuMDA1IDQxNi44NjkgNDc4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0NzkgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDgxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yMiA0NjkuMDA1IDUzOS45NCA0NzguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ3OSAwIFIKL0ggL0kKCj4+CmVuZG9iago0ODMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNDU3LjAwNSAzNzkuODE0IDQ2Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDgyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ4NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjIgNDU3LjAwNSA1MzkuOTQgNDY2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0ODIgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDg2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDQ0NS4wMDUgMzU3LjQ1OCA0NTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ4NSAwIFIKL0ggL0kKCj4+CmVuZG9iago0ODcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjIyMiA0NDUuMDA1IDUzOS45NDE5NiA0NTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ4NSAwIFIKL0ggL0kKCj4+CmVuZG9iago0ODkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNDMzLjAwNSAzODAuMzUyIDQ0Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDg4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ5MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjIxIDQzMy4wMDUgNTM5Ljk0MSA0NDIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ4OCAwIFIKL0ggL0kKCj4+CmVuZG9iago0OTIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNDIxLjAwNSAzNjIuNDM3IDQzMC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDkxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ5MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjIxIDQyMS4wMDUgNTM5Ljk0MSA0MzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ5MSAwIFIKL0ggL0kKCj4+CmVuZG9iago0OTUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNDA5LjAwNSA0MjIuMzc2IDQxOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDk0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ5NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjIgNDA5LjAwNSA1MzkuOTQgNDE4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0OTQgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDk4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDM5Ny4wMDUgNDExLjMyMyA0MDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ5NyAwIFIKL0ggL0kKCj4+CmVuZG9iago0OTkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjIyMiAzOTcuMDA1IDUzOS45NDE5NiA0MDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ5NyAwIFIKL0ggL0kKCj4+CmVuZG9iago1MDEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMzg1LjAwNSA0NzEuOTI5IDM5NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTAwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjUwMiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjIgMzg1LjAwNSA1MzkuOTQgMzk0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MDAgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTA0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDM3My4wMDUgMzc3Ljk3MiAzODIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDUwMyAwIFIKL0ggL0kKCj4+CmVuZG9iago1MDUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjIyMSAzNzMuMDA1IDUzOS45NDEgMzgyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MDMgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTA3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDM2MS4wMDUgMzYyLjAwOSAzNzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDUwNiAwIFIKL0ggL0kKCj4+CmVuZG9iago1MDggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjIyMiAzNjEuMDA1IDUzOS45NDE5NiAzNzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDUwNiAwIFIKL0ggL0kKCj4+CmVuZG9iago1MTAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMzQ5LjAwNSAzNjAuNzQ0MDIgMzU4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MDkgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTExIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yMjEgMzQ5LjAwNSA1MzkuOTQxIDM1OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTA5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjUxMyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAzMzcuMDA1IDM2MC4yMTYgMzQ2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MTIgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTE0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yMiAzMzcuMDA1IDUzOS45NCAzNDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDUxMiAwIFIKL0ggL0kKCj4+CmVuZG9iago1MTYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMzI1LjAwNSAzNjguOTEgMzM0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MTUgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTE3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yMjEgMzI1LjAwNSA1MzkuOTQxIDMzNC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTE1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjUxOSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAzMTMuMDA1IDM3OC43MTkgMzIyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MTggMCBSCi9IIC9JCgo+PgplbmRvYmoKNTIwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yMjEgMzEzLjAwNSA1MzkuOTQxIDMyMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTE4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjUyMiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAzMDEuMDA1IDQwMy4yMDcgMzEwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MjEgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTIzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yMjIgMzAxLjAwNSA1MzkuOTQxOTYgMzEwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MjEgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTI1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDI4OS4wMDUgNDAzLjQ0NiAyOTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDUyNCAwIFIKL0ggL0kKCj4+CmVuZG9iago1MjYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjIyMiAyODkuMDA1IDUzOS45NDE5NiAyOTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDUyNCAwIFIKL0ggL0kKCj4+CmVuZG9iago1MjggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjc3LjAwNSA0NDMuMDEgMjg2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MjcgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTI5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yMiAyNzcuMDA1IDUzOS45NCAyODYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDUyNyAwIFIKL0ggL0kKCj4+CmVuZG9iago1MzEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjY1LjAwNSAyNjYuODg2IDI3NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTMwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjUzMiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjIgMjY1LjAwNSA1MzkuOTQgMjc0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MzAgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTM0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDI1My4wMDQ5OSAyODUuNjI4IDI2Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTMzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjUzNSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjIxIDI1My4wMDQ5OSA1MzkuOTQxIDI2Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTMzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjUzNyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyNDEuMDA0OTkgMzc1LjU0MiAyNTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDUzNiAwIFIKL0ggL0kKCj4+CmVuZG9iago1MzggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjIyIDI0MS4wMDQ5OSA1MzkuOTQgMjUwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MzYgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTQwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDIyOS4wMDQ5OSAzNjUuMjA1MDIgMjM4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MzkgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTQxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yMiAyMjkuMDA0OTkgNTM5Ljk0IDIzOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTM5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjU0MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyMTcuMDA0OTkgMjI0Ljg5MiAyMjYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDU0MiAwIFIKL0ggL0kKCj4+CmVuZG9iago1NDQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjIyMSAyMTcuMDA0OTkgNTM5Ljk0MSAyMjYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDU0MiAwIFIKL0ggL0kKCj4+CmVuZG9iago1NDYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjA1LjAwNDk5IDI0MS45NTA5OSAyMTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDU0NSAwIFIKL0ggL0kKCj4+CmVuZG9iago1NDcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjIyMiAyMDUuMDA0OTkgNTM5Ljk0MTk2IDIxNC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTQ1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjU0OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxOTMuMDA0OTkgMzk5LjkxIDIwMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTQ4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjU1MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjIgMTkzLjAwNDk5IDUzOS45NCAyMDIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDU0OCAwIFIKL0ggL0kKCj4+CmVuZG9iago1NTIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTgxLjAwNDk5IDM5NC45MDEgMTkwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1NTEgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTUzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yMiAxODEuMDA0OTkgNTM5Ljk0IDE5MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTUxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjU1NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxNjkuMDA0OTkgNDY3LjE1OSAxNzguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDU1NCAwIFIKL0ggL0kKCj4+CmVuZG9iago1NTYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjIyIDE2OS4wMDQ5OSA1MzkuOTQgMTc4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1NTQgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTU4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDE1Ny4wMDQ5OSA0OTIuOTUxIDE2Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTU3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjU1OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjExIDE1Ny4wMDQ5OSA1MzkuOTMwOTcgMTY2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1NTcgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTYxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDE0NS4wMDQ5OSA0NjcuMTQ5IDE1NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTYwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjU2MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjIgMTQ1LjAwNDk5IDUzOS45NCAxNTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDU2MCAwIFIKL0ggL0kKCj4+CmVuZG9iago1NjQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTMzLjAwNDk5IDQ4My42IDE0Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTYzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjU2NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjE4IDEzMy4wMDQ5OSA1MzkuOTM4IDE0Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTYzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjU2NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxMjEuMDA1IDM5My40NDcgMTMwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1NjYgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTY4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yMiAxMjEuMDA1IDUzOS45NCAxMzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDU2NiAwIFIKL0ggL0kKCj4+CmVuZG9iago1NzAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTA5LjAwNSAzNzcuNjUzIDExOC45OTQ5OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTY5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjU3MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjIgMTA5LjAwNSA1MzkuOTQgMTE4Ljk5NDk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1NjkgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTczIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDk3LjAwNSA0MTIuMzI4IDEwNi45OTQ5OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTcyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjU3NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjIgOTcuMDA1IDUzOS45NCAxMDYuOTk0OTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDU3MiAwIFIKL0ggL0kKCj4+CmVuZG9iago1NzYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgODUuMDA1IDM5Ni41MzQgOTQuOTk0OTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDU3NSAwIFIKL0ggL0kKCj4+CmVuZG9iago1NzcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjIyIDg1LjAwNSA1MzkuOTQgOTQuOTk0OTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDU3NSAwIFIKL0ggL0kKCj4+CmVuZG9iago1NzkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNzMuMDA1IDQwNy42MTggODIuOTk0OTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDU3OCAwIFIKL0ggL0kKCj4+CmVuZG9iago1ODAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjIyMSA3My4wMDUgNTM5Ljk0MSA4Mi45OTQ5OTUgXQovQyBb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OCAwIFIKNDY5IDAgUgo0NzEgMCBSCjQ3MiAwIFIKNDc0IDAgUgo0NzUgMCBSCjQ3NyAwIFIKNDc4IDAgUgo0ODAgMCBSCjQ4MSAwIFIKNDgzIDAgUgo0ODQgMCBSCjQ4NiAwIFIKNDg3IDAgUgo0ODkgMCBSCjQ5MCAwIFIKNDkyIDAgUgo0OTMgMCBSCjQ5NSAwIFIKNDk2IDAgUgo0OTggMCBSCjQ5OSAwIFIKNTAxIDAgUgo1MDIgMCBSCjUwNCAwIFIKNTA1IDAgUgo1MDcgMCBSCjUwOCAwIFIKNTEwIDAgUgo1MTEgMCBSCjUxMyAwIFIKNTE0IDAgUgo1MTYgMCBSCjUxNyAwIFIKNTE5IDAgUgo1MjAgMCBSCjUyMiAwIFIKNTIzIDAgUgo1MjUgMCBSCjUyNiAwIFIKNTI4IDAgUgo1MjkgMCBSCjUzMSAwIFIKNTMyIDAgUgo1MzQgMCBSCjUzNSAwIFIKNTM3IDAgUgo1MzggMCBSCjU0MCAwIFIKNTQxIDAgUgo1NDMgMCBSCjU0NCAwIFIKNTQ2IDAgUgo1NDcgMCBSCjU0OSAwIFIKNTUwIDAgUgo1NTIgMCBSCjU1MyAwIFIKNTU1IDAgUgo1NTYgMCBSCjU1OCAwIFIKNTU5IDAgUgo1NjEgMCBSCjU2MiAwIFIKNTY0IDAgUgo1NjUgMCBSCjU2NyAwIFIKNTY4IDAgUgo1NzAgMCBSCjU3MSAwIFIKNTczIDAgUgo1NzQgMCBSCjU3NiAwIFIKNTc3IDAgUgo1NzkgMCBSCjU4MCAwIFIKXQplbmRvYmoKMjAgMCBvYmoKPDwKICAvUmVzb3VyY2VzIDMgMCBSCiAgL1R5cGUgL1BhZ2UKICAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQogIC9CbGVlZEJveCBbMCAwIDYxMiA3OTJdCiAgL1RyaW1Cb3ggWzAgMCA2MTIgNzkyXQogIC9QYXJlbnQgMSAwIFIKICAvQW5ub3RzIDQyMCAwIFIKICAvQ29udGVudHMgNTgxIDAgUgo+PgoKZW5kb2JqCjU4MiAwIG9iagoxNTc5NwplbmRvYmoKNTg0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDgwLjAgNjc5LjYyOSAyODYuNzg3IDY4OS42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zz9xF1Z7sjWrP3HMc343x6+GZpRT0ljP9Vy+j1jRQHidnVdiKtnsZE3mx1Ub2rEfm6oPkweueGqPVd5wC5PVlcqkuUeI5MJNrlt1psDA8fT69sVtFxkqXGfF75wfXFJtV4bJnbuob7zW4cong7yiXbnnnbBgTn0n9rjs+u3xnkp1hwjiS6HPl/8Dl/eZuQplbmRzdHJlYW0KZW5kb2JqCjYyNiAwIG9iagpbCjYyNSAwIFIKXQplbmRvYmoKNjI0IDAgb2JqCjw8CiAgL1Jlc291cmNlcyAzIDAgUgogIC9UeXBlIC9QYWdlCiAgL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KICAvQmxlZWRCb3ggWzAgMCA2MTIgNzkyXQogIC9UcmltQm94IFswIDAgNjEyIDc5Ml0KICAvUGFyZW50IDEgMCBSCiAgL0Fubm90cyA2MjYgMCBSCiAgL0NvbnRlbnRzIDYyNyAwIFIKPj4KCmVuZG9iago2MjggMCBvYmoKMjY5MAplbmRvYmoKNjMwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDgwLjAgNTU1LjIwNSA0NzcuMjI3IDU2NS4xOTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgPDwgL1VSSSAoaHR0cDovL2xvY2FsaG9zdC9vdHJzL25waC1nZW5lcmljaW50ZXJmYWNlLnBsL1dlYnNlcnZpY2UvR2VuZXJpY0ZBUUNvbm5lY3RvcikKL1MgL1VSSSA+PgovSCAvSQoKPj4KZW5kb2JqCjYzMiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxNzIuOSA1NDMuMjA1IDQ3OC43OCA1NTMuMTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDw8IC9VUkkgKGh0dHA6Ly9sb2NhbGhvc3Qvb3Rycy9ucGgtZ2VuZXJpY2ludGVyZmFjZS5wbC9XZWJzZXJ2aWNlSUQvMSkKL1MgL1VSSSA+PgovSCAvSQoKPj4KZW5kb2JqCjYzMyAwIG9iago8PCAvTGVuZ3RoIDYzNCAwIFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFt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IDAgUgovSCAvSQoKPj4KZW5kb2JqCjY2NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA2ODUuMDA1IDQxMS41ODIgNjk0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2NjQgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjY2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yMjIgNjg1LjAwNSA1MzkuOTQxOTYgNjk0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2NjQgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjY4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDY3My4wMDUgNDI1Ljg5MiA2ODIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY2NyAwIFIKL0ggL0kKCj4+CmVuZG9iago2NjkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjIyMiA2NzMuMDA1IDUzOS45NDE5NiA2ODIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY2NyAwIFIKL0ggL0kKCj4+CmVuZG9iago2NzEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNjYxLjAwNSAyMDcuMjY4IDY3MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjcwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjY3MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMTc0IDY2MS4wMDUgNTM5Ljg5NCA2NzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY3MCAwIFIKL0ggL0kKCj4+CmVuZG9iago2NzQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCA2NDkuMDA1IDEyNS4xOTUgNjU4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2NzMgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjc1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yMjkgNjQ5LjAwNSA1MzkuOTQ5IDY1OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjczIDAgUgovSCAvSQoKPj4KZW5kb2JqCjY3NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA2MzcuMDA1IDI0Ny41NDkgNjQ2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2NzYgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjc4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4wMjIgNjM3LjAwNSA1MzkuNzQyIDY0Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjc2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjY4MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA2MjUuMDA1IDIzNy4wNTggNjM0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2NzkgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjgxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4wNzIgNjI1LjAwNSA1MzkuNzkyIDYzNC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjc5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjY4MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA2MTMuMDA1IDI0MC42NjIgNjIyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2ODIgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjg0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4wNzMgNjEzLjAwNSA1MzkuNzkyOTcgNjIyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2ODIgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjg2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDgwLjAgNjAxLjAwNSAxMzIuNzQ0IDYxMC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjg1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjY4NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMTgxIDYwMS4wMDUgNTM5LjkwMSA2MTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY4NSAwIFIKL0ggL0kKCj4+CmVuZG9iago2ODkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCA1ODkuMDA1IDExOC45NzggNTk4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2ODggMCBSCi9IIC9JCgo+PgplbmRvYmoKNjkwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yMjkgNTg5LjAwNSA1MzkuOTQ5IDU5OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjg4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjY5MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1NzcuMDA1IDE3MS43NDcwMSA1ODYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY5MSAwIFIKL0ggL0kKCj4+CmVuZG9iago2OTMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjE3MyA1NzcuMDA1IDUzOS44OTMgNTg2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2OTEgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjk1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDU2NS4wMDUgMTY3LjY2IDU3NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjk0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjY5NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMTc1IDU2NS4wMDUgNTM5Ljg5NDk2IDU3NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjk0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjY5OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDU1My4wMDUgMTUwLjA4MiA1NjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY5NyAwIFIKL0ggL0kKCj4+CmVuZG9iago2OTkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjIyNyA1NTMuMDA1IDUzOS45NDY5NiA1NjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY5NyAwIFIKL0ggL0kKCj4+CmVuZG9iago3MDEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCA1NDEuMDA1IDEzOC4wOTcgNTUwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3MDAgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzAyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yMjkgNTQxLjAwNSA1MzkuOTQ5IDU1MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzAwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjcwNCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1MjkuMDA1IDE2NC4xMzcgNTM4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3MDMgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzA1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4xNzMgNTI5LjAwNSA1MzkuODkzIDUzOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzAzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjcwNiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDUxNy4wMDUgMzMwLjg2OTAyIDUyNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjM4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjcwNyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMDM1MDMgNTE3LjAwNSA1MzkuNzU1IDUyNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjM4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjcwOSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1MDUuMDA1IDI1MC44ODggNTE0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3MDggMCBSCi9IIC9JCgo+PgplbmRvYmoKNzEwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4xMjMgNTA1LjAwNSA1MzkuODQyOTYgNTE0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3MDggMCBSCi9IIC9JCgo+PgplbmRvYmoKNzExIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDgwLjAgNDkzLjAwNSAyODAuMDcyMDIgNTAyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2NDEgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzEyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4wMzYgNDkzLjAwNSA1MzkuNzU2IDUwMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjQxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjcxNCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0ODEuMDA1IDE4NC42ODMgNDkwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3MTMgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzE1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yMjYgNDgxLjAwNSA1MzkuOTQ2IDQ5MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzEzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjcxNyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0NjkuMDA1IDIwNS4wMTMgNDc4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3MTYgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzE4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yMjYgNDY5LjAwNSA1MzkuOTQ2IDQ3OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzE2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjcyMCAwIG9i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RGVqYVZ1U2FucwogIC9FbmNvZGluZyAvSWRlbnRpdHktSAogIC9Ub1VuaWNvZGUgNzQxIDAgUgogIC9EZXNjZW5kYW50Rm9udHMgWzc0MCAwIFJdCj4+CgplbmRvYmoKNzQwIDAgb2JqCjw8IC9UeXBlIC9Gb250Ci9CYXNlRm9udCAvRUFBQUFBK0RlamFWdVNhbnMgCi9DSURUb0dJRE1hcCAvSWRlbnRpdHkgCi9TdWJ0eXBlIC9DSURGb250VHlwZTIKL0NJRFN5c3RlbUluZm8gPDwgL1JlZ2lzdHJ5IChBZG9iZSkgL09yZGVyaW5nIChVQ1MpIC9TdXBwbGVtZW50IDAgPj4KL0ZvbnREZXNjcmlwdG9yIDczNiAwIFIKL0RXIDAKL1cgWyAwIFs2MDAgMCAzMzMgMzE3IDM2MCA2ODYgNjMzIDI3NyAyNzcgNjM0IDc3MCA2MTIgMzkyIDYxNSAzMzYgNjM2IDYzNiA2MzYgNjM2IDc3NCA3NDggNzMxIDY4NCA1NzUgNjMxIDY5NCA3ODcgNTU3IDYwMyAyOTQgNjk4IDYzNCA2ODQgNDExIDUyMCA2MTEgNjMzIDMxNyA1OTEgOTc0IDYzNCA2MzYgNjEwIDYzMyA4MTcgNTc5IDU0OSA2MzQgNTkxIDYzNCAzMTcgNjM2IDYzNiA3NTEgMzUyIDg2MiA3ODcgNTkxIDk4OCA2MTAgNjM2IDMzNiA2NTUgMjc3IDYzNiA2MzYgNjM0IDgzNyA2ODUgMjk0IDM5MCAzOTAgNTI0IDgzNyAxMDAwIDgzNyA0NTkgMzM2IDgzNyA1MzAgOTUwIDU4OSAyNzQgNzc5IDUwMCA2ODUgODM3IF0gXSAKPj4KZW5kb2JqCjc0MSAwIG9iago8PCAvTGVuZ3RoIDc1MyAwIFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCnicXZTbjpswEIbv8xS+3L1YEXts2EirSFWqSrnoQU37AARMirQBRMhF3r7gb5Jqi7SHH8ae+ea3J9vtP++7djLZj7GvDnEyTdvVY7z017GK5hhPbbeyztRtNalKv6tzOayyefHhdpnied81vRGi6uugkcZkP+d/LtN4M0+f6v4Yn00dm+X997GOY9udzNPv3eHx9nAdhvd4jt1k1uld7Or0N9t9LYdv5TmaLO3z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YWRhdGEgNyAwIFIKICAvUGFnZUxhYmVscyA5IDAgUgo+PgoKZW5kb2JqCjMgMCBvYmoKPDwKL0ZvbnQgPDwKICAvRjE3IDczMyAwIFIKICAvRjE1IDczOSAwIFIKICAvRjE2IDc0NSAwIFIKPj4KL1Byb2NTZXQgWyAvUERGIC9JbWFnZUIgL0ltYWdlQyAvVGV4dCBdCi9YT2JqZWN0IDw8CiAgL0ltMSAxMCAwIFIKICAvSW00IDI1IDAgUgogIC9JbTIgMTEgMCBSCiAgL0ltMyAyNCAwIFIKPj4KL0NvbG9yU3BhY2UgPDwKICAvRGVmYXVsdFJHQiA2IDAgUgo+Pgo+PgplbmRvYmoKOSAwIG9iago8PCAvTnVtcyBbMCA8PCAvUCAoMSkgPj4KIDEgPDwgL1AgKGlpKSA+PgogMiA8PCAvUCAoaWlpKSA+PgogMyA8PCAvUCAoaXYpID4+CiA0IDw8IC9QICh2KSA+PgogNSA8PCAvUCAodmkpID4+CiA2IDw8IC9QICh2aWkpID4+CiA3IDw8IC9QICgxKSA+PgogOCA8PCAvUCAoMikgPj4KIDkgPDwgL1AgKDMpID4+CiAxMCA8PCAvUCAoNCkgPj4KIDExIDw8IC9QICg1KSA+PgogMTIgPDwgL1AgKDYpID4+CiAxMyA8PCAvUCAoNykgPj4KIDE0IDw8IC9QICg4KSA+PgogMTUgPDwgL1AgKDkpID4+CiAxNiA8PCAvUCAoMTApID4+CiAxNyA8PCAvUCAoMTEpID4+CiAxOCA8PCAvUCAoMTIpID4+CiAxOSA8PCAvUCAoMTMpID4+CiAyMCA8PCAvUCAoMTQpID4+CiAyMSA8PCAvUCAoMTUpID4+CiAyMiA8PCAvUCAoMTYpID4+CiAyMyA8PCAvUCAoMTcpID4+CiAyNCA8PCAvUCAoMTgpID4+CiAyNSA8PCAvUCAoMTkpID4+CiAyNiA8PCAvUCAoMjApID4+CiAyNyA8PCAvUCAoMjEpID4+CiAyOCA8PCAvUCAoMjIpID4+CiAyOSA8PCAvUCAoMjMpID4+CiAzMCA8PCAvUCAoMjQpID4+CiAzMSA8PCAvUCAoMjUpID4+CiAzMiA8PCAvUCAoMjYpID4+CiAzMyA8PCAvUCAoMjcpID4+CiAzNCA8PCAvUCAoMjgpID4+CiAzNSA8PCAvUCAoMjkpID4+CiAzNiA8PCAvUCAoMzApID4+CiAzNyA8PCAvUCAoMzEpID4+CiAzOCA8PCAvUCAoMzIpID4+CiAzOSA8PCAvUCAoMzMpID4+CiA0MCA8PCAvUCAoMzQpID4+CiA0MSA8PCAvUCAoMzUpID4+CiA0MiA8PCAvUCAoMzYpID4+CiA0MyA8PCAvUCAoMzcpID4+CiA0NCA8PCAvUCAoMzgpID4+Cl0gPj4KCmVuZG9iago2NCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMyAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iago2OCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszMiAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iago3MSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszMiAwIFIgL1hZWiA3Mi4wIDcwMC44IG51bGxdCj4+CmVuZG9iago3NCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszMiAwIFIgL1hZWiA3Mi4wIDY0Ni45MDggbnVsbF0KPj4KZW5kb2JqCjc3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzMyIDAgUiAvWFlaIDcyLjAgNTkzLjAxNiBudWxsXQo+PgplbmRvYmoKODAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMzIgMCBSIC9YWVogNzIuMCA1MzkuMTI0IG51bGxdCj4+CmVuZG9iago4MyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszMiAwIFIgL1hZWiA3Mi4wIDQ4NS4yMzIgbnVsbF0KPj4KZW5kb2JqCjg2IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzMyIDAgUiAvWFlaIDcyLjAgMzk1LjM0IG51bGxdCj4+CmVuZG9iago4OSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszMiAwIFIgL1hZWiA3Mi4wIDM0MS40NDggbnVsbF0KPj4KZW5kb2JqCjkyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzMyIDAgUiAvWFlaIDcyLjAgMjg3LjU1NiBudWxsXQo+PgplbmRvYmoKOTUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMzIgMCBSIC9YWVogNzIuMCAyMzMuNjY0IG51bGxdCj4+CmVuZG9iago5OCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszMiAwIFIgL1hZWiA3Mi4wIDE3OS43NzE5NyBudWxsXQo+PgplbmRvYmoKMTAxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzMyIDAgUiAvWFlaIDcyLjAgMTI1Ljg4MDAwNSBudWxsXQo+PgplbmRvYmoKMTA0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzM1IDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjEwNyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszNSAwIFIgL1hZWiA3Mi4wIDY4NC4xNTQgbnVsbF0KPj4KZW5kb2JqCjExMCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszNSAwIFIgL1hZWiA3Mi4wIDYzMC42NCBudWxsXQo+PgplbmRvYmoKMTEzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzM1IDAgUiAvWFlaIDcyLjAgNTc3LjEyNiBudWxsXQo+PgplbmRvYmoKMTE2IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzM1IDAgUiAvWFlaIDcyLjAgMTgwLjk1MjAzIG51bGxdCj4+CmVuZG9iagoxMTkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDcgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKMTIyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ3IDAgUiAvWFlaIDcyLjAgNzAwLjggbnVsbF0KPj4KZW5kb2JqCjEyNSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0NyAwIFIgL1hZWiA3Mi4wIDYyNi40IG51bGxdCj4+CmVuZG9iagoxMjggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDcgMCBSIC9YWVogNzIuMCA1NTguMCBudWxsXQo+PgplbmRvYmoKMTMxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ3IDAgUiAvWFlaIDcyLjAgNDg5LjYgbnVsbF0KPj4KZW5kb2JqCjEzNCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1MCAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iagoxMzcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTAgMCBSIC9YWVogNzIuMCA2NDQuOCBudWxsXQo+PgplbmRvYmoKMTQwIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzUwIDAgUiAvWFlaIDcyLjAgNTY4LjQgbnVsbF0KPj4KZW5kb2JqCjE0MyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1NSAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iagoxNDYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTUgMCBSIC9YWVogNzIuMCA3MDAuOCBudWxsXQo+PgplbmRvYmoKMTQ5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU1IDAgUiAvWFlaIDcyLjAgNjQ1LjM1MSBudWxsXQo+PgplbmRvYmoKMTUyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU1IDAgUiAvWFlaIDcyLjAgNTgxLjY0NiBudWxsXQo+PgplbmRvYmoKMTU1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU1IDAgUiAvWFlaIDcyLjAgNTE3Ljk0MSBudWxsXQo+PgplbmRvYmoKMTU4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU1IDAgUiAvWFlaIDcyLjAgNDU0LjIzNiBudWxsXQo+PgplbmRvYmoKMTYxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU1IDAgUiAvWFlaIDcyLjAgMzkwLjUzMSBudWxsXQo+PgplbmRvYmoKMTY0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU1IDAgUiAvWFlaIDcyLjAgMzI2LjgyNiBudWxsXQo+PgplbmRvYmoKMTY3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU1IDAgUiAvWFlaIDcyLjAgMjYzLjEyMSBudWxsXQo+PgplbmRvYmoKMTcwIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU1IDAgUiAvWFlaIDcyLjAgMTk5LjQxNjAyIG51bGxdCj4+CmVuZG9iagoxNzMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTUgMCBSIC9YWVogNzIuMCAxMzUuNzExIG51bGxdCj4+CmVuZG9iagoxNzYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTggMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKMTc5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU4IDAgUiAvWFlaIDcyLjAgNjY0LjQ0NCBudWxsXQo+PgplbmRvYmoKMTgyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU4IDAgUiAvWFlaIDcyLjAgNjAzLjAyMSBudWxsXQo+PgplbmRvYmoKMTg1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU4IDAgUiAvWFlaIDcyLjAgNTQxLjU5OCBudWxsXQo+PgplbmRvYmoKMTg4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU4IDAgUiAvWFlaIDcyLjAgNDgwLjE3NSBudWxsXQo+PgplbmRvYmoKMTkxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU4IDAgUiAvWFlaIDcyLjAgNDE4Ljc1MiBudWxsXQo+PgplbmRvYmoKMTk0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU4IDAgUiAvWFlaIDcyLjAgMzU3LjMyOSBudWxsXQo+PgplbmRvYmoKMTk3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU4IDAgUiAvWFlaIDcyLjAgMjk1LjkwNiBudWxsXQo+PgplbmRvYmoKMjAwIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU4IDAgUiAvWFlaIDcyLjAgMjM0LjQ4MyBudWxsXQo+PgplbmRvYmoKMjAzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU4IDAgUiAvWFlaIDcyLjAgMTczLjA2IG51bGxdCj4+CmVuZG9iagoyMDYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTggMCBSIC9YWVogNzIuMCAxMTEuNjM3MDI0IG51bGxdCj4+CmVuZG9iagoyMDkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNjEgMCBSIC9YWVogNzIuMCA3MDguMCBudWxsXQo+PgplbmRvYmoKMjEyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzYxIDAgUiAvWFlaIDcyLjAgNjQ0LjQwMSBudWxsXQo+PgplbmRvYmoKMjE1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzYxIDAgUiAvWFlaIDcyLjAgNTgwLjgwMiBudWxsXQo+PgplbmRvYmoKMjM1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzYxIDAgUiAvWFlaIDcyLjAgNTE3LjIwMyBudWxsXQo+PgplbmRvYmoKMjM5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzYxIDAgUiAvWFlaIDcyLjAgNDUzLjYwNCBudWxsXQo+PgplbmRvYmoKMjQyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzYxIDAgUiAvWFlaIDcyLjAgMzkwLjAwNSBudWxsXQo+PgplbmRvYmoKMjQ1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzYxIDAgUiAvWFlaIDcyLjAgMzI2LjQwNiBudWxsXQo+PgplbmRvYmoKMjQ4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzYxIDAgUiAvWFlaIDcyLjAgMjYyLjgwNyBudWxsXQo+PgplbmRvYmoKMjUxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzYxIDAgUiAvWFlaIDcyLjAgMTk5LjIwODAxIG51bGxdCj4+CmVuZG9iagoyNTQgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNjEgMCBSIC9YWVogNzIuMCAxMzUuNjA5MDEgbnVsbF0KPj4KZW5kb2JqCjI1NyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjAgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKMjYwIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyMCAwIFIgL1hZWiA3Mi4wIDY2NC4xNTYgbnVsbF0KPj4KZW5kb2JqCjI2MyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjAgMCBSIC9YWVogNzIuMCA2MDIuMzU5IG51bGxdCj4+CmVuZG9iagoyNjYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjIwIDAgUiAvWFlaIDcyLjAgNTQwLjU2MiBudWxsXQo+PgplbmRvYmoKMjY5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyMCAwIFIgL1hZWiA3Mi4wIDQ3OC43NjUgbnVsbF0KPj4KZW5kb2JqCjI3MiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjAgMCBSIC9YWVogNzIuMCA0MTYuOTY4IG51bGxdCj4+CmVuZG9iagoyNzUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjIwIDAgUiAvWFlaIDcyLjAgMzU1LjE3MSBudWxsXQo+PgplbmRvYmoKMjc4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyMCAwIFIgL1hZWiA3Mi4wIDI5My4zNzQgbnVsbF0KPj4KZW5kb2JqCjI4MSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjAgMCBSIC9YWVogNzIuMCAyMTkuNTc3IG51bGxdCj4+CmVuZG9iagoyODQgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjIwIDAgUiAvWFlaIDcyLjAgMTQ1Ljc4MDAzIG51bGxdCj4+CmVuZG9iagoyODcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjIzIDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjI5MCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjMgMCBSIC9YWVogNzIuMCA2NTEuMzQ2IG51bGxdCj4+CmVuZG9iagoyOTMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjIzIDAgUiAvWFlaIDcyLjAgNTg4LjQ5NiBudWxsXQo+PgplbmRvYmoKMjk2IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyMyAwIFIgL1hZWiA3Mi4wIDUyNS42NDYgbnVsbF0KPj4KZW5kb2JqCjI5OSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjMgMCBSIC9YWVogNzIuMCA0NTAuNzk2IG51bGxdCj4+CmVuZG9iagozMDIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjIzIDAgUiAvWFlaIDcyLjAgMzg3Ljk0NiBudWxsXQo+PgplbmRvYmoKMzA1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyMyAwIFIgL1hZWiA3Mi4wIDMyNS4wOTYgbnVsbF0KPj4KZW5kb2JqCjMwOCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjMgMCBSIC9YWVogNzIuMCAyNTAuMjQ2IG51bGxdCj4+CmVuZG9iagozMTEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjIzIDAgUiAvWFlaIDcyLjAgMTc1LjM5NiBudWxsXQo+PgplbmRvYmoKMzE0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyMyAwIFIgL1hZWiA3Mi4wIDExMi41NDYwMiBudWxsXQo+PgplbmRvYmoKMzE3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyNiAwIFIgL1hZWiA3Mi4wIDY5Ni4wIG51bGxdCj4+CmVuZG9iagozMjAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjI2IDAgUiAvWFlaIDcyLjAgNjM1LjA0IG51bGxdCj4+CmVuZG9iagozMjMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjI2IDAgUiAvWFlaIDcyLjAgNTc0LjA4IG51bGxdCj4+CmVuZG9iagozMjYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjI2IDAgUiAvWFlaIDcyLjAgNTAxLjEyIG51bGxdCj4+CmVuZG9iagozMjkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjI2IDAgUiAvWFlaIDcyLjAgNDQwLjE2IG51bGxdCj4+CmVuZG9iagozMzIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjI2IDAgUiAvWFlaIDcyLjAgMzc5LjIgbnVsbF0KPj4KZW5kb2JqCjMzNSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjYgMCBSIC9YWVogNzIuMCAzMTguMjQgbnVsbF0KPj4KZW5kb2JqCjMzOCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjYgMCBSIC9YWVogNzIuMCAyNTcuMjggbnVsbF0KPj4KZW5kb2JqCjM0MSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjYgMCBSIC9YWVogNzIuMCAxOTYuMzIgbnVsbF0KPj4KZW5kb2JqCjM0NCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjYgMCBSIC9YWVogNzIuMCAxMTEuMzU5OTg1IG51bGxdCj4+CmVuZG9iagozNDcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjI5IDAgUiAvWFlaIDcyLjAgNjg0LjAgbnVsbF0KPj4KZW5kb2JqCjM1MCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjkgMCBSIC9YWVogNzIuMCA2MjMuOTk5IG51bGxdCj4+CmVuZG9iagozNTMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjI5IDAgUiAvWFlaIDcyLjAgNTYzLjk5OCBudWxsXQo+PgplbmRvYmoKMzU2IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyOSAwIFIgL1hZWiA3Mi4wIDUwMy45OTcgbnVsbF0KPj4KZW5kb2JqCjM1OSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjkgMCBSIC9YWVogNzIuMCA0NDMuOTk2IG51bGxdCj4+CmVuZG9iagozNjIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjI5IDAgUiAvWFlaIDcyLjAgMzgzLjk5NSBudWxsXQo+PgplbmRvYmoKMzY1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyOSAwIFIgL1hZWiA3Mi4wIDMyMy45OTQgbnVsbF0KPj4KZW5kb2JqCjM2OCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjkgMCBSIC9YWVogNzIuMCAyNjMuOTkzIG51bGxdCj4+CmVuZG9iagozNzEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjI5IDAgUiAvWFlaIDcyLjAgMjAzLjk5MiBudWxsXQo+PgplbmRvYmoKMzc0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyOSAwIFIgL1hZWiA3Mi4wIDEzMS45OTEwMyBudWxsXQo+PgplbmRvYmoKMzc3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIzMiAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iagozODAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjMyIDAgUiAvWFlaIDcyLjAgNjUyLjMyNiBudWxsXQo+PgplbmRvYmoKMzgzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIzMiAwIFIgL1hZWiA3Mi4wIDU3OC43NSBudWxsXQo+PgplbmRvYmoKMzg2IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIzMiAwIFIgL1hZWiA3Mi4wIDUwNS4xNzQgbnVsbF0KPj4KZW5kb2JqCjM4OSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMzIgMCBSIC9YWVogNzIuMCA0NDMuNTk4IG51bGxdCj4+CmVuZG9iagozOTIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjMyIDAgUiAvWFlaIDcyLjAgMzcwLjAyMiBudWxsXQo+PgplbmRvYmoKMzk1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIzMiAwIFIgL1hZWiA3Mi4wIDI5Ni40NDYgbnVsbF0KPj4KZW5kb2JqCjQxOCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMzIgMCBSIC9YWVogNzIuMCAyMzQuODcgbnVsbF0KPj4KZW5kb2JqCjQyMiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMzIgMCBSIC9YWVogNzIuMCAxNzMuMjk0IG51bGxdCj4+CmVuZG9iago0MjUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjMyIDAgUiAvWFlaIDcyLjAgMTExLjcxODAyIG51bGxdCj4+CmVuZG9iago0MjggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDAwIDAgUiAvWFlaIDcyLjAgNzA4LjAgbnVsbF0KPj4KZW5kb2JqCjQzMSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDAgMCBSIC9YWVogNzIuMCA2NDUuNzkyIG51bGxdCj4+CmVuZG9iago0MzQgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDAwIDAgUiAvWFlaIDcyLjAgNTgzLjU4NCBudWxsXQo+PgplbmRvYmoKNDM3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwMCAwIFIgL1hZWiA3Mi4wIDUyMS4zNzYgbnVsbF0KPj4KZW5kb2JqCjQ0MCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDAgMCBSIC9YWVogNzIuMCA0NDcuMTY4IG51bGxdCj4+CmVuZG9iago0NDMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDAwIDAgUiAvWFlaIDcyLjAgMzg0Ljk2IG51bGxdCj4+CmVuZG9iago0NDYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDAwIDAgUiAvWFlaIDcyLjAgMzIyLjc1MiBudWxsXQo+PgplbmRvYmoKNDQ5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwMCAwIFIgL1hZWiA3Mi4wIDI2MC41NDQgbnVsbF0KPj4KZW5kb2JqCjQ1MiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDAgMCBSIC9YWVogNzIuMCAxODYuMzM2IG51bGxdCj4+CmVuZG9iago0NTUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDAwIDAgUiAvWFlaIDcyLjAgMTEyLjEyNzk5IG51bGxdCj4+CmVuZG9iago0NTggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDAzIDAgUiAvWFlaIDcyLjAgNzA4LjAgbnVsbF0KPj4KZW5kb2JqCjQ2MSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDMgMCBSIC9YWVogNzIuMCA2MzMuNzkyIG51bGxdCj4+CmVuZG9iago0NjQgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDAzIDAgUiAvWFlaIDcyLjAgNTcxLjU4NCBudWxsXQo+PgplbmRvYmoKNDY3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwMyAwIFIgL1hZWiA3Mi4wIDUwOS4zNzYgbnVsbF0KPj4KZW5kb2JqCjQ3MCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDMgMCBSIC9YWVogNzIuMCA0NDcuMTY4IG51bGxdCj4+CmVuZG9iago0NzMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDAzIDAgUiAvWFlaIDcyLjAgMzcyLjk2IG51bGxdCj4+CmVuZG9iago0NzYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDAzIDAgUiAvWFlaIDcyLjAgMzEwLjc1MiBudWxsXQo+PgplbmRvYmoKNDc5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwMyAwIFIgL1hZWiA3Mi4wIDI0OC41NDQgbnVsbF0KPj4KZW5kb2JqCjQ4MiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDMgMCBSIC9YWVogNzIuMCAxNzQuMzM2IG51bGxdCj4+CmVuZG9iago0ODUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDAzIDAgUiAvWFlaIDcyLjAgMTEyLjEyNzk5IG51bGxdCj4+CmVuZG9iago0ODggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDA2IDAgUiAvWFlaIDcyLjAgNzA4LjAgbnVsbF0KPj4KZW5kb2JqCjQ5MSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDYgMCBSIC9YWVogNzIuMCA2NDUuNzkyIG51bGxdCj4+CmVuZG9iago0OTQgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDA2IDAgUiAvWFlaIDcyLjAgNTgzLjU4NCBudWxsXQo+PgplbmRvYmoKNDk3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwNiAwIFIgL1hZWiA3Mi4wIDUwOS4zNzYgbnVsbF0KPj4KZW5kb2JqCjUwMCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDYgMCBSIC9YWVogNzIuMCA0NDcuMTY4IG51bGxdCj4+CmVuZG9iago1MDMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDA2IDAgUiAvWFlaIDcyLjAgMzcyLjk2IG51bGxdCj4+CmVuZG9iago1MDYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDA2IDAgUiAvWFlaIDcyLjAgMzEwLjc1MiBudWxsXQo+PgplbmRvYmoKNTA5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwNiAwIFIgL1hZWiA3Mi4wIDI0OC41NDQgbnVsbF0KPj4KZW5kb2JqCjUxMiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDYgMCBSIC9YWVogNzIuMCAxODYuMzM2IG51bGxdCj4+CmVuZG9iago1MTUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDA2IDAgUiAvWFlaIDcyLjAgMTEyLjEyNzk5IG51bGxdCj4+CmVuZG9iago1MTggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDA5IDAgUiAvWFlaIDcyLjAgNzA4LjAgbnVsbF0KPj4KZW5kb2JqCjUyMSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDkgMCBSIC9YWVogNzIuMCA2NDUuNjAyIG51bGxdCj4+CmVuZG9iago1MjQgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDA5IDAgUiAvWFlaIDcyLjAgNTgzLjIwNCBudWxsXQo+PgplbmRvYmoKNTI3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwOSAwIFIgL1hZWiA3Mi4wIDUyMC44MDYgbnVsbF0KPj4KZW5kb2JqCjUzMCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDkgMCBSIC9YWVogNzIuMCA0NDYuNDA4IG51bGxdCj4+CmVuZG9iago1MzMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDA5IDAgUiAvWFlaIDcyLjAgMzg0LjAxIG51bGxdCj4+CmVuZG9iago1MzYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDA5IDAgUiAvWFlaIDcyLjAgMzIxLjYxMiBudWxsXQo+PgplbmRvYmoKNTM5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwOSAwIFIgL1hZWiA3Mi4wIDI1OS4yMTQgbnVsbF0KPj4KZW5kb2JqCjU0MiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDkgMCBSIC9YWVogNzIuMCAxOTYuODE1OTggbnVsbF0KPj4KZW5kb2JqCjU0NSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDkgMCBSIC9YWVogNzIuMCAxMzQuNDE4MDMgbnVsbF0KPj4KZW5kb2JqCjU0OCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MTIgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKNTUxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQxMiAwIFIgL1hZWiA3Mi4wIDYxNy4wNTIgbnVsbF0KPj4KZW5kb2JqCjU1NCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MTIgMCBSIC9YWVogNzIuMCA1MDguNDE5IG51bGxdCj4+CmVuZG9iago1NTcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDEyIDAgUiAvWFlaIDcyLjAgNDQ3Ljc4NiBudWxsXQo+PgplbmRvYmoKNTYwIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQxMiAwIFIgL1hZWiA3Mi4wIDM4Ny4xNTMgbnVsbF0KPj4KZW5kb2JqCjU2MyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MTIgMCBSIC9YWVogNzIuMCAzMjYuNTIgbnVsbF0KPj4KZW5kb2JqCjU2NiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MTIgMCBSIC9YWVogNzIuMCAyNjUuODg3IG51bGxdCj4+CmVuZG9iago1NjkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDEyIDAgUiAvWFlaIDcyLjAgMjA1LjI1NDAzIG51bGxdCj4+CmVuZG9iago1NzIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDEyIDAgUiAvWFlaIDcyLjAgMTQ0LjYyMDk3IG51bGxdCj4+CmVuZG9iago1NzUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDE1IDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjU3OCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MTUgMCBSIC9YWVogNzIuMCA2NTIuNzE0IG51bGxdCj4+CmVuZG9iago1ODMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDE1IDAgUiAvWFlaIDcyLjAgMTU0LjIzOTAxIG51bGxdCj4+CmVuZG9iago2MzggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNjI0IDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjY0MSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs2MzUgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKNjU3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQxNSAwIFIgL1hZWiA3Mi4wIDU3OS42NDE5NyBudWxsXQo+PgplbmRvYmoKNjYxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQxNSAwIFIgL1hZWiA3Mi4wIDUwNi41NyBudWxsXQo+PgplbmRvYmoKNjY0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQxNSAwIFIgL1hZWiA3Mi4wIDQzMy40OTggbnVsbF0KPj4KZW5kb2JqCjY2NyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MTUgMCBSIC9YWVogNzIuMCAzNjAuNDI2IG51bGxdCj4+CmVuZG9iago2NzAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDE1IDAgUiAvWFlaIDcyLjAgMjk5LjM1NCBudWxsXQo+PgplbmRvYmoKNjczIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU5MiAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iago2NzYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTkyIDAgUiAvWFlaIDcyLjAgMjY1Ljg1NCBudWxsXQo+PgplbmRvYmoKNjc5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU5NSAwIFIgL1hZWiA3Mi4wIDU0NS4yIG51bGxdCj4+CmVuZG9iago2ODIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTk1IDAgUiAvWFlaIDcyLjAgMjg4LjAgbnVsbF0KPj4KZW5kb2JqCjY4NSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1OTggMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKNjg4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzYxMyAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iago2OTEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNjEzIDAgUiAvWFlaIDcyLjAgNjc4LjggbnVsbF0KPj4KZW5kb2JqCjY5NCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs2MTMgMCBSIC9YWVogNzIuMCA2MjQuNCBudWxsXQo+PgplbmRvYmoKNjk3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzYxNiAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iago3MDAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNjE5IDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjcwMyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs2MTkgMCBSIC9YWVogNzIuMCA2NzguOCBudWxsXQo+PgplbmRvYmoKNzA4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzYyNCAwIFIgL1hZWiA3Mi4wIDY4MS42IG51bGxdCj4+CmVuZG9iago3MTMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNjM1IDAgUiAvWFlaIDcyLjAgNjM2LjI1IG51bGxdCj4+CmVuZG9iago3MTYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNjM1IDAgUiAvWFlaIDcyLjAgMTUwLjk0IG51bGxdCj4+CmVuZG9iago3MTkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNjQ1IDAgUiAvWFlaIDcyLjAgMzI1LjU1MSBudWxsXQo+PgplbmRvYmoKNzIyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzY1NCAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iagp4cmVmCjAgNzU3CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDM2NDk0MSAwMDAwMCBuIAowMDAwMzY1MzM4IDAwMDAwIG4gCjAwMDAzNjU0NDMgMDAwMDAgbiAKMDAwMDAwMDAxNSAwMDAwMCBuIAowMDAwMDAwMTEyIDAwMDAwIG4gCjAwMDAwMDI3OTQgMDAwMDAgbiAKMDAwMDAwMjgyNyAwMDAwMCBuIAowMDAwMTA2MzE1IDAwMDAwIG4gCjAwMDAzNjU2NzAgMDAwMDAgbiAKMDAwMDAwMzY5NiAwMDAwMCBuIAowMDAwMDUyMjIzIDAwMDAwIG4gCjAwMDAxMDU0ODUgMDAwMDAgbiAKMDAwMDEwNTUwNiAwMDAwMCBuIAowMDAwMTA1NTI2IDAwMDAwIG4gCjAwMDAxMDU1NDggMDAwMDAgbiAKMDAwMDEwNTU3MCAwMDAwMCBuIAowMDAwMTA2NDgyIDAwMDAwIG4gCjAwMDAxNzg3MTIgMDAwMDAgbiAKMDAwMDIyMjcwNSAwMDAwMCBuIAowMDAwMjY3MDE1IDAwMDAwIG4gCjAwMDAzMjQwNjIgMDAwMDAgbiAKMDAwMDI2ODU4NyAwMDAwMCBuIAowMDAwMTIxMDM0IDAwMDAwIG4gCjAwMDAxMDY1MDIgMDAwMDAgbiAKMDAwMDExMjY3MyAwMDAwMCBuIAowMDAwMTE5ODUzIDAwMDAwIG4gCjAwMDAxMTk4NzQgMDAwMDAgbiAKMDAwMDExOTg5NSAwMDAwMCBuIAowMDAwMTIxMDA3IDAwMDAwIG4gCjAwMDAxMjAwODEgMDAwMDAgbiAKMDAwMDEyMTIxOSAwMDAwMCBuIAowMDAwMTIzOTMyIDAwMDAwIG4gCjAwMDAxMjEyMzkgMDAwMDAgbiAKMDAwMDEyNDEwMCAwMDAwMCBuIAowMDAwMTI4NDA4IDAwMDAwIG4gCjAwMDAxMjQxMjEgMDAwMDAgbiAKMDAwMDEyODMzOSAwMDAwMCBuIAowMDAwMTI0MzQwIDAwMDAwIG4gCjAwMDAxMjQ1NjAgMDAwMDAgbiAKMDAwMDEyNDc5MCAwMDAwMCBuIAowMDAwMTI1MDMxIDAwMDAwIG4gCjAwMDAxMjUyNzIgMDAwMDAgbiAKMDAwMDEyNTUxOCAwMDAwMCBuIAowMDAwMTI1NzY0IDAwMDAwIG4gCjAwMDAxMjg1OTMgMDAwMDAgbiAKMDAwMDI5NTI2MiAwMDAwMCBuIAowMDAwMTI5NDY3IDAwMDAwIG4gCjAwMDAxMjg2MTQgMDAwMDAgbiAKMDAwMDEyOTYzNSAwMDAwMCBuIAowMDAwMTMxMjc0IDAwMDAwIG4gCjAwMDAxMjk2NTUgMDAwMDAgbiAKMDAwMDEzMTI0NyAwMDAwMCBuIAowMDAwMTI5ODYzIDAwMDAwIG4gCjAwMDAxMzE0NTkgMDAwMDAgbiAKMDAwMDEzMjkzOCAwMDAwMCBuIAowMDAwMTMxNDgwIDAwMDAwIG4gCjAwMDAxMzMxMDYgMDAwMDAgbiAKMDAwMDEzNDM3MCAwMDAwMCBuIAowMDAwMTMzMTI3IDAwMDAwIG4gCjAwMDAxMzQ1MzggMDAwMDAgbiAKMDAwMDEzNTkwMiAwMDAwMCBuIAowMDAwMTM0NTU5IDAwMDAwIG4gCjAwMDAxMzYwNzAgMDAwMDAgbiAKMDAwMDM2NjQ5MSAwMDAwMCBuIAowMDAwMTM2MDkxIDAwMDAwIG4gCjAwMDAxNzc4OTkgMDAwMDAgbiAKMDAwMDEzNjIyNyAwMDAwMCBuIAowMDAwMzY2NTY5IDAwMDAwIG4gCjAwMDAxMzYzNjcgMDAwMDAgbiAKMDAwMDEzNjUwNCAwMDAwMCBuIAowMDAwMzY2NjQ3IDAwMDAwIG4gCjAwMDAxMzY2NDQgMDAwMDAgbiAKMDAwMDEzNjc4MiAwMDAwMCBuIAowMDAwMzY2NzI1IDAwMDAwIG4gCjAwMDAxMzY5MjIgMDAwMDAgbiAKMDAwMDEzNzA2MiAwMDAwMCBuIAowMDAwMzY2ODA1IDAwMDAwIG4gCjAwMDAxMzcyMDQgMDAwMDAgbiAKMDAwMDEzNzM0NCAwMDAwMCBuIAowMDAwMzY2ODg1IDAwMDAwIG4gCjAwMDAxMzc0ODQgMDAwMDAgbiAKMDAwMDEzNzYyMiAwMDAwMCBuIAowMDAwMzY2OTY1IDAwMDAwIG4gCjAwMDAxMzc3NjIgMDAwMDAgbiAKMDAwMDEzNzkwMCAwMDAwMCBuIAowMDAwMzY3MDQ1IDAwMDAwIG4gCjAwMDAxMzgwNDIgMDAwMDAgbiAKMDAwMDEzODE4MCAwMDAwMCBuIAowMDAwMzY3MTI0IDAwMDAwIG4gCjAwMDAxMzgzMjAgMDAwMDAgbiAKMDAwMDEzODQ1OCAwMDAwMCBuIAowMDAwMzY3MjA0IDAwMDAwIG4gCjAwMDAxMzg2MDAgMDAwMDAgbiAKMDAwMDEzODczOCAwMDAwMCBuIAowMDAwMzY3Mjg0IDAwMDAwIG4gCjAwMDAxMzg4ODAgMDAwMDAgbiAKMDAwMDEzOTAxOCAwMDAwMCBuIAowMDAwMzY3MzY0IDAwMDAwIG4gCjAwMDAxMzkxNTggMDAwMDAgbiAKMDAwMDEzOTI5NSAwMDAwMCBuIAowMDAwMzY3NDQ2IDAwMDAwIG4gCjAwMDAxMzk0MzggMDAwMDAgbiAKMDAwMDEzOTU3OCAwMDAwMCBuIAowMDAwMzY3NTMwIDAwMDAwIG4gCjAwMDAxMzk3MjAgMDAwMDAgbiAKMDAwMDEzOTg1OSAwMDAwMCBuIAowMDAwMzY3NjA5IDAwMDAwIG4gCjAwMDAxNDAwMDEgMDAwMDAgbiAKMDAwMDE0MDE0MSAwMDAwMCBuIAowMDAwMzY3NjkwIDAwMDAwIG4gCjAwMDAxNDAyODMgMDAwMDAgbiAKMDAwMDE0MDQyNSAwMDAwMCBuIAowMDAwMzY3NzcwIDAwMDAwIG4gCjAwMDAxNDA1NzEgMDAwMDAgbiAKMDAwMDE0MDcxMyAwMDAwMCBuIAowMDAwMzY3ODUxIDAwMDAwIG4gCjAwMDAxNDA4NTkgMDAwMDAgbiAKMDAwMDE0MDk5OSAwMDAwMCBuIAowMDAwMzY3OTM0IDAwMDAwIG4gCjAwMDAxNDExNDUgMDAwMDAgbiAKMDAwMDE0MTI4NiAwMDAwMCBuIAowMDAwMzY4MDEzIDAwMDAwIG4gCjAwMDAxNDE0MzIgMDAwMDAgbiAKMDAwMDE0MTU3MiAwMDAwMCBuIAowMDAwMzY4MDkyIDAwMDAwIG4gCjAwMDAxNDE3MTYgMDAwMDAgbiAKMDAwMDE0MTg1NiAwMDAwMCBuIAowMDAwMzY4MTcxIDAwMDAwIG4gCjAwMDAxNDIwMDAgMDAwMDAgbiAKMDAwMDE0MjE0MCAwMDAwMCBuIAowMDAwMzY4MjUwIDAwMDAwIG4gCjAwMDAxNDIyODQgMDAwMDAgbiAKMDAwMDE0MjQyNCAwMDAwMCBuIAowMDAwMzY4MzI5IDAwMDAwIG4gCjAwMDAxNDI1NjYgMDAwMDAgbiAKMDAwMDE0MjcwNSAwMDAwMCBuIAowMDAwMzY4NDA4IDAwMDAwIG4gCjAwMDAxNDI4NDkgMDAwMDAgbiAKMDAwMDE0Mjk4OSAwMDAwMCBuIAowMDAwMzY4NDg3IDAwMDAwIG4gCjAwMDAxNDMxMzEgMDAwMDAgbiAKMDAwMDE0MzI3MSAwMDAwMCBuIAowMDAwMzY4NTY2IDAwMDAwIG4gCjAwMDAxNDM0MTMgMDAwMDAgbiAKMDAwMDE0MzU1MiAwMDAwMCBuIAowMDAwMzY4NjQ1IDAwMDAwIG4gCjAwMDAxNDM2OTYgMDAwMDAgbiAKMDAwMDE0MzgzNCAwMDAwMCBuIAowMDAwMzY4NzI0IDAwMDAwIG4gCjAwMDAxNDM5NzQgMDAwMDAgbiAKMDAwMDE0NDExNCAwMDAwMCBuIAowMDAwMzY4ODA1IDAwMDAwIG4gCjAwMDAxNDQyNTYgMDAwMDAgbiAKMDAwMDE0NDM5NSAwMDAwMCBuIAowMDAwMzY4ODg2IDAwMDAwIG4gCjAwMDAxNDQ1MzcgMDAwMDAgbiAKMDAwMDE0NDY3NyAwMDAwMCBuIAowMDAwMzY4OTY3IDAwMDAwIG4gCjAwMDAxNDQ4MTkgMDAwMDAgbiAKMDAwMDE0NDk1OSAwMDAwMCBuIAowMDAwMzY5MDQ4IDAwMDAwIG4gCjAwMDAxNDUxMDEgMDAwMDAgbiAKMDAwMDE0NTI0MSAwMDAwMCBuIAowMDAwMzY5MTI5IDAwMDAwIG4gCjAwMDAxNDUzODMgMDAwMDAgbiAKMDAwMDE0NTUyMyAwMDAwMCBuIAowMDAwMzY5MjEwIDAwMDAwIG4gCjAwMDAxNDU2NjUgMDAwMDAgbiAKMDAwMDE0NTgwNyAwMDAwMCBuIAowMDAwMzY5MjkxIDAwMDAwIG4gCjAwMDAxNDU5NDkgMDAwMDAgbiAKMDAwMDE0NjA4OSAwMDAwMCBuIAowMDAwMzY5Mzc0IDAwMDAwIG4gCjAwMDAxNDYyMzEgMDAwMDAgbiAKMDAwMDE0NjM3MyAwMDAwMCBuIAowMDAwMzY5NDU1IDAwMDAwIG4gCjAwMDAxNDY1MTcgMDAwMDAgbiAKMDAwMDE0NjY2MSAwMDAwMCBuIAowMDAwMzY5NTM0IDAwMDAwIG4gCjAwMDAxNDY4MDcgMDAwMDAgbiAKMDAwMDE0Njk1MyAwMDAwMCBuIAowMDAwMzY5NjE1IDAwMDAwIG4gCjAwMDAxNDcwOTkgMDAwMDAgbiAKMDAwMDE0NzI0MyAwMDAwMCBuIAowMDAwMzY5Njk2IDAwMDAwIG4gCjAwMDAxNDczODkgMDAwMDAgbiAKMDAwMDE0NzUzMyAwMDAwMCBuIAowMDAwMzY5Nzc3IDAwMDAwIG4gCjAwMDAxNDc2NzkgMDAwMDAgbiAKMDAwMDE0NzgyMyAwMDAwMCBuIAowMDAwMzY5ODU4IDAwMDAwIG4gCjAwMDAxNDc5NjkgMDAwMDAgbiAKMDAwMDE0ODExMyAwMDAwMCBuIAowMDAwMzY5OTM5IDAwMDAwIG4gCjAwMDAxNDgyNTkgMDAwMDAgbiAKMDAwMDE0ODQwMyAwMDAwMCBuIAowMDAwMzcwMDIwIDAwMDAwIG4gCjAwMDAxNDg1NDkgMDAwMDAgbiAKMDAwMDE0ODY5MyAwMDAwMCBuIAowMDAwMzcwMTAxIDAwMDAwIG4gCjAwMDAxNDg4MzkgMDAwMDAgbiAKMDAwMDE0ODk4MyAwMDAwMCBuIAowMDAwMzcwMTgyIDAwMDAwIG4gCjAwMDAxNDkxMjkgMDAwMDAgbiAKMDAwMDE0OTI3MiAwMDAwMCBuIAowMDAwMzcwMjYyIDAwMDAwIG4gCjAwMDAxNDk0MTggMDAwMDAgbiAKMDAwMDE0OTU2NCAwMDAwMCBuIAowMDAwMzcwMzQ2IDAwMDAwIG4gCjAwMDAxNDk3MTAgMDAwMDAgbiAKMDAwMDE0OTg1NCAwMDAwMCBuIAowMDAwMzcwNDI1IDAwMDAwIG4gCjAwMDAxNTAwMDAgMDAwMDAgbiAKMDAwMDE1MDE0MyAwMDAwMCBuIAowMDAwMzcwNTA2IDAwMDAwIG4gCjAwMDAxNTAyODggMDAwMDAgbiAKMDAwMDE1MDQzMiAwMDAwMCBuIAowMDAwMTUwNTc2IDAwMDAwIG4gCjAwMDAxNzg4OTggMDAwMDAgbiAKMDAwMDE4MDIzOCAwMDAwMCBuIAowMDAwMTc4OTIxIDAwMDAwIG4gCjAwMDAxODA0MDggMDAwMDAgbiAKMDAwMDE4MjI1MyAwMDAwMCBuIAowMDAwMTgwNDMwIDAwMDAwIG4gCjAwMDAxODI0MjMgMDAwMDAgbiAKMDAwMDE4NDMyNCAwMDAwMCBuIAowMDAwMTgyNDQ1IDAwMDAwIG4gCjAwMDAxODQ0OTQgMDAwMDAgbiAKMDAwMDE4NjE4MyAwMDAwMCBuIAowMDAwMTg0NTE2IDAwMDAwIG4gCjAwMDAxODYzNTMgMDAwMDAgbiAKMDAwMDE4ODE3NSAwMDAwMCBuIAowMDAwMTg2Mzc1IDAwMDAwIG4gCjAwMDAxODgzNDUgMDAwMDAgbiAKMDAwMDM3MDU4NyAwMDAwMCBuIAowMDAwMTg4MzY3IDAwMDAwIG4gCjAwMDAyMjE4MjAgMDAwMDAgbiAKMDAwMDE4ODUwNiAwMDAwMCBuIAowMDAwMzcwNjY4IDAwMDAwIG4gCjAwMDAxODg2NDggMDAwMDAgbiAKMDAwMDE4ODc4OCAwMDAwMCBuIAowMDAwMzcwNzQ5IDAwMDAwIG4gCjAwMDAxODg5MzAgMDAwMDAgbiAKMDAwMDE4OTA3MCAwMDAwMCBuIAowMDAwMzcwODMwIDAwMDAwIG4gCjAwMDAxODkyMTIgMDAwMDAgbiAKMDAwMDE4OTM1MiAwMDAwMCBuIAowMDAwMzcwOTExIDAwMDAwIG4gCjAwMDAxODk0OTQgMDAwMDAgbiAKMDAwMDE4OTYzNCAwMDAwMCBuIAowMDAwMzcwOTkyIDAwMDAwIG4gCjAwMDAxODk3NzYgMDAwMDAgbiAKMDAwMDE4OTkxNSAwMDAwMCBuIAowMDAwMzcxMDc1IDAwMDAwIG4gCjAwMDAxOTAwNTcgMDAwMDAgbiAKMDAwMDE5MDE5NiAwMDAwMCBuIAowMDAwMzcxMTU4IDAwMDAwIG4gCjAwMDAxOTAzMzggMDAwMDAgbiAKMDAwMDE5MDQ3OCAwMDAwMCBuIAowMDAwMzcxMjM4IDAwMDAwIG4gCjAwMDAxOTA2MjAgMDAwMDAgbiAKMDAwMDE5MDc2MCAwMDAwMCBuIAowMDAwMzcxMzIwIDAwMDAwIG4gCjAwMDAxOTA5MDIgMDAwMDAgbiAKMDAwMDE5MTA0MiAwMDAwMCBuIAowMDAwMzcxNDAyIDAwMDAwIG4gCjAwMDAxOTExODQgMDAwMDAgbiAKMDAwMDE5MTMyNCAwMDAwMCBuIAowMDAwMzcxNDg0IDAwMDAwIG4gCjAwMDAxOTE0NjYgMDAwMDAgbiAKMDAwMDE5MTYwNiAwMDAwMCBuIAowMDAwMzcxNTY2IDAwMDAwIG4gCjAwMDAxOTE3NDggMDAwMDAgbiAKMDAwMDE5MTg4OCAwMDAwMCBuIAowMDAwMzcxNjQ4IDAwMDAwIG4gCjAwMDAxOTIwMzAgMDAwMDAgbiAKMDAwMDE5MjE3MCAwMDAwMCBuIAowMDAwMzcxNzMwIDAwMDAwIG4gCjAwMDAxOTIzMTIgMDAwMDAgbiAKMDAwMDE5MjQ1MiAwMDAwMCBuIAowMDAwMzcxODEyIDAwMDAwIG4gCjAwMDAxOTI1OTQgMDAwMDAgbiAKMDAwMDE5MjczNCAwMDAwMCBuIAowMDAwMzcxODk0IDAwMDAwIG4gCjAwMDAxOTI4NzYgMDAwMDAgbiAKMDAwMDE5MzAxNiAwMDAwMCBuIAowMDAwMzcxOTc4IDAwMDAwIG4gCjAwMDAxOTMxNTggMDAwMDAgbiAKMDAwMDE5MzI5OCAwMDAwMCBuIAowMDAwMzcyMDU4IDAwMDAwIG4gCjAwMDAxOTM0NDIgMDAwMDAgbiAKMDAwMDE5MzU4MiAwMDAwMCBuIAowMDAwMzcyMTQwIDAwMDAwIG4gCjAwMDAxOTM3MjQgMDAwMDAgbiAKMDAwMDE5Mzg2NCAwMDAwMCBuIAowMDAwMzcyMjIyIDAwMDAwIG4gCjAwMDAxOTQwMDYgMDAwMDAgbiAKMDAwMDE5NDE0NiAwMDAwMCBuIAowMDAwMzcyMzA0IDAwMDAwIG4gCjAwMDAxOTQyOTAgMDAwMDAgbiAKMDAwMDE5NDQzMCAwMDAwMCBuIAowMDAwMzcyMzg2IDAwMDAwIG4gCjAwMDAxOTQ1NzAgMDAwMDAgbiAKMDAwMDE5NDcxMCAwMDAwMCBuIAowMDAwMzcyNDY4IDAwMDAwIG4gCjAwMDAxOTQ4NTAgMDAwMDAgbiAKMDAwMDE5NDk4OSAwMDAwMCBuIAowMDAwMzcyNTUwIDAwMDAwIG4gCjAwMDAxOTUxMjkgMDAwMDAgbiAKMDAwMDE5NTI2OCAwMDAwMCBuIAowMDAwMzcyNjMyIDAwMDAwIG4gCjAwMDAxOTU0MTIgMDAwMDAgbiAKMDAwMDE5NTU1MiAwMDAwMCBuIAowMDAwMzcyNzE0IDAwMDAwIG4gCjAwMDAxOTU2OTQgMDAwMDAgbiAKMDAwMDE5NTgzNCAwMDAwMCBuIAowMDAwMzcyNzk4IDAwMDAwIG4gCjAwMDAxOTU5NzggMDAwMDAgbiAKMDAwMDE5NjExOCAwMDAwMCBuIAowMDAwMzcyODc4IDAwMDAwIG4gCjAwMDAxOTYyNjIgMDAwMDAgbiAKMDAwMDE5NjQwMiAwMDAwMCBuIAowMDAwMzcyOTU5IDAwMDAwIG4gCjAwMDAxOTY1NDIgMDAwMDAgbiAKMDAwMDE5NjY4MiAwMDAwMCBuIAowMDAwMzczMDQwIDAwMDAwIG4gCjAwMDAxOTY4MjIgMDAwMDAgbiAKMDAwMDE5Njk2MiAwMDAwMCBuIAowMDAwMzczMTIxIDAwMDAwIG4gCjAwMDAxOTcxMDYgMDAwMDAgbiAKMDAwMDE5NzI0NiAwMDAwMCBuIAowMDAwMzczMjAyIDAwMDAwIG4gCjAwMDAxOTczODYgMDAwMDAgbiAKMDAwMDE5NzUyNiAwMDAwMCBuIAowMDAwMzczMjgyIDAwMDAwIG4gCjAwMDAxOTc2NjYgMDAwMDAgbiAKMDAwMDE5NzgwNiAwMDAwMCBuIAowMDAwMzczMzYzIDAwMDAwIG4gCjAwMDAxOTc5NDYgMDAwMDAgbiAKMDAwMDE5ODA4NiAwMDAwMCBuIAowMDAwMzczNDQ0IDAwMDAwIG4gCjAwMDAxOTgyMjYgMDAwMDAgbiAKMDAwMDE5ODM2NiAwMDAwMCBuIAowMDAwMzczNTI1IDAwMDAwIG4gCjAwMDAxOTg1MTAgMDAwMDAgbiAKMDAwMDE5ODY1MCAwMDAwMCBuIAowMDAwMzczNjEwIDAwMDAwIG4gCjAwMDAxOTg3OTQgMDAwMDAgbiAKMDAwMDE5ODkzNCAwMDAwMCBuIAowMDAwMzczNjkwIDAwMDAwIG4gCjAwMDAxOTkwNzggMDAwMDAgbiAKMDAwMDE5OTIyMiAwMDAwMCBuIAowMDAwMzczNzcyIDAwMDAwIG4gCjAwMDAxOTkzNjggMDAwMDAgbiAKMDAwMDE5OTUxMCAwMDAwMCBuIAowMDAwMzczODU0IDAwMDAwIG4gCjAwMDAxOTk2NTQgMDAwMDAgbiAKMDAwMDE5OTc5OCAwMDAwMCBuIAowMDAwMzczOTM2IDAwMDAwIG4gCjAwMDAxOTk5NDIgMDAwMDAgbiAKMDAwMDIwMDA4NiAwMDAwMCBuIAowMDAwMzc0MDE4IDAwMDAwIG4gCjAwMDAyMDAyMjggMDAwMDAgbiAKMDAwMDIwMDM3MiAwMDAwMCBuIAowMDAwMzc0MTAwIDAwMDAwIG4gCjAwMDAyMDA1MTYgMDAwMDAgbiAKMDAwMDIwMDY2MCAwMDAwMCBuIAowMDAwMzc0MTgyIDAwMDAwIG4gCjAwMDAyMDA4MDYgMDAwMDAgbiAKMDAwMDIwMDk0OCAwMDAwMCBuIAowMDAwMzc0MjY0IDAwMDAwIG4gCjAwMDAyMDEwOTAgMDAwMDAgbiAKMDAwMDIwMTIzMiAwMDAwMCBuIAowMDAwMzc0MzQ2IDAwMDAwIG4gCjAwMDAyMDEzNzggMDAwMDAgbiAKMDAwMDIwMTUyMCAwMDAwMCBuIAowMDAwMzc0NDMwIDAwMDAwIG4gCjAwMDAyMDE2NjYgMDAwMDAgbiAKMDAwMDIwMTgwOCAwMDAwMCBuIAowMDAwMzc0NTEwIDAwMDAwIG4gCjAwMDAyMDE5NTAgMDAwMDAgbiAKMDAwMDIwMjA5MiAwMDAwMCBuIAowMDAwMzc0NTkyIDAwMDAwIG4gCjAwMDAyMDIyMzYgMDAwMDAgbiAKMDAwMDIwMjM3NiAwMDAwMCBuIAowMDAwMzc0NjczIDAwMDAwIG4gCjAwMDAyMDI1MjAgMDAwMDAgbiAKMDAwMDIwMjY2MyAwMDAwMCBuIAowMDAwMzc0NzU1IDAwMDAwIG4gCjAwMDAyMDI4MDYgMDAwMDAgbiAKMDAwMDIwMjk0OCAwMDAwMCBuIAowMDAwMzc0ODM3IDAwMDAwIG4gCjAwMDAyMDMwOTIgMDAwMDAgbiAKMDAwMDIwMzIzMyAwMDAwMCBuIAowMDAwMzc0OTE5IDAwMDAwIG4gCjAwMDAyMDMzNzggMDAwMDAgbiAKMDAwMDIwMzUxNyAwMDAwMCBuIAowMDAwMjAzNjYyIDAwMDAwIG4gCjAwMDAyMjI4OTIgMDAwMDAgbiAKMDAwMDIyNDU5NCAwMDAwMCBuIAowMDAwMjIyOTE1IDAwMDAwIG4gCjAwMDAyMjQ3NjQgMDAwMDAgbiAKMDAwMDIyNjM2NiAwMDAwMCBuIAowMDAwMjI0Nzg2IDAwMDAwIG4gCjAwMDAyMjY1MzYgMDAwMDAgbiAKMDAwMDIyODI3NyAwMDAwMCBuIAowMDAwMjI2NTU4IDAwMDAwIG4gCjAwMDAyMjg0NDcgMDAwMDAgbiAKMDAwMDIzMDAwNSAwMDAwMCBuIAowMDAwMjI4NDY5IDAwMDAwIG4gCjAwMDAyMzAxNzUgMDAwMDAgbiAKMDAwMDIzMjA2MyAwMDAwMCBuIAowMDAwMjMwMTk3IDAwMDAwIG4gCjAwMDAyMzIyMzMgMDAwMDAgbiAKMDAwMDIzNDc5NSAwMDAwMCBuIAowMDAwMjMyMjU1IDAwMDAwIG4gCjAwMDAyMzQ5NjUgMDAwMDAgbiAKMDAwMDM3NTAwMSAwMDAwMCBuIAowMDAwMjM0OTg3IDAwMDAwIG4gCjAwMDAyNjYxMzAgMDAwMDAgbiAKMDAwMDIzNTEyNyAwMDAwMCBuIAowMDAwMzc1MDgyIDAwMDAwIG4gCjAwMDAyMzUyNjcgMDAwMDAgbiAKMDAwMDIzNTQwOSAwMDAwMCBuIAowMDAwMzc1MTY0IDAwMDAwIG4gCjAwMDAyMzU1NDkgMDAwMDAgbiAKMDAwMDIzNTY4OSAwMDAwMCBuIAowMDAwMzc1MjQ4IDAwMDAwIG4gCjAwMDAyMzU4MjkgMDAwMDAgbiAKMDAwMDIzNTk2OSAwMDAwMCBuIAowMDAwMzc1MzI4IDAwMDAwIG4gCjAwMDAyMzYxMDkgMDAwMDAgbiAKMDAwMDIzNjI0OSAwMDAwMCBuIAowMDAwMzc1NDEwIDAwMDAwIG4gCjAwMDAyMzYzOTMgMDAwMDAgbiAKMDAwMDIzNjUzMyAwMDAwMCBuIAowMDAwMzc1NDkyIDAwMDAwIG4gCjAwMDAyMzY2NzUgMDAwMDAgbiAKMDAwMDIzNjgxNSAwMDAwMCBuIAowMDAwMzc1NTc0IDAwMDAwIG4gCjAwMDAyMzY5NTkgMDAwMDAgbiAKMDAwMDIzNzA5OSAwMDAwMCBuIAowMDAwMzc1NjU2IDAwMDAwIG4gCjAwMDAyMzcyNDEgMDAwMDAgbiAKMDAwMDIzNzM4MSAwMDAwMCBuIAowMDAwMzc1NzM3IDAwMDAwIG4gCjAwMDAyMzc1MjEgMDAwMDAgbiAKMDAwMDIzNzY2MSAwMDAwMCBuIAowMDAwMzc1ODE5IDAwMDAwIG4gCjAwMDAyMzc4MDEgMDAwMDAgbiAKMDAwMDIzNzk0MSAwMDAwMCBuIAowMDAwMzc1OTAxIDAwMDAwIG4gCjAwMDAyMzgwODMgMDAwMDAgbiAKMDAwMDIzODIyMyAwMDAwMCBuIAowMDAwMzc1OTgzIDAwMDAwIG4gCjAwMDAyMzgzNjcgMDAwMDAgbiAKMDAwMDIzODUwNyAwMDAwMCBuIAowMDAwMzc2MDY3IDAwMDAwIG4gCjAwMDAyMzg2NTEgMDAwMDAgbiAKMDAwMDIzODc5MCAwMDAwMCBuIAowMDAwMzc2MTQ3IDAwMDAwIG4gCjAwMDAyMzg5MzAgMDAwMDAgbiAKMDAwMDIzOTA3MCAwMDAwMCBuIAowMDAwMzc2MjI5IDAwMDAwIG4gCjAwMDAyMzkyMTQgMDAwMDAgbiAKMDAwMDIzOTM1NCAwMDAwMCBuIAowMDAwMzc2MzExIDAwMDAwIG4gCjAwMDAyMzk0OTggMDAwMDAgbiAKMDAwMDIzOTYzOCAwMDAwMCBuIAowMDAwMzc2MzkzIDAwMDAwIG4gCjAwMDAyMzk3NzggMDAwMDAgbiAKMDAwMDIzOTkxOCAwMDAwMCBuIAowMDAwMzc2NDc1IDAwMDAwIG4gCjAwMDAyNDAwNjAgMDAwMDAgbiAKMDAwMDI0MDIwMCAwMDAwMCBuIAowMDAwMzc2NTU2IDAwMDAwIG4gCjAwMDAyNDAzNDQgMDAwMDAgbiAKMDAwMDI0MDQ4NCAwMDAwMCBuIAowMDAwMzc2NjM4IDAwMDAwIG4gCjAwMDAyNDA2MjggMDAwMDAgbiAKMDAwMDI0MDc2OCAwMDAwMCBuIAowMDAwMzc2NzIwIDAwMDAwIG4gCjAwMDAyNDA5MDggMDAwMDAgbiAKMDAwMDI0MTA0OCAwMDAwMCBuIAowMDAwMzc2ODAyIDAwMDAwIG4gCjAwMDAyNDExODggMDAwMDAgbiAKMDAwMDI0MTMyOCAwMDAwMCBuIAowMDAwMzc2ODg2IDAwMDAwIG4gCjAwMDAyNDE0NzIgMDAwMDAgbiAKMDAwMDI0MTYxMiAwMDAwMCBuIAowMDAwMzc2OTY2IDAwMDAwIG4gCjAwMDAyNDE3NTQgMDAwMDAgbiAKMDAwMDI0MTg5NCAwMDAwMCBuIAowMDAwMzc3MDQ4IDAwMDAwIG4gCjAwMDAyNDIwMzYgMDAwMDAgbiAKMDAwMDI0MjE3NiAwMDAwMCBuIAowMDAwMzc3MTMwIDAwMDAwIG4gCjAwMDAyNDIzMTYgMDAwMDAgbiAKMDAwMDI0MjQ1NiAwMDAwMCBuIAowMDAwMzc3MjEyIDAwMDAwIG4gCjAwMDAyNDI2MDAgMDAwMDAgbiAKMDAwMDI0Mjc0MCAwMDAwMCBuIAowMDAwMzc3Mjk0IDAwMDAwIG4gCjAwMDAyNDI4ODAgMDAwMDAgbiAKMDAwMDI0MzAyMCAwMDAwMCBuIAowMDAwMzc3Mzc1IDAwMDAwIG4gCjAwMDAyNDMxNjIgMDAwMDAgbiAKMDAwMDI0MzMwMiAwMDAwMCBuIAowMDAwMzc3NDU3IDAwMDAwIG4gCjAwMDAyNDM0NDYgMDAwMDAgbiAKMDAwMDI0MzU4OCAwMDAwMCBuIAowMDAwMzc3NTM5IDAwMDAwIG4gCjAwMDAyNDM3MzAgMDAwMDAgbiAKMDAwMDI0Mzg3MCAwMDAwMCBuIAowMDAwMzc3NjIxIDAwMDAwIG4gCjAwMDAyNDQwMTAgMDAwMDAgbiAKMDAwMDI0NDE0OSAwMDAwMCBuIAowMDAwMzc3NzA1IDAwMDAwIG4gCjAwMDAyNDQyOTEgMDAwMDAgbiAKMDAwMDI0NDQzMSAwMDAwMCBuIAowMDAwMzc3Nzg1IDAwMDAwIG4gCjAwMDAyNDQ1NzMgMDAwMDAgbiAKMDAwMDI0NDcxMyAwMDAwMCBuIAowMDAwMzc3ODY3IDAwMDAwIG4gCjAwMDAyNDQ4NTcgMDAwMDAgbiAKMDAwMDI0NDk5NyAwMDAwMCBuIAowMDAwMzc3OTQ5IDAwMDAwIG4gCjAwMDAyNDUxNDEgMDAwMDAgbiAKMDAwMDI0NTI4MCAwMDAwMCBuIAowMDAwMzc4MDMxIDAwMDAwIG4gCjAwMDAyNDU0MjAgMDAwMDAgbiAKMDAwMDI0NTU2MCAwMDAwMCBuIAowMDAwMzc4MTEzIDAwMDAwIG4gCjAwMDAyNDU3MDAgMDAwMDAgbiAKMDAwMDI0NTg0MiAwMDAwMCBuIAowMDAwMzc4MTk0IDAwMDAwIG4gCjAwMDAyNDU5ODYgMDAwMDAgbiAKMDAwMDI0NjEyOCAwMDAwMCBuIAowMDAwMzc4Mjc2IDAwMDAwIG4gCjAwMDAyNDYyNzAgMDAwMDAgbiAKMDAwMDI0NjQxNCAwMDAwMCBuIAowMDAwMzc4MzU4IDAwMDAwIG4gCjAwMDAyNDY1NTYgMDAwMDAgbiAKMDAwMDI0NjY5OCAwMDAwMCBuIAowMDAwMzc4NDQyIDAwMDAwIG4gCjAwMDAyNDY4NDIgMDAwMDAgbiAKMDAwMDI0Njk4NiAwMDAwMCBuIAowMDAwMzc4NTI2IDAwMDAwIG4gCjAwMDAyNDcxMzIgMDAwMDAgbiAKMDAwMDI0NzI3MyAwMDAwMCBuIAowMDAwMzc4NjA2IDAwMDAwIG4gCjAwMDAyNDc0MTUgMDAwMDAgbiAKMDAwMDI0NzU1NyAwMDAwMCBuIAowMDAwMzc4Njg4IDAwMDAwIG4gCjAwMDAyNDc2OTkgMDAwMDAgbiAKMDAwMDI0Nzg0MSAwMDAwMCBuIAowMDAwMzc4NzcwIDAwMDAwIG4gCjAwMDAyNDc5ODMgMDAwMDAgbiAKMDAwMDI0ODEyNSAwMDAwMCBuIAowMDAwMzc4ODUyIDAwMDAwIG4gCjAwMDAyNDgyNzEgMDAwMDAgbiAKMDAwMDI0ODQxMyAwMDAwMCBuIAowMDAwMzc4OTM0IDAwMDAwIG4gCjAwMDAyNDg1NTUgMDAwMDAgbiAKMDAwMDI0ODY5NSAwMDAwMCBuIAowMDAwMzc5MDE1IDAwMDAwIG4gCjAwMDAyNDg4MzkgMDAwMDAgbiAKMDAwMDI0ODk3OSAwMDAwMCBuIAowMDAwMzc5MDk3IDAwMDAwIG4gCjAwMDAyNDkxMTkgMDAwMDAgbiAKMDAwMDI0OTI2MiAwMDAwMCBuIAowMDAwMzc5MTgxIDAwMDAwIG4gCjAwMDAyNDk0MDUgMDAwMDAgbiAKMDAwMDI0OTU0NyAwMDAwMCBuIAowMDAwMzc5MjY1IDAwMDAwIG4gCjAwMDAyNDk2ODkgMDAwMDAgbiAKMDAwMDI0OTgzMCAwMDAwMCBuIAowMDAwMzc5MzQ1IDAwMDAwIG4gCjAwMDAyNDk5NzEgMDAwMDAgbiAKMDAwMDI1MDExMiAwMDAwMCBuIAowMDAwMjUwMjU1IDAwMDAwIG4gCjAwMDAyNjcyMDIgMDAwMDAgbiAKMDAwMDM3OTQyNyAwMDAwMCBuIAowMDAwMjY3MjI1IDAwMDAwIG4gCjAwMDAyNjg1NTAgMDAwMDAgbiAKMDAwMDI2NzM2NCAwMDAwMCBuIAowMDAwMjY3NTA2IDAwMDAwIG4gCjAwMDAyNjg3NzQgMDAwMDAgbiAKMDAwMDI2OTc2MSAwMDAwMCBuIAowMDAwMjY4Nzk1IDAwMDAwIG4gCjAwMDAyNjk5MzEgMDAwMDAgbiAKMDAwMDI3MTkxNyAwMDAwMCBuIAowMDAwMjY5OTUyIDAwMDAwIG4gCjAwMDAyNzIwODcgMDAwMDAgbiAKMDAwMDI3NDEwNSAwMDAwMCBuIAowMDAwMjcyMTA5IDAwMDAwIG4gCjAwMDAyNzQyNzUgMDAwMDAgbiAKMDAwMDI3NTU4NyAwMDAwMCBuIAowMDAwMjc0Mjk3IDAwMDAwIG4gCjAwMDAyNzU3NTcgMDAwMDAgbiAKMDAwMDI3NjkzMCAwMDAwMCBuIAowMDAwMjc1Nzc5IDAwMDAwIG4gCjAwMDAyNzcxMDAgMDAwMDAgbiAKMDAwMDI3ODMwMCAwMDAwMCBuIAowMDAwMjc3MTIyIDAwMDAwIG4gCjAwMDAyNzg0NzAgMDAwMDAgbiAKMDAwMDI3OTg0MyAwMDAwMCBuIAowMDAwMjc4NDkyIDAwMDAwIG4gCjAwMDAyODAwMTMgMDAwMDAgbiAKMDAwMDI4MDk3NSAwMDAwMCBuIAowMDAwMjgwMDM1IDAwMDAwIG4gCjAwMDAyODExNDUgMDAwMDAgbiAKMDAwMDI4MjkxMSAwMDAwMCBuIAowMDAwMjgxMTY2IDAwMDAwIG4gCjAwMDAyODMwODEgMDAwMDAgbiAKMDAwMDI4MzgzNCAwMDAwMCBuIAowMDAwMjgzMTAzIDAwMDAwIG4gCjAwMDAyODQwMDQgMDAwMDAgbiAKMDAwMDI4NDk1MCAwMDAwMCBuIAowMDAwMjg0MDI1IDAwMDAwIG4gCjAwMDAyODQ5MjEgMDAwMDAgbiAKMDAwMDI4NDIyMCAwMDAwMCBuIAowMDAwMjg1MTM4IDAwMDAwIG4gCjAwMDAyODgxODkgMDAwMDAgbiAKMDAwMDI4NTE1OSAwMDAwMCBuIAowMDAwMjg4MTYwIDAwMDAwIG4gCjAwMDAyODUzOTIgMDAwMDAgbiAKMDAwMDI4ODM3NyAwMDAwMCBuIAowMDAwMjkwNTM3IDAwMDAwIG4gCjAwMDAyODgzOTkgMDAwMDAgbiAKMDAwMDI5MDUwMCAwMDAwMCBuIAowMDAwMjg4NjI4IDAwMDAwIG4gCjAwMDAyODg4NDEgMDAwMDAgbiAKMDAwMDI5MDcyNSAwMDAwMCBuIAowMDAwMjkzMTE3IDAwMDAwIG4gCjAwMDAyOTA3NDcgMDAwMDAgbiAKMDAwMDI5MzI4NyAwMDAwMCBuIAowMDAwMzc5NTExIDAwMDAwIG4gCjAwMDAyOTMzMDkgMDAwMDAgbiAKMDAwMDI5NTIyNSAwMDAwMCBuIAowMDAwMzc5NTkxIDAwMDAwIG4gCjAwMDAyOTM0NTMgMDAwMDAgbiAKMDAwMDI5MzU5MyAwMDAwMCBuIAowMDAwMjk1NDQ5IDAwMDAwIG4gCjAwMDAyOTc1NDcgMDAwMDAgbiAKMDAwMDI5NTQ3MSAwMDAwMCBuIAowMDAwMjk3NzE3IDAwMDAwIG4gCjAwMDAyOTkxNjAgMDAwMDAgbiAKMDAwMDI5NzczOSAwMDAwMCBuIAowMDAwMjk5MzMwIDAwMDAwIG4gCjAwMDAzMDEyMTQgMDAwMDAgbiAKMDAwMDI5OTM1MiAwMDAwMCBuIAowMDAwMzAxMzg0IDAwMDAwIG4gCjAwMDAzMDM0NjQgMDAwMDAgbiAKMDAwMDMwMTQwNiAwMDAwMCBuIAowMDAwMzAzNjM0IDAwMDAwIG4gCjAwMDAzNzk2NzEgMDAwMDAgbiAKMDAwMDMwMzY1NiAwMDAwMCBuIAowMDAwMzIzNjczIDAwMDAwIG4gCjAwMDAzMDM3OTYgMDAwMDAgbiAKMDAwMDM3OTc1NSAwMDAwMCBuIAowMDAwMzAzOTQwIDAwMDAwIG4gCjAwMDAzMDQwODAgMDAwMDAgbiAKMDAwMDM3OTgzNiAwMDAwMCBuIAowMDAwMzA0MjIyIDAwMDAwIG4gCjAwMDAzMDQzNjIgMDAwMDAgbiAKMDAwMDM3OTkxOCAwMDAwMCBuIAowMDAwMzA0NTA2IDAwMDAwIG4gCjAwMDAzMDQ2NDYgMDAwMDAgbiAKMDAwMDM4MDAwMCAwMDAwMCBuIAowMDAwMzA0NzkwIDAwMDAwIG4gCjAwMDAzMDQ5MzAgMDAwMDAgbiAKMDAwMDM4MDA4MiAwMDAwMCBuIAowMDAwMzA1MDcyIDAwMDAwIG4gCjAwMDAzMDUyMTEgMDAwMDAgbiAKMDAwMDM4MDE2MiAwMDAwMCBuIAowMDAwMzA1MzUzIDAwMDAwIG4gCjAwMDAzMDU0OTMgMDAwMDAgbiAKMDAwMDM4MDI0NCAwMDAwMCBuIAowMDAwMzA1NjM1IDAwMDAwIG4gCjAwMDAzMDU3NzUgMDAwMDAgbiAKMDAwMDM4MDMyNCAwMDAwMCBuIAowMDAwMzA1OTE3IDAwMDAwIG4gCjAwMDAzMDYwNTcgMDAwMDAgbiAKMDAwMDM4MDQwNCAwMDAwMCBuIAowMDAwMzA2MjAxIDAwMDAwIG4gCjAwMDAzMDYzNDAgMDAwMDAgbiAKMDAwMDM4MDQ4NCAwMDAwMCBuIAowMDAwMzA2NDgyIDAwMDAwIG4gCjAwMDAzMDY2MjEgMDAwMDAgbiAKMDAwMDM4MDU2NCAwMDAwMCBuIAowMDAwMzA2NzYzIDAwMDAwIG4gCjAwMDAzMDY5MDUgMDAwMDAgbiAKMDAwMDM4MDY0NCAwMDAwMCBuIAowMDAwMzA3MDQ3IDAwMDAwIG4gCjAwMDAzMDcxODYgMDAwMDAgbiAKMDAwMDM4MDcyNCAwMDAwMCBuIAowMDAwMzA3MzMwIDAwMDAwIG4gCjAwMDAzMDc0NjkgMDAwMDAgbiAKMDAwMDM4MDgwNCAwMDAwMCBuIAowMDAwMzA3NjEzIDAwMDAwIG4gCjAwMDAzMDc3NTIgMDAwMDAgbiAKMDAwMDM4MDg4NCAwMDAwMCBuIAowMDAwMzA3ODk0IDAwMDAwIG4gCjAwMDAzMDgwMzQgMDAwMDAgbiAKMDAwMDMwODE3NiAwMDAwMCBuIAowMDAwMzA4MzE3IDAwMDAwIG4gCjAwMDAzODA5NjQgMDAwMDAgbiAKMDAwMDMwODQ2MSAwMDAwMCBuIAowMDAwMzA4NjAxIDAwMDAwIG4gCjAwMDAzMDg3NDUgMDAwMDAgbiAKMDAwMDMwODg4NiAwMDAwMCBuIAowMDAwMzgxMDQ0IDAwMDAwIG4gCjAwMDAzMDkwMjggMDAwMDAgbiAKMDAwMDMwOTE2OCAwMDAwMCBuIAowMDAwMzgxMTI1IDAwMDAwIG4gCjAwMDAzMDkzMTAgMDAwMDAgbiAKMDAwMDMwOTQ1MCAwMDAwMCBuIAowMDAwMzgxMjA2IDAwMDAwIG4gCjAwMDAzMDk1OTIgMDAwMDAgbiAKMDAwMDMwOTczMiAwMDAwMCBuIAowMDAwMzgxMjg4IDAwMDAwIG4gCjAwMDAzMDk4NzQgMDAwMDAgbiAKMDAwMDMxMDAxNiAwMDAwMCBuIAowMDAwMzEwMTU4IDAwMDAwIG4gCjAwMDAzMjQyNDkgMDAwMDAgbiAKMDAwMDMyNTI2MyAwMDAwMCBuIAowMDAwMzI0MjcyIDAwMDAwIG4gCjAwMDAzMjU0MzMgMDAwMDAgbiAKMDAwMDMyNTQ1NCAwMDAwMCBuIAowMDAwMzI1NzE3IDAwMDAwIG4gCjAwMDAzMzYwNDIgMDAwMDAgbiAKMDAwMDMzNjE0MiAwMDAwMCBuIAowMDAwMzM2MzA3IDAwMDAwIG4gCjAwMDAzMzY4NDkgMDAwMDAgbiAKMDAwMDMzNzQ5MyAwMDAwMCBuIAowMDAwMzM3NzU0IDAwMDAwIG4gCjAwMDAzNTA4MzUgMDAwMDAgbiAKMDAwMDM1MDkzNSAwMDAwMCBuIAowMDAwMzUxMDk2IDAwMDAwIG4gCjAwMDAzNTE2NjcgMDAwMDAgbiAKMDAwMDM1MjM0NSAwMDAwMCBuIAowMDAwMzUyNjExIDAwMDAwIG4gCjAwMDAzNjMzNzIgMDAwMDAgbiAKMDAwMDM2MzQ3MCAwMDAwMCBuIAowMDAwMzYzNjM2IDAwMDAwIG4gCjAwMDAzNjQxNDUgMDAwMDAgbiAKMDAwMDM2NDc0OSAwMDAwMCBuIAowMDAwMzY0NzcyIDAwMDAwIG4gCjAwMDAzNjQ3OTIgMDAwMDAgbiAKMDAwMDM2NDgxMyAwMDAwMCBuIAowMDAwMzY0ODM2IDAwMDAwIG4gCjAwMDAzNjQ4NTYgMDAwMDAgbiAKMDAwMDM2NDg3NyAwMDAwMCBuIAowMDAwMzY0OTAwIDAwMDAwIG4gCjAwMDAzNjQ5MjAgMDAwMDAgbiAKdHJhaWxlcgo8PAovU2l6ZSA3NTcKL1Jvb3QgMiAwIFIKL0luZm8gNCAwIFIKL0lEIFs8QUNFOUFEM0NBMTg2QjBFQTYzODlEMUZEQjA0Q0Q0RDc+IDxBQ0U5QUQzQ0ExODZCMEVBNjM4OUQxRkRCMDRDRDRENz5dCj4+CnN0YXJ0eHJlZgozODEzNjgKJSVFT0YK
en
de
internal
external
public
Misc
Misc Comment
1
current_timestamp
1
current_timestamp
1
0
Created
1
current_timestamp
1
current_timestamp
1