diff --git a/cfg/cfg.d/z_reports.pl b/cfg/cfg.d/z_reports.pl
index 3e693c7..a421af4 100644
--- a/cfg/cfg.d/z_reports.pl
+++ b/cfg/cfg.d/z_reports.pl
@@ -1,7 +1,7 @@
#
# EPrints Services - Generic Reporting System
#
-# Version: 0.1
+# Version: 3.0
#
@@ -39,6 +39,7 @@
#export field options
$c->{eprint_report}->{exportfields} = {
eprint_report_core => [ qw(
+ eprintid
title
creators_name
abstract
@@ -51,11 +52,12 @@
ispublished
refereed
publication
- document_format
+ documents.format
datestamp
)],
};
$c->{eprint_report}->{exportfield_defaults} = [ qw(
+ eprintid
title
creators_name
abstract
@@ -68,7 +70,7 @@
ispublished
refereed
publication
- document_format
+ documents.format
datestamp
)];
diff --git a/lib/plugins/EPrints/Plugin/Export/Grid2.pm b/lib/plugins/EPrints/Plugin/Export/Grid2.pm
index 9a8b369..a4ef808 100644
--- a/lib/plugins/EPrints/Plugin/Export/Grid2.pm
+++ b/lib/plugins/EPrints/Plugin/Export/Grid2.pm
@@ -66,14 +66,50 @@ sub header_row
if ($field->isa("EPrints::MetaField::Multipart"))
{
- my $name = $field->name;
- push @names, map {
- $name . '.' . $_->{sub_name}
- } @{$field->property("fields_cache")};
+ my $parent_name = $field->render_name;
+ if( $field->isa( "EPrints::MetaField::Name" )) #need to deal with legacy phrase id's
+ {
+ foreach my $bit ( $field->get_input_bits() )
+ {
+ $bit = "given_names" if( $bit eq "given" );
+ $bit = "family_names" if( $bit eq "family" );
+ my $custom_phrase = $field->name . "_" . $bit;
+ if( $ds->repository->get_lang->has_phrase( $custom_phrase ) ) #allow a custom phrase to be used
+ {
+ push @names, $ds->repository->html_phrase( $custom_phrase );
+ }
+ else
+ {
+ push @names, $parent_name . ": " . $ds->repository->html_phrase( "lib/metafield:".$bit );
+ }
+ }
+ }
+ else
+ {
+ my $name = $field->name;
+ push @names, map {
+ $name . '.' . $_->{sub_name}
+ } @{$field->property("fields_cache")};
+ }
+ }
+ elsif( $field->isa("EPrints::MetaField::Compound" ) )
+ {
+ foreach my $sub_field (@{$field->property("fields_cache")})
+ {
+ my $custom_phrase = $field->name . "_" . $sub_field->name;
+ if( $ds->repository->get_lang->has_phrase( $custom_phrase ) ) #allow a custom phrase to be used
+ {
+ push @names, $ds->repository->html_phrase( $custom_phrase );
+ }
+ else
+ {
+ push @names, $field->render_name . ": " . $sub_field->render_name;
+ }
+ }
}
else
{
- push @names, $field->name;
+ push @names, $field->render_name;
}
}
}
@@ -237,7 +273,28 @@ sub value_to_rows
}
elsif ($field->isa("EPrints::MetaField::Multipart"))
{
- push @rows, [map { $value->{$_->{sub_name}} } @{$field->property("fields_cache")}];
+ if( $field->isa( "EPrints::MetaField::Name" )) #need to deal with legacy phrase id's
+ {
+ my @bit_values;
+ foreach my $bit ( $field->get_input_bits() )
+ {
+ push @bit_values, $value->{$bit};
+ }
+ push @rows, \@bit_values;
+ }
+ else
+ {
+ push @rows, [map { $value->{$_->{sub_name}} } @{$field->property("fields_cache")}];
+ }
+ }
+ elsif ($field->isa("EPrints::MetaField::Compound"))
+ {
+ my @sub_values;
+ foreach my $key (keys %{$value})
+ {
+ push @sub_values, $value->{$key};
+ }
+ push @rows, \@sub_values;
}
else
{
diff --git a/lib/plugins/EPrints/Plugin/Export/Report/HTML.pm b/lib/plugins/EPrints/Plugin/Export/Report/HTML.pm
index cfd3e34..ea77b03 100644
--- a/lib/plugins/EPrints/Plugin/Export/Report/HTML.pm
+++ b/lib/plugins/EPrints/Plugin/Export/Report/HTML.pm
@@ -145,13 +145,14 @@ sub output_dataobj
}
else #render normal value like a normal field
{
- my $ds_id = $dataobj->get_dataset_id;
- my $ds = $repo->dataset( $ds_id );
+ my $ds = $dataobj->dataset;
if( $ds->has_field( $f ) )
{
+ my $field = EPrints::Utils::field_from_config_string( $ds, $f );
+
$table->appendChild( $repo->render_row(
- $repo->html_phrase( $ds_id."_fieldname_".$f ),
- $dataobj->render_value( $f )
+ $field->render_name,
+ $dataobj->render_value( $f )
) );
}
}
diff --git a/lib/plugins/EPrints/Plugin/Screen/Report.pm b/lib/plugins/EPrints/Plugin/Screen/Report.pm
index 9058d35..434c060 100644
--- a/lib/plugins/EPrints/Plugin/Screen/Report.pm
+++ b/lib/plugins/EPrints/Plugin/Screen/Report.pm
@@ -816,12 +816,12 @@ sub render_export_bar
my $count = 0; #count how many fields we add
foreach my $fieldname( @{$repo->config( $self->{export_conf}, "exportfields" )->{$key}} )
{
- if( defined $repo->config( $self->{export_conf}, "customer_export" ) && exists ${$repo->config( $self->{export_conf}, "custom_export" )}{$fieldname} ) #no field in dataset, but we have a custom export function instead
+ if( defined $repo->config( $self->{export_conf}, "custom_export" ) && exists ${$repo->config( $self->{export_conf}, "custom_export" )}{$fieldname} ) #we have a custom export function instead
{
$count++;
$self->_export_field_checkbox( $repo, $fieldname, $ul, $repo->html_phrase( "exportfieldoptions:$fieldname" ) );
}
- elsif( $report_ds->has_field( $fieldname ) )
+ elsif( defined EPrints::Utils::field_from_config_string( $report_ds, $fieldname ) )
{
my $field = EPrints::Utils::field_from_config_string( $report_ds, $fieldname );
$count++;
diff --git a/reports.epm b/reports.epm
index 5e43aa1..25cb462 100644
--- a/reports.epm
+++ b/reports.epm
@@ -42,11 +42,11 @@ cGxlX2ZpZWxkcyB9Owo=
epm/reports/cfg/cfg.d/z_reports.pl
text/plain
- 385eec38a9a534ff630359efd9b5460b
+ 334237b831581075209dbbedf084d878
MD5
- 2593
+ 2609
IwojIEVQcmludHMgU2VydmljZXMgLSBHZW5lcmljIFJlcG9ydGluZyBTeXN0ZW0KIwojIFZlcnNp
-b246IDAuMQojCgoKJGMtPntwbHVnaW5zfXsiU2NyZWVuOjpSZXBvcnQifXtwYXJhbXN9e2Rpc2Fi
+b246IDMuMAojCgoKJGMtPntwbHVnaW5zfXsiU2NyZWVuOjpSZXBvcnQifXtwYXJhbXN9e2Rpc2Fi
bGV9ID0gMDsKCiRjLT57cGx1Z2luc317IkV4cG9ydDo6UmVwb3J0In17cGFyYW1zfXtkaXNhYmxl
fSA9IDA7CiRjLT57cGx1Z2luc317IkV4cG9ydDo6UmVwb3J0OjpDU1YifXtwYXJhbXN9e2Rpc2Fi
bGV9ID0gMDsKJGMtPntwbHVnaW5zfXsiRXhwb3J0OjpSZXBvcnQ6OkpTT04ifXtwYXJhbXN9e2Rp
@@ -67,30 +67,30 @@ ICAgICAgICAiYnl5ZWFyIiA9PiAiLWRhdGUvY3JlYXRvcnNfbmFtZS90aXRsZSIsCiAgICAgICAg
ImJ5dGl0bGUiID0+ICJ0aXRsZS9jcmVhdG9yc19uYW1lLy1kYXRlIiwKICAgICAgICAiYnlkaXZp
c2lvbiIgPT4gImRpdmlzaW9ucy9jcmVhdG9yc19uYW1lLy1kYXRlIiwKfTsKCiNleHBvcnQgZmll
bGQgb3B0aW9ucwokYy0+e2VwcmludF9yZXBvcnR9LT57ZXhwb3J0ZmllbGRzfSA9IHsKICAgICAg
-ICBlcHJpbnRfcmVwb3J0X2NvcmUgPT4gWyBxdygKICAgICAgICAgICAgICAgIHRpdGxlCiAgICAg
-ICAgICAgICAgICBjcmVhdG9yc19uYW1lCiAgICAgICAgICAgICAgICBhYnN0cmFjdAogICAgICAg
-ICAgICAgICAgZGF0ZQogICAgICAgICAgICAgICAga2V5d29yZHMKICAgICAgICAgICAgICAgIGRp
-dmlzaW9ucwogICAgICAgICAgICAgICAgc3ViamVjdHMKICAgICAgICAgICAgICAgIHR5cGUKICAg
-ICAgICAgICAgICAgIGVkaXRvcnNfbmFtZQogICAgICAgICAgICAgICAgaXNwdWJsaXNoZWQKICAg
-ICAgICAgICAgICAgIHJlZmVyZWVkCiAgICAgICAgICAgICAgICBwdWJsaWNhdGlvbgogICAgICAg
-ICAgICAgICAgZG9jdW1lbnRfZm9ybWF0CiAgICAgICAgICAgICAgICBkYXRlc3RhbXAKICAgICAg
-ICApXSwKfTsKJGMtPntlcHJpbnRfcmVwb3J0fS0+e2V4cG9ydGZpZWxkX2RlZmF1bHRzfSA9IFsg
-cXcoCgl0aXRsZQogICAgICAgIGNyZWF0b3JzX25hbWUKICAgICAgICBhYnN0cmFjdAogICAgICAg
-IGRhdGUKICAgICAgICBrZXl3b3JkcwogICAgICAgIGRpdmlzaW9ucwogICAgICAgIHN1YmplY3Rz
-CiAgICAgICAgdHlwZQogICAgICAgIGVkaXRvcnNfbmFtZQogICAgICAgIGlzcHVibGlzaGVkCiAg
-ICAgICAgcmVmZXJlZWQKICAgICAgICBwdWJsaWNhdGlvbgogICAgICAgIGRvY3VtZW50X2Zvcm1h
-dAoJZGF0ZXN0YW1wCildOwoKI3NldCBjb25maWcgZm9yIGRlZmF1bHQgdXNlciByZXBvcnQKJGMt
-PntkYXRhc2V0c30tPnt1c2VyfS0+e3NlYXJjaH0tPnt1c2VyX3JlcG9ydH0gPSAkYy0+e3NlYXJj
-aH0tPnt1c2VyfTsgI3VzZSB0aGUgZGVmYXVsdCB1c2VyIHNlYXJjaCBmb3JtCgojc29ydCBvcHRp
-b25zIGZvciBzb3J0aW5nIHdpdGhpbiBlYWNoIGdyb3VwCiRjLT57dXNlcl9yZXBvcnR9LT57c29y
-dGZpZWxkc30gPSB7CiAgICAgICAgImJ5bmFtZSIgPT4gIm5hbWUiLAp9OwoKI2V4cG9ydCBmaWVs
-ZCBvcHRpb25zCiRjLT57dXNlcl9yZXBvcnR9LT57ZXhwb3J0ZmllbGRzfSA9IHsKICAgICAgICB1
-c2VyX3JlcG9ydF9jb3JlID0+IFsgcXcoCiAgICAgICAgCW5hbWUKCQl1c2VybmFtZQoJCXVzZXJp
-ZAoJCWRlcHQKCQlvcmcKCQlhZGRyZXNzCgkJY291bnRlcgoJCXVzZXJ0eXBlCgkJZW1haWwKCSld
-LAp9OwoKCiRjLT57dXNlcl9yZXBvcnR9LT57ZXhwb3J0ZmllbGRfZGVmYXVsdHN9ID0gWyBxdygK
-ICAgICAgICBuYW1lCgl1c2VybmFtZQoJdXNlcmlkCglkZXB0CglvcmcKCWFkZHJlc3MKCWNvdW50
-ZXIKCXVzZXJ0eXBlCgllbWFpbAopXTsKCgpwdXNoIEB7JGMtPnt1c2VyX3JvbGVzfS0+e2FkbWlu
-fX0sIHF3ewogICAgICAgICtyZXBvcnQKfTsKCg==
+ICBlcHJpbnRfcmVwb3J0X2NvcmUgPT4gWyBxdygKCQllcHJpbnRpZAogICAgICAgICAgICAgICAg
+dGl0bGUKICAgICAgICAgICAgICAgIGNyZWF0b3JzX25hbWUKICAgICAgICAgICAgICAgIGFic3Ry
+YWN0CiAgICAgICAgICAgICAgICBkYXRlCiAgICAgICAgICAgICAgICBrZXl3b3JkcwogICAgICAg
+ICAgICAgICAgZGl2aXNpb25zCiAgICAgICAgICAgICAgICBzdWJqZWN0cwogICAgICAgICAgICAg
+ICAgdHlwZQogICAgICAgICAgICAgICAgZWRpdG9yc19uYW1lCiAgICAgICAgICAgICAgICBpc3B1
+Ymxpc2hlZAogICAgICAgICAgICAgICAgcmVmZXJlZWQKICAgICAgICAgICAgICAgIHB1YmxpY2F0
+aW9uCiAgICAgICAgICAgICAgICBkb2N1bWVudHMuZm9ybWF0CiAgICAgICAgICAgICAgICBkYXRl
+c3RhbXAKICAgICAgICApXSwKfTsKJGMtPntlcHJpbnRfcmVwb3J0fS0+e2V4cG9ydGZpZWxkX2Rl
+ZmF1bHRzfSA9IFsgcXcoCgllcHJpbnRpZAoJdGl0bGUKICAgICAgICBjcmVhdG9yc19uYW1lCiAg
+ICAgICAgYWJzdHJhY3QKICAgICAgICBkYXRlCiAgICAgICAga2V5d29yZHMKICAgICAgICBkaXZp
+c2lvbnMKICAgICAgICBzdWJqZWN0cwogICAgICAgIHR5cGUKICAgICAgICBlZGl0b3JzX25hbWUK
+ICAgICAgICBpc3B1Ymxpc2hlZAogICAgICAgIHJlZmVyZWVkCiAgICAgICAgcHVibGljYXRpb24K
+CWRvY3VtZW50cy5mb3JtYXQKCWRhdGVzdGFtcAopXTsKCiNzZXQgY29uZmlnIGZvciBkZWZhdWx0
+IHVzZXIgcmVwb3J0CiRjLT57ZGF0YXNldHN9LT57dXNlcn0tPntzZWFyY2h9LT57dXNlcl9yZXBv
+cnR9ID0gJGMtPntzZWFyY2h9LT57dXNlcn07ICN1c2UgdGhlIGRlZmF1bHQgdXNlciBzZWFyY2gg
+Zm9ybQoKI3NvcnQgb3B0aW9ucyBmb3Igc29ydGluZyB3aXRoaW4gZWFjaCBncm91cAokYy0+e3Vz
+ZXJfcmVwb3J0fS0+e3NvcnRmaWVsZHN9ID0gewogICAgICAgICJieW5hbWUiID0+ICJuYW1lIiwK
+fTsKCiNleHBvcnQgZmllbGQgb3B0aW9ucwokYy0+e3VzZXJfcmVwb3J0fS0+e2V4cG9ydGZpZWxk
+c30gPSB7CiAgICAgICAgdXNlcl9yZXBvcnRfY29yZSA9PiBbIHF3KAogICAgICAgIAluYW1lCgkJ
+dXNlcm5hbWUKCQl1c2VyaWQKCQlkZXB0CgkJb3JnCgkJYWRkcmVzcwoJCWNvdW50ZXIKCQl1c2Vy
+dHlwZQoJCWVtYWlsCgkpXSwKfTsKCgokYy0+e3VzZXJfcmVwb3J0fS0+e2V4cG9ydGZpZWxkX2Rl
+ZmF1bHRzfSA9IFsgcXcoCiAgICAgICAgbmFtZQoJdXNlcm5hbWUKCXVzZXJpZAoJZGVwdAoJb3Jn
+CglhZGRyZXNzCgljb3VudGVyCgl1c2VydHlwZQoJZW1haWwKKV07CgoKcHVzaCBAeyRjLT57dXNl
+cl9yb2xlc30tPnthZG1pbn19LCBxd3sKICAgICAgICArcmVwb3J0Cn07Cgo=
@@ -179,9 +179,9 @@ dDpzb3J0OmJ5bmFtZSI+TmFtZTwvZXBwOnBocmFzZT4KCjwvZXBwOnBocmFzZXM+Cg==
plugins/EPrints/Plugin/Export/Grid2.pm
text/plain
- facf6666f0b9757b6b43e6fd20559099
+ dd9b2c0a038b1f9f51b618a4b2e11c4b
MD5
- 7787
+ 9699
PWhlYWQxIE5BTUUKCkVQcmludHM6OlBsdWdpbjo6RXhwb3J0OjpHcmlkMgoKPWN1dAoKcGFja2Fn
ZSBFUHJpbnRzOjpQbHVnaW46OkV4cG9ydDo6R3JpZDI7Cgp1c2UgRGF0YTo6RHVtcGVyOwp1c2Ug
RVByaW50czo6UGx1Z2luOjpFeHBvcnQ7CgpASVNBID0gKCAiRVByaW50czo6UGx1Z2luOjpFeHBv
@@ -204,121 +204,155 @@ ICAgICAgIHsKICAgICAgICAgICAgICAgIAlwdXNoIEBuYW1lcywgJGRzLT5yZXBvc2l0b3J5LT5o
dG1sX3BocmFzZSggImV4cG9ydGZpZWxkb3B0aW9uczokZiIgKTsKICAgICAgICAgICAgICAgIH0K
CQllbHNlCgkJewoJCQlteSAkZmllbGQgPSBFUHJpbnRzOjpVdGlsczo6ZmllbGRfZnJvbV9jb25m
aWdfc3RyaW5nKCAkZHMsICRmICk7CgoJCQlpZiAoJGZpZWxkLT5pc2EoIkVQcmludHM6Ok1ldGFG
-aWVsZDo6TXVsdGlwYXJ0IikpCgkJCXsKCQkJCW15ICRuYW1lID0gJGZpZWxkLT5uYW1lOwoJCQkJ
-cHVzaCBAbmFtZXMsIG1hcCB7CgkJCQkJJG5hbWUgLiAnLicgLiAkXy0+e3N1Yl9uYW1lfQoJCQkJ
-fSBAeyRmaWVsZC0+cHJvcGVydHkoImZpZWxkc19jYWNoZSIpfTsKCQkJfQoJCQllbHNlCgkJCXsK
-CQkJCXB1c2ggQG5hbWVzLCAkZmllbGQtPm5hbWU7CgkJCX0KCQl9Cgl9CQkKCXJldHVybiBAbmFt
-ZXM7Cn0KCnN1YiBkYXRhb2JqX3RvX3Jvd3MKewoJbXkoICRzZWxmLCAkZGF0YW9iaiwgJW9wdHMg
-KSA9IEBfOwoKCW15ICRtYWluX2RhdGFvYmogPSAkZGF0YW9iajsgI3N0b3JlIGRhdGFvYmogZm9y
-IGZ1dHVyZSByZWZlcmVuY2UKCglteSAkZmllbGRzID0gJG9wdHN7ZmllbGRzfSB8fCBbJHNlbGYt
-PmZpZWxkcygkZGF0YW9iai0+e2RhdGFzZXR9KV07CglteSAkZHMgPSAkb3B0c3tsaXN0fS0+e2Rh
-dGFzZXR9OwoKCW15IEByb3dzID0gKFtdKTsKCWZvcmVhY2ggbXkgJGZuYW1lIChAJGZpZWxkcykK
-CXsKCQkjcmVzZXQgZGF0YW9iaiB0byBtYWluIGRhdGFvYmoKCQkkZGF0YW9iaiA9ICRtYWluX2Rh
-dGFvYmo7CgoJCSNnZXQgdGhlIGZpZWxkIGZyb20gdGhlIGlkCgkJbXkgJGZpZWxkOwoJCW15IEBm
-bmFtZXMgPSBzcGxpdCggL1wuLywgJGZuYW1lICk7CgkJbXkgJHN1Yl9kYXRhb2JqX3ZhbHVlcyA9
-IFtdOwkJCgkJaWYoIHNjYWxhciggQGZuYW1lcyA+IDEgKSApICNhIGZpZWxkIG9mIGFub3RoZXIg
-ZGF0YXNldCwgZS5nLiBkb2N1bWVudHMuY29udGVudAogICAgICAgICAgICAgICAgewoJCQkkZmll
-bGQgPSAkZHMtPmdldF9maWVsZCggJGZuYW1lc1swXSApOyAjZmlyc3QgZ2V0IHRoZSBmaWVsZAoJ
-CQlpZiggJGZpZWxkLT5pc190eXBlKCAic3Vib2JqZWN0IiwgIml0ZW1yZWYiICkgKSAjaWYgdGhl
-IGZpZWxkIGJlbG9uZ3MgdG8gYW5vdGhlciBkYXRhc2V0CiAgICAgICAgICAgICAgICAgICAgICAg
-IHsKCQkJCW15ICRzdWJfZHNfaWQgPSAkZmllbGQtPmdldF9wcm9wZXJ0eSggImRhdGFzZXRpZCIg
-KTsKCQkJCW15ICRtdWx0aXBsZSA9ICRmaWVsZC0+Z2V0X3Byb3BlcnR5KCAibXVsdGlwbGUiICk7
-CgkJCQlpZiggJG11bHRpcGxlICkKCQkJCXsKCQkJCQlteSBAc3ViX2RhdGFvYmpzOwoJCQkJCSNn
-ZXQgdGhlIGRhdGFvYmpzIG9mIHRoaXMgZmllbGQKCQkJCQlpZiggJHN1Yl9kc19pZCBlcSAiZG9j
-dW1lbnQiICkgI2RvY3VtZW50cyByZXByZXNlbnQgYSBzcGVjaWFsIGNhc2Ugb2Ygc3ViIG9iamVj
-dCAtIHdlIGRvbid0IHdhbnQgdm9sYXRpbGUgZG9jdW1lbnRzIChwcm9iYWJseSkKICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsJCgkJCQkJCUBzdWJfZGF0YW9ianMgPSAk
-ZGF0YW9iai0+Z2V0X2FsbF9kb2N1bWVudHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNl
-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CgkJCQkJCWZvcmVhY2gg
-bXkgJHN1Yl9vYmogKCBAeyRkYXRhb2JqLT52YWx1ZSggJGZuYW1lc1swXSApfSApCgkJCQkJCXsK
-CQkJCQkJCXB1c2ggQHN1Yl9kYXRhb2JqcywgJGZpZWxkLT5nZXRfaXRlbSggJGRhdGFvYmotPnJl
-cG9zaXRvcnksICRzdWJfb2JqICk7CgkJCQkJCX0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgIH0KCQkJCQkKCQkJCQkjYW5kIGJ1aWxkIHVwIGFuIGFycmF5IG9mIHRoZXNl
-IHN1YiBkYXRhb2JqJ3MgdmFsdWVzCgkJCQkJZm9yZWFjaCBteSAkb2JqICggQHN1Yl9kYXRhb2Jq
-cyApICNnZXQgdGhlIHZhbHVlcyB3ZSBhcmUgcmVxdWVzdGluZyBvZiB0aGUgZGF0YW9iamVjdHMK
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKCQkJCQkJI2NoZWNrIGZv
-ciBhIGN1c3RvbSByZW5kZXJlcgoJCQkJCQlteSAkdmFsdWU7CgkJCQkJCWlmKCBkZWZpbmVkICRv
-cHRze2N1c3RvbV9leHBvcnR9ICYmIGRlZmluZWQgJG9wdHN7Y3VzdG9tX2V4cG9ydH0tPnskZm5h
-bWV9ICkKCQkJCQkJewoJCQkJCQkJJHZhbHVlID0gJG9wdHN7Y3VzdG9tX2V4cG9ydH0tPnskZm5h
-bWV9LT4oICRvYmosICRvcHRze3BsdWdpbn0gKTsKCQkJCQkJfQoJCQkJCQllbHNlCgkJCQkJCXsJ
-CQkJCQkJCgkJCQkJCQkkZmllbGQgPSBFUHJpbnRzOjpVdGlsczo6ZmllbGRfZnJvbV9jb25maWdf
-c3RyaW5nKCAkb2JqLT5kYXRhc2V0LCAkZm5hbWVzWzFdICk7CQkJCQkJCQoJCQkJCQkJaWYoICRm
-aWVsZC0+Z2V0X3Byb3BlcnR5KCAidmlydHVhbCIgKSApICN2aXJ0dWFsIGZpZWxkcyBuZWVkIHJl
-bmRlcmluZwoJCQkJCQkJewoJCQkJCQkJCSR2YWx1ZSA9IEVQcmludHM6OlV0aWxzOjp0cmVlX3Rv
-X3V0ZjgoICRvYmotPnJlbmRlcl92YWx1ZSggJGZuYW1lc1sxXSApICk7CgkJCQkJCQl9CgkJCQkJ
-CQllbHNlICNyZWd1bGFyIGZpZWxkIHZhbHVlcyBjYW4gc2ltcGx5IGJlIHJldHJpZXZlZAoJCQkJ
-CQkJewoJCQkJCQkJCSR2YWx1ZSA9ICRmaWVsZC0+Z2V0X3ZhbHVlKCAkb2JqICk7CgkJCQkJCQl9
-CgkJCQkJCX0KCQkJCQkJcHVzaCBAeyRzdWJfZGF0YW9ial92YWx1ZXN9LCAkdmFsdWU7IAoJCQkJ
-CX0KCQkJCX0KCQkJCWVsc2UgI3dlIG9ubHkgaGF2ZSBvbmUgc3ViLW9iamVjdCwgCgkJCQl7CgkJ
-CQkJbXkgJHN1Yl9vYmogPSAkZmllbGQtPmdldF9pdGVtKCAkZGF0YW9iai0+cmVwb3NpdG9yeSwg
-JGRhdGFvYmotPnZhbHVlKCAkZm5hbWVzWzBdICkgKTsgI2dldCB0aGUgc3Vib2JqZWN0CgkJCQkJ
-JGZpZWxkID0gRVByaW50czo6VXRpbHM6OmZpZWxkX2Zyb21fY29uZmlnX3N0cmluZyggJHN1Yl9v
-YmotPmRhdGFzZXQsICRmbmFtZXNbMV0gKTsgI2dldCB0aGUgc3Vib2JqZWN0cyBmaWVsZAoJCQkJ
-CW15ICR2YWx1ZSA9ICRmaWVsZC0+Z2V0X3ZhbHVlKCAkc3ViX29iaiApOyAjZ2V0IHRoZSBzdWJv
-YmplY3RzIHZhbHVlIGZvciB0aGlzIGZpZWxkCgkJCQkJcHVzaCBAeyRzdWJfZGF0YW9ial92YWx1
-ZXN9LCAkdmFsdWU7CQkJCQkJCgkJCQl9CgkJCX0KCQl9CgoJCW15ICRpID0gQHskcm93c1swXX07
-CgkJbXkgJF9yb3dzOwoJCWlmKCBFUHJpbnRzOjpVdGlsczo6aXNfc2V0KCAkZmllbGQgKSApICN3
-ZSBhbHJlYWR5IGhhdmUgb3VyIHZhbHVlcwoJCXsKCQkJaWYoIHNjYWxhciBAeyRzdWJfZGF0YW9i
-al92YWx1ZXN9ID4gMCApCgkJCXsKCQkJCSRfcm93cyA9ICRzZWxmLT52YWx1ZV90b19yb3dzKCRm
-aWVsZCwgJHN1Yl9kYXRhb2JqX3ZhbHVlcyk7CQkJCgkJCX0KCQkJZWxzZSAjdGhlcmUncyBubyBy
-ZXN1bHRzLCBidXQgd2Ugc3RpbGwgbmVlZCB0byBhZGQgYW4gZW1wdHkgY2VsbCB0byB0aGUgc3By
-ZWFkc2hlZXQKCQkJewoJCQkJJF9yb3dzID0gJHNlbGYtPnZhbHVlX3RvX3Jvd3MoJGZpZWxkLCB1
-bmRlZik7CgkJCX0KCQl9CgkJZWxzZSAjd2UgbmVlZCB0byByZXRyaWV2ZSBvdXIgdmFsdWVzIGZv
-ciB0aGlzIGZpZWxkIGZyb20gb3VyIGRhdGFvYmogKG9yIHN1Yl9kYXRhb2JqKQoJCXsKCQkJbXkg
-JHZhbHVlOwoJCQlpZiggZGVmaW5lZCAkb3B0c3tjdXN0b21fZXhwb3J0fSAmJiBkZWZpbmVkICRv
-cHRze2N1c3RvbV9leHBvcnR9LT57JGZuYW1lfSApICN3ZSBoYXZlIGEgY3VzdG9tIGV4cG9ydGVy
-CgkJCXsKCQkJCSR2YWx1ZSA9ICRvcHRze2N1c3RvbV9leHBvcnR9LT57JGZuYW1lfS0+KCAkZGF0
-YW9iaiwgJG9wdHN7cGx1Z2lufSApOwoJCQkJJF9yb3dzID0gJHNlbGYtPmN1c3RvbV92YWx1ZV90
-b19yb3dzKCAkdmFsdWUgKTsKCQkJfQoJCQllbHNlICNqdXN0IGdldCB0aGUgZmllbGQncyB1c3Vh
-bCB2YWx1ZQoJCQl7CgkJCQkkZmllbGQgPSBFUHJpbnRzOjpVdGlsczo6ZmllbGRfZnJvbV9jb25m
-aWdfc3RyaW5nKCAkZHMsICRmbmFtZSApOwoJCQkJaWYoICRmaWVsZC0+Z2V0X3Byb3BlcnR5KCAi
-dmlydHVhbCIgKSApICN2aXJ0dWFsIGZpZWxkcyBuZWVkIHJlbmRlcmluZwoJCQkJewoJCQkJCSR2
-YWx1ZSA9IEVQcmludHM6OlV0aWxzOjp0cmVlX3RvX3V0ZjgoICRkYXRhb2JqLT5yZW5kZXJfdmFs
-dWUoICRmbmFtZSApICk7CgkJCQl9CgkJCQllbHNlICNyZWd1bGFyIGZpZWxkIHZhbHVlcyBjYW4g
-c2ltcGx5IGJlIHJldHJpZXZlZAoJCQkJewoJCQkJCSR2YWx1ZSA9ICRmaWVsZC0+Z2V0X3ZhbHVl
-KCAkZGF0YW9iaiApOwoJCQkJfQoJCQkJJF9yb3dzID0gJHNlbGYtPnZhbHVlX3RvX3Jvd3MoJGZp
-ZWxkLCAkdmFsdWUpOyAJCQoJCQl9CQkJCgkJfQoKCQlmb3JlYWNoIG15ICRqICgwLi4kIyRfcm93
-cykKCQl7CgkJCWZvcmVhY2ggbXkgJF9pICgwLi4kI3skX3Jvd3MtPlskal19KQoJCQl7CgkJCQkk
-cm93c1skal1bJGkrJF9pXSA9ICRfcm93cy0+WyRqXVskX2ldOwoJCQl9CgkJfQoJfQoKCSMgZ2Vu
-ZXJhdGUgY29tcGxldGUgcm93cwoJaWYoJG9wdHN7cGx1Z2lufS0+cGFyYW0oICJtdWx0aWxpbmVf
-cmVwZWF0IiApKSAjd2Ugd2FudCBlYWNoIGNvbHVtbiB0byByZXBlYXQgZm9yIGVhY2ggcm93Cgl7
-CgkJZm9yZWFjaCBteSAkaSAoMC4uKHNjYWxhciBAcm93cyktMSkKCQl7CgkJCWZvcmVhY2ggbXkg
-JGogKDAuLiQjeyRyb3dzWzBdfSkKCQkJewoJCQkJJHJvd3NbJGldWyRqXSB8fD0gJHJvd3NbMF1b
-JGpdOwoJCQl9CQoJCX0KCX0KCWVsc2UgI3dlIGRvbid0IHdhbnQgcmVwZWF0aW5nIHZhbHVlcyBp
-biB0aGUgY29sdW1ucwoJewkKCQlmb3IoQHJvd3MpIHsKCQkJJF8tPlswXSA9ICRyb3dzWzBdWzBd
-OyAjZmlyc3QgZWxlbWVudCBvZiB0aGlzIGFycmF5IGVxdWFscyB0aGUgZmlyc3QgZWxlbWVudCBv
-ZiB0aGUgZmlyc3Qgcm93CgkJCSRfLT5bJCN7JHJvd3NbMF19XSB8fD0gdW5kZWY7CgkJfQoKCX0K
-CglyZXR1cm4gXEByb3dzOwp9CgpzdWIgdmFsdWVfdG9fcm93cwp7CglteSAoJHNlbGYsICRmaWVs
-ZCwgJHZhbHVlKSA9IEBfOwoKCW15IEByb3dzOwoKCWlmIChyZWYoJHZhbHVlKSBlcSAiQVJSQVki
-KQoJewoJCSR2YWx1ZSA9IFskZmllbGQtPmVtcHR5X3ZhbHVlXSBpZiAhQCR2YWx1ZTsKCQlAcm93
-cyA9IG1hcCB7ICRzZWxmLT52YWx1ZV90b19yb3dzKCRmaWVsZCwgJF8pLT5bMF0gfSBAJHZhbHVl
-OwoJfQoJZWxzaWYgKCRmaWVsZC0+aXNhKCJFUHJpbnRzOjpNZXRhRmllbGQ6Ok11bHRpcGFydCIp
-KQoJewoJCXB1c2ggQHJvd3MsIFttYXAgeyAkdmFsdWUtPnskXy0+e3N1Yl9uYW1lfX0gfSBAeyRm
-aWVsZC0+cHJvcGVydHkoImZpZWxkc19jYWNoZSIpfV07Cgl9CgllbHNlCgl7CgkJcHVzaCBAcm93
-cywgWyR2YWx1ZV07Cgl9CgoJcmV0dXJuIFxAcm93czsKfQoKI3VzZWQgZm9yIGN1c3RvbSBleHBv
-cnRzIHRoYXQgbWlnaHQgcmV0dXJuIGEgZmllbGQgb3IgYW4gYXJyYXkgKGJ1dCBhcmVuJ3QgbmVj
-ZXNhcmlseSBhc3NvY2lhdGVkIHdpdGggYSBmaWVsZCEpCnN1YiBjdXN0b21fdmFsdWVfdG9fcm93
-cwp7CiAgICAgICAgbXkgKCRzZWxmLCAkdmFsdWUpID0gQF87CgogICAgICAgIG15IEByb3dzOwoK
-ICAgICAgICBpZiAocmVmKCR2YWx1ZSkgZXEgIkFSUkFZIikKICAgICAgICB7CiAgICAgICAgICAg
-ICAgICBAcm93cyA9IG1hcCB7ICRzZWxmLT5jdXN0b21fdmFsdWVfdG9fcm93cygkXyktPlswXSB9
-IEAkdmFsdWU7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgICAg
-ICBwdXNoIEByb3dzLCBbJHZhbHVlXTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBcQHJvd3M7
-Cn0KCgoxOwoKPWhlYWQxIENPUFlSSUdIVAoKPWZvciBDT1BZUklHSFQgQkVHSU4KCkNvcHlyaWdo
-dCAyMDAwLTIwMTEgVW5pdmVyc2l0eSBvZiBTb3V0aGFtcHRvbi4KCj1mb3IgQ09QWVJJR0hUIEVO
-RAoKPWZvciBMSUNFTlNFIEJFR0lOCgpUaGlzIGZpbGUgaXMgcGFydCBvZiBFUHJpbnRzIEw8aHR0
-cDovL3d3dy5lcHJpbnRzLm9yZy8+LgoKRVByaW50cyBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2Fu
-IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CnVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
-R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZApieSB0aGUgRnJl
-ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv
-cgooYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgoKRVByaW50cyBpcyBkaXN0cmli
-dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVApBTlkg
-V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFC
-SUxJVFkgb3IKRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBM
-ZXNzZXIgR2VuZXJhbCBQdWJsaWMKTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgoKWW91IHNob3Vs
-ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpM
-aWNlbnNlIGFsb25nIHdpdGggRVByaW50cy4gIElmIG5vdCwgc2VlIEw8aHR0cDovL3d3dy5nbnUu
-b3JnL2xpY2Vuc2VzLz4uCgo9Zm9yIExJQ0VOU0UgRU5ECgo=
+aWVsZDo6TXVsdGlwYXJ0IikpCgkJCXsKCQkJCW15ICRwYXJlbnRfbmFtZSA9ICRmaWVsZC0+cmVu
+ZGVyX25hbWU7CgkJCQlpZiggJGZpZWxkLT5pc2EoICJFUHJpbnRzOjpNZXRhRmllbGQ6Ok5hbWUi
+ICkpICNuZWVkIHRvIGRlYWwgd2l0aCBsZWdhY3kgcGhyYXNlIGlkJ3MKCQkJCXsKCQkJCQlmb3Jl
+YWNoIG15ICRiaXQgKCAkZmllbGQtPmdldF9pbnB1dF9iaXRzKCkgKQoJCQkJICAgICAgICB7CgkJ
+CQkJCSRiaXQgPSAiZ2l2ZW5fbmFtZXMiIGlmKCAkYml0IGVxICJnaXZlbiIgKTsKICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJJGJpdCA9ICJmYW1pbHlfbmFt
+ZXMiIGlmKCAkYml0IGVxICJmYW1pbHkiICk7CgkJCQkJCW15ICRjdXN0b21fcGhyYXNlID0gJGZp
+ZWxkLT5uYW1lIC4gIl8iIC4gJGJpdDsKCQkJCQkJaWYoICRkcy0+cmVwb3NpdG9yeS0+Z2V0X2xh
+bmctPmhhc19waHJhc2UoICRjdXN0b21fcGhyYXNlICkgKSAjYWxsb3cgYSBjdXN0b20gcGhyYXNl
+IHRvIGJlIHVzZWQKCQkJCQkJewoJCQkJCQkJcHVzaCBAbmFtZXMsICRkcy0+cmVwb3NpdG9yeS0+
+aHRtbF9waHJhc2UoICRjdXN0b21fcGhyYXNlICk7CgkJCQkJCX0KCQkJCQkJZWxzZQoJCQkJCQl7
+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAlwdXNoIEBu
+YW1lcywgJHBhcmVudF9uYW1lIC4gIjogIiAuICRkcy0+cmVwb3NpdG9yeS0+aHRtbF9waHJhc2Uo
+ICJsaWIvbWV0YWZpZWxkOiIuJGJpdCApOwoJCQkJCQl9CiAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICB9CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJbXkgJG5hbWUgPSAk
+ZmllbGQtPm5hbWU7CgkJCQkJcHVzaCBAbmFtZXMsIG1hcCB7CgkJCQkJCSRuYW1lIC4gJy4nIC4g
+JF8tPntzdWJfbmFtZX0KCQkJCQl9IEB7JGZpZWxkLT5wcm9wZXJ0eSgiZmllbGRzX2NhY2hlIil9
+OwoJCQkJfQoJCQl9CgkJCWVsc2lmKCAkZmllbGQtPmlzYSgiRVByaW50czo6TWV0YUZpZWxkOjpD
+b21wb3VuZCIgKSApCgkJCXsKCQkJCWZvcmVhY2ggbXkgJHN1Yl9maWVsZCAoQHskZmllbGQtPnBy
+b3BlcnR5KCJmaWVsZHNfY2FjaGUiKX0pCgkJCQl7CgkJCQkJbXkgJGN1c3RvbV9waHJhc2UgPSAk
+ZmllbGQtPm5hbWUgLiAiXyIgLiAkc3ViX2ZpZWxkLT5uYW1lOwoJCQkJCWlmKCAkZHMtPnJlcG9z
+aXRvcnktPmdldF9sYW5nLT5oYXNfcGhyYXNlKCAkY3VzdG9tX3BocmFzZSApICkgI2FsbG93IGEg
+Y3VzdG9tIHBocmFzZSB0byBiZSB1c2VkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJcHVzaCBA
+bmFtZXMsICRkcy0+cmVwb3NpdG9yeS0+aHRtbF9waHJhc2UoICRjdXN0b21fcGhyYXNlICk7CiAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgkJCQkJZWxzZQoJCQkJCXsK
+CQkJCQkJcHVzaCBAbmFtZXMsICRmaWVsZC0+cmVuZGVyX25hbWUgLiAiOiAiIC4gJHN1Yl9maWVs
+ZC0+cmVuZGVyX25hbWU7CgkJCQkJfQoJCQkJfQoJCQl9CgkJCWVsc2UKCQkJewoJCQkJcHVzaCBA
+bmFtZXMsICRmaWVsZC0+cmVuZGVyX25hbWU7CgkJCX0KCQl9Cgl9CQkKCXJldHVybiBAbmFtZXM7
+Cn0KCnN1YiBkYXRhb2JqX3RvX3Jvd3MKewoJbXkoICRzZWxmLCAkZGF0YW9iaiwgJW9wdHMgKSA9
+IEBfOwoKCW15ICRtYWluX2RhdGFvYmogPSAkZGF0YW9iajsgI3N0b3JlIGRhdGFvYmogZm9yIGZ1
+dHVyZSByZWZlcmVuY2UKCglteSAkZmllbGRzID0gJG9wdHN7ZmllbGRzfSB8fCBbJHNlbGYtPmZp
+ZWxkcygkZGF0YW9iai0+e2RhdGFzZXR9KV07CglteSAkZHMgPSAkb3B0c3tsaXN0fS0+e2RhdGFz
+ZXR9OwoKCW15IEByb3dzID0gKFtdKTsKCWZvcmVhY2ggbXkgJGZuYW1lIChAJGZpZWxkcykKCXsK
+CQkjcmVzZXQgZGF0YW9iaiB0byBtYWluIGRhdGFvYmoKCQkkZGF0YW9iaiA9ICRtYWluX2RhdGFv
+Ymo7CgoJCSNnZXQgdGhlIGZpZWxkIGZyb20gdGhlIGlkCgkJbXkgJGZpZWxkOwoJCW15IEBmbmFt
+ZXMgPSBzcGxpdCggL1wuLywgJGZuYW1lICk7CgkJbXkgJHN1Yl9kYXRhb2JqX3ZhbHVlcyA9IFtd
+OwkJCgkJaWYoIHNjYWxhciggQGZuYW1lcyA+IDEgKSApICNhIGZpZWxkIG9mIGFub3RoZXIgZGF0
+YXNldCwgZS5nLiBkb2N1bWVudHMuY29udGVudAogICAgICAgICAgICAgICAgewoJCQkkZmllbGQg
+PSAkZHMtPmdldF9maWVsZCggJGZuYW1lc1swXSApOyAjZmlyc3QgZ2V0IHRoZSBmaWVsZAoJCQlp
+ZiggJGZpZWxkLT5pc190eXBlKCAic3Vib2JqZWN0IiwgIml0ZW1yZWYiICkgKSAjaWYgdGhlIGZp
+ZWxkIGJlbG9uZ3MgdG8gYW5vdGhlciBkYXRhc2V0CiAgICAgICAgICAgICAgICAgICAgICAgIHsK
+CQkJCW15ICRzdWJfZHNfaWQgPSAkZmllbGQtPmdldF9wcm9wZXJ0eSggImRhdGFzZXRpZCIgKTsK
+CQkJCW15ICRtdWx0aXBsZSA9ICRmaWVsZC0+Z2V0X3Byb3BlcnR5KCAibXVsdGlwbGUiICk7CgkJ
+CQlpZiggJG11bHRpcGxlICkKCQkJCXsKCQkJCQlteSBAc3ViX2RhdGFvYmpzOwoJCQkJCSNnZXQg
+dGhlIGRhdGFvYmpzIG9mIHRoaXMgZmllbGQKCQkJCQlpZiggJHN1Yl9kc19pZCBlcSAiZG9jdW1l
+bnQiICkgI2RvY3VtZW50cyByZXByZXNlbnQgYSBzcGVjaWFsIGNhc2Ugb2Ygc3ViIG9iamVjdCAt
+IHdlIGRvbid0IHdhbnQgdm9sYXRpbGUgZG9jdW1lbnRzIChwcm9iYWJseSkKICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsJCgkJCQkJCUBzdWJfZGF0YW9ianMgPSAkZGF0
+YW9iai0+Z2V0X2FsbF9kb2N1bWVudHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CgkJCQkJCWZvcmVhY2ggbXkg
+JHN1Yl9vYmogKCBAeyRkYXRhb2JqLT52YWx1ZSggJGZuYW1lc1swXSApfSApCgkJCQkJCXsKCQkJ
+CQkJCXB1c2ggQHN1Yl9kYXRhb2JqcywgJGZpZWxkLT5nZXRfaXRlbSggJGRhdGFvYmotPnJlcG9z
+aXRvcnksICRzdWJfb2JqICk7CgkJCQkJCX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgIH0KCQkJCQkKCQkJCQkjYW5kIGJ1aWxkIHVwIGFuIGFycmF5IG9mIHRoZXNlIHN1
+YiBkYXRhb2JqJ3MgdmFsdWVzCgkJCQkJZm9yZWFjaCBteSAkb2JqICggQHN1Yl9kYXRhb2JqcyAp
+ICNnZXQgdGhlIHZhbHVlcyB3ZSBhcmUgcmVxdWVzdGluZyBvZiB0aGUgZGF0YW9iamVjdHMKICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKCQkJCQkJI2NoZWNrIGZvciBh
+IGN1c3RvbSByZW5kZXJlcgoJCQkJCQlteSAkdmFsdWU7CgkJCQkJCWlmKCBkZWZpbmVkICRvcHRz
+e2N1c3RvbV9leHBvcnR9ICYmIGRlZmluZWQgJG9wdHN7Y3VzdG9tX2V4cG9ydH0tPnskZm5hbWV9
+ICkKCQkJCQkJewoJCQkJCQkJJHZhbHVlID0gJG9wdHN7Y3VzdG9tX2V4cG9ydH0tPnskZm5hbWV9
+LT4oICRvYmosICRvcHRze3BsdWdpbn0gKTsKCQkJCQkJfQoJCQkJCQllbHNlCgkJCQkJCXsJCQkJ
+CQkJCgkJCQkJCQkkZmllbGQgPSBFUHJpbnRzOjpVdGlsczo6ZmllbGRfZnJvbV9jb25maWdfc3Ry
+aW5nKCAkb2JqLT5kYXRhc2V0LCAkZm5hbWVzWzFdICk7CQkJCQkJCQoJCQkJCQkJaWYoICRmaWVs
+ZC0+Z2V0X3Byb3BlcnR5KCAidmlydHVhbCIgKSApICN2aXJ0dWFsIGZpZWxkcyBuZWVkIHJlbmRl
+cmluZwoJCQkJCQkJewoJCQkJCQkJCSR2YWx1ZSA9IEVQcmludHM6OlV0aWxzOjp0cmVlX3RvX3V0
+ZjgoICRvYmotPnJlbmRlcl92YWx1ZSggJGZuYW1lc1sxXSApICk7CgkJCQkJCQl9CgkJCQkJCQll
+bHNlICNyZWd1bGFyIGZpZWxkIHZhbHVlcyBjYW4gc2ltcGx5IGJlIHJldHJpZXZlZAoJCQkJCQkJ
+ewoJCQkJCQkJCSR2YWx1ZSA9ICRmaWVsZC0+Z2V0X3ZhbHVlKCAkb2JqICk7CgkJCQkJCQl9CgkJ
+CQkJCX0KCQkJCQkJcHVzaCBAeyRzdWJfZGF0YW9ial92YWx1ZXN9LCAkdmFsdWU7IAoJCQkJCX0K
+CQkJCX0KCQkJCWVsc2UgI3dlIG9ubHkgaGF2ZSBvbmUgc3ViLW9iamVjdCwgCgkJCQl7CgkJCQkJ
+bXkgJHN1Yl9vYmogPSAkZmllbGQtPmdldF9pdGVtKCAkZGF0YW9iai0+cmVwb3NpdG9yeSwgJGRh
+dGFvYmotPnZhbHVlKCAkZm5hbWVzWzBdICkgKTsgI2dldCB0aGUgc3Vib2JqZWN0CgkJCQkJJGZp
+ZWxkID0gRVByaW50czo6VXRpbHM6OmZpZWxkX2Zyb21fY29uZmlnX3N0cmluZyggJHN1Yl9vYmot
+PmRhdGFzZXQsICRmbmFtZXNbMV0gKTsgI2dldCB0aGUgc3Vib2JqZWN0cyBmaWVsZAoJCQkJCW15
+ICR2YWx1ZSA9ICRmaWVsZC0+Z2V0X3ZhbHVlKCAkc3ViX29iaiApOyAjZ2V0IHRoZSBzdWJvYmpl
+Y3RzIHZhbHVlIGZvciB0aGlzIGZpZWxkCgkJCQkJcHVzaCBAeyRzdWJfZGF0YW9ial92YWx1ZXN9
+LCAkdmFsdWU7CQkJCQkJCgkJCQl9CgkJCX0KCQl9CgoJCW15ICRpID0gQHskcm93c1swXX07CgkJ
+bXkgJF9yb3dzOwoJCWlmKCBFUHJpbnRzOjpVdGlsczo6aXNfc2V0KCAkZmllbGQgKSApICN3ZSBh
+bHJlYWR5IGhhdmUgb3VyIHZhbHVlcwoJCXsKCQkJaWYoIHNjYWxhciBAeyRzdWJfZGF0YW9ial92
+YWx1ZXN9ID4gMCApCgkJCXsKCQkJCSRfcm93cyA9ICRzZWxmLT52YWx1ZV90b19yb3dzKCRmaWVs
+ZCwgJHN1Yl9kYXRhb2JqX3ZhbHVlcyk7CQkJCgkJCX0KCQkJZWxzZSAjdGhlcmUncyBubyByZXN1
+bHRzLCBidXQgd2Ugc3RpbGwgbmVlZCB0byBhZGQgYW4gZW1wdHkgY2VsbCB0byB0aGUgc3ByZWFk
+c2hlZXQKCQkJewoJCQkJJF9yb3dzID0gJHNlbGYtPnZhbHVlX3RvX3Jvd3MoJGZpZWxkLCB1bmRl
+Zik7CgkJCX0KCQl9CgkJZWxzZSAjd2UgbmVlZCB0byByZXRyaWV2ZSBvdXIgdmFsdWVzIGZvciB0
+aGlzIGZpZWxkIGZyb20gb3VyIGRhdGFvYmogKG9yIHN1Yl9kYXRhb2JqKQoJCXsKCQkJbXkgJHZh
+bHVlOwoJCQlpZiggZGVmaW5lZCAkb3B0c3tjdXN0b21fZXhwb3J0fSAmJiBkZWZpbmVkICRvcHRz
+e2N1c3RvbV9leHBvcnR9LT57JGZuYW1lfSApICN3ZSBoYXZlIGEgY3VzdG9tIGV4cG9ydGVyCgkJ
+CXsKCQkJCSR2YWx1ZSA9ICRvcHRze2N1c3RvbV9leHBvcnR9LT57JGZuYW1lfS0+KCAkZGF0YW9i
+aiwgJG9wdHN7cGx1Z2lufSApOwoJCQkJJF9yb3dzID0gJHNlbGYtPmN1c3RvbV92YWx1ZV90b19y
+b3dzKCAkdmFsdWUgKTsKCQkJfQoJCQllbHNlICNqdXN0IGdldCB0aGUgZmllbGQncyB1c3VhbCB2
+YWx1ZQoJCQl7CgkJCQkkZmllbGQgPSBFUHJpbnRzOjpVdGlsczo6ZmllbGRfZnJvbV9jb25maWdf
+c3RyaW5nKCAkZHMsICRmbmFtZSApOwoJCQkJaWYoICRmaWVsZC0+Z2V0X3Byb3BlcnR5KCAidmly
+dHVhbCIgKSApICN2aXJ0dWFsIGZpZWxkcyBuZWVkIHJlbmRlcmluZwoJCQkJewoJCQkJCSR2YWx1
+ZSA9IEVQcmludHM6OlV0aWxzOjp0cmVlX3RvX3V0ZjgoICRkYXRhb2JqLT5yZW5kZXJfdmFsdWUo
+ICRmbmFtZSApICk7CgkJCQl9CgkJCQllbHNlICNyZWd1bGFyIGZpZWxkIHZhbHVlcyBjYW4gc2lt
+cGx5IGJlIHJldHJpZXZlZAoJCQkJewoJCQkJCSR2YWx1ZSA9ICRmaWVsZC0+Z2V0X3ZhbHVlKCAk
+ZGF0YW9iaiApOwoJCQkJfQoJCQkJJF9yb3dzID0gJHNlbGYtPnZhbHVlX3RvX3Jvd3MoJGZpZWxk
+LCAkdmFsdWUpOyAJCQoJCQl9CQkJCgkJfQoKCQlmb3JlYWNoIG15ICRqICgwLi4kIyRfcm93cykK
+CQl7CgkJCWZvcmVhY2ggbXkgJF9pICgwLi4kI3skX3Jvd3MtPlskal19KQoJCQl7CgkJCQkkcm93
+c1skal1bJGkrJF9pXSA9ICRfcm93cy0+WyRqXVskX2ldOwoJCQl9CgkJfQoJfQoKCSMgZ2VuZXJh
+dGUgY29tcGxldGUgcm93cwoJaWYoJG9wdHN7cGx1Z2lufS0+cGFyYW0oICJtdWx0aWxpbmVfcmVw
+ZWF0IiApKSAjd2Ugd2FudCBlYWNoIGNvbHVtbiB0byByZXBlYXQgZm9yIGVhY2ggcm93Cgl7CgkJ
+Zm9yZWFjaCBteSAkaSAoMC4uKHNjYWxhciBAcm93cyktMSkKCQl7CgkJCWZvcmVhY2ggbXkgJGog
+KDAuLiQjeyRyb3dzWzBdfSkKCQkJewoJCQkJJHJvd3NbJGldWyRqXSB8fD0gJHJvd3NbMF1bJGpd
+OwoJCQl9CQoJCX0KCX0KCWVsc2UgI3dlIGRvbid0IHdhbnQgcmVwZWF0aW5nIHZhbHVlcyBpbiB0
+aGUgY29sdW1ucwoJewkKCQlmb3IoQHJvd3MpIHsKCQkJJF8tPlswXSA9ICRyb3dzWzBdWzBdOyAj
+Zmlyc3QgZWxlbWVudCBvZiB0aGlzIGFycmF5IGVxdWFscyB0aGUgZmlyc3QgZWxlbWVudCBvZiB0
+aGUgZmlyc3Qgcm93CgkJCSRfLT5bJCN7JHJvd3NbMF19XSB8fD0gdW5kZWY7CgkJfQoKCX0KCgly
+ZXR1cm4gXEByb3dzOwp9CgpzdWIgdmFsdWVfdG9fcm93cwp7CglteSAoJHNlbGYsICRmaWVsZCwg
+JHZhbHVlKSA9IEBfOwoKCW15IEByb3dzOwoKCWlmIChyZWYoJHZhbHVlKSBlcSAiQVJSQVkiKQoJ
+ewoJCSR2YWx1ZSA9IFskZmllbGQtPmVtcHR5X3ZhbHVlXSBpZiAhQCR2YWx1ZTsKCQlAcm93cyA9
+IG1hcCB7ICRzZWxmLT52YWx1ZV90b19yb3dzKCRmaWVsZCwgJF8pLT5bMF0gfSBAJHZhbHVlOwoJ
+fQoJZWxzaWYgKCRmaWVsZC0+aXNhKCJFUHJpbnRzOjpNZXRhRmllbGQ6Ok11bHRpcGFydCIpKQoJ
+ewoJCWlmKCAkZmllbGQtPmlzYSggIkVQcmludHM6Ok1ldGFGaWVsZDo6TmFtZSIgKSkgI25lZWQg
+dG8gZGVhbCB3aXRoIGxlZ2FjeSBwaHJhc2UgaWQncwogICAgICAgICAgICAgICAgewoJCQlteSBA
+Yml0X3ZhbHVlczsKCQkJZm9yZWFjaCBteSAkYml0ICggJGZpZWxkLT5nZXRfaW5wdXRfYml0cygp
+ICkKICAgICAgICAgICAgICAgICAgICAgICAgewoJCQkJcHVzaCBAYml0X3ZhbHVlcywgJHZhbHVl
+LT57JGJpdH07CiAgICAgICAgCQl9CQoJCQlwdXNoIEByb3dzLCBcQGJpdF92YWx1ZXM7CgkgICAg
+ICAgIH0KCQllbHNlCgkJewoJCQlwdXNoIEByb3dzLCBbbWFwIHsgJHZhbHVlLT57JF8tPntzdWJf
+bmFtZX19IH0gQHskZmllbGQtPnByb3BlcnR5KCJmaWVsZHNfY2FjaGUiKX1dOwoJCX0KCX0KCWVs
+c2lmICgkZmllbGQtPmlzYSgiRVByaW50czo6TWV0YUZpZWxkOjpDb21wb3VuZCIpKQoJewoJCW15
+IEBzdWJfdmFsdWVzOwoJCWZvcmVhY2ggbXkgJGtleSAoa2V5cyAleyR2YWx1ZX0pCgkJewoJCQlw
+dXNoIEBzdWJfdmFsdWVzLCAkdmFsdWUtPnska2V5fTsKCQl9CgkJcHVzaCBAcm93cywgXEBzdWJf
+dmFsdWVzOwoJfQoJZWxzZQoJewoJCXB1c2ggQHJvd3MsIFskdmFsdWVdOwoJfQoKCXJldHVybiBc
+QHJvd3M7Cn0KCiN1c2VkIGZvciBjdXN0b20gZXhwb3J0cyB0aGF0IG1pZ2h0IHJldHVybiBhIGZp
+ZWxkIG9yIGFuIGFycmF5IChidXQgYXJlbid0IG5lY2VzYXJpbHkgYXNzb2NpYXRlZCB3aXRoIGEg
+ZmllbGQhKQpzdWIgY3VzdG9tX3ZhbHVlX3RvX3Jvd3MKewogICAgICAgIG15ICgkc2VsZiwgJHZh
+bHVlKSA9IEBfOwoKICAgICAgICBteSBAcm93czsKCiAgICAgICAgaWYgKHJlZigkdmFsdWUpIGVx
+ICJBUlJBWSIpCiAgICAgICAgewogICAgICAgICAgICAgICAgQHJvd3MgPSBtYXAgeyAkc2VsZi0+
+Y3VzdG9tX3ZhbHVlX3RvX3Jvd3MoJF8pLT5bMF0gfSBAJHZhbHVlOwogICAgICAgIH0KICAgICAg
+ICBlbHNlCiAgICAgICAgewogICAgICAgICAgICAgICAgcHVzaCBAcm93cywgWyR2YWx1ZV07CiAg
+ICAgICAgfQoKICAgICAgICByZXR1cm4gXEByb3dzOwp9CgoKMTsKCj1oZWFkMSBDT1BZUklHSFQK
+Cj1mb3IgQ09QWVJJR0hUIEJFR0lOCgpDb3B5cmlnaHQgMjAwMC0yMDExIFVuaXZlcnNpdHkgb2Yg
+U291dGhhbXB0b24uCgo9Zm9yIENPUFlSSUdIVCBFTkQKCj1mb3IgTElDRU5TRSBCRUdJTgoKVGhp
+cyBmaWxlIGlzIHBhcnQgb2YgRVByaW50cyBMPGh0dHA6Ly93d3cuZXByaW50cy5vcmcvPi4KCkVQ
+cmludHMgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v
+ZGlmeSBpdAp1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMg
+TGljZW5zZSBhcyBwdWJsaXNoZWQKYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0
+aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
+ZXIgdmVyc2lvbi4KCkVQcmludHMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
+aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
+IGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yCkZJVE5FU1MgRk9SIEEgUEFS
+VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkxpY2Vu
+c2UgZm9yIG1vcmUgZGV0YWlscy4KCllvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
+dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKTGljZW5zZSBhbG9uZyB3aXRoIEVQcmludHMu
+ICBJZiBub3QsIHNlZSBMPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgoKPWZvciBMSUNF
+TlNFIEVORAoK
@@ -481,9 +515,9 @@ ZjsKfQoKCjE7Cg==
plugins/EPrints/Plugin/Export/Report/HTML.pm
text/plain
- 666f802bd567fead817bd3228b7dc78e
+ 8e2ca840f2fd1fa5983bcca0f96a7233
MD5
- 5596
+ 5578
cGFja2FnZSBFUHJpbnRzOjpQbHVnaW46OkV4cG9ydDo6UmVwb3J0OjpIVE1MOwoKdXNlIEVQcmlu
dHM6OlBsdWdpbjo6RXhwb3J0OjpSZXBvcnQ7CkBJU0EgPSAoICJFUHJpbnRzOjpQbHVnaW46OkV4
cG9ydDo6UmVwb3J0IiApOwoKdXNlIHN0cmljdDsKCnN1YiBuZXcKewoJbXkoICRjbGFzcywgJXBh
@@ -562,27 +596,26 @@ YWJsZS0+YXBwZW5kQ2hpbGQoICRyZXBvLT5yZW5kZXJfcm93KAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICRyZXBvLT5odG1sX3BocmFzZSggImV4cG9ydGZpZWxkb3B0aW9uczokZiIg
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVwby0+bWFrZV90ZXh0KCAkdmFs
dWUgKQogICAgICAgICAgICAgICAgICAgICAgICApICk7CgkJfQoJCWVsc2UgI3JlbmRlciBub3Jt
-YWwgdmFsdWUgbGlrZSBhIG5vcm1hbCBmaWVsZAoJCXsKCQkJbXkgJGRzX2lkID0gJGRhdGFvYmot
-PmdldF9kYXRhc2V0X2lkOwoJCQlteSAkZHMgPSAkcmVwby0+ZGF0YXNldCggJGRzX2lkICk7CgkJ
-CWlmKCAkZHMtPmhhc19maWVsZCggJGYgKSApCgkJCXsKCQkJCSR0YWJsZS0+YXBwZW5kQ2hpbGQo
-ICRyZXBvLT5yZW5kZXJfcm93KAogICAgICAgIAkgICAgICAgIAkJJHJlcG8tPmh0bWxfcGhyYXNl
-KCAkZHNfaWQuIl9maWVsZG5hbWVfIi4kZiApLAoJCSAgICAgICAgICAgICAgICAJJGRhdGFvYmot
-PnJlbmRlcl92YWx1ZSggJGYgKSAKCQkJCSkgKTsKCQkJfQoJCX0KCX0KCSRkYXRhb2JqX2Rpdi0+
-YXBwZW5kQ2hpbGQoICR0YWJsZSApOwoKCSNhZGQgdGhlIGRhdGFvYmogZGl2IHRvIHRoZSBzZWN0
-aW9uCgkkc2VjdGlvbl9pdGVtcy0+YXBwZW5kQ2hpbGQoICRkYXRhb2JqX2RpdiApOwoKCSNhZGQg
-Y3VzdG9tIGNsYXNzIGlmIG5lY2Vzc2FyeSBmb3IgZnVydGhlciBDU1MgY3VzdG9taXNhdGlvbiAK
-CWlmKCBkZWZpbmVkICRwbHVnaW4tPnBhcmFtKCAiY3VzdG9tX2NsYXNzIiApICkKCXsKCQkkZGF0
-YW9ial9kaXYtPnNldEF0dHJpYnV0ZSggY2xhc3MgPT4gJGRhdGFvYmpfZGl2LT5nZXRBdHRyaWJ1
-dGUoICJjbGFzcyIgKSAuICIgIiAuICRwbHVnaW4tPnBhcmFtKCAiY3VzdG9tX2NsYXNzIiApICk7
-CgkJJGNpdGF0aW9uX2Rpdi0+c2V0QXR0cmlidXRlKCBjbGFzcyA9PiAkY2l0YXRpb25fZGl2LT5n
-ZXRBdHRyaWJ1dGUoICJjbGFzcyIgKSAuICIgIiAuICRwbHVnaW4tPnBhcmFtKCAiY3VzdG9tX2Ns
-YXNzIiApICk7CgkJJHRhYmxlLT5zZXRBdHRyaWJ1dGUoIGNsYXNzID0+ICR0YWJsZS0+Z2V0QXR0
-cmlidXRlKCAiY2xhc3MiICkgLiAiICIgLiAkcGx1Z2luLT5wYXJhbSggImN1c3RvbV9jbGFzcyIg
-KSApOwoJfQp9CgpzdWIgeG1sX2RhdGFvYmoKewogICAgICAgIG15KCAkcGx1Z2luLCAkZGF0YW9i
-aiApID0gQF87CgogICAgICAgIG15ICRwID0gJHBsdWdpbi0+e3Nlc3Npb259LT5tYWtlX2VsZW1l
-bnQoICJwIiwgY2xhc3M9PiJjaXRhdGlvbiIgKTsKCiAgICAgICAgJHAtPmFwcGVuZENoaWxkKCAk
-ZGF0YW9iai0+cmVuZGVyX2NpdGF0aW9uX2xpbmsgKTsKCiAgICAgICAgcmV0dXJuICRwOwp9Cgox
-OyAgICAgICAgCg==
+YWwgdmFsdWUgbGlrZSBhIG5vcm1hbCBmaWVsZAoJCXsKCQkJbXkgJGRzID0gJGRhdGFvYmotPmRh
+dGFzZXQ7CgkJCWlmKCAkZHMtPmhhc19maWVsZCggJGYgKSApCgkJCXsKCQkJCW15ICRmaWVsZCA9
+IEVQcmludHM6OlV0aWxzOjpmaWVsZF9mcm9tX2NvbmZpZ19zdHJpbmcoICRkcywgJGYgKTsKCgkJ
+CQkkdGFibGUtPmFwcGVuZENoaWxkKCAkcmVwby0+cmVuZGVyX3JvdygKICAgICAgICAJICAgICAg
+ICAJCSRmaWVsZC0+cmVuZGVyX25hbWUsCgkJCQkJJGRhdGFvYmotPnJlbmRlcl92YWx1ZSggJGYg
+KSAKCQkJCSkgKTsKCQkJfQoJCX0KCX0KCSRkYXRhb2JqX2Rpdi0+YXBwZW5kQ2hpbGQoICR0YWJs
+ZSApOwoKCSNhZGQgdGhlIGRhdGFvYmogZGl2IHRvIHRoZSBzZWN0aW9uCgkkc2VjdGlvbl9pdGVt
+cy0+YXBwZW5kQ2hpbGQoICRkYXRhb2JqX2RpdiApOwoKCSNhZGQgY3VzdG9tIGNsYXNzIGlmIG5l
+Y2Vzc2FyeSBmb3IgZnVydGhlciBDU1MgY3VzdG9taXNhdGlvbiAKCWlmKCBkZWZpbmVkICRwbHVn
+aW4tPnBhcmFtKCAiY3VzdG9tX2NsYXNzIiApICkKCXsKCQkkZGF0YW9ial9kaXYtPnNldEF0dHJp
+YnV0ZSggY2xhc3MgPT4gJGRhdGFvYmpfZGl2LT5nZXRBdHRyaWJ1dGUoICJjbGFzcyIgKSAuICIg
+IiAuICRwbHVnaW4tPnBhcmFtKCAiY3VzdG9tX2NsYXNzIiApICk7CgkJJGNpdGF0aW9uX2Rpdi0+
+c2V0QXR0cmlidXRlKCBjbGFzcyA9PiAkY2l0YXRpb25fZGl2LT5nZXRBdHRyaWJ1dGUoICJjbGFz
+cyIgKSAuICIgIiAuICRwbHVnaW4tPnBhcmFtKCAiY3VzdG9tX2NsYXNzIiApICk7CgkJJHRhYmxl
+LT5zZXRBdHRyaWJ1dGUoIGNsYXNzID0+ICR0YWJsZS0+Z2V0QXR0cmlidXRlKCAiY2xhc3MiICkg
+LiAiICIgLiAkcGx1Z2luLT5wYXJhbSggImN1c3RvbV9jbGFzcyIgKSApOwoJfQp9CgpzdWIgeG1s
+X2RhdGFvYmoKewogICAgICAgIG15KCAkcGx1Z2luLCAkZGF0YW9iaiApID0gQF87CgogICAgICAg
+IG15ICRwID0gJHBsdWdpbi0+e3Nlc3Npb259LT5tYWtlX2VsZW1lbnQoICJwIiwgY2xhc3M9PiJj
+aXRhdGlvbiIgKTsKCiAgICAgICAgJHAtPmFwcGVuZENoaWxkKCAkZGF0YW9iai0+cmVuZGVyX2Np
+dGF0aW9uX2xpbmsgKTsKCiAgICAgICAgcmV0dXJuICRwOwp9CgoxOyAgICAgICAgCg==
@@ -712,9 +745,9 @@ bHVlOwp9CgoKMTsK
plugins/EPrints/Plugin/Screen/Report.pm
text/plain
- 7b964bfb863e905a17713c6cea2e0653
+ 210449eac1f7ee02e7519beead2c640b
MD5
- 37088
+ 37100
cGFja2FnZSBFUHJpbnRzOjpQbHVnaW46OlNjcmVlbjo6UmVwb3J0OwoKIyBBYnN0cmFjdCBjbGFz
cyB0aGF0IGhhbmRsZXMgdGhlIFJlcG9ydCB0b29scwoKdXNlIEpTT04gcXcoZW5jb2RlX2pzb24p
Owp1c2UgRVByaW50czo6UGx1Z2luOjpTY3JlZW47CkBJU0EgPSAoICdFUHJpbnRzOjpQbHVnaW46
@@ -1103,269 +1136,269 @@ CSAgICAgICAgICAgICAgICAJc3R5bGUgPT4gImxpc3Qtc3R5bGUtdHlwZTogbm9uZSIKCSAgICAg
ICAgCSk7CgkJCQoJCQlteSAkY291bnQgPSAwOyAjY291bnQgaG93IG1hbnkgZmllbGRzIHdlIGFk
ZAoJCQlmb3JlYWNoIG15ICRmaWVsZG5hbWUoIEB7JHJlcG8tPmNvbmZpZyggJHNlbGYtPntleHBv
cnRfY29uZn0sICJleHBvcnRmaWVsZHMiICktPnska2V5fX0gKQoJCQl7CgkJCQlpZiggZGVmaW5l
-ZCAkcmVwby0+Y29uZmlnKCAkc2VsZi0+e2V4cG9ydF9jb25mfSwgImN1c3RvbWVyX2V4cG9ydCIg
-KSAmJiBleGlzdHMgJHskcmVwby0+Y29uZmlnKCAkc2VsZi0+e2V4cG9ydF9jb25mfSwgImN1c3Rv
-bV9leHBvcnQiICl9eyRmaWVsZG5hbWV9ICkgI25vIGZpZWxkIGluIGRhdGFzZXQsIGJ1dCB3ZSBo
-YXZlIGEgY3VzdG9tIGV4cG9ydCBmdW5jdGlvbiBpbnN0ZWFkIAoJCQkJewoJCQkJCSRjb3VudCsr
-OwoJCQkJCSRzZWxmLT5fZXhwb3J0X2ZpZWxkX2NoZWNrYm94KCAkcmVwbywgJGZpZWxkbmFtZSwg
-JHVsLCAkcmVwby0+aHRtbF9waHJhc2UoICJleHBvcnRmaWVsZG9wdGlvbnM6JGZpZWxkbmFtZSIg
-KSApOyAKCQkJCX0KCQkJCWVsc2lmKCAkcmVwb3J0X2RzLT5oYXNfZmllbGQoICRmaWVsZG5hbWUg
-KSApCgkJCQl7CgkJCQkJbXkgJGZpZWxkID0gRVByaW50czo6VXRpbHM6OmZpZWxkX2Zyb21fY29u
-ZmlnX3N0cmluZyggJHJlcG9ydF9kcywgJGZpZWxkbmFtZSApOwoJCQkJCSRjb3VudCsrOwogICAg
-ICAgCQkJICAgICAgICAJJHNlbGYtPl9leHBvcnRfZmllbGRfY2hlY2tib3goICRyZXBvLCAkZmll
-bGRuYW1lLCAkdWwsICRmaWVsZC0+cmVuZGVyX25hbWUgKTsKCgkJCQl9CgkJCX0KCQkJaWYoICRj
-b3VudCApICNvbmx5IGFkZCBvcHRpb25zIGlmIHdlIGhhdmUgYW55IGZpZWxkcyB0byBzaG93CgkJ
-CXsKCQkJCW15ICRkaXYgPSAkcmVwby0+bWFrZV9lbGVtZW50KCAiZGl2IiwgY2xhc3M9PiJyZXBv
-cnRfZXhwb3J0X29wdGlvbnMiICk7CgkJCQkkZGl2LT5hcHBlbmRDaGlsZCggbXkgJGggPSAkcmVw
-by0+bWFrZV9lbGVtZW50KCAiaDQiICkgKTsKCQkJCSRoLT5hcHBlbmRDaGlsZCggJHJlcG8tPmh0
-bWxfcGhyYXNlKCAiZXhwb3J0ZmllbGRzOiRrZXkiICkgKTsJCgkJCQkkZGl2LT5hcHBlbmRDaGls
-ZCggJHVsICk7CgkJCQkkZXhwb3J0X29wdGlvbnMtPmFwcGVuZENoaWxkKCAkZGl2ICk7CgkJCX0K
-ICAgICAgIAkJfQoJCSRmb3JtLT5hcHBlbmRDaGlsZCggJGV4cG9ydF9vcHRpb25zICk7Cgl9CgoJ
-JGZvcm0tPmFwcGVuZENoaWxkKCAKCQkkcmVwby0+cmVuZGVyX2J1dHRvbigKCQkJbmFtZSA9PiAi
-X2FjdGlvbl9leHBvcnQiLAoJCQljbGFzcyA9PiAiZXBfZm9ybV9hY3Rpb25fYnV0dG9uIiwKCQkJ
-dmFsdWUgPT4gJHJlcG8tPnBocmFzZSggJ2NnaS91c2Vycy9lZGl0X2VwcmludDpleHBvcnQnICkK
-CSkgKTsKCgkjY3JlYXRlIGEgY29sbGFwc2libGUgYm94CglteSAkaW1hZ2VzdXJsID0gJHJlcG8t
-PmN1cnJlbnRfdXJsKCBwYXRoID0+ICJzdGF0aWMiLCAic3R5bGUvaW1hZ2VzIiApOwoJbXkgJW9w
-dGlvbnM7Cgkkb3B0aW9uc3tzZXNzaW9ufSA9ICRyZXBvOwogICAgICAgICRvcHRpb25ze2lkfSA9
-ICJlcF9yZXBvcnRfZXhwb3J0IjsKICAgICAgICAkb3B0aW9uc3t0aXRsZX0gPSAkcmVwby0+aHRt
-bF9waHJhc2UoICJleHBvcnRfdGl0bGUiICk7CiAgICAgICAgJG9wdGlvbnN7Y29sbGFwc2VkfSA9
-IDE7Cgkkb3B0aW9uc3tjb250ZW50fSA9ICRmb3JtOwogICAgICAgICRvcHRpb25ze3Nob3dfaWNv
-bl91cmx9ID0gIiRpbWFnZXN1cmwvbXVsdGlfZG93bi5wbmciOwoJJG9wdGlvbnN7aGlkZV9pY29u
-X3VybH0gPSAiJGltYWdlc3VybC9tdWx0aV91cC5wbmciOwoKCW15ICRib3ggPSAkcmVwby0+bWFr
-ZV9lbGVtZW50KCAiZGl2Iiwgc3R5bGU9PiJ0ZXh0LWFsaWduOiBsZWZ0IiApOwoJJGJveC0+YXBw
-ZW5kQ2hpbGQoIEVQcmludHM6OkJveDo6cmVuZGVyKCAlb3B0aW9ucyApICk7CgkkY2h1bmstPmFw
-cGVuZENoaWxkKCAkYm94ICk7CgoJcmV0dXJuICRjaHVuazsKfQoKc3ViIHJlbmRlcl9zb3J0X29w
-dGlvbnMKewoJbXkoICRzZWxmICkgPSBAXzsKCglteSAkcmVwbyA9ICRzZWxmLT5yZXBvc2l0b3J5
-OwoKCW15ICRjaHVuayA9ICRyZXBvLT5tYWtlX2RvY19mcmFnbWVudDsKCglyZXR1cm4gJGNodW5r
-IHVubGVzcyggZGVmaW5lZCggJHJlcG8tPmNvbmZpZyggJHNlbGYtPntzb3J0X2NvbmZ9LCAic29y
-dGZpZWxkcyIgKSApICk7CgoJbXkgJHNvcnRfY29uZiA9ICRyZXBvLT5jb25maWcoICRzZWxmLT57
-c29ydF9jb25mfSwgInNvcnRmaWVsZHMiICk7CgoJI2J1aWxkIHRoZSBmb3JtCglteSAkZm9ybSA9
-ICRzZWxmLT5yZW5kZXJfZm9ybTsKCSRmb3JtLT5zZXRBdHRyaWJ1dGUoIG5hbWUgPT4gInNvcnRf
-cmVwb3J0IiApOwogICAgICAgICRmb3JtLT5zZXRBdHRyaWJ1dGUoIG1ldGhvZCA9PiAiZ2V0IiAp
-OwoJJGNodW5rLT5hcHBlbmRDaGlsZCggJGZvcm0gKTsKCQoJaWYoIGRlZmluZWQgJHJlcG8tPnBh
-cmFtKCAic2VhcmNoIiApIHx8ICRzZWxmLT57cHJvY2Vzc29yfS0+e2FjdGlvbn0gZXEgInNlYXJj
-aCIgKQoJewoJCSRmb3JtLT5hcHBlbmRDaGlsZCggJHJlcG8tPnJlbmRlcl9oaWRkZW5fZmllbGQo
-ICJzZWFyY2giLCAgJHNlbGYtPntwcm9jZXNzb3J9LT57c2VhcmNofS0+c2VyaWFsaXNlKSApOwoJ
-fQoKCWlmKCBkZWZpbmVkICRzZWxmLT57cHJvY2Vzc29yfS0+e2dyb3VwX2V4cH0gKQoJewoJCSRm
-b3JtLT5hcHBlbmRDaGlsZCggJHJlcG8tPnJlbmRlcl9oaWRkZW5fZmllbGQoICJncm91cCIsICAk
-c2VsZi0+e3Byb2Nlc3Nvcn0tPntncm91cF9leHB9ICkgKTsKCX0KCgkjZGlzcGxheSB0aGUgbGlu
-a3MgdGhhdCB3aWxsIHRyaWdnZXIgdGhlIGZvcm0KCW15ICRmaXJzdCA9IDE7CglteSAkc29ydF9s
-aW5rcyA9ICRyZXBvLT5tYWtlX2RvY19mcmFnbWVudDsKCWZvcmVhY2ggbXkgJHNvcnRfbmFtZSAo
-IGtleXMgJXskc29ydF9jb25mfSApCiAgICAgICAgewoJCW15ICRzb3J0X3ZhbHVlID0gJHNvcnRf
-Y29uZi0+eyRzb3J0X25hbWV9OwoJCWlmKCAkZmlyc3QgKQoJCXsKCQkJJGZvcm0tPmFwcGVuZENo
-aWxkKCAkcmVwby0+cmVuZGVyX2hpZGRlbl9maWVsZCggInNvcnQiLCAkc29ydF92YWx1ZSkgKTsK
-CQl9CgoJCWlmKCAhJGZpcnN0ICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIAkk
-c29ydF9saW5rcy0+YXBwZW5kQ2hpbGQoICRyZXBvLT5odG1sX3BocmFzZSggIlVwZGF0ZS9WaWV3
-czpncm91cF9zZXBlcmF0b3IiICkgKTsKICAgICAgICAgICAgICAgIH0KCQkKCQlpZiggZGVmaW5l
-ZCAkc2VsZi0+e3Byb2Nlc3Nvcn0tPntzb3J0fSAmJiAkc2VsZi0+e3Byb2Nlc3Nvcn0tPntzb3J0
-fSBlcSAkc29ydF92YWx1ZSApCgkJewoJCQlteSAkc3Ryb25nID0gJHJlcG8tPm1ha2VfZWxlbWVu
-dCggInN0cm9uZyIgKTsKCQkJJHN0cm9uZy0+YXBwZW5kQ2hpbGQoICRyZXBvLT5odG1sX3BocmFz
-ZSggJHNlbGYtPntzb3J0X2NvbmZ9IC4gIjpzb3J0OiIgLiAkc29ydF9uYW1lICkgKTsKCQkJJHNv
-cnRfbGlua3MtPmFwcGVuZENoaWxkKCAkc3Ryb25nICk7CgkJfQoJCWVsc2UKCQl7CgkJCW15ICRs
-aW5rID0gJHJlcG8tPnJlbmRlcl9saW5rKCAnamF2YXNjcmlwdDpzb3J0X3JlcG9ydCgiJy4kc29y
-dF92YWx1ZS4nIiknICk7CQoJCQkkbGluay0+YXBwZW5kQ2hpbGQoICRyZXBvLT5odG1sX3BocmFz
-ZSggJHNlbGYtPntzb3J0X2NvbmZ9IC4gIjpzb3J0OiIgLiAkc29ydF9uYW1lICkgKTsKCQkJJHNv
-cnRfbGlua3MtPmFwcGVuZENoaWxkKCAkbGluayApOwoJCX0KCQkkZmlyc3QgPSAwOwogICAgICAg
-IH0gICAgICAgICAgIAoJJGNodW5rLT5hcHBlbmRDaGlsZCggJHJlcG8tPmh0bWxfcGhyYXNlKCAi
-UmVwb3J0OnNvcnRfbGlua3MiLCBsaW5rcz0+JHNvcnRfbGlua3MgKSApOwoJcmV0dXJuICRjaHVu
-azsKfQoKCnN1YiByZW5kZXJfZ3JvdXBfb3B0aW9ucwp7CglteSggJHNlbGYgKSA9IEBfOwoKCW15
-ICRyZXBvID0gJHNlbGYtPnJlcG9zaXRvcnk7CgoJbXkgJGNodW5rID0gJHJlcG8tPm1ha2VfZG9j
-X2ZyYWdtZW50OwoKCXJldHVybiAkY2h1bmsgdW5sZXNzKCBkZWZpbmVkKCAkcmVwby0+Y29uZmln
-KCAkc2VsZi0+e2dyb3VwX2NvbmZ9LCAiZ3JvdXBmaWVsZHMiICkgKSApOwoKCW15ICRncm91cF9j
-b25mID0gJHJlcG8tPmNvbmZpZyggJHNlbGYtPntncm91cF9jb25mfSwgImdyb3VwZmllbGRzIiAp
-OwoKCSNidWlsZCB0aGUgZm9ybQoJbXkgJGZvcm0gPSAkc2VsZi0+cmVuZGVyX2Zvcm07CgkkZm9y
-bS0+c2V0QXR0cmlidXRlKCBuYW1lID0+ICJncm91cF9yZXBvcnQiICk7CiAgICAgICAgJGZvcm0t
-PnNldEF0dHJpYnV0ZSggbWV0aG9kID0+ICJnZXQiICk7CgkkY2h1bmstPmFwcGVuZENoaWxkKCAk
-Zm9ybSApOwoJCglpZiggZGVmaW5lZCAkcmVwby0+cGFyYW0oICJzZWFyY2giICkgfHwgJHNlbGYt
-Pntwcm9jZXNzb3J9LT57YWN0aW9ufSBlcSAic2VhcmNoIiApCgl7CgkJJGZvcm0tPmFwcGVuZENo
-aWxkKCAkcmVwby0+cmVuZGVyX2hpZGRlbl9maWVsZCggInNlYXJjaCIsICAkc2VsZi0+e3Byb2Nl
-c3Nvcn0tPntzZWFyY2h9LT5zZXJpYWxpc2UpICk7Cgl9CgoJaWYoIGRlZmluZWQgJHNlbGYtPntw
-cm9jZXNzb3J9LT57c29ydH0gKQoJewoJCSRmb3JtLT5hcHBlbmRDaGlsZCggJHJlcG8tPnJlbmRl
-cl9oaWRkZW5fZmllbGQoICJzb3J0IiwgICRzZWxmLT57cHJvY2Vzc29yfS0+e3NvcnR9ICkgKTsK
-CX0KCgkjZGlzcGxheSB0aGUgbGlua3MgdGhhdCB3aWxsIHRyaWdnZXIgdGhlIGZvcm0KCW15ICRm
-aXJzdCA9IDE7CglteSAkZ3JvdXBfbGlua3MgPSAkcmVwby0+bWFrZV9kb2NfZnJhZ21lbnQ7Cglm
-b3JlYWNoIG15ICRncm91cF92YWx1ZSAoIEB7JGdyb3VwX2NvbmZ9ICkKICAgICAgICB7CgkJbXkg
-KCRncm91cF9maWVsZCkgPSBzcGxpdCgvOy8sICRncm91cF92YWx1ZSApOwoJCWlmKCAkZmlyc3Qg
-KQoJCXsKCQkJJGZvcm0tPmFwcGVuZENoaWxkKCAkcmVwby0+cmVuZGVyX2hpZGRlbl9maWVsZCgg
-Imdyb3VwIiwgJGdyb3VwX3ZhbHVlKSApOwoJCX0KCgkJaWYoICEkZmlyc3QgKQogICAgICAgICAg
-ICAgICAgewogICAgICAgICAgICAgICAgCSRncm91cF9saW5rcy0+YXBwZW5kQ2hpbGQoICRyZXBv
-LT5odG1sX3BocmFzZSggIlVwZGF0ZS9WaWV3czpncm91cF9zZXBlcmF0b3IiICkgKTsKICAgICAg
-ICAgICAgICAgIH0KCQkKCQlpZiggZGVmaW5lZCAkc2VsZi0+e3Byb2Nlc3Nvcn0tPntncm91cH0g
-JiYgJHNlbGYtPntwcm9jZXNzb3J9LT57Z3JvdXB9IGVxICRncm91cF9maWVsZCApCgkJewoJCQlt
-eSAkc3Ryb25nID0gJHJlcG8tPm1ha2VfZWxlbWVudCggInN0cm9uZyIgKTsKCQkJJHN0cm9uZy0+
-YXBwZW5kQ2hpbGQoICRyZXBvLT5odG1sX3BocmFzZSggJHNlbGYtPntncm91cF9jb25mfSAuICI6
-Z3JvdXA6IiAuICRncm91cF9maWVsZCApICk7CgkJCSRncm91cF9saW5rcy0+YXBwZW5kQ2hpbGQo
-ICRzdHJvbmcgKTsKCQl9CgkJZWxzZQoJCXsKCQkJbXkgJGxpbmsgPSAkcmVwby0+cmVuZGVyX2xp
-bmsoICdqYXZhc2NyaXB0Omdyb3VwX3JlcG9ydCgiJy4kZ3JvdXBfdmFsdWUuJyIpJyApOwkKCQkJ
-JGxpbmstPmFwcGVuZENoaWxkKCAkcmVwby0+aHRtbF9waHJhc2UoICRzZWxmLT57Z3JvdXBfY29u
-Zn0gLiAiOmdyb3VwOiIgLiAkZ3JvdXBfZmllbGQgKSApOwoJCQkkZ3JvdXBfbGlua3MtPmFwcGVu
-ZENoaWxkKCAkbGluayApOwoJCX0KCQkkZmlyc3QgPSAwOwogICAgICAgIH0gICAgICAgICAgIAoJ
-Cgkjbm8gZ3JvdXBpbmcgbGluayBhdCB0aGUgZW5kCgkkZ3JvdXBfbGlua3MtPmFwcGVuZENoaWxk
-KCAkcmVwby0+aHRtbF9waHJhc2UoICJVcGRhdGUvVmlld3M6Z3JvdXBfc2VwZXJhdG9yIiApICk7
-CglpZiggZGVmaW5lZCAkc2VsZi0+e3Byb2Nlc3Nvcn0tPntncm91cH0gJiYgJHNlbGYtPntwcm9j
-ZXNzb3J9LT57Z3JvdXB9IG5lICIiICkKCXsKCQlteSAkbGluayA9ICRyZXBvLT5yZW5kZXJfbGlu
-ayggJ2phdmFzY3JpcHQ6Z3JvdXBfcmVwb3J0KCIiKScgKTsJCgkJJGxpbmstPmFwcGVuZENoaWxk
-KCAkcmVwby0+aHRtbF9waHJhc2UoICJyZXBvcnQ6bm9fZ3JvdXBpbmciICkgKTsKCQkkZ3JvdXBf
-bGlua3MtPmFwcGVuZENoaWxkKCAkbGluayApOwoJfQoJZWxzZQoJewoJCW15ICRzdHJvbmcgPSAk
-cmVwby0+bWFrZV9lbGVtZW50KCAic3Ryb25nIiApOwogCQkkc3Ryb25nLT5hcHBlbmRDaGlsZCgg
-JHJlcG8tPmh0bWxfcGhyYXNlKCAicmVwb3J0Om5vX2dyb3VwaW5nIiApICk7CgkJJGdyb3VwX2xp
-bmtzLT5hcHBlbmRDaGlsZCggJHN0cm9uZyApOwoJfQoJCgkkY2h1bmstPmFwcGVuZENoaWxkKCAk
-cmVwby0+aHRtbF9waHJhc2UoICJSZXBvcnQ6Z3JvdXBfbGlua3MiLCBsaW5rcz0+JGdyb3VwX2xp
-bmtzICkgKTsKCglyZXR1cm4gJGNodW5rOwp9CgoKI2FkZHMgYSBuZXcgY2hlY2tib3ggdG8gYWxs
-b3cgdGhlIHVzZXIgdG8gY2hvb3NlIHdoaWNoIGZpZWxkcyB0byBleHBvcnQKc3ViIF9leHBvcnRf
-ZmllbGRfY2hlY2tib3gKewoJbXkoICRzZWxmLCAkcmVwbywgJGZpZWxkbmFtZSwgJHVsLCAkZmll
-bGRsYWJlbCApID0gQF87CgoJbXkgJGxpID0gJHJlcG8tPm1ha2VfZWxlbWVudCggImxpIiApOwoJ
-JHVsLT5hcHBlbmRDaGlsZCggJGxpICk7CgogICAgICAgIG15ICRjaGVja2JveCA9ICRyZXBvLT5t
-YWtlX2VsZW1lbnQoICJpbnB1dCIsIHR5cGUgPT4gImNoZWNrYm94IiwgaWQgPT4gJGZpZWxkbmFt
-ZSwgbmFtZSA9PiAkZmllbGRuYW1lLCB2YWx1ZSA9PiAkZmllbGRuYW1lICk7CglpZiggZGVmaW5l
-ZCAkcmVwby0+Y29uZmlnKCAkc2VsZi0+e2V4cG9ydF9jb25mfSwgImV4cG9ydGZpZWxkX2RlZmF1
-bHRzIiApICkKCXsKCQlpZiggKCBncmVwIHsgJGZpZWxkbmFtZSBlcSAkXyB9IEB7JHJlcG8tPmNv
-bmZpZyggJHNlbGYtPntleHBvcnRfY29uZn0sICJleHBvcnRmaWVsZF9kZWZhdWx0cyIgKX0gKSB8
-fCAoIHNjYWxhciggQHskcmVwby0+Y29uZmlnKCAkc2VsZi0+e2V4cG9ydF9jb25mfSwgImV4cG9y
-dGZpZWxkX2RlZmF1bHRzIiApfSApID09IDAgKSApCgkJewoJCQkjb25seSBjaGVjayBkZWZhdWx0
-cyBvciBjaGVjayBldmVyeXRoaW5nIGlmIGRlZmF1bHRzIG5vdCBkZWZpbmVkCgkJCSRjaGVja2Jv
-eC0+c2V0QXR0cmlidXRlKCAiY2hlY2tlZCIsICJ5ZXMiICk7CgkJfQoJfQoJbXkgJGxhYmVsID0g
-JHJlcG8tPm1ha2VfZWxlbWVudCggImxhYmVsIiwgZm9yID0+ICRmaWVsZG5hbWUgKTsKCSRsYWJl
-bC0+YXBwZW5kQ2hpbGQoICRmaWVsZGxhYmVsICk7CgoJJGxpLT5hcHBlbmRDaGlsZCggJGNoZWNr
-Ym94ICk7CgkkbGktPmFwcGVuZENoaWxkKCAkbGFiZWwgKTsKfQoKIyMjIHV0aWxpdHkgbWV0aG9k
-cwoKIyBUT0RPIHNob3VsZCB1c2UgIkpTT04iIHBhY2thZ2UKc3ViIHRvX2pzb24KewogICAgICAg
-IG15KCAkc2VsZiwgJG9iamVjdCApID0gQF87CgoJcmV0dXJuICIiIGlmKCAhZGVmaW5lZCAkb2Jq
-ZWN0ICk7CgojIFVURi04IGlzc3VlczoKIwlyZXR1cm4gSlNPTi0+bmV3LT51dGY4KDEpLT5lbmNv
-ZGUoICRvYmplY3QgKTsKCiAgICAgICAgaWYoIHJlZiggJG9iamVjdCApIGVxICdIQVNIJyApCiAg
-ICAgICAgewogICAgICAgICAgICAgICAgbXkgQHN0dWZmOwogICAgICAgICAgICAgICAgd2hpbGUo
-IG15KCAkaywgJHYgKSA9IGVhY2goICUkb2JqZWN0ICkgKQogICAgICAgICAgICAgICAgewogICAg
-ICAgICAgICAgICAgICAgICAgICBuZXh0IGlmKCAhRVByaW50czo6VXRpbHM6OmlzX3NldCggJHYg
-KSApOyAgICAgICAjIG9yICdudWxsJyA/CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQHN0
-dWZmLCBFUHJpbnRzOjpVdGlsczo6anNfc3RyaW5nKCAkayApLic6Jy4kc2VsZi0+dG9fanNvbigg
-JHYgKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuICd7JyAuIGpvaW4o
-ICIsIiwgQHN0dWZmICkgLiAnfSc7CiAgICAgICAgfQogICAgICAgIGVsc2lmKCByZWYoICRvYmpl
-Y3QgKSBlcSAnQVJSQVknICkKICAgICAgICB7CiAgICAgICAgICAgICAgICBteSBAc3R1ZmY7CiAg
-ICAgICAgICAgICAgICBmb3JlYWNoKCBAJG9iamVjdCApCiAgICAgICAgICAgICAgICB7CiAgICAg
-ICAgICAgICAgICAgICAgICAgIG5leHQgaWYoICFFUHJpbnRzOjpVdGlsczo6aXNfc2V0KCAkXyAp
-ICk7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQHN0dWZmLCAkc2VsZi0+dG9fanNvbigg
-JF8gKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiAnWycgLiBqb2lu
-KCAiLCIsIEBzdHVmZiApIC4gJ10nOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIEVQcmludHM6
-OlV0aWxzOjpqc19zdHJpbmcoICRvYmplY3QgKTsKfQoKc3ViIGV4cG9ydF9wbHVnaW5zCnsKICAg
-ICAgICBteSggJHNlbGYsICRnZW5lcmljICkgPSBAXzsKCglteSBAcGx1Z2luX2lkczsKCWlmKCAk
-Z2VuZXJpYyApCgl7CiAJCUBwbHVnaW5faWRzID0gJHNlbGYtPnJlcG9zaXRvcnktPnBsdWdpbl9s
-aXN0KAogICAgICAgICAgICAgICAgCXR5cGUgPT4gIkV4cG9ydCIsCgkgICAgICAgICAgICAgICAg
-Y2FuX2FjY2VwdCA9PiAicmVwb3J0L2dlbmVyaWMiLAogICAgICAgIAkgICAgICAgIGlzX3Zpc2li
-bGUgPT4gInN0YWZmIiwKCQkJaXNfYWR2ZXJ0aXNlZCA9PiAxLAoJICAgICAgICApOwoJfQoJZWxz
-ZQoJewogICAgICAgIAlAcGx1Z2luX2lkcyA9ICRzZWxmLT5yZXBvc2l0b3J5LT5wbHVnaW5fbGlz
-dCgKICAgICAgICAgICAgICAgIAl0eXBlID0+ICJFeHBvcnQiLAoJICAgICAgICAgICAgICAgIGNh
-bl9hY2NlcHQgPT4gInJlcG9ydC8iLiRzZWxmLT5nZXRfcmVwb3J0LAogICAgICAgIAkgICAgICAg
-IGlzX3Zpc2libGUgPT4gInN0YWZmIiwKCQkJaXNfYWR2ZXJ0aXNlZCA9PiAxLAoJICAgICAgICAp
-OwogICAgICAgIH0KCW15IEBwbHVnaW5zOwoJZm9yZWFjaCBteSAkaWQgKCBAcGx1Z2luX2lkcyAp
-CiAgICAgICAgewogICAgICAgICAgICAgICAgbXkgJHAgPSAkc2VsZi0+cmVwb3NpdG9yeS0+cGx1
-Z2luKCAiJGlkIiApIG9yIG5leHQ7CiAgICAgICAgICAgICAgICBwdXNoIEBwbHVnaW5zLCAkcDsK
-ICAgICAgICB9CgogICAgICAgIHJldHVybiBAcGx1Z2luczsKfQoKc3ViIHJlcG9ydF9wbHVnaW5z
-CnsKCW15KCAkc2VsZiApID0gQF87CgoJIyBzZjIgLSBjYW4ndCBsaXN0IHZpYSB0eXBlID0+ICJT
-ZWFyY2g6OlJlcG9ydCIgPyAKICAgICAgICBteSBAcGx1Z2luX2lkcyA9ICRzZWxmLT5yZXBvc2l0
-b3J5LT5wbHVnaW5fbGlzdCgKICAgICAgICAgICAgICAgIHR5cGUgPT4gIlNjcmVlbiIsCiAgICAg
-ICAgKTsKCiAgICAgICAgbXkgQHBsdWdpbnM7Cglmb3JlYWNoIG15ICRpZCAoIEBwbHVnaW5faWRz
-ICkKICAgICAgICB7CgkJbmV4dCBpZiggJGlkICF+IC9eU2NyZWVuOjpSZXBvcnQ6Oi8gKTsJIyBu
-b3RlIHRoaXMgYWxzbyBmaWx0ZXJzIG91dCAkc2VsZiAoYWthIFNjcmVlbjo6UmVwb3J0KQoKICAg
-ICAgICAgICAgICAgIG15ICRwID0gJHNlbGYtPnJlcG9zaXRvcnktPnBsdWdpbiggIiRpZCIgKTsK
-CQluZXh0IGlmKCAhZGVmaW5lZCAkcCB8fCAhJHAtPmNhbl9iZV92aWV3ZWQgKTsKCiAgICAgICAg
-ICAgICAgICBwdXNoIEBwbHVnaW5zLCAkcDsKICAgICAgICB9CgogICAgICAgIHJldHVybiBAcGx1
-Z2luczsKfQoKI3JldHVybnMgYSBoYXNoIG9mIHZhbHVlcyBtYXBwZWQgdG8gYSBsYWJlbCBhbmQg
-YSBsaXN0CiNpZiBpZHNfb25seSBpcyBzZXQgdGhlIGxpc3Qgb2YgaXRlbXMgYXJlIGp1c3QgcmVw
-cmVzZW50ZWQgYnkgdGhlaXIgaWQgKHVzZWQgYnkgcmVwb3J0IEpTKQpzdWIgZ2V0X2dyb3VwZWRf
-aXRlbXMKewoJbXkoICRzZWxmLCAkaXRlbXMsICRpZHNfb25seSApID0gQF87CglteSAkc2Vzc2lv
-biA9ICRzZWxmLT57c2Vzc2lvbn07CglteSAlZ3JvdXBlZDsKCglteSAkZ3JvdXBpbmcgPSAkc2Vs
-Zi0+e3Byb2Nlc3Nvcn0tPntncm91cH07CgoJbXkgJG1ldGFmaWVsZCA9ICRpdGVtcy0+Z2V0X2Rh
-dGFzZXQtPmZpZWxkKCAkZ3JvdXBpbmcgKTsKCgkjc2V0IGdyb3VwX29wdHMgaWYgYXBwcm9wcmlh
-dGUKCWlmKCBkZWZpbmVkICRzZWxmLT57cHJvY2Vzc29yfS0+e2dyb3VwX29wdHN9ICkKCXsKCQlp
-ZiggJG1ldGFmaWVsZC0+dHlwZSBlcSAiZGF0ZSIgKQoJCXsKCQkJJG1ldGFmaWVsZC0+e3JlbmRl
-cl9yZXN9ID0gJHNlbGYtPntwcm9jZXNzb3J9LT57Z3JvdXBfb3B0c30tPntyZXN9IGlmIGV4aXN0
-cyAkc2VsZi0+e3Byb2Nlc3Nvcn0tPntncm91cF9vcHRzfS0+e3Jlc307CgkJfQoJfQoKCSNjcmVh
-dGUgYSBoYXNoIG9mIGZpZWxkIHZhbHVlcyB0byBpdGVtcyAob3IgaXRlbSBpZHMpCgkkaXRlbXMt
-Pm1hcCggc3ViIHsKCSAgICAgICAJbXkoICRzZXNzaW9uLCAkZGF0YXNldCwgJGl0ZW0gKSA9IEBf
-OwoJCQoJCW15ICRtdWx0aXBsZSA9ICRtZXRhZmllbGQtPmdldF9wcm9wZXJ0eSggIm11bHRpcGxl
-IiApOwoJCW15IEBncm91cF92YWx1ZXM7CgkJaWYoICRtdWx0aXBsZSApCiAgICAgICAgICAgICAg
-ICB7CgkJCUBncm91cF92YWx1ZXMgPSBAeyRpdGVtLT52YWx1ZSggJGdyb3VwaW5nICl9OwoJCX0K
-CQllbHNlCgkJewkJCQoJCQlAZ3JvdXBfdmFsdWVzID0gKCRpdGVtLT52YWx1ZSggJGdyb3VwaW5n
-ICkpOwoJCX0KCQoJCWlmKCBzY2FsYXIgQGdyb3VwX3ZhbHVlcyA+IDAgKQoJCXsKCQkJZm9yZWFj
-aCBteSAkZ3JvdXBfdmFsdWUgKCBAZ3JvdXBfdmFsdWVzICkKCQkJewoJCQkJbXkgJGdyb3VwX2lk
-ID0gJG1ldGFmaWVsZC0+Z2V0X2lkX2Zyb21fdmFsdWUoICRzZXNzaW9uLCAkZ3JvdXBfdmFsdWUg
-KTsKCQkJCSN0cnVuY2F0ZSBncm91cCBpZiBhcHByb3ByaWF0ZQoJCQkJaWYoIGRlZmluZWQgJHNl
-bGYtPntwcm9jZXNzb3J9LT57Z3JvdXBfb3B0c30gKQoJCQkJewoJCQkJCSRncm91cF9pZCA9ICBz
-dWJzdHIoICJcdSRncm91cF9pZCIsIDAsICRzZWxmLT57cHJvY2Vzc29yfS0+e2dyb3VwX29wdHN9
-LT57dHJ1bmNhdGV9ICkgaWYgZXhpc3RzICRzZWxmLT57cHJvY2Vzc29yfS0+e2dyb3VwX29wdHN9
-LT57dHJ1bmNhdGV9OwoJCQkJfQoKCQkgICAgICAgIAlpZiggZXhpc3RzICRncm91cGVkeyRncm91
-cF9pZH0gKSAjd2UndmUgYWxyZWFkeSBzZXQgdGhpcyBsaXN0IHVwLCBwdXNoIGEgbmV3IGl0ZW0g
-b24gdG8gdGhlIGxpc3QKCQkgICAgICAgICAgICAgICAJewoJCQkJCWlmKCAkaWRzX29ubHkgKSAj
-c29tZXRpbWVzIHdlIG9ubHkgd2FudCBpZHMgcmF0aGVyIHRoYW4gdGhlIHdob2xlIGl0ZW0KCQkJ
-CQl7CgkJCQkJCXB1c2ggQHskZ3JvdXBlZHskZ3JvdXBfaWR9fSwgJGl0ZW0tPmlkOwoJCQkJCX0K
-CQkJCQllbHNlCgkJCQkJewoJCQkJCQlwdXNoIEB7JGdyb3VwZWR7JGdyb3VwX2lkfX0sICRpdGVt
-OwoJCQkJCX0KCSAgICAgICAJCSAgICAgICAgfQogICAgICAgIAkgICAgICAJCWVsc2UgI3NldCB1
-cCBhIGxpc3QgZm9yIHRoaXMgZ3JvdXAKCSAgICAgICAgCSAgICAgICAJewoJCQkJCW15IEBncm91
-cGVkX2l0ZW1zOwoJCQkJCWlmKCAkaWRzX29ubHkgKSAjc29tZXRpbWVzIHdlIG9ubHkgd2FudCBp
-ZHMgcmF0aGVyIHRoYW4gdGhlIHdob2xlIGl0ZW0KCQkgICAgICAgICAgICAgICAgICAgICAgICB7
-CQogICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgQGdyb3VwZWRfaXRlbXMgPSAoJGl0
-ZW0tPmlkKTsKICAgICAgICAgICAgICAgIAkJICAgICAgICB9CgkgICAgICAgICAgICAgICAgCSAg
-ICAgICAgZWxzZQogICAgICAgIAkgICAgICAgICAgICAgICAgCXsKCSAgICAgICAgICAgICAgICAJ
-ICAgICAgICAgICAgICAgIEBncm91cGVkX2l0ZW1zID0gKCRpdGVtKTsKICAgICAgICAJCSAgICAg
-ICAgICAgICAgIAl9CgkgICAgICAgICAgICAgICAgCSAgICAgICAgJGdyb3VwZWR7JGdyb3VwX2lk
-fSA9IFtAZ3JvdXBlZF9pdGVtc107CgkJCQl9CiAgICAgICAgICAgICAgIAkJfQoJCX0KCQllbHNl
-CgkJewoJCQlteSAkZ3JvdXBfaWQgPSAiVW5zcGVjaWZpZWQgIiAuICRtZXRhZmllbGQtPm5hbWU7
-CiAgCSAgICAJCWlmKCBleGlzdHMgJGdyb3VwZWR7JGdyb3VwX2lkfSApICN3ZSd2ZSBhbHJlYWR5
-IHNldCB0aGlzIGxpc3QgdXAsIHB1c2ggYSBuZXcgaXRlbSBvbiB0byB0aGUgbGlzdAoJCSAgCXsK
-CQkJCWlmKCAkaWRzX29ubHkgKSAjc29tZXRpbWVzIHdlIG9ubHkgd2FudCBpZHMgcmF0aGVyIHRo
-YW4gdGhlIHdob2xlIGl0ZW0KCQkJCXsKCQkJCQlwdXNoIEB7JGdyb3VwZWR7JGdyb3VwX2lkfX0s
-ICRpdGVtLT5pZDsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQlwdXNoIEB7JGdyb3VwZWR7JGdy
-b3VwX2lkfX0sICRpdGVtOwoJCQkJfQoJICAgICAgIAkJfQogICAgICAgIAkgICAgICAJZWxzZSAj
-c2V0IHVwIGEgbGlzdCBmb3IgdGhpcyBncm91cAoJICAgICAgICAJewoJCQkJbXkgQGdyb3VwZWRf
-aXRlbXM7CgkJCQlpZiggJGlkc19vbmx5ICkgI3NvbWV0aW1lcyB3ZSBvbmx5IHdhbnQgaWRzIHJh
-dGhlciB0aGFuIHRoZSB3aG9sZSBpdGVtCgkJICAgICAgICAgICAgICAgIHsJCiAgICAgICAgCQkJ
-CUBncm91cGVkX2l0ZW1zID0gKCRpdGVtLT5pZCk7CiAgICAgICAgICAgICAgICAJCX0KCSAgICAg
-ICAgICAgICAgICAJZWxzZQogICAgICAgIAkgICAgICAgICAgICAgICAgewoJICAgICAgICAgICAg
-ICAgCSAgICAgICAgICAgICAgICBAZ3JvdXBlZF9pdGVtcyA9ICgkaXRlbSk7CiAgICAgICAgCSAg
-ICAgICAgICAgICAgIAl9CgkgICAgICAgICAgICAgIAkgICAgICAgICRncm91cGVkeyRncm91cF9p
-ZH0gPSBbQGdyb3VwZWRfaXRlbXNdOwoJCQl9CgkJfQogICAgICAgCX0gKTsKCgkjbm93IHNvcnQg
-dGhlIGdyb3VwcyBhbmQgYWRkIGh1bWFuIHJlYWRhYmxlIGxhYmVscwoJbXkgQHNvcnRlZF9ncm91
-cHM7CgkKCW15ICRyZXZlcnNlID0gMDsKCSRyZXZlcnNlID0gJHNlbGYtPntwcm9jZXNzb3J9LT57
-Z3JvdXBfb3B0c30tPntyZXZlcnNlX29yZGVyfSBpZiBleGlzdHMgJHNlbGYtPntwcm9jZXNzb3J9
-LT57Z3JvdXBfb3B0c30tPntyZXZlcnNlX29yZGVyfTsKCWlmKCAkbWV0YWZpZWxkLT50eXBlIGVx
-ICJuYW1lZHNldCIgKQoJewoJCW15KCAkdGFncywgJGxhYmVscyApID0gJG1ldGFmaWVsZC0+dGFn
-c19hbmRfbGFiZWxzKCAkc2Vzc2lvbiApOwoJCSNjb252ZXJ0IHRhZ3MgdG8gYSBoYXNoIG9mIHZh
-bHVlcyBhbmQgYSBwcmlvcml0eSAoZm9yIG9yZGVyaW5nKQoJCW15ICVwcmlvcml0eTsKCQlteSAk
-aW5kZXggPSAxOwoJCWZvcmVhY2ggbXkgJHRhZyAoQHskdGFnc30gKQoJCXsKCQkJJHByaW9yaXR5
-eyR0YWd9ID0gJGluZGV4OwoJCQkkaW5kZXgrKzsKCQl9CgkJZm9yZWFjaCBteSAka2V5IChzb3J0
-IHskcHJpb3JpdHl7JGF9IDw9PiAkcHJpb3JpdHl7JGJ9fSBrZXlzICVncm91cGVkKQogICAgICAg
-IAl7CgkJCXB1c2ggQHNvcnRlZF9ncm91cHMsICRzZWxmLT5fbWFrZV9ncm91cGVkX2l0ZW0oICRn
-cm91cGVkeyRrZXl9LCAkbGFiZWxzLT57JGtleX0gKTsKCQl9Cgl9CgllbHNpZiggJG1ldGFmaWVs
-ZC0+dHlwZSBlcSAic3ViamVjdCIgKQoJewkJCgkJbXkgJGRzID0gJHNlc3Npb24tPmRhdGFzZXQo
-ICJzdWJqZWN0IiApOwoJCW15IEB2YWx1ZXMgPSBrZXlzICVncm91cGVkOwoJCW15ICRzb3J0ZWQg
-PSAkbWV0YWZpZWxkLT5zb3J0X3ZhbHVlcyggJHNlc3Npb24sIFxAdmFsdWVzICk7CgkJbXkgJXBy
-aW9yaXR5OwoJCW15ICRpbmRleCA9IDE7CiAgICAgICAgICAgICAgICBmb3JlYWNoIG15ICR2YWx1
-ZSAoQHskc29ydGVkfSApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAg
-ICRwcmlvcml0eXskdmFsdWV9ID0gJGluZGV4OwogICAgICAgICAgICAgICAgICAgICAgICAkaW5k
-ZXgrKzsKICAgICAgICAgICAgICAgIH0KCQlmb3JlYWNoIG15ICRrZXkgKHNvcnQgeyRwcmlvcml0
-eXskYX0gPD0+ICRwcmlvcml0eXskYn19IGtleXMgJWdyb3VwZWQpCiAgICAgICAgICAgICAgICB7
-CgkJCW15ICRzdWJqID0gJGRzLT5kYXRhb2JqKCAka2V5ICk7CiAgICAgICAgICAgICAgICAgICAg
-ICAgIHB1c2ggQHNvcnRlZF9ncm91cHMsICRzZWxmLT5fbWFrZV9ncm91cGVkX2l0ZW0oICRncm91
-cGVkeyRrZXl9LCBFUHJpbnRzOjpVdGlsczo6dHJlZV90b191dGY4KCAkc3Viai0+cmVuZGVyX2Rl
-c2NyaXB0aW9uICkgKSBpZiBkZWZpbmVkICRzdWJqOwogICAgICAgICAgICAgICAgfQoJfQoJZWxz
-aWYoICRtZXRhZmllbGQtPnR5cGUgZXEgImRhdGUiICkKCXsKCQlpZiggJHJldmVyc2UgKQoJCXsK
-CQkJZm9yZWFjaCBteSAka2V5ICggc29ydCB7JGIgPD0+ICRhfSBrZXlzICVncm91cGVkICkKCQkJ
-ewoJCQkJcHVzaCBAc29ydGVkX2dyb3VwcywgJHNlbGYtPl9tYWtlX2dyb3VwZWRfaXRlbSggJGdy
-b3VwZWR7JGtleX0sICRrZXkgKTsKCQkJfQoJCX0KCQllbHNlCgkJewoJCQlmb3JlYWNoIG15ICRr
-ZXkgKCBzb3J0IHskYSA8PT4gJGJ9IGtleXMgJWdyb3VwZWQgKQoJCQl7CgkJCQlwdXNoIEBzb3J0
-ZWRfZ3JvdXBzLCAkc2VsZi0+X21ha2VfZ3JvdXBlZF9pdGVtKCAkZ3JvdXBlZHska2V5fSwgJGtl
-eSApOwoJCQl9CgkJfQoJfQoJZWxzZQoJewkKCQlpZiggJHJldmVyc2UgKQoJCXsKCQkJZm9yZWFj
-aCBteSAka2V5ICggc29ydCB7JGIgY21wICRhfSBrZXlzICVncm91cGVkICkKCQkJewoJCQkJcHVz
-aCBAc29ydGVkX2dyb3VwcywgJHNlbGYtPl9tYWtlX2dyb3VwZWRfaXRlbSggJGdyb3VwZWR7JGtl
-eX0sICRrZXkgKTsKCQkJfQoJCX0KCQllbHNlCgkJewoJCQlmb3JlYWNoIG15ICRrZXkgKCBzb3J0
-IGtleXMgJWdyb3VwZWQgKQoJCQl7CgkJCQlwdXNoIEBzb3J0ZWRfZ3JvdXBzLCAkc2VsZi0+X21h
-a2VfZ3JvdXBlZF9pdGVtKCAkZ3JvdXBlZHska2V5fSwgJGtleSApOwoJCQl9CgkJfQoJfQoKCSNj
-aGVjayBmb3IgYW55IHVuc3BlY2lmaWVkIGdyb3VwcwoJbXkgJGdyb3VwX2lkID0gIlVuc3BlY2lm
-aWVkICIgLiAkbWV0YWZpZWxkLT5uYW1lOwoJaWYoIGV4aXN0cyAkZ3JvdXBlZHskZ3JvdXBfaWR9
-ICkKCXsKCQlwdXNoIEBzb3J0ZWRfZ3JvdXBzLCAkc2VsZi0+X21ha2VfZ3JvdXBlZF9pdGVtKCAk
-Z3JvdXBlZHskZ3JvdXBfaWR9LCAkZ3JvdXBfaWQgKTsKCX0KCglyZXR1cm4gXEBzb3J0ZWRfZ3Jv
-dXBzOwp9CQoKCnN1YiBfbWFrZV9ncm91cGVkX2l0ZW0KewoJbXkoICRzZWxmLCAkbGlzdCwgJGxh
-YmVsICkgPSBAXzsKCW15ICVncm91cDsKCSRncm91cHtsaXN0fSA9ICRsaXN0OwoJJGdyb3Vwe2xh
-YmVsfSA9ICRsYWJlbDsKCXJldHVybiBcJWdyb3VwOwp9CgoxOwo=
+ZCAkcmVwby0+Y29uZmlnKCAkc2VsZi0+e2V4cG9ydF9jb25mfSwgImN1c3RvbV9leHBvcnQiICkg
+JiYgZXhpc3RzICR7JHJlcG8tPmNvbmZpZyggJHNlbGYtPntleHBvcnRfY29uZn0sICJjdXN0b21f
+ZXhwb3J0IiApfXskZmllbGRuYW1lfSApICN3ZSBoYXZlIGEgY3VzdG9tIGV4cG9ydCBmdW5jdGlv
+biBpbnN0ZWFkIAoJCQkJewoJCQkJCSRjb3VudCsrOwoJCQkJCSRzZWxmLT5fZXhwb3J0X2ZpZWxk
+X2NoZWNrYm94KCAkcmVwbywgJGZpZWxkbmFtZSwgJHVsLCAkcmVwby0+aHRtbF9waHJhc2UoICJl
+eHBvcnRmaWVsZG9wdGlvbnM6JGZpZWxkbmFtZSIgKSApOyAKCQkJCX0KCQkJCWVsc2lmKCBkZWZp
+bmVkIEVQcmludHM6OlV0aWxzOjpmaWVsZF9mcm9tX2NvbmZpZ19zdHJpbmcoICRyZXBvcnRfZHMs
+ICRmaWVsZG5hbWUgKSApCgkJCQl7CgkJCQkJbXkgJGZpZWxkID0gRVByaW50czo6VXRpbHM6OmZp
+ZWxkX2Zyb21fY29uZmlnX3N0cmluZyggJHJlcG9ydF9kcywgJGZpZWxkbmFtZSApOwoJCQkJCSRj
+b3VudCsrOwogICAgICAgCQkJICAgICAgICAJJHNlbGYtPl9leHBvcnRfZmllbGRfY2hlY2tib3go
+ICRyZXBvLCAkZmllbGRuYW1lLCAkdWwsICRmaWVsZC0+cmVuZGVyX25hbWUgKTsKCgkJCQl9CgkJ
+CX0KCQkJaWYoICRjb3VudCApICNvbmx5IGFkZCBvcHRpb25zIGlmIHdlIGhhdmUgYW55IGZpZWxk
+cyB0byBzaG93CgkJCXsKCQkJCW15ICRkaXYgPSAkcmVwby0+bWFrZV9lbGVtZW50KCAiZGl2Iiwg
+Y2xhc3M9PiJyZXBvcnRfZXhwb3J0X29wdGlvbnMiICk7CgkJCQkkZGl2LT5hcHBlbmRDaGlsZCgg
+bXkgJGggPSAkcmVwby0+bWFrZV9lbGVtZW50KCAiaDQiICkgKTsKCQkJCSRoLT5hcHBlbmRDaGls
+ZCggJHJlcG8tPmh0bWxfcGhyYXNlKCAiZXhwb3J0ZmllbGRzOiRrZXkiICkgKTsJCgkJCQkkZGl2
+LT5hcHBlbmRDaGlsZCggJHVsICk7CgkJCQkkZXhwb3J0X29wdGlvbnMtPmFwcGVuZENoaWxkKCAk
+ZGl2ICk7CgkJCX0KICAgICAgIAkJfQoJCSRmb3JtLT5hcHBlbmRDaGlsZCggJGV4cG9ydF9vcHRp
+b25zICk7Cgl9CgoJJGZvcm0tPmFwcGVuZENoaWxkKCAKCQkkcmVwby0+cmVuZGVyX2J1dHRvbigK
+CQkJbmFtZSA9PiAiX2FjdGlvbl9leHBvcnQiLAoJCQljbGFzcyA9PiAiZXBfZm9ybV9hY3Rpb25f
+YnV0dG9uIiwKCQkJdmFsdWUgPT4gJHJlcG8tPnBocmFzZSggJ2NnaS91c2Vycy9lZGl0X2Vwcmlu
+dDpleHBvcnQnICkKCSkgKTsKCgkjY3JlYXRlIGEgY29sbGFwc2libGUgYm94CglteSAkaW1hZ2Vz
+dXJsID0gJHJlcG8tPmN1cnJlbnRfdXJsKCBwYXRoID0+ICJzdGF0aWMiLCAic3R5bGUvaW1hZ2Vz
+IiApOwoJbXkgJW9wdGlvbnM7Cgkkb3B0aW9uc3tzZXNzaW9ufSA9ICRyZXBvOwogICAgICAgICRv
+cHRpb25ze2lkfSA9ICJlcF9yZXBvcnRfZXhwb3J0IjsKICAgICAgICAkb3B0aW9uc3t0aXRsZX0g
+PSAkcmVwby0+aHRtbF9waHJhc2UoICJleHBvcnRfdGl0bGUiICk7CiAgICAgICAgJG9wdGlvbnN7
+Y29sbGFwc2VkfSA9IDE7Cgkkb3B0aW9uc3tjb250ZW50fSA9ICRmb3JtOwogICAgICAgICRvcHRp
+b25ze3Nob3dfaWNvbl91cmx9ID0gIiRpbWFnZXN1cmwvbXVsdGlfZG93bi5wbmciOwoJJG9wdGlv
+bnN7aGlkZV9pY29uX3VybH0gPSAiJGltYWdlc3VybC9tdWx0aV91cC5wbmciOwoKCW15ICRib3gg
+PSAkcmVwby0+bWFrZV9lbGVtZW50KCAiZGl2Iiwgc3R5bGU9PiJ0ZXh0LWFsaWduOiBsZWZ0IiAp
+OwoJJGJveC0+YXBwZW5kQ2hpbGQoIEVQcmludHM6OkJveDo6cmVuZGVyKCAlb3B0aW9ucyApICk7
+CgkkY2h1bmstPmFwcGVuZENoaWxkKCAkYm94ICk7CgoJcmV0dXJuICRjaHVuazsKfQoKc3ViIHJl
+bmRlcl9zb3J0X29wdGlvbnMKewoJbXkoICRzZWxmICkgPSBAXzsKCglteSAkcmVwbyA9ICRzZWxm
+LT5yZXBvc2l0b3J5OwoKCW15ICRjaHVuayA9ICRyZXBvLT5tYWtlX2RvY19mcmFnbWVudDsKCgly
+ZXR1cm4gJGNodW5rIHVubGVzcyggZGVmaW5lZCggJHJlcG8tPmNvbmZpZyggJHNlbGYtPntzb3J0
+X2NvbmZ9LCAic29ydGZpZWxkcyIgKSApICk7CgoJbXkgJHNvcnRfY29uZiA9ICRyZXBvLT5jb25m
+aWcoICRzZWxmLT57c29ydF9jb25mfSwgInNvcnRmaWVsZHMiICk7CgoJI2J1aWxkIHRoZSBmb3Jt
+CglteSAkZm9ybSA9ICRzZWxmLT5yZW5kZXJfZm9ybTsKCSRmb3JtLT5zZXRBdHRyaWJ1dGUoIG5h
+bWUgPT4gInNvcnRfcmVwb3J0IiApOwogICAgICAgICRmb3JtLT5zZXRBdHRyaWJ1dGUoIG1ldGhv
+ZCA9PiAiZ2V0IiApOwoJJGNodW5rLT5hcHBlbmRDaGlsZCggJGZvcm0gKTsKCQoJaWYoIGRlZmlu
+ZWQgJHJlcG8tPnBhcmFtKCAic2VhcmNoIiApIHx8ICRzZWxmLT57cHJvY2Vzc29yfS0+e2FjdGlv
+bn0gZXEgInNlYXJjaCIgKQoJewoJCSRmb3JtLT5hcHBlbmRDaGlsZCggJHJlcG8tPnJlbmRlcl9o
+aWRkZW5fZmllbGQoICJzZWFyY2giLCAgJHNlbGYtPntwcm9jZXNzb3J9LT57c2VhcmNofS0+c2Vy
+aWFsaXNlKSApOwoJfQoKCWlmKCBkZWZpbmVkICRzZWxmLT57cHJvY2Vzc29yfS0+e2dyb3VwX2V4
+cH0gKQoJewoJCSRmb3JtLT5hcHBlbmRDaGlsZCggJHJlcG8tPnJlbmRlcl9oaWRkZW5fZmllbGQo
+ICJncm91cCIsICAkc2VsZi0+e3Byb2Nlc3Nvcn0tPntncm91cF9leHB9ICkgKTsKCX0KCgkjZGlz
+cGxheSB0aGUgbGlua3MgdGhhdCB3aWxsIHRyaWdnZXIgdGhlIGZvcm0KCW15ICRmaXJzdCA9IDE7
+CglteSAkc29ydF9saW5rcyA9ICRyZXBvLT5tYWtlX2RvY19mcmFnbWVudDsKCWZvcmVhY2ggbXkg
+JHNvcnRfbmFtZSAoIGtleXMgJXskc29ydF9jb25mfSApCiAgICAgICAgewoJCW15ICRzb3J0X3Zh
+bHVlID0gJHNvcnRfY29uZi0+eyRzb3J0X25hbWV9OwoJCWlmKCAkZmlyc3QgKQoJCXsKCQkJJGZv
+cm0tPmFwcGVuZENoaWxkKCAkcmVwby0+cmVuZGVyX2hpZGRlbl9maWVsZCggInNvcnQiLCAkc29y
+dF92YWx1ZSkgKTsKCQl9CgoJCWlmKCAhJGZpcnN0ICkKICAgICAgICAgICAgICAgIHsKICAgICAg
+ICAgICAgICAgIAkkc29ydF9saW5rcy0+YXBwZW5kQ2hpbGQoICRyZXBvLT5odG1sX3BocmFzZSgg
+IlVwZGF0ZS9WaWV3czpncm91cF9zZXBlcmF0b3IiICkgKTsKICAgICAgICAgICAgICAgIH0KCQkK
+CQlpZiggZGVmaW5lZCAkc2VsZi0+e3Byb2Nlc3Nvcn0tPntzb3J0fSAmJiAkc2VsZi0+e3Byb2Nl
+c3Nvcn0tPntzb3J0fSBlcSAkc29ydF92YWx1ZSApCgkJewoJCQlteSAkc3Ryb25nID0gJHJlcG8t
+Pm1ha2VfZWxlbWVudCggInN0cm9uZyIgKTsKCQkJJHN0cm9uZy0+YXBwZW5kQ2hpbGQoICRyZXBv
+LT5odG1sX3BocmFzZSggJHNlbGYtPntzb3J0X2NvbmZ9IC4gIjpzb3J0OiIgLiAkc29ydF9uYW1l
+ICkgKTsKCQkJJHNvcnRfbGlua3MtPmFwcGVuZENoaWxkKCAkc3Ryb25nICk7CgkJfQoJCWVsc2UK
+CQl7CgkJCW15ICRsaW5rID0gJHJlcG8tPnJlbmRlcl9saW5rKCAnamF2YXNjcmlwdDpzb3J0X3Jl
+cG9ydCgiJy4kc29ydF92YWx1ZS4nIiknICk7CQoJCQkkbGluay0+YXBwZW5kQ2hpbGQoICRyZXBv
+LT5odG1sX3BocmFzZSggJHNlbGYtPntzb3J0X2NvbmZ9IC4gIjpzb3J0OiIgLiAkc29ydF9uYW1l
+ICkgKTsKCQkJJHNvcnRfbGlua3MtPmFwcGVuZENoaWxkKCAkbGluayApOwoJCX0KCQkkZmlyc3Qg
+PSAwOwogICAgICAgIH0gICAgICAgICAgIAoJJGNodW5rLT5hcHBlbmRDaGlsZCggJHJlcG8tPmh0
+bWxfcGhyYXNlKCAiUmVwb3J0OnNvcnRfbGlua3MiLCBsaW5rcz0+JHNvcnRfbGlua3MgKSApOwoJ
+cmV0dXJuICRjaHVuazsKfQoKCnN1YiByZW5kZXJfZ3JvdXBfb3B0aW9ucwp7CglteSggJHNlbGYg
+KSA9IEBfOwoKCW15ICRyZXBvID0gJHNlbGYtPnJlcG9zaXRvcnk7CgoJbXkgJGNodW5rID0gJHJl
+cG8tPm1ha2VfZG9jX2ZyYWdtZW50OwoKCXJldHVybiAkY2h1bmsgdW5sZXNzKCBkZWZpbmVkKCAk
+cmVwby0+Y29uZmlnKCAkc2VsZi0+e2dyb3VwX2NvbmZ9LCAiZ3JvdXBmaWVsZHMiICkgKSApOwoK
+CW15ICRncm91cF9jb25mID0gJHJlcG8tPmNvbmZpZyggJHNlbGYtPntncm91cF9jb25mfSwgImdy
+b3VwZmllbGRzIiApOwoKCSNidWlsZCB0aGUgZm9ybQoJbXkgJGZvcm0gPSAkc2VsZi0+cmVuZGVy
+X2Zvcm07CgkkZm9ybS0+c2V0QXR0cmlidXRlKCBuYW1lID0+ICJncm91cF9yZXBvcnQiICk7CiAg
+ICAgICAgJGZvcm0tPnNldEF0dHJpYnV0ZSggbWV0aG9kID0+ICJnZXQiICk7CgkkY2h1bmstPmFw
+cGVuZENoaWxkKCAkZm9ybSApOwoJCglpZiggZGVmaW5lZCAkcmVwby0+cGFyYW0oICJzZWFyY2gi
+ICkgfHwgJHNlbGYtPntwcm9jZXNzb3J9LT57YWN0aW9ufSBlcSAic2VhcmNoIiApCgl7CgkJJGZv
+cm0tPmFwcGVuZENoaWxkKCAkcmVwby0+cmVuZGVyX2hpZGRlbl9maWVsZCggInNlYXJjaCIsICAk
+c2VsZi0+e3Byb2Nlc3Nvcn0tPntzZWFyY2h9LT5zZXJpYWxpc2UpICk7Cgl9CgoJaWYoIGRlZmlu
+ZWQgJHNlbGYtPntwcm9jZXNzb3J9LT57c29ydH0gKQoJewoJCSRmb3JtLT5hcHBlbmRDaGlsZCgg
+JHJlcG8tPnJlbmRlcl9oaWRkZW5fZmllbGQoICJzb3J0IiwgICRzZWxmLT57cHJvY2Vzc29yfS0+
+e3NvcnR9ICkgKTsKCX0KCgkjZGlzcGxheSB0aGUgbGlua3MgdGhhdCB3aWxsIHRyaWdnZXIgdGhl
+IGZvcm0KCW15ICRmaXJzdCA9IDE7CglteSAkZ3JvdXBfbGlua3MgPSAkcmVwby0+bWFrZV9kb2Nf
+ZnJhZ21lbnQ7Cglmb3JlYWNoIG15ICRncm91cF92YWx1ZSAoIEB7JGdyb3VwX2NvbmZ9ICkKICAg
+ICAgICB7CgkJbXkgKCRncm91cF9maWVsZCkgPSBzcGxpdCgvOy8sICRncm91cF92YWx1ZSApOwoJ
+CWlmKCAkZmlyc3QgKQoJCXsKCQkJJGZvcm0tPmFwcGVuZENoaWxkKCAkcmVwby0+cmVuZGVyX2hp
+ZGRlbl9maWVsZCggImdyb3VwIiwgJGdyb3VwX3ZhbHVlKSApOwoJCX0KCgkJaWYoICEkZmlyc3Qg
+KQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgCSRncm91cF9saW5rcy0+YXBwZW5k
+Q2hpbGQoICRyZXBvLT5odG1sX3BocmFzZSggIlVwZGF0ZS9WaWV3czpncm91cF9zZXBlcmF0b3Ii
+ICkgKTsKICAgICAgICAgICAgICAgIH0KCQkKCQlpZiggZGVmaW5lZCAkc2VsZi0+e3Byb2Nlc3Nv
+cn0tPntncm91cH0gJiYgJHNlbGYtPntwcm9jZXNzb3J9LT57Z3JvdXB9IGVxICRncm91cF9maWVs
+ZCApCgkJewoJCQlteSAkc3Ryb25nID0gJHJlcG8tPm1ha2VfZWxlbWVudCggInN0cm9uZyIgKTsK
+CQkJJHN0cm9uZy0+YXBwZW5kQ2hpbGQoICRyZXBvLT5odG1sX3BocmFzZSggJHNlbGYtPntncm91
+cF9jb25mfSAuICI6Z3JvdXA6IiAuICRncm91cF9maWVsZCApICk7CgkJCSRncm91cF9saW5rcy0+
+YXBwZW5kQ2hpbGQoICRzdHJvbmcgKTsKCQl9CgkJZWxzZQoJCXsKCQkJbXkgJGxpbmsgPSAkcmVw
+by0+cmVuZGVyX2xpbmsoICdqYXZhc2NyaXB0Omdyb3VwX3JlcG9ydCgiJy4kZ3JvdXBfdmFsdWUu
+JyIpJyApOwkKCQkJJGxpbmstPmFwcGVuZENoaWxkKCAkcmVwby0+aHRtbF9waHJhc2UoICRzZWxm
+LT57Z3JvdXBfY29uZn0gLiAiOmdyb3VwOiIgLiAkZ3JvdXBfZmllbGQgKSApOwoJCQkkZ3JvdXBf
+bGlua3MtPmFwcGVuZENoaWxkKCAkbGluayApOwoJCX0KCQkkZmlyc3QgPSAwOwogICAgICAgIH0g
+ICAgICAgICAgIAoJCgkjbm8gZ3JvdXBpbmcgbGluayBhdCB0aGUgZW5kCgkkZ3JvdXBfbGlua3Mt
+PmFwcGVuZENoaWxkKCAkcmVwby0+aHRtbF9waHJhc2UoICJVcGRhdGUvVmlld3M6Z3JvdXBfc2Vw
+ZXJhdG9yIiApICk7CglpZiggZGVmaW5lZCAkc2VsZi0+e3Byb2Nlc3Nvcn0tPntncm91cH0gJiYg
+JHNlbGYtPntwcm9jZXNzb3J9LT57Z3JvdXB9IG5lICIiICkKCXsKCQlteSAkbGluayA9ICRyZXBv
+LT5yZW5kZXJfbGluayggJ2phdmFzY3JpcHQ6Z3JvdXBfcmVwb3J0KCIiKScgKTsJCgkJJGxpbmst
+PmFwcGVuZENoaWxkKCAkcmVwby0+aHRtbF9waHJhc2UoICJyZXBvcnQ6bm9fZ3JvdXBpbmciICkg
+KTsKCQkkZ3JvdXBfbGlua3MtPmFwcGVuZENoaWxkKCAkbGluayApOwoJfQoJZWxzZQoJewoJCW15
+ICRzdHJvbmcgPSAkcmVwby0+bWFrZV9lbGVtZW50KCAic3Ryb25nIiApOwogCQkkc3Ryb25nLT5h
+cHBlbmRDaGlsZCggJHJlcG8tPmh0bWxfcGhyYXNlKCAicmVwb3J0Om5vX2dyb3VwaW5nIiApICk7
+CgkJJGdyb3VwX2xpbmtzLT5hcHBlbmRDaGlsZCggJHN0cm9uZyApOwoJfQoJCgkkY2h1bmstPmFw
+cGVuZENoaWxkKCAkcmVwby0+aHRtbF9waHJhc2UoICJSZXBvcnQ6Z3JvdXBfbGlua3MiLCBsaW5r
+cz0+JGdyb3VwX2xpbmtzICkgKTsKCglyZXR1cm4gJGNodW5rOwp9CgoKI2FkZHMgYSBuZXcgY2hl
+Y2tib3ggdG8gYWxsb3cgdGhlIHVzZXIgdG8gY2hvb3NlIHdoaWNoIGZpZWxkcyB0byBleHBvcnQK
+c3ViIF9leHBvcnRfZmllbGRfY2hlY2tib3gKewoJbXkoICRzZWxmLCAkcmVwbywgJGZpZWxkbmFt
+ZSwgJHVsLCAkZmllbGRsYWJlbCApID0gQF87CgoJbXkgJGxpID0gJHJlcG8tPm1ha2VfZWxlbWVu
+dCggImxpIiApOwoJJHVsLT5hcHBlbmRDaGlsZCggJGxpICk7CgogICAgICAgIG15ICRjaGVja2Jv
+eCA9ICRyZXBvLT5tYWtlX2VsZW1lbnQoICJpbnB1dCIsIHR5cGUgPT4gImNoZWNrYm94IiwgaWQg
+PT4gJGZpZWxkbmFtZSwgbmFtZSA9PiAkZmllbGRuYW1lLCB2YWx1ZSA9PiAkZmllbGRuYW1lICk7
+CglpZiggZGVmaW5lZCAkcmVwby0+Y29uZmlnKCAkc2VsZi0+e2V4cG9ydF9jb25mfSwgImV4cG9y
+dGZpZWxkX2RlZmF1bHRzIiApICkKCXsKCQlpZiggKCBncmVwIHsgJGZpZWxkbmFtZSBlcSAkXyB9
+IEB7JHJlcG8tPmNvbmZpZyggJHNlbGYtPntleHBvcnRfY29uZn0sICJleHBvcnRmaWVsZF9kZWZh
+dWx0cyIgKX0gKSB8fCAoIHNjYWxhciggQHskcmVwby0+Y29uZmlnKCAkc2VsZi0+e2V4cG9ydF9j
+b25mfSwgImV4cG9ydGZpZWxkX2RlZmF1bHRzIiApfSApID09IDAgKSApCgkJewoJCQkjb25seSBj
+aGVjayBkZWZhdWx0cyBvciBjaGVjayBldmVyeXRoaW5nIGlmIGRlZmF1bHRzIG5vdCBkZWZpbmVk
+CgkJCSRjaGVja2JveC0+c2V0QXR0cmlidXRlKCAiY2hlY2tlZCIsICJ5ZXMiICk7CgkJfQoJfQoJ
+bXkgJGxhYmVsID0gJHJlcG8tPm1ha2VfZWxlbWVudCggImxhYmVsIiwgZm9yID0+ICRmaWVsZG5h
+bWUgKTsKCSRsYWJlbC0+YXBwZW5kQ2hpbGQoICRmaWVsZGxhYmVsICk7CgoJJGxpLT5hcHBlbmRD
+aGlsZCggJGNoZWNrYm94ICk7CgkkbGktPmFwcGVuZENoaWxkKCAkbGFiZWwgKTsKfQoKIyMjIHV0
+aWxpdHkgbWV0aG9kcwoKIyBUT0RPIHNob3VsZCB1c2UgIkpTT04iIHBhY2thZ2UKc3ViIHRvX2pz
+b24KewogICAgICAgIG15KCAkc2VsZiwgJG9iamVjdCApID0gQF87CgoJcmV0dXJuICIiIGlmKCAh
+ZGVmaW5lZCAkb2JqZWN0ICk7CgojIFVURi04IGlzc3VlczoKIwlyZXR1cm4gSlNPTi0+bmV3LT51
+dGY4KDEpLT5lbmNvZGUoICRvYmplY3QgKTsKCiAgICAgICAgaWYoIHJlZiggJG9iamVjdCApIGVx
+ICdIQVNIJyApCiAgICAgICAgewogICAgICAgICAgICAgICAgbXkgQHN0dWZmOwogICAgICAgICAg
+ICAgICAgd2hpbGUoIG15KCAkaywgJHYgKSA9IGVhY2goICUkb2JqZWN0ICkgKQogICAgICAgICAg
+ICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IGlmKCAhRVByaW50czo6VXRpbHM6
+OmlzX3NldCggJHYgKSApOyAgICAgICAjIG9yICdudWxsJyA/CiAgICAgICAgICAgICAgICAgICAg
+ICAgIHB1c2ggQHN0dWZmLCBFUHJpbnRzOjpVdGlsczo6anNfc3RyaW5nKCAkayApLic6Jy4kc2Vs
+Zi0+dG9fanNvbiggJHYgKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJu
+ICd7JyAuIGpvaW4oICIsIiwgQHN0dWZmICkgLiAnfSc7CiAgICAgICAgfQogICAgICAgIGVsc2lm
+KCByZWYoICRvYmplY3QgKSBlcSAnQVJSQVknICkKICAgICAgICB7CiAgICAgICAgICAgICAgICBt
+eSBAc3R1ZmY7CiAgICAgICAgICAgICAgICBmb3JlYWNoKCBAJG9iamVjdCApCiAgICAgICAgICAg
+ICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgaWYoICFFUHJpbnRzOjpVdGlsczo6
+aXNfc2V0KCAkXyApICk7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQHN0dWZmLCAkc2Vs
+Zi0+dG9fanNvbiggJF8gKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVy
+biAnWycgLiBqb2luKCAiLCIsIEBzdHVmZiApIC4gJ10nOwogICAgICAgIH0KCiAgICAgICAgcmV0
+dXJuIEVQcmludHM6OlV0aWxzOjpqc19zdHJpbmcoICRvYmplY3QgKTsKfQoKc3ViIGV4cG9ydF9w
+bHVnaW5zCnsKICAgICAgICBteSggJHNlbGYsICRnZW5lcmljICkgPSBAXzsKCglteSBAcGx1Z2lu
+X2lkczsKCWlmKCAkZ2VuZXJpYyApCgl7CiAJCUBwbHVnaW5faWRzID0gJHNlbGYtPnJlcG9zaXRv
+cnktPnBsdWdpbl9saXN0KAogICAgICAgICAgICAgICAgCXR5cGUgPT4gIkV4cG9ydCIsCgkgICAg
+ICAgICAgICAgICAgY2FuX2FjY2VwdCA9PiAicmVwb3J0L2dlbmVyaWMiLAogICAgICAgIAkgICAg
+ICAgIGlzX3Zpc2libGUgPT4gInN0YWZmIiwKCQkJaXNfYWR2ZXJ0aXNlZCA9PiAxLAoJICAgICAg
+ICApOwoJfQoJZWxzZQoJewogICAgICAgIAlAcGx1Z2luX2lkcyA9ICRzZWxmLT5yZXBvc2l0b3J5
+LT5wbHVnaW5fbGlzdCgKICAgICAgICAgICAgICAgIAl0eXBlID0+ICJFeHBvcnQiLAoJICAgICAg
+ICAgICAgICAgIGNhbl9hY2NlcHQgPT4gInJlcG9ydC8iLiRzZWxmLT5nZXRfcmVwb3J0LAogICAg
+ICAgIAkgICAgICAgIGlzX3Zpc2libGUgPT4gInN0YWZmIiwKCQkJaXNfYWR2ZXJ0aXNlZCA9PiAx
+LAoJICAgICAgICApOwogICAgICAgIH0KCW15IEBwbHVnaW5zOwoJZm9yZWFjaCBteSAkaWQgKCBA
+cGx1Z2luX2lkcyApCiAgICAgICAgewogICAgICAgICAgICAgICAgbXkgJHAgPSAkc2VsZi0+cmVw
+b3NpdG9yeS0+cGx1Z2luKCAiJGlkIiApIG9yIG5leHQ7CiAgICAgICAgICAgICAgICBwdXNoIEBw
+bHVnaW5zLCAkcDsKICAgICAgICB9CgogICAgICAgIHJldHVybiBAcGx1Z2luczsKfQoKc3ViIHJl
+cG9ydF9wbHVnaW5zCnsKCW15KCAkc2VsZiApID0gQF87CgoJIyBzZjIgLSBjYW4ndCBsaXN0IHZp
+YSB0eXBlID0+ICJTZWFyY2g6OlJlcG9ydCIgPyAKICAgICAgICBteSBAcGx1Z2luX2lkcyA9ICRz
+ZWxmLT5yZXBvc2l0b3J5LT5wbHVnaW5fbGlzdCgKICAgICAgICAgICAgICAgIHR5cGUgPT4gIlNj
+cmVlbiIsCiAgICAgICAgKTsKCiAgICAgICAgbXkgQHBsdWdpbnM7Cglmb3JlYWNoIG15ICRpZCAo
+IEBwbHVnaW5faWRzICkKICAgICAgICB7CgkJbmV4dCBpZiggJGlkICF+IC9eU2NyZWVuOjpSZXBv
+cnQ6Oi8gKTsJIyBub3RlIHRoaXMgYWxzbyBmaWx0ZXJzIG91dCAkc2VsZiAoYWthIFNjcmVlbjo6
+UmVwb3J0KQoKICAgICAgICAgICAgICAgIG15ICRwID0gJHNlbGYtPnJlcG9zaXRvcnktPnBsdWdp
+biggIiRpZCIgKTsKCQluZXh0IGlmKCAhZGVmaW5lZCAkcCB8fCAhJHAtPmNhbl9iZV92aWV3ZWQg
+KTsKCiAgICAgICAgICAgICAgICBwdXNoIEBwbHVnaW5zLCAkcDsKICAgICAgICB9CgogICAgICAg
+IHJldHVybiBAcGx1Z2luczsKfQoKI3JldHVybnMgYSBoYXNoIG9mIHZhbHVlcyBtYXBwZWQgdG8g
+YSBsYWJlbCBhbmQgYSBsaXN0CiNpZiBpZHNfb25seSBpcyBzZXQgdGhlIGxpc3Qgb2YgaXRlbXMg
+YXJlIGp1c3QgcmVwcmVzZW50ZWQgYnkgdGhlaXIgaWQgKHVzZWQgYnkgcmVwb3J0IEpTKQpzdWIg
+Z2V0X2dyb3VwZWRfaXRlbXMKewoJbXkoICRzZWxmLCAkaXRlbXMsICRpZHNfb25seSApID0gQF87
+CglteSAkc2Vzc2lvbiA9ICRzZWxmLT57c2Vzc2lvbn07CglteSAlZ3JvdXBlZDsKCglteSAkZ3Jv
+dXBpbmcgPSAkc2VsZi0+e3Byb2Nlc3Nvcn0tPntncm91cH07CgoJbXkgJG1ldGFmaWVsZCA9ICRp
+dGVtcy0+Z2V0X2RhdGFzZXQtPmZpZWxkKCAkZ3JvdXBpbmcgKTsKCgkjc2V0IGdyb3VwX29wdHMg
+aWYgYXBwcm9wcmlhdGUKCWlmKCBkZWZpbmVkICRzZWxmLT57cHJvY2Vzc29yfS0+e2dyb3VwX29w
+dHN9ICkKCXsKCQlpZiggJG1ldGFmaWVsZC0+dHlwZSBlcSAiZGF0ZSIgKQoJCXsKCQkJJG1ldGFm
+aWVsZC0+e3JlbmRlcl9yZXN9ID0gJHNlbGYtPntwcm9jZXNzb3J9LT57Z3JvdXBfb3B0c30tPnty
+ZXN9IGlmIGV4aXN0cyAkc2VsZi0+e3Byb2Nlc3Nvcn0tPntncm91cF9vcHRzfS0+e3Jlc307CgkJ
+fQoJfQoKCSNjcmVhdGUgYSBoYXNoIG9mIGZpZWxkIHZhbHVlcyB0byBpdGVtcyAob3IgaXRlbSBp
+ZHMpCgkkaXRlbXMtPm1hcCggc3ViIHsKCSAgICAgICAJbXkoICRzZXNzaW9uLCAkZGF0YXNldCwg
+JGl0ZW0gKSA9IEBfOwoJCQoJCW15ICRtdWx0aXBsZSA9ICRtZXRhZmllbGQtPmdldF9wcm9wZXJ0
+eSggIm11bHRpcGxlIiApOwoJCW15IEBncm91cF92YWx1ZXM7CgkJaWYoICRtdWx0aXBsZSApCiAg
+ICAgICAgICAgICAgICB7CgkJCUBncm91cF92YWx1ZXMgPSBAeyRpdGVtLT52YWx1ZSggJGdyb3Vw
+aW5nICl9OwoJCX0KCQllbHNlCgkJewkJCQoJCQlAZ3JvdXBfdmFsdWVzID0gKCRpdGVtLT52YWx1
+ZSggJGdyb3VwaW5nICkpOwoJCX0KCQoJCWlmKCBzY2FsYXIgQGdyb3VwX3ZhbHVlcyA+IDAgKQoJ
+CXsKCQkJZm9yZWFjaCBteSAkZ3JvdXBfdmFsdWUgKCBAZ3JvdXBfdmFsdWVzICkKCQkJewoJCQkJ
+bXkgJGdyb3VwX2lkID0gJG1ldGFmaWVsZC0+Z2V0X2lkX2Zyb21fdmFsdWUoICRzZXNzaW9uLCAk
+Z3JvdXBfdmFsdWUgKTsKCQkJCSN0cnVuY2F0ZSBncm91cCBpZiBhcHByb3ByaWF0ZQoJCQkJaWYo
+IGRlZmluZWQgJHNlbGYtPntwcm9jZXNzb3J9LT57Z3JvdXBfb3B0c30gKQoJCQkJewoJCQkJCSRn
+cm91cF9pZCA9ICBzdWJzdHIoICJcdSRncm91cF9pZCIsIDAsICRzZWxmLT57cHJvY2Vzc29yfS0+
+e2dyb3VwX29wdHN9LT57dHJ1bmNhdGV9ICkgaWYgZXhpc3RzICRzZWxmLT57cHJvY2Vzc29yfS0+
+e2dyb3VwX29wdHN9LT57dHJ1bmNhdGV9OwoJCQkJfQoKCQkgICAgICAgIAlpZiggZXhpc3RzICRn
+cm91cGVkeyRncm91cF9pZH0gKSAjd2UndmUgYWxyZWFkeSBzZXQgdGhpcyBsaXN0IHVwLCBwdXNo
+IGEgbmV3IGl0ZW0gb24gdG8gdGhlIGxpc3QKCQkgICAgICAgICAgICAgICAJewoJCQkJCWlmKCAk
+aWRzX29ubHkgKSAjc29tZXRpbWVzIHdlIG9ubHkgd2FudCBpZHMgcmF0aGVyIHRoYW4gdGhlIHdo
+b2xlIGl0ZW0KCQkJCQl7CgkJCQkJCXB1c2ggQHskZ3JvdXBlZHskZ3JvdXBfaWR9fSwgJGl0ZW0t
+PmlkOwoJCQkJCX0KCQkJCQllbHNlCgkJCQkJewoJCQkJCQlwdXNoIEB7JGdyb3VwZWR7JGdyb3Vw
+X2lkfX0sICRpdGVtOwoJCQkJCX0KCSAgICAgICAJCSAgICAgICAgfQogICAgICAgIAkgICAgICAJ
+CWVsc2UgI3NldCB1cCBhIGxpc3QgZm9yIHRoaXMgZ3JvdXAKCSAgICAgICAgCSAgICAgICAJewoJ
+CQkJCW15IEBncm91cGVkX2l0ZW1zOwoJCQkJCWlmKCAkaWRzX29ubHkgKSAjc29tZXRpbWVzIHdl
+IG9ubHkgd2FudCBpZHMgcmF0aGVyIHRoYW4gdGhlIHdob2xlIGl0ZW0KCQkgICAgICAgICAgICAg
+ICAgICAgICAgICB7CQogICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgQGdyb3VwZWRf
+aXRlbXMgPSAoJGl0ZW0tPmlkKTsKICAgICAgICAgICAgICAgIAkJICAgICAgICB9CgkgICAgICAg
+ICAgICAgICAgCSAgICAgICAgZWxzZQogICAgICAgIAkgICAgICAgICAgICAgICAgCXsKCSAgICAg
+ICAgICAgICAgICAJICAgICAgICAgICAgICAgIEBncm91cGVkX2l0ZW1zID0gKCRpdGVtKTsKICAg
+ICAgICAJCSAgICAgICAgICAgICAgIAl9CgkgICAgICAgICAgICAgICAgCSAgICAgICAgJGdyb3Vw
+ZWR7JGdyb3VwX2lkfSA9IFtAZ3JvdXBlZF9pdGVtc107CgkJCQl9CiAgICAgICAgICAgICAgIAkJ
+fQoJCX0KCQllbHNlCgkJewoJCQlteSAkZ3JvdXBfaWQgPSAiVW5zcGVjaWZpZWQgIiAuICRtZXRh
+ZmllbGQtPm5hbWU7CiAgCSAgICAJCWlmKCBleGlzdHMgJGdyb3VwZWR7JGdyb3VwX2lkfSApICN3
+ZSd2ZSBhbHJlYWR5IHNldCB0aGlzIGxpc3QgdXAsIHB1c2ggYSBuZXcgaXRlbSBvbiB0byB0aGUg
+bGlzdAoJCSAgCXsKCQkJCWlmKCAkaWRzX29ubHkgKSAjc29tZXRpbWVzIHdlIG9ubHkgd2FudCBp
+ZHMgcmF0aGVyIHRoYW4gdGhlIHdob2xlIGl0ZW0KCQkJCXsKCQkJCQlwdXNoIEB7JGdyb3VwZWR7
+JGdyb3VwX2lkfX0sICRpdGVtLT5pZDsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQlwdXNoIEB7
+JGdyb3VwZWR7JGdyb3VwX2lkfX0sICRpdGVtOwoJCQkJfQoJICAgICAgIAkJfQogICAgICAgIAkg
+ICAgICAJZWxzZSAjc2V0IHVwIGEgbGlzdCBmb3IgdGhpcyBncm91cAoJICAgICAgICAJewoJCQkJ
+bXkgQGdyb3VwZWRfaXRlbXM7CgkJCQlpZiggJGlkc19vbmx5ICkgI3NvbWV0aW1lcyB3ZSBvbmx5
+IHdhbnQgaWRzIHJhdGhlciB0aGFuIHRoZSB3aG9sZSBpdGVtCgkJICAgICAgICAgICAgICAgIHsJ
+CiAgICAgICAgCQkJCUBncm91cGVkX2l0ZW1zID0gKCRpdGVtLT5pZCk7CiAgICAgICAgICAgICAg
+ICAJCX0KCSAgICAgICAgICAgICAgICAJZWxzZQogICAgICAgIAkgICAgICAgICAgICAgICAgewoJ
+ICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICBAZ3JvdXBlZF9pdGVtcyA9ICgkaXRlbSk7
+CiAgICAgICAgCSAgICAgICAgICAgICAgIAl9CgkgICAgICAgICAgICAgIAkgICAgICAgICRncm91
+cGVkeyRncm91cF9pZH0gPSBbQGdyb3VwZWRfaXRlbXNdOwoJCQl9CgkJfQogICAgICAgCX0gKTsK
+Cgkjbm93IHNvcnQgdGhlIGdyb3VwcyBhbmQgYWRkIGh1bWFuIHJlYWRhYmxlIGxhYmVscwoJbXkg
+QHNvcnRlZF9ncm91cHM7CgkKCW15ICRyZXZlcnNlID0gMDsKCSRyZXZlcnNlID0gJHNlbGYtPntw
+cm9jZXNzb3J9LT57Z3JvdXBfb3B0c30tPntyZXZlcnNlX29yZGVyfSBpZiBleGlzdHMgJHNlbGYt
+Pntwcm9jZXNzb3J9LT57Z3JvdXBfb3B0c30tPntyZXZlcnNlX29yZGVyfTsKCWlmKCAkbWV0YWZp
+ZWxkLT50eXBlIGVxICJuYW1lZHNldCIgKQoJewoJCW15KCAkdGFncywgJGxhYmVscyApID0gJG1l
+dGFmaWVsZC0+dGFnc19hbmRfbGFiZWxzKCAkc2Vzc2lvbiApOwoJCSNjb252ZXJ0IHRhZ3MgdG8g
+YSBoYXNoIG9mIHZhbHVlcyBhbmQgYSBwcmlvcml0eSAoZm9yIG9yZGVyaW5nKQoJCW15ICVwcmlv
+cml0eTsKCQlteSAkaW5kZXggPSAxOwoJCWZvcmVhY2ggbXkgJHRhZyAoQHskdGFnc30gKQoJCXsK
+CQkJJHByaW9yaXR5eyR0YWd9ID0gJGluZGV4OwoJCQkkaW5kZXgrKzsKCQl9CgkJZm9yZWFjaCBt
+eSAka2V5IChzb3J0IHskcHJpb3JpdHl7JGF9IDw9PiAkcHJpb3JpdHl7JGJ9fSBrZXlzICVncm91
+cGVkKQogICAgICAgIAl7CgkJCXB1c2ggQHNvcnRlZF9ncm91cHMsICRzZWxmLT5fbWFrZV9ncm91
+cGVkX2l0ZW0oICRncm91cGVkeyRrZXl9LCAkbGFiZWxzLT57JGtleX0gKTsKCQl9Cgl9CgllbHNp
+ZiggJG1ldGFmaWVsZC0+dHlwZSBlcSAic3ViamVjdCIgKQoJewkJCgkJbXkgJGRzID0gJHNlc3Np
+b24tPmRhdGFzZXQoICJzdWJqZWN0IiApOwoJCW15IEB2YWx1ZXMgPSBrZXlzICVncm91cGVkOwoJ
+CW15ICRzb3J0ZWQgPSAkbWV0YWZpZWxkLT5zb3J0X3ZhbHVlcyggJHNlc3Npb24sIFxAdmFsdWVz
+ICk7CgkJbXkgJXByaW9yaXR5OwoJCW15ICRpbmRleCA9IDE7CiAgICAgICAgICAgICAgICBmb3Jl
+YWNoIG15ICR2YWx1ZSAoQHskc29ydGVkfSApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg
+ICAgICAgICAgICAgICRwcmlvcml0eXskdmFsdWV9ID0gJGluZGV4OwogICAgICAgICAgICAgICAg
+ICAgICAgICAkaW5kZXgrKzsKICAgICAgICAgICAgICAgIH0KCQlmb3JlYWNoIG15ICRrZXkgKHNv
+cnQgeyRwcmlvcml0eXskYX0gPD0+ICRwcmlvcml0eXskYn19IGtleXMgJWdyb3VwZWQpCiAgICAg
+ICAgICAgICAgICB7CgkJCW15ICRzdWJqID0gJGRzLT5kYXRhb2JqKCAka2V5ICk7CiAgICAgICAg
+ICAgICAgICAgICAgICAgIHB1c2ggQHNvcnRlZF9ncm91cHMsICRzZWxmLT5fbWFrZV9ncm91cGVk
+X2l0ZW0oICRncm91cGVkeyRrZXl9LCBFUHJpbnRzOjpVdGlsczo6dHJlZV90b191dGY4KCAkc3Vi
+ai0+cmVuZGVyX2Rlc2NyaXB0aW9uICkgKSBpZiBkZWZpbmVkICRzdWJqOwogICAgICAgICAgICAg
+ICAgfQoJfQoJZWxzaWYoICRtZXRhZmllbGQtPnR5cGUgZXEgImRhdGUiICkKCXsKCQlpZiggJHJl
+dmVyc2UgKQoJCXsKCQkJZm9yZWFjaCBteSAka2V5ICggc29ydCB7JGIgPD0+ICRhfSBrZXlzICVn
+cm91cGVkICkKCQkJewoJCQkJcHVzaCBAc29ydGVkX2dyb3VwcywgJHNlbGYtPl9tYWtlX2dyb3Vw
+ZWRfaXRlbSggJGdyb3VwZWR7JGtleX0sICRrZXkgKTsKCQkJfQoJCX0KCQllbHNlCgkJewoJCQlm
+b3JlYWNoIG15ICRrZXkgKCBzb3J0IHskYSA8PT4gJGJ9IGtleXMgJWdyb3VwZWQgKQoJCQl7CgkJ
+CQlwdXNoIEBzb3J0ZWRfZ3JvdXBzLCAkc2VsZi0+X21ha2VfZ3JvdXBlZF9pdGVtKCAkZ3JvdXBl
+ZHska2V5fSwgJGtleSApOwoJCQl9CgkJfQoJfQoJZWxzZQoJewkKCQlpZiggJHJldmVyc2UgKQoJ
+CXsKCQkJZm9yZWFjaCBteSAka2V5ICggc29ydCB7JGIgY21wICRhfSBrZXlzICVncm91cGVkICkK
+CQkJewoJCQkJcHVzaCBAc29ydGVkX2dyb3VwcywgJHNlbGYtPl9tYWtlX2dyb3VwZWRfaXRlbSgg
+JGdyb3VwZWR7JGtleX0sICRrZXkgKTsKCQkJfQoJCX0KCQllbHNlCgkJewoJCQlmb3JlYWNoIG15
+ICRrZXkgKCBzb3J0IGtleXMgJWdyb3VwZWQgKQoJCQl7CgkJCQlwdXNoIEBzb3J0ZWRfZ3JvdXBz
+LCAkc2VsZi0+X21ha2VfZ3JvdXBlZF9pdGVtKCAkZ3JvdXBlZHska2V5fSwgJGtleSApOwoJCQl9
+CgkJfQoJfQoKCSNjaGVjayBmb3IgYW55IHVuc3BlY2lmaWVkIGdyb3VwcwoJbXkgJGdyb3VwX2lk
+ID0gIlVuc3BlY2lmaWVkICIgLiAkbWV0YWZpZWxkLT5uYW1lOwoJaWYoIGV4aXN0cyAkZ3JvdXBl
+ZHskZ3JvdXBfaWR9ICkKCXsKCQlwdXNoIEBzb3J0ZWRfZ3JvdXBzLCAkc2VsZi0+X21ha2VfZ3Jv
+dXBlZF9pdGVtKCAkZ3JvdXBlZHskZ3JvdXBfaWR9LCAkZ3JvdXBfaWQgKTsKCX0KCglyZXR1cm4g
+XEBzb3J0ZWRfZ3JvdXBzOwp9CQoKCnN1YiBfbWFrZV9ncm91cGVkX2l0ZW0KewoJbXkoICRzZWxm
+LCAkbGlzdCwgJGxhYmVsICkgPSBAXzsKCW15ICVncm91cDsKCSRncm91cHtsaXN0fSA9ICRsaXN0
+OwoJJGdyb3Vwe2xhYmVsfSA9ICRsYWJlbDsKCXJldHVybiBcJWdyb3VwOwp9CgoxOwo=
diff --git a/reports.epmi b/reports.epmi
index 2b76082..88b9fab 100644
--- a/reports.epmi
+++ b/reports.epmi
@@ -15,9 +15,9 @@
epm/reports/cfg/cfg.d/z_reports.pl
text/plain
- 385eec38a9a534ff630359efd9b5460b
+ 334237b831581075209dbbedf084d878
MD5
- 2593
+ 2609
epm/reports/cfg/cfg.d/z_search_reports.pl
@@ -36,9 +36,9 @@
plugins/EPrints/Plugin/Export/Grid2.pm
text/plain
- facf6666f0b9757b6b43e6fd20559099
+ dd9b2c0a038b1f9f51b618a4b2e11c4b
MD5
- 7787
+ 9699
plugins/EPrints/Plugin/Export/MultilineCSV2.pm
@@ -71,9 +71,9 @@
plugins/EPrints/Plugin/Export/Report/HTML.pm
text/plain
- 666f802bd567fead817bd3228b7dc78e
+ 8e2ca840f2fd1fa5983bcca0f96a7233
MD5
- 5596
+ 5578
plugins/EPrints/Plugin/Export/Report/JSON.pm
@@ -85,9 +85,9 @@
plugins/EPrints/Plugin/Screen/Report.pm
text/plain
- 7b964bfb863e905a17713c6cea2e0653
+ 210449eac1f7ee02e7519beead2c640b
MD5
- 37088
+ 37100
plugins/EPrints/Plugin/Screen/Report/EPrint.pm