diff --git a/lib/plugins/EPrints/Plugin/Screen/ExportToOrcid.pm b/lib/plugins/EPrints/Plugin/Screen/ExportToOrcid.pm index b1e0fde..8aede0d 100644 --- a/lib/plugins/EPrints/Plugin/Screen/ExportToOrcid.pm +++ b/lib/plugins/EPrints/Plugin/Screen/ExportToOrcid.pm @@ -435,7 +435,8 @@ sub render_filter_date_form } $filter_date_form->appendChild( $self->html_phrase( "show_last_modified" ) ); - my $date_picker = $xml->create_element( "input", type => "date", name => "filter_date", "aria-label" => "Filter Date" ); + my $date_picker = $xml->create_element( "input", type => "date", name => "filter_date", "aria-label" => "Filter Date", value => $query->param('filter_date') ); + $filter_date_form->appendChild( $date_picker ); $filter_date_form->appendChild( $xml->create_element( "input", type => "submit", class => "ep_form_action_button filter", value => $self->phrase( "filter" ) ) ); $filter_div->appendChild( $filter_date_form ); diff --git a/lib/plugins/EPrints/Plugin/Screen/ImportFromOrcid.pm b/lib/plugins/EPrints/Plugin/Screen/ImportFromOrcid.pm index be79965..a67ab66 100644 --- a/lib/plugins/EPrints/Plugin/Screen/ImportFromOrcid.pm +++ b/lib/plugins/EPrints/Plugin/Screen/ImportFromOrcid.pm @@ -330,7 +330,8 @@ sub render_filter_date_form my $date_type = $repo->config( "orcid_support_advance", "filter_date" ) || "last-modified-date"; $filter_date_form->appendChild( $self->html_phrase( "show_$date_type" ) ); - my $date_picker = $xml->create_element( "input", type => "date", name => "filter_date", "aria-label" => "Filter Date" ); + my $date_picker = $xml->create_element( "input", type => "date", name => "filter_date", "aria-label" => "Filter Date", value => $query->param('filter_date') ); + $filter_date_form->appendChild( $date_picker ); $filter_date_form->appendChild( $xml->create_element( "input", type => "submit", class => "ep_form_action_button filter", value => $self->phrase( "filter" ) ) ); $filter_div->appendChild( $filter_date_form ); diff --git a/lib/plugins/EPrints/Plugin/Screen/Report/Orcid/CheckName.pm b/lib/plugins/EPrints/Plugin/Screen/Report/Orcid/CheckName.pm index cad59e5..e69fb9b 100644 --- a/lib/plugins/EPrints/Plugin/Screen/Report/Orcid/CheckName.pm +++ b/lib/plugins/EPrints/Plugin/Screen/Report/Orcid/CheckName.pm @@ -85,7 +85,7 @@ sub items $list->map(sub{ my( $session, $dataset, $user ) = @_; - print SDTERR "user: " . $user->id . "\n"; + my @problems = $self->validate_dataobj( $user ); if( ( scalar( @problems ) > 0 ) && ( $user->is_set( "orcid" ) ) ) diff --git a/orcid_support_advance.epm b/orcid_support_advance.epm index cdedbdf..847b919 100644 --- a/orcid_support_advance.epm +++ b/orcid_support_advance.epm @@ -2131,9 +2131,9 @@ cG9ydCcgcGx1Z2luIHRvIGNvbnRpbnVlLiIgKSApOyAKCQlyZXR1cm47Cgl9Cn0K document plugins/EPrints/Plugin/Screen/ExportToOrcid.pm text/plain - 249660b4831282052d23569479493583 + df421b45c8431b7280e57993a05e9940 MD5 - 21971 + 22010 PWhlYWQxIE5BTUUKCkVQcmludHM6OlBsdWdpbjo6U2NyZWVuOjpFeHBvcnRUb09yY2lkCgo9Y3V0 CgpwYWNrYWdlIEVQcmludHM6OlBsdWdpbjo6U2NyZWVuOjpFeHBvcnRUb09yY2lkOwoKdXNlIEVQ cmludHM6OlBsdWdpbjo6U2NyZWVuOwp1c2UgRVByaW50czo6T1JDSUQ6OkFkdmFuY2VVdGlsczsK @@ -2381,154 +2381,155 @@ YXRlKSApewogICAgICAgICRmaWx0ZXJfZGF0ZV9mb3JtLT5hcHBlbmRDaGlsZCggJHhtbC0+Y3Jl YXRlX2VsZW1lbnQoICJpbnB1dCIsIHR5cGUgPT4gImhpZGRlbiIsIG5hbWUgPT4gImhpZGVfZHVw bGljYXRlcyIsIHZhbHVlID0+ICRxdWVyeV9kdXBsaWNhdGUpICk7CiAgICB9CgogICAgJGZpbHRl cl9kYXRlX2Zvcm0tPmFwcGVuZENoaWxkKCAkc2VsZi0+aHRtbF9waHJhc2UoICJzaG93X2xhc3Rf -bW9kaWZpZWQiICkgKTsKICAgIG15ICRkYXRlX3BpY2tlciA9ICAkeG1sLT5jcmVhdGVfZWxlbWVu -dCggImlucHV0IiwgdHlwZSA9PiAiZGF0ZSIsIG5hbWUgPT4gImZpbHRlcl9kYXRlIiwgImFyaWEt -bGFiZWwiID0+ICJGaWx0ZXIgRGF0ZSIgKTsKICAgICRmaWx0ZXJfZGF0ZV9mb3JtLT5hcHBlbmRD -aGlsZCggJGRhdGVfcGlja2VyICk7CiAgICAkZmlsdGVyX2RhdGVfZm9ybS0+YXBwZW5kQ2hpbGQo -ICR4bWwtPmNyZWF0ZV9lbGVtZW50KCAiaW5wdXQiLCB0eXBlID0+ICJzdWJtaXQiLCBjbGFzcyA9 -PiAiZXBfZm9ybV9hY3Rpb25fYnV0dG9uIGZpbHRlciIsIHZhbHVlID0+ICRzZWxmLT5waHJhc2Uo -ICJmaWx0ZXIiICkgKSApOwogICAgJGZpbHRlcl9kaXYtPmFwcGVuZENoaWxkKCAkZmlsdGVyX2Rh -dGVfZm9ybSApOwogICAgcmV0dXJuICRmaWx0ZXJfZGl2Owp9CgpzdWIgcmVuZGVyX2ZpbHRlcl9k -dXBsaWNhdGVfZm9ybQp7CiAgICBteSggJHNlbGYsICR4bWwsICRxdWVyeSApID0gQF87CiAgICBt -eSAkZHVwbGljYXRlX2RpdiA9ICR4bWwtPmNyZWF0ZV9lbGVtZW50KCAiZGl2IiwgY2xhc3MgPT4g -ImZpbHRlcl9kdXBsaWNhdGUiICk7CiAgICBteSAkZmlsdGVyX2R1cGxpY2F0ZV9mb3JtID0gJHht -bC0+Y3JlYXRlX2VsZW1lbnQoICJmb3JtIiwgbWV0aG9kID0+ICJnZXQiLCBhY3Rpb24gPT4gIi9j -Z2kvdXNlcnMvaG9tZSIgKTsKICAgICRmaWx0ZXJfZHVwbGljYXRlX2Zvcm0tPmFwcGVuZENoaWxk -KCAkeG1sLT5jcmVhdGVfZWxlbWVudCggImlucHV0IiwgdHlwZSA9PiAiaGlkZGVuIiwgbmFtZSA9 -PiAic2NyZWVuIiwgaWQgPT4gInNjcmVlbiIsIHZhbHVlID0+ICJFeHBvcnRUb09yY2lkIikgKTsK -CiAgICAjIFNhdmUgb3RoZXIgcGFyYW1zCiAgICBteSAkcXVlcnlfZGF0YXNldCA9ICRxdWVyeS0+ -cGFyYW0oJ2RhdGFzZXQnKTsKICAgIG15ICRxdWVyeV9kYXRhb2JqID0gJHF1ZXJ5LT5wYXJhbSgn -ZGF0YW9iaicpOwogICAgbXkgJHF1ZXJ5X2RhdGUgPSAkcXVlcnktPnBhcmFtKCdmaWx0ZXJfZGF0 -ZScpOwogICAgbXkgJHF1ZXJ5X2R1cGxpY2F0ZSA9ICRxdWVyeS0+cGFyYW0oJ2hpZGVfZHVwbGlj -YXRlcycpOwogICAgaWYoIGRlZmluZWQoJHF1ZXJ5X2RhdGFzZXQpICYmIGRlZmluZWQoJHF1ZXJ5 -X2RhdGFvYmopICkgewogICAgICAgICRmaWx0ZXJfZHVwbGljYXRlX2Zvcm0tPmFwcGVuZENoaWxk -KCAkeG1sLT5jcmVhdGVfZWxlbWVudCggImlucHV0IiwgdHlwZSA9PiAiaGlkZGVuIiwgbmFtZSA9 -PiAiZGF0YXNldCIsIHZhbHVlID0+ICRxdWVyeV9kYXRhc2V0KSApOwogICAgICAgICRmaWx0ZXJf -ZHVwbGljYXRlX2Zvcm0tPmFwcGVuZENoaWxkKCAkeG1sLT5jcmVhdGVfZWxlbWVudCggImlucHV0 -IiwgdHlwZSA9PiAiaGlkZGVuIiwgbmFtZSA9PiAiZGF0YW9iaiIsIHZhbHVlID0+ICRxdWVyeV9k -YXRhb2JqKSApOwogICAgfQogICAgaWYoIGRlZmluZWQoJHF1ZXJ5X2RhdGUpICl7CiAgICAgICAg -JGZpbHRlcl9kdXBsaWNhdGVfZm9ybS0+YXBwZW5kQ2hpbGQoICR4bWwtPmNyZWF0ZV9lbGVtZW50 -KCAiaW5wdXQiLCB0eXBlID0+ICJoaWRkZW4iLCBuYW1lID0+ICJmaWx0ZXJfZGF0ZSIsIHZhbHVl -ID0+ICRxdWVyeV9kYXRlKSApOwogICAgfQoKICAgIGlmKCBkZWZpbmVkKCRxdWVyeV9kdXBsaWNh -dGUpICkKICAgIHsKICAgICAgICBpZiggJHF1ZXJ5X2R1cGxpY2F0ZSA9PSAxICkKICAgICAgICB7 -CiAgICAgICAgICAgICRmaWx0ZXJfZHVwbGljYXRlX2Zvcm0tPmFwcGVuZENoaWxkKCAkeG1sLT5j -cmVhdGVfZWxlbWVudCggImlucHV0IiwgdHlwZSA9PiAiaGlkZGVuIiwgbmFtZSA9PiAiaGlkZV9k -dXBsaWNhdGVzIiwgdmFsdWUgPT4gMCkgKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAk -ZmlsdGVyX2R1cGxpY2F0ZV9mb3JtLT5hcHBlbmRDaGlsZCggJHhtbC0+Y3JlYXRlX2VsZW1lbnQo -ICJpbnB1dCIsIHR5cGUgPT4gImhpZGRlbiIsIG5hbWUgPT4gImhpZGVfZHVwbGljYXRlcyIsIHZh -bHVlID0+IDEpICk7CiAgICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgICAkZmlsdGVyX2R1cGxp -Y2F0ZV9mb3JtLT5hcHBlbmRDaGlsZCggJHhtbC0+Y3JlYXRlX2VsZW1lbnQoICJpbnB1dCIsIHR5 -cGUgPT4gImhpZGRlbiIsIG5hbWUgPT4gImhpZGVfZHVwbGljYXRlcyIsIHZhbHVlID0+IDApICk7 -CiAgICB9CgoKICAgICRmaWx0ZXJfZHVwbGljYXRlX2Zvcm0tPmFwcGVuZENoaWxkKCAkc2VsZi0+ -aHRtbF9waHJhc2UoICJkdXBsaWNhdGVzIiApICk7CiAgICAkZmlsdGVyX2R1cGxpY2F0ZV9mb3Jt -LT5hcHBlbmRDaGlsZCggJHhtbC0+Y3JlYXRlX2VsZW1lbnQoICJpbnB1dCIsIHR5cGUgPT4gInN1 -Ym1pdCIsIGNsYXNzID0+ICJlcF9mb3JtX2FjdGlvbl9idXR0b24gZmlsdGVyIiwgdmFsdWUgPT4g -JHNlbGYtPnBocmFzZSggInNob3dfaGlkZV9kdXBsaWNhdGVzIiApICkgKTsKICAgICRkdXBsaWNh -dGVfZGl2LT5hcHBlbmRDaGlsZCggJGZpbHRlcl9kdXBsaWNhdGVfZm9ybSApOwogICAgcmV0dXJu -ICRkdXBsaWNhdGVfZGl2Owp9CgojY29uc3RydWN0IHRoZSBleHBvcnQgRE9NIGNvbXBvbmVudHMK -c3ViIHJlbmRlcl9vcmNpZF9leHBvcnQKewoJbXkoICRzZWxmLCAkcmVwbywgJHVzZXIsICR4bWws -ICRyZWNvcmRzICkgPSBAXzsKCglteSAkZm9ybSA9ICRzZWxmLT5yZW5kZXJfZm9ybSggIlBPU1Qi -ICk7CgkkZm9ybS0+YXBwZW5kQ2hpbGQoICRyZXBvLT5yZW5kZXJfaGlkZGVuX2ZpZWxkKCAib3Jj -aWRfdXNlcmlkIiwgJHVzZXItPmlkICkgKTsKCgkkZm9ybS0+YXBwZW5kQ2hpbGQoICRzZWxmLT5y -ZW5kZXJfb3JjaWRfZXhwb3J0X2ludHJvKCAkeG1sICkgKTsKCSRmb3JtLT5hcHBlbmRDaGlsZCgg -JHNlbGYtPnJlbmRlcl9lcHJpbnRfcmVjb3JkcyggJHhtbCwgJHJlY29yZHMgKSApOwoJJGZvcm0t -PmFwcGVuZENoaWxkKCAkc2VsZi0+cmVuZGVyX29yY2lkX2V4cG9ydF9vdXRybyggJHhtbCApICk7 -CgoJcmV0dXJuICRmb3JtOwp9CgpzdWIgcmVuZGVyX29yY2lkX2V4cG9ydF9pbnRybwp7CglteSgg -JHNlbGYsICR4bWwgKSA9IEBfOwoKCW15ICRpbnRyb19kaXYgPSAkeG1sLT5jcmVhdGVfZWxlbWVu -dCggImRpdiIsIGNsYXNzID0+ICJleHBvcnRfaW50cm8iICk7CgoJI3JlbmRlciBleHBvcnQgYnV0 -dG9uCglteSAkYnRuX2RpdiA9ICR4bWwtPmNyZWF0ZV9lbGVtZW50KCAiZGl2IiwgY2xhc3MgPT4g -ImV4cG9ydF9pbnRyb19idG4iICk7CglteSAkYnV0dG9uID0gJGJ0bl9kaXYtPmFwcGVuZENoaWxk -KCAkeG1sLT5jcmVhdGVfZWxlbWVudCggImJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgICAg -IHR5cGU9PiJzdWJtaXQiLAogICAgICAgICAgICAgICAgICAgICAgICBuYW1lPT4iX2FjdGlvbl9l -eHBvcnQiLAoJCQljbGFzcyA9PiAiZXBfZm9ybV9hY3Rpb25fYnV0dG9uIiwKICAgICAgICApICk7 -CiAgICAgICAgJGJ1dHRvbi0+YXBwZW5kQ2hpbGQoICR4bWwtPmNyZWF0ZV90ZXh0X25vZGUoICJF -eHBvcnQiICkgKTsKCiAgICAjIGRlbGV0aW9uIGJ1dHRvbgogICAgbXkgJGJ1dHRvbl9kZWxldGUg -PSAkYnRuX2Rpdi0+YXBwZW5kQ2hpbGQoICR4bWwtPmNyZWF0ZV9lbGVtZW50KCAiYnV0dG9uIiwK -ICAgICAgICB0eXBlID0+ICJzdWJtaXQiLAogICAgICAgIG5hbWUgPT4gIl9hY3Rpb25fZGVsZXRl -IiwKICAgICAgICBjbGFzcyA9PiAiZXBfZm9ybV9hY3Rpb25fYnV0dG9uIGRlbGV0ZV9idXR0b24i -LAogICAgKSApOwogICAgJGJ1dHRvbl9kZWxldGUtPmFwcGVuZENoaWxkKCAkc2VsZi0+aHRtbF9w -aHJhc2UoICJkZWxldGUiICkgKTsKCiAgICAjIHRvZ2dsZSBzd2l0Y2gKICAgIG15ICR0b2dnbGVf -YnV0dG9uID0gJGJ0bl9kaXYtPmFwcGVuZENoaWxkKCAkeG1sLT5jcmVhdGVfZWxlbWVudCggImJ1 -dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgdHlwZSA9PiAiYnV0dG9uIiwKICAgICAgICAgICAg -ICAgICAgICBvbmNsaWNrID0+ICJ0b2dnbGVPcmNpZENoZWNrYm94KCk7IiwKICAgICAgICAgICAg -ICAgICAgICBjbGFzcyA9PiAiZXBfZm9ybV9hY3Rpb25fYnV0dG9uIHRvZ2dsZV9idXR0b24iLAog -ICAgKSApOwogICAgJHRvZ2dsZV9idXR0b24tPmFwcGVuZENoaWxkKCAkc2VsZi0+aHRtbF9waHJh -c2UoICJzZWxlY3QiICkgKTsKCgkkaW50cm9fZGl2LT5hcHBlbmRDaGlsZCggJGJ0bl9kaXYgKTsK -CglyZXR1cm4gJGludHJvX2RpdjsKfQoKc3ViIHJlbmRlcl9lcHJpbnRfcmVjb3Jkcwp7CglteSgg -JHNlbGYsICR4bWwsICRyZWNvcmRzICkgPSBAXzsKCiAgICBteSAkcmVwbyA9ICRzZWxmLT57cmVw -b3NpdG9yeX07CgoJbXkgJGZpZWxkc2V0ID0gJHhtbC0+Y3JlYXRlX2VsZW1lbnQoICJmaWVsZHNl -dCIsIGNsYXNzID0+ICJlcF90YWJsZSBleHBvcnRfb3JjaWRfcmVjb3JkcyIgKTsKICAgIG15ICRs -ZWdlbmQgPSAkeG1sLT5jcmVhdGVfZWxlbWVudCggImxlZ2VuZCIsIGlkPT4ib3JjaWRfZXhwb3J0 -X2xlZ2VuZCIsIGNsYXNzPT4iZXBfZmllbGRfbGVnZW5kIiApOwogICAgJGxlZ2VuZC0+YXBwZW5k -Q2hpbGQoICRzZWxmLT5odG1sX3BocmFzZSggImV4cG9ydF9oZWxwIiApICk7CiAgICAkZmllbGRz -ZXQtPmFwcGVuZENoaWxkKCAkbGVnZW5kICk7CgoKCSRyZWNvcmRzLT5tYXAoc3ViewoJCW15KCAk -c2Vzc2lvbiwgJGRhdGFzZXQsICRlcHJpbnQgKSA9IEBfOwoKICAgICMgbW9kaWZpY2F0aW9uIGRh -dGUKICAgIG15ICRjZ2kgPSBDR0ktPm5ldygpOwogICAgbXkgJGZpbHRlcl9kYXRlID0gMDsKICAg -IG15ICRtb2RfZGF0ZSA9ICgkZXByaW50LT5nZXRfdmFsdWUoJ2xhc3Rtb2QnKSk7CiAgICAkbW9k -X2RhdGUgPSBUaW1lOjpQaWVjZS0+c3RycHRpbWUoICRtb2RfZGF0ZSwgJyVZLSVtLSVkICVIOiVN -OiVTJyApOwogICAgaWYoIGRlZmluZWQgJGNnaS0+cGFyYW0oJ2ZpbHRlcl9kYXRlJykpCiAgICB7 -CiAgICAgICAgJGZpbHRlcl9kYXRlID0gJGNnaS0+cGFyYW0oJ2ZpbHRlcl9kYXRlJyk7CiAgICAg -ICAgJGZpbHRlcl9kYXRlID0gVGltZTo6UGllY2UtPnN0cnB0aW1lKCAkZmlsdGVyX2RhdGUsICcl -WS0lbS0lZCcgKTsKICAgIH0KCQkjc2hvdyB0aGUgZXByaW50IGNpdGF0aW9uCgkJbXkgJHRyID0g -IiI7CgkJbXkgJHRkX2NpdGF0aW9uID0gJHNlc3Npb24tPm1ha2VfZWxlbWVudCggImRpdiIsIGNs -YXNzID0+ICJleHBvcnRfb3JjaWRfY2l0YXRpb24gZXBfdGFibGVfY2VsbCIgKTsKCQkkdGRfY2l0 -YXRpb24tPmFwcGVuZENoaWxkKCRlcHJpbnQtPnJlbmRlcl9jaXRhdGlvbl9saW5rICk7CgoJCWlm -KCAkZmlsdGVyX2RhdGUgJiYgJG1vZF9kYXRlIDwgJGZpbHRlcl9kYXRlICkKICAgICAgICB7CiAg -ICAgICAgICAgIG15ICRkYXRlX2Zvcm1hdCA9ICRyZXBvLT5jb25maWcoICJvcmNpZF9zdXBwb3J0 -X2FkdmFuY2UiLCAiZmlsdGVyX2Zvcm1hdCIgKSB8fCAiJWQvJW0vJVkiOwogICAgICAgICAgICAk -dHIgPSAkc2Vzc2lvbi0+bWFrZV9lbGVtZW50KCAiZGl2IiwgY2xhc3MgPT4gImZpbHRlcmVkIGVw -X3RhYmxlX3JvdyIgKTsKCiAgICAgICAgICAgICMgd29yayBkYXRlCiAgICAgICAgICAgICRtb2Rf -ZGF0ZSA9IHN0cmZ0aW1lICRkYXRlX2Zvcm1hdCwgZ210aW1lKCAkbW9kX2RhdGUtPmVwb2NoICk7 -CiAgICAgICAgICAgICR0ZF9jaXRhdGlvbi0+YXBwZW5kQ2hpbGQoICR4bWwtPmNyZWF0ZV90ZXh0 -X25vZGUoICJMYXN0IE1vZGlmaWVkOiAkbW9kX2RhdGUiICkgKTsKICAgICAgICAgICAgJHRkX2Np -dGF0aW9uLT5hcHBlbmRDaGlsZCggJHhtbC0+Y3JlYXRlX2VsZW1lbnQoImJyIikpOwoKICAgICAg -ICAgICAgJGZpbHRlcl9kYXRlID0gc3RyZnRpbWUgJGRhdGVfZm9ybWF0LCBnbXRpbWUoICRmaWx0 -ZXJfZGF0ZS0+ZXBvY2ggKTsKICAgICAgICAgICAgJHRkX2NpdGF0aW9uLT5hcHBlbmRDaGlsZCgg -JHhtbC0+Y3JlYXRlX3RleHRfbm9kZSggIkZpbHRlciBkYXRlOiAkZmlsdGVyX2RhdGUiICkgKTsK -ICAgICAgICAgICAgJHRkX2NpdGF0aW9uLT5hcHBlbmRDaGlsZCggJHhtbC0+Y3JlYXRlX2VsZW1l -bnQoImJyIikpOwogICAgICAgICAgICAkdHItPmFwcGVuZENoaWxkKCAkdGRfY2l0YXRpb24gKTsK -ICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgJHRyID0gJHNlc3Np -b24tPm1ha2VfZWxlbWVudCggImRpdiIsIGNsYXNzID0+ICJlcF90YWJsZV9yb3ciICk7CiAgICAg -ICAgICAgICR0ci0+YXBwZW5kQ2hpbGQoICR0ZF9jaXRhdGlvbiApOwogICAgICAgICAgICAjc2hv -dyBjaGVja2JveCBmb3IgdGhpcyByZWNvcmQKICAgICAgICAgICAgbXkgJHRkX2NoZWNrID0gJHNl -c3Npb24tPm1ha2VfZWxlbWVudCggImRpdiIsIGNsYXNzID0+ICJleHBvcnRfb3JjaWRfY2hlY2sg -ZXBfdGFibGVfY2VsbCIgKTsKICAgICAgICAgICAgbXkgJGNoZWNrYm94ID0gJHNlc3Npb24tPm1h -a2VfZWxlbWVudCggImlucHV0IiwKICAgICAgICAgICAgICAgIHR5cGUgPT4gImNoZWNrYm94IiwK -ICAgICAgICAgICAgICAgIG5hbWUgPT4gImVwcmludCIsCiAgICAgICAgICAgICAgICB2YWx1ZSA9 -PiAkZXByaW50LT5pZCwKICAgICAgICAgICAgICAgICJhcmlhLWxhYmVsIiA9PiAkZXByaW50LT52 -YWx1ZSggInRpdGxlIiApLAogICAgICAgICAgICApOwogICAgICAgICAgICAkY2hlY2tib3gtPnNl -dEF0dHJpYnV0ZSggImNoZWNrZWQiLCAieWVzIiApOwogICAgICAgICAgICAkdGRfY2hlY2stPmFw -cGVuZENoaWxkKCAkY2hlY2tib3ggKTsKICAgICAgICAgICAgJHRyLT5hcHBlbmRDaGlsZCggJHRk -X2NoZWNrICk7CiAgICAgICAgfQoJCSRmaWVsZHNldC0+YXBwZW5kQ2hpbGQoICR0ciApOwoJfSk7 -CgoJcmV0dXJuICRmaWVsZHNldDsKfQoKc3ViIHJlbmRlcl9vcmNpZF9leHBvcnRfb3V0cm8KewoJ -bXkoICRzZWxmLCAkeG1sICkgPSBAXzsKCglteSAkYnRuX2RpdiA9ICR4bWwtPmNyZWF0ZV9lbGVt -ZW50KCAiZGl2IiwgY2xhc3MgPT4gImV4cG9ydF9vdXRyb19idG4iICk7CiAgICAgICAgbXkgJGJ1 -dHRvbiA9ICRidG5fZGl2LT5hcHBlbmRDaGlsZCggJHhtbC0+Y3JlYXRlX2VsZW1lbnQoICJidXR0 -b24iLAogICAgICAgICAgICAgICAgICAgICAgICB0eXBlID0+ICJzdWJtaXQiLAogICAgICAgICAg -ICAgICAgICAgICAgICBuYW1lID0+ICJfYWN0aW9uX2V4cG9ydCIsCgkJCWNsYXNzID0+ICJlcF9m -b3JtX2FjdGlvbl9idXR0b24iLAogICAgICAgICkgKTsKICAgICAgICAkYnV0dG9uLT5hcHBlbmRD -aGlsZCggJHhtbC0+Y3JlYXRlX3RleHRfbm9kZSggIkV4cG9ydCIgKSApOwoKICAgICMgZGVsZXRp -b24gYnV0dG9uCiAgICBteSAkYnV0dG9uX2RlbGV0ZSA9ICRidG5fZGl2LT5hcHBlbmRDaGlsZCgg -JHhtbC0+Y3JlYXRlX2VsZW1lbnQoICJidXR0b24iLAogICAgICAgICAgICB0eXBlID0+ICJzdWJt -aXQiLAogICAgICAgICAgICBuYW1lID0+ICJfYWN0aW9uX2RlbGV0ZSIsCiAgICAgICAgICAgIGNs -YXNzID0+ICJlcF9mb3JtX2FjdGlvbl9idXR0b24gZGVsZXRlX2J1dHRvbiIsCiAgICApICk7CiAg -ICAkYnV0dG9uX2RlbGV0ZS0+YXBwZW5kQ2hpbGQoICRzZWxmLT5odG1sX3BocmFzZSggImRlbGV0 -ZSIgKSApOwoKICAgICMgdG9nZ2xlIHN3aXRjaAogICAgbXkgJHRvZ2dsZV9idXR0b24gPSAkYnRu -X2Rpdi0+YXBwZW5kQ2hpbGQoICR4bWwtPmNyZWF0ZV9lbGVtZW50KCAiYnV0dG9uIiwKICAgICAg -ICAgICAgICAgICAgICB0eXBlID0+ICJidXR0b24iLAogICAgICAgICAgICAgICAgICAgIG9uY2xp -Y2sgPT4gInRvZ2dsZU9yY2lkQ2hlY2tib3goKTsiLAogICAgICAgICAgICAgICAgICAgIGNsYXNz -ID0+ICJlcF9mb3JtX2FjdGlvbl9idXR0b24gdG9nZ2xlX2J1dHRvbiIsCiAgICApICk7CiAgICAk -dG9nZ2xlX2J1dHRvbi0+YXBwZW5kQ2hpbGQoICRzZWxmLT5odG1sX3BocmFzZSggInNlbGVjdCIg -KSApOwoKCXJldHVybiAkYnRuX2RpdjsKfQo= +bW9kaWZpZWQiICkgKTsKICAgIG15ICRkYXRlX3BpY2tlciA9ICR4bWwtPmNyZWF0ZV9lbGVtZW50 +KCAiaW5wdXQiLCB0eXBlID0+ICJkYXRlIiwgbmFtZSA9PiAiZmlsdGVyX2RhdGUiLCAiYXJpYS1s +YWJlbCIgPT4gIkZpbHRlciBEYXRlIiwgdmFsdWUgPT4gJHF1ZXJ5LT5wYXJhbSgnZmlsdGVyX2Rh +dGUnKSApOwoKICAgICRmaWx0ZXJfZGF0ZV9mb3JtLT5hcHBlbmRDaGlsZCggJGRhdGVfcGlja2Vy +ICk7CiAgICAkZmlsdGVyX2RhdGVfZm9ybS0+YXBwZW5kQ2hpbGQoICR4bWwtPmNyZWF0ZV9lbGVt +ZW50KCAiaW5wdXQiLCB0eXBlID0+ICJzdWJtaXQiLCBjbGFzcyA9PiAiZXBfZm9ybV9hY3Rpb25f +YnV0dG9uIGZpbHRlciIsIHZhbHVlID0+ICRzZWxmLT5waHJhc2UoICJmaWx0ZXIiICkgKSApOwog +ICAgJGZpbHRlcl9kaXYtPmFwcGVuZENoaWxkKCAkZmlsdGVyX2RhdGVfZm9ybSApOwogICAgcmV0 +dXJuICRmaWx0ZXJfZGl2Owp9CgpzdWIgcmVuZGVyX2ZpbHRlcl9kdXBsaWNhdGVfZm9ybQp7CiAg +ICBteSggJHNlbGYsICR4bWwsICRxdWVyeSApID0gQF87CiAgICBteSAkZHVwbGljYXRlX2RpdiA9 +ICR4bWwtPmNyZWF0ZV9lbGVtZW50KCAiZGl2IiwgY2xhc3MgPT4gImZpbHRlcl9kdXBsaWNhdGUi +ICk7CiAgICBteSAkZmlsdGVyX2R1cGxpY2F0ZV9mb3JtID0gJHhtbC0+Y3JlYXRlX2VsZW1lbnQo +ICJmb3JtIiwgbWV0aG9kID0+ICJnZXQiLCBhY3Rpb24gPT4gIi9jZ2kvdXNlcnMvaG9tZSIgKTsK +ICAgICRmaWx0ZXJfZHVwbGljYXRlX2Zvcm0tPmFwcGVuZENoaWxkKCAkeG1sLT5jcmVhdGVfZWxl +bWVudCggImlucHV0IiwgdHlwZSA9PiAiaGlkZGVuIiwgbmFtZSA9PiAic2NyZWVuIiwgaWQgPT4g +InNjcmVlbiIsIHZhbHVlID0+ICJFeHBvcnRUb09yY2lkIikgKTsKCiAgICAjIFNhdmUgb3RoZXIg +cGFyYW1zCiAgICBteSAkcXVlcnlfZGF0YXNldCA9ICRxdWVyeS0+cGFyYW0oJ2RhdGFzZXQnKTsK +ICAgIG15ICRxdWVyeV9kYXRhb2JqID0gJHF1ZXJ5LT5wYXJhbSgnZGF0YW9iaicpOwogICAgbXkg +JHF1ZXJ5X2RhdGUgPSAkcXVlcnktPnBhcmFtKCdmaWx0ZXJfZGF0ZScpOwogICAgbXkgJHF1ZXJ5 +X2R1cGxpY2F0ZSA9ICRxdWVyeS0+cGFyYW0oJ2hpZGVfZHVwbGljYXRlcycpOwogICAgaWYoIGRl +ZmluZWQoJHF1ZXJ5X2RhdGFzZXQpICYmIGRlZmluZWQoJHF1ZXJ5X2RhdGFvYmopICkgewogICAg +ICAgICRmaWx0ZXJfZHVwbGljYXRlX2Zvcm0tPmFwcGVuZENoaWxkKCAkeG1sLT5jcmVhdGVfZWxl +bWVudCggImlucHV0IiwgdHlwZSA9PiAiaGlkZGVuIiwgbmFtZSA9PiAiZGF0YXNldCIsIHZhbHVl +ID0+ICRxdWVyeV9kYXRhc2V0KSApOwogICAgICAgICRmaWx0ZXJfZHVwbGljYXRlX2Zvcm0tPmFw +cGVuZENoaWxkKCAkeG1sLT5jcmVhdGVfZWxlbWVudCggImlucHV0IiwgdHlwZSA9PiAiaGlkZGVu +IiwgbmFtZSA9PiAiZGF0YW9iaiIsIHZhbHVlID0+ICRxdWVyeV9kYXRhb2JqKSApOwogICAgfQog +ICAgaWYoIGRlZmluZWQoJHF1ZXJ5X2RhdGUpICl7CiAgICAgICAgJGZpbHRlcl9kdXBsaWNhdGVf +Zm9ybS0+YXBwZW5kQ2hpbGQoICR4bWwtPmNyZWF0ZV9lbGVtZW50KCAiaW5wdXQiLCB0eXBlID0+ +ICJoaWRkZW4iLCBuYW1lID0+ICJmaWx0ZXJfZGF0ZSIsIHZhbHVlID0+ICRxdWVyeV9kYXRlKSAp +OwogICAgfQoKICAgIGlmKCBkZWZpbmVkKCRxdWVyeV9kdXBsaWNhdGUpICkKICAgIHsKICAgICAg +ICBpZiggJHF1ZXJ5X2R1cGxpY2F0ZSA9PSAxICkKICAgICAgICB7CiAgICAgICAgICAgICRmaWx0 +ZXJfZHVwbGljYXRlX2Zvcm0tPmFwcGVuZENoaWxkKCAkeG1sLT5jcmVhdGVfZWxlbWVudCggImlu +cHV0IiwgdHlwZSA9PiAiaGlkZGVuIiwgbmFtZSA9PiAiaGlkZV9kdXBsaWNhdGVzIiwgdmFsdWUg +PT4gMCkgKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkZmlsdGVyX2R1cGxpY2F0ZV9m +b3JtLT5hcHBlbmRDaGlsZCggJHhtbC0+Y3JlYXRlX2VsZW1lbnQoICJpbnB1dCIsIHR5cGUgPT4g +ImhpZGRlbiIsIG5hbWUgPT4gImhpZGVfZHVwbGljYXRlcyIsIHZhbHVlID0+IDEpICk7CiAgICAg +ICAgfQogICAgfSBlbHNlIHsKICAgICAgICAkZmlsdGVyX2R1cGxpY2F0ZV9mb3JtLT5hcHBlbmRD +aGlsZCggJHhtbC0+Y3JlYXRlX2VsZW1lbnQoICJpbnB1dCIsIHR5cGUgPT4gImhpZGRlbiIsIG5h +bWUgPT4gImhpZGVfZHVwbGljYXRlcyIsIHZhbHVlID0+IDApICk7CiAgICB9CgoKICAgICRmaWx0 +ZXJfZHVwbGljYXRlX2Zvcm0tPmFwcGVuZENoaWxkKCAkc2VsZi0+aHRtbF9waHJhc2UoICJkdXBs +aWNhdGVzIiApICk7CiAgICAkZmlsdGVyX2R1cGxpY2F0ZV9mb3JtLT5hcHBlbmRDaGlsZCggJHht +bC0+Y3JlYXRlX2VsZW1lbnQoICJpbnB1dCIsIHR5cGUgPT4gInN1Ym1pdCIsIGNsYXNzID0+ICJl +cF9mb3JtX2FjdGlvbl9idXR0b24gZmlsdGVyIiwgdmFsdWUgPT4gJHNlbGYtPnBocmFzZSggInNo +b3dfaGlkZV9kdXBsaWNhdGVzIiApICkgKTsKICAgICRkdXBsaWNhdGVfZGl2LT5hcHBlbmRDaGls +ZCggJGZpbHRlcl9kdXBsaWNhdGVfZm9ybSApOwogICAgcmV0dXJuICRkdXBsaWNhdGVfZGl2Owp9 +CgojY29uc3RydWN0IHRoZSBleHBvcnQgRE9NIGNvbXBvbmVudHMKc3ViIHJlbmRlcl9vcmNpZF9l +eHBvcnQKewoJbXkoICRzZWxmLCAkcmVwbywgJHVzZXIsICR4bWwsICRyZWNvcmRzICkgPSBAXzsK +CglteSAkZm9ybSA9ICRzZWxmLT5yZW5kZXJfZm9ybSggIlBPU1QiICk7CgkkZm9ybS0+YXBwZW5k +Q2hpbGQoICRyZXBvLT5yZW5kZXJfaGlkZGVuX2ZpZWxkKCAib3JjaWRfdXNlcmlkIiwgJHVzZXIt +PmlkICkgKTsKCgkkZm9ybS0+YXBwZW5kQ2hpbGQoICRzZWxmLT5yZW5kZXJfb3JjaWRfZXhwb3J0 +X2ludHJvKCAkeG1sICkgKTsKCSRmb3JtLT5hcHBlbmRDaGlsZCggJHNlbGYtPnJlbmRlcl9lcHJp +bnRfcmVjb3JkcyggJHhtbCwgJHJlY29yZHMgKSApOwoJJGZvcm0tPmFwcGVuZENoaWxkKCAkc2Vs +Zi0+cmVuZGVyX29yY2lkX2V4cG9ydF9vdXRybyggJHhtbCApICk7CgoJcmV0dXJuICRmb3JtOwp9 +CgpzdWIgcmVuZGVyX29yY2lkX2V4cG9ydF9pbnRybwp7CglteSggJHNlbGYsICR4bWwgKSA9IEBf +OwoKCW15ICRpbnRyb19kaXYgPSAkeG1sLT5jcmVhdGVfZWxlbWVudCggImRpdiIsIGNsYXNzID0+ +ICJleHBvcnRfaW50cm8iICk7CgoJI3JlbmRlciBleHBvcnQgYnV0dG9uCglteSAkYnRuX2RpdiA9 +ICR4bWwtPmNyZWF0ZV9lbGVtZW50KCAiZGl2IiwgY2xhc3MgPT4gImV4cG9ydF9pbnRyb19idG4i +ICk7CglteSAkYnV0dG9uID0gJGJ0bl9kaXYtPmFwcGVuZENoaWxkKCAkeG1sLT5jcmVhdGVfZWxl +bWVudCggImJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9PiJzdWJtaXQiLAog +ICAgICAgICAgICAgICAgICAgICAgICBuYW1lPT4iX2FjdGlvbl9leHBvcnQiLAoJCQljbGFzcyA9 +PiAiZXBfZm9ybV9hY3Rpb25fYnV0dG9uIiwKICAgICAgICApICk7CiAgICAgICAgJGJ1dHRvbi0+ +YXBwZW5kQ2hpbGQoICR4bWwtPmNyZWF0ZV90ZXh0X25vZGUoICJFeHBvcnQiICkgKTsKCiAgICAj +IGRlbGV0aW9uIGJ1dHRvbgogICAgbXkgJGJ1dHRvbl9kZWxldGUgPSAkYnRuX2Rpdi0+YXBwZW5k +Q2hpbGQoICR4bWwtPmNyZWF0ZV9lbGVtZW50KCAiYnV0dG9uIiwKICAgICAgICB0eXBlID0+ICJz +dWJtaXQiLAogICAgICAgIG5hbWUgPT4gIl9hY3Rpb25fZGVsZXRlIiwKICAgICAgICBjbGFzcyA9 +PiAiZXBfZm9ybV9hY3Rpb25fYnV0dG9uIGRlbGV0ZV9idXR0b24iLAogICAgKSApOwogICAgJGJ1 +dHRvbl9kZWxldGUtPmFwcGVuZENoaWxkKCAkc2VsZi0+aHRtbF9waHJhc2UoICJkZWxldGUiICkg +KTsKCiAgICAjIHRvZ2dsZSBzd2l0Y2gKICAgIG15ICR0b2dnbGVfYnV0dG9uID0gJGJ0bl9kaXYt +PmFwcGVuZENoaWxkKCAkeG1sLT5jcmVhdGVfZWxlbWVudCggImJ1dHRvbiIsCiAgICAgICAgICAg +ICAgICAgICAgdHlwZSA9PiAiYnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICBvbmNsaWNrID0+ +ICJ0b2dnbGVPcmNpZENoZWNrYm94KCk7IiwKICAgICAgICAgICAgICAgICAgICBjbGFzcyA9PiAi +ZXBfZm9ybV9hY3Rpb25fYnV0dG9uIHRvZ2dsZV9idXR0b24iLAogICAgKSApOwogICAgJHRvZ2ds +ZV9idXR0b24tPmFwcGVuZENoaWxkKCAkc2VsZi0+aHRtbF9waHJhc2UoICJzZWxlY3QiICkgKTsK +CgkkaW50cm9fZGl2LT5hcHBlbmRDaGlsZCggJGJ0bl9kaXYgKTsKCglyZXR1cm4gJGludHJvX2Rp +djsKfQoKc3ViIHJlbmRlcl9lcHJpbnRfcmVjb3Jkcwp7CglteSggJHNlbGYsICR4bWwsICRyZWNv +cmRzICkgPSBAXzsKCiAgICBteSAkcmVwbyA9ICRzZWxmLT57cmVwb3NpdG9yeX07CgoJbXkgJGZp +ZWxkc2V0ID0gJHhtbC0+Y3JlYXRlX2VsZW1lbnQoICJmaWVsZHNldCIsIGNsYXNzID0+ICJlcF90 +YWJsZSBleHBvcnRfb3JjaWRfcmVjb3JkcyIgKTsKICAgIG15ICRsZWdlbmQgPSAkeG1sLT5jcmVh +dGVfZWxlbWVudCggImxlZ2VuZCIsIGlkPT4ib3JjaWRfZXhwb3J0X2xlZ2VuZCIsIGNsYXNzPT4i +ZXBfZmllbGRfbGVnZW5kIiApOwogICAgJGxlZ2VuZC0+YXBwZW5kQ2hpbGQoICRzZWxmLT5odG1s +X3BocmFzZSggImV4cG9ydF9oZWxwIiApICk7CiAgICAkZmllbGRzZXQtPmFwcGVuZENoaWxkKCAk +bGVnZW5kICk7CgoKCSRyZWNvcmRzLT5tYXAoc3ViewoJCW15KCAkc2Vzc2lvbiwgJGRhdGFzZXQs +ICRlcHJpbnQgKSA9IEBfOwoKICAgICMgbW9kaWZpY2F0aW9uIGRhdGUKICAgIG15ICRjZ2kgPSBD +R0ktPm5ldygpOwogICAgbXkgJGZpbHRlcl9kYXRlID0gMDsKICAgIG15ICRtb2RfZGF0ZSA9ICgk +ZXByaW50LT5nZXRfdmFsdWUoJ2xhc3Rtb2QnKSk7CiAgICAkbW9kX2RhdGUgPSBUaW1lOjpQaWVj +ZS0+c3RycHRpbWUoICRtb2RfZGF0ZSwgJyVZLSVtLSVkICVIOiVNOiVTJyApOwogICAgaWYoIGRl +ZmluZWQgJGNnaS0+cGFyYW0oJ2ZpbHRlcl9kYXRlJykpCiAgICB7CiAgICAgICAgJGZpbHRlcl9k +YXRlID0gJGNnaS0+cGFyYW0oJ2ZpbHRlcl9kYXRlJyk7CiAgICAgICAgJGZpbHRlcl9kYXRlID0g +VGltZTo6UGllY2UtPnN0cnB0aW1lKCAkZmlsdGVyX2RhdGUsICclWS0lbS0lZCcgKTsKICAgIH0K +CQkjc2hvdyB0aGUgZXByaW50IGNpdGF0aW9uCgkJbXkgJHRyID0gIiI7CgkJbXkgJHRkX2NpdGF0 +aW9uID0gJHNlc3Npb24tPm1ha2VfZWxlbWVudCggImRpdiIsIGNsYXNzID0+ICJleHBvcnRfb3Jj +aWRfY2l0YXRpb24gZXBfdGFibGVfY2VsbCIgKTsKCQkkdGRfY2l0YXRpb24tPmFwcGVuZENoaWxk +KCRlcHJpbnQtPnJlbmRlcl9jaXRhdGlvbl9saW5rICk7CgoJCWlmKCAkZmlsdGVyX2RhdGUgJiYg +JG1vZF9kYXRlIDwgJGZpbHRlcl9kYXRlICkKICAgICAgICB7CiAgICAgICAgICAgIG15ICRkYXRl +X2Zvcm1hdCA9ICRyZXBvLT5jb25maWcoICJvcmNpZF9zdXBwb3J0X2FkdmFuY2UiLCAiZmlsdGVy +X2Zvcm1hdCIgKSB8fCAiJWQvJW0vJVkiOwogICAgICAgICAgICAkdHIgPSAkc2Vzc2lvbi0+bWFr +ZV9lbGVtZW50KCAiZGl2IiwgY2xhc3MgPT4gImZpbHRlcmVkIGVwX3RhYmxlX3JvdyIgKTsKCiAg +ICAgICAgICAgICMgd29yayBkYXRlCiAgICAgICAgICAgICRtb2RfZGF0ZSA9IHN0cmZ0aW1lICRk +YXRlX2Zvcm1hdCwgZ210aW1lKCAkbW9kX2RhdGUtPmVwb2NoICk7CiAgICAgICAgICAgICR0ZF9j +aXRhdGlvbi0+YXBwZW5kQ2hpbGQoICR4bWwtPmNyZWF0ZV90ZXh0X25vZGUoICJMYXN0IE1vZGlm +aWVkOiAkbW9kX2RhdGUiICkgKTsKICAgICAgICAgICAgJHRkX2NpdGF0aW9uLT5hcHBlbmRDaGls +ZCggJHhtbC0+Y3JlYXRlX2VsZW1lbnQoImJyIikpOwoKICAgICAgICAgICAgJGZpbHRlcl9kYXRl +ID0gc3RyZnRpbWUgJGRhdGVfZm9ybWF0LCBnbXRpbWUoICRmaWx0ZXJfZGF0ZS0+ZXBvY2ggKTsK +ICAgICAgICAgICAgJHRkX2NpdGF0aW9uLT5hcHBlbmRDaGlsZCggJHhtbC0+Y3JlYXRlX3RleHRf +bm9kZSggIkZpbHRlciBkYXRlOiAkZmlsdGVyX2RhdGUiICkgKTsKICAgICAgICAgICAgJHRkX2Np +dGF0aW9uLT5hcHBlbmRDaGlsZCggJHhtbC0+Y3JlYXRlX2VsZW1lbnQoImJyIikpOwogICAgICAg +ICAgICAkdHItPmFwcGVuZENoaWxkKCAkdGRfY2l0YXRpb24gKTsKICAgICAgICB9CiAgICAgICAg +ZWxzZQogICAgICAgIHsKICAgICAgICAgICAgJHRyID0gJHNlc3Npb24tPm1ha2VfZWxlbWVudCgg +ImRpdiIsIGNsYXNzID0+ICJlcF90YWJsZV9yb3ciICk7CiAgICAgICAgICAgICR0ci0+YXBwZW5k +Q2hpbGQoICR0ZF9jaXRhdGlvbiApOwogICAgICAgICAgICAjc2hvdyBjaGVja2JveCBmb3IgdGhp +cyByZWNvcmQKICAgICAgICAgICAgbXkgJHRkX2NoZWNrID0gJHNlc3Npb24tPm1ha2VfZWxlbWVu +dCggImRpdiIsIGNsYXNzID0+ICJleHBvcnRfb3JjaWRfY2hlY2sgZXBfdGFibGVfY2VsbCIgKTsK +ICAgICAgICAgICAgbXkgJGNoZWNrYm94ID0gJHNlc3Npb24tPm1ha2VfZWxlbWVudCggImlucHV0 +IiwKICAgICAgICAgICAgICAgIHR5cGUgPT4gImNoZWNrYm94IiwKICAgICAgICAgICAgICAgIG5h +bWUgPT4gImVwcmludCIsCiAgICAgICAgICAgICAgICB2YWx1ZSA9PiAkZXByaW50LT5pZCwKICAg +ICAgICAgICAgICAgICJhcmlhLWxhYmVsIiA9PiAkZXByaW50LT52YWx1ZSggInRpdGxlIiApLAog +ICAgICAgICAgICApOwogICAgICAgICAgICAkY2hlY2tib3gtPnNldEF0dHJpYnV0ZSggImNoZWNr +ZWQiLCAieWVzIiApOwogICAgICAgICAgICAkdGRfY2hlY2stPmFwcGVuZENoaWxkKCAkY2hlY2ti +b3ggKTsKICAgICAgICAgICAgJHRyLT5hcHBlbmRDaGlsZCggJHRkX2NoZWNrICk7CiAgICAgICAg +fQoJCSRmaWVsZHNldC0+YXBwZW5kQ2hpbGQoICR0ciApOwoJfSk7CgoJcmV0dXJuICRmaWVsZHNl +dDsKfQoKc3ViIHJlbmRlcl9vcmNpZF9leHBvcnRfb3V0cm8KewoJbXkoICRzZWxmLCAkeG1sICkg +PSBAXzsKCglteSAkYnRuX2RpdiA9ICR4bWwtPmNyZWF0ZV9lbGVtZW50KCAiZGl2IiwgY2xhc3Mg +PT4gImV4cG9ydF9vdXRyb19idG4iICk7CiAgICAgICAgbXkgJGJ1dHRvbiA9ICRidG5fZGl2LT5h +cHBlbmRDaGlsZCggJHhtbC0+Y3JlYXRlX2VsZW1lbnQoICJidXR0b24iLAogICAgICAgICAgICAg +ICAgICAgICAgICB0eXBlID0+ICJzdWJtaXQiLAogICAgICAgICAgICAgICAgICAgICAgICBuYW1l +ID0+ICJfYWN0aW9uX2V4cG9ydCIsCgkJCWNsYXNzID0+ICJlcF9mb3JtX2FjdGlvbl9idXR0b24i +LAogICAgICAgICkgKTsKICAgICAgICAkYnV0dG9uLT5hcHBlbmRDaGlsZCggJHhtbC0+Y3JlYXRl +X3RleHRfbm9kZSggIkV4cG9ydCIgKSApOwoKICAgICMgZGVsZXRpb24gYnV0dG9uCiAgICBteSAk +YnV0dG9uX2RlbGV0ZSA9ICRidG5fZGl2LT5hcHBlbmRDaGlsZCggJHhtbC0+Y3JlYXRlX2VsZW1l +bnQoICJidXR0b24iLAogICAgICAgICAgICB0eXBlID0+ICJzdWJtaXQiLAogICAgICAgICAgICBu +YW1lID0+ICJfYWN0aW9uX2RlbGV0ZSIsCiAgICAgICAgICAgIGNsYXNzID0+ICJlcF9mb3JtX2Fj +dGlvbl9idXR0b24gZGVsZXRlX2J1dHRvbiIsCiAgICApICk7CiAgICAkYnV0dG9uX2RlbGV0ZS0+ +YXBwZW5kQ2hpbGQoICRzZWxmLT5odG1sX3BocmFzZSggImRlbGV0ZSIgKSApOwoKICAgICMgdG9n +Z2xlIHN3aXRjaAogICAgbXkgJHRvZ2dsZV9idXR0b24gPSAkYnRuX2Rpdi0+YXBwZW5kQ2hpbGQo +ICR4bWwtPmNyZWF0ZV9lbGVtZW50KCAiYnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICB0eXBl +ID0+ICJidXR0b24iLAogICAgICAgICAgICAgICAgICAgIG9uY2xpY2sgPT4gInRvZ2dsZU9yY2lk +Q2hlY2tib3goKTsiLAogICAgICAgICAgICAgICAgICAgIGNsYXNzID0+ICJlcF9mb3JtX2FjdGlv +bl9idXR0b24gdG9nZ2xlX2J1dHRvbiIsCiAgICApICk7CiAgICAkdG9nZ2xlX2J1dHRvbi0+YXBw +ZW5kQ2hpbGQoICRzZWxmLT5odG1sX3BocmFzZSggInNlbGVjdCIgKSApOwoKCXJldHVybiAkYnRu +X2RpdjsKfQo= document plugins/EPrints/Plugin/Screen/ImportFromOrcid.pm text/plain - c4bf73ff5e21870f0897244b14fa4838 + 2cddd5c82b6208a65cc74f014bf326f3 MD5 - 31151 + 31190 PWhlYWQxIE5BTUUKCkVQcmludHM6OlBsdWdpbjo6U2NyZWVuOjpJbXBvcnRGcm9tT3JjaWQKCj1j dXQKCnBhY2thZ2UgRVByaW50czo6UGx1Z2luOjpTY3JlZW46OkltcG9ydEZyb21PcmNpZDsKCnVz ZSBFUHJpbnRzOjpQbHVnaW46OlNjcmVlbjsKdXNlIEVQcmludHM6Ok9SQ0lEOjpVdGlsczsKdXNl @@ -2706,376 +2707,377 @@ eXBlID0+ICJoaWRkZW4iLCBuYW1lID0+ICJoaWRlX2R1cGxpY2F0ZXMiLCB2YWx1ZSA9PiAkcXVl cnlfZHVwbGljYXRlKSApOwogICAgfQogCiAgICBteSAkZGF0ZV90eXBlID0gJHJlcG8tPmNvbmZp ZyggIm9yY2lkX3N1cHBvcnRfYWR2YW5jZSIsICJmaWx0ZXJfZGF0ZSIgKSB8fCAibGFzdC1tb2Rp ZmllZC1kYXRlIjsKICAgICRmaWx0ZXJfZGF0ZV9mb3JtLT5hcHBlbmRDaGlsZCggJHNlbGYtPmh0 -bWxfcGhyYXNlKCAic2hvd18kZGF0ZV90eXBlIiApICk7CiAgICBteSAkZGF0ZV9waWNrZXIgPSAg -JHhtbC0+Y3JlYXRlX2VsZW1lbnQoICJpbnB1dCIsIHR5cGUgPT4gImRhdGUiLCBuYW1lID0+ICJm -aWx0ZXJfZGF0ZSIsICJhcmlhLWxhYmVsIiA9PiAiRmlsdGVyIERhdGUiICk7CiAgICAkZmlsdGVy -X2RhdGVfZm9ybS0+YXBwZW5kQ2hpbGQoICRkYXRlX3BpY2tlciApOwogICAgJGZpbHRlcl9kYXRl -X2Zvcm0tPmFwcGVuZENoaWxkKCAkeG1sLT5jcmVhdGVfZWxlbWVudCggImlucHV0IiwgdHlwZSA9 -PiAic3VibWl0IiwgY2xhc3MgPT4gImVwX2Zvcm1fYWN0aW9uX2J1dHRvbiBmaWx0ZXIiLCB2YWx1 -ZSA9PiAkc2VsZi0+cGhyYXNlKCAiZmlsdGVyIiApICkgKTsKICAgICRmaWx0ZXJfZGl2LT5hcHBl -bmRDaGlsZCggJGZpbHRlcl9kYXRlX2Zvcm0gKTsKICAgIHJldHVybiAkZmlsdGVyX2RpdjsKfQoK -c3ViIHJlbmRlcl9maWx0ZXJfZHVwbGljYXRlX2Zvcm0KewogICAgbXkoICRzZWxmLCAkeG1sLCAk -cXVlcnkgKSA9IEBfOwogICAgbXkgJGR1cGxpY2F0ZV9kaXYgPSAkeG1sLT5jcmVhdGVfZWxlbWVu -dCggImRpdiIsIGNsYXNzID0+ICJmaWx0ZXJfZHVwbGljYXRlIiApOwogICAgbXkgJGZpbHRlcl9k -dXBsaWNhdGVfZm9ybSA9ICR4bWwtPmNyZWF0ZV9lbGVtZW50KCAiZm9ybSIsIG1ldGhvZCA9PiAi -Z2V0IiwgYWN0aW9uID0+ICIvY2dpL3VzZXJzL2hvbWUiICk7CiAgICAkZmlsdGVyX2R1cGxpY2F0 -ZV9mb3JtLT5hcHBlbmRDaGlsZCggJHhtbC0+Y3JlYXRlX2VsZW1lbnQoICJpbnB1dCIsIHR5cGUg -PT4gImhpZGRlbiIsIG5hbWUgPT4gInNjcmVlbiIsIGlkID0+ICJzY3JlZW4iLCB2YWx1ZSA9PiAi -SW1wb3J0RnJvbU9yY2lkIikgKTsKCiAgICAjIFNhdmUgb3RoZXIgcGFyYW1zCiAgICBteSAkcXVl -cnlfZGF0YXNldCA9ICRxdWVyeS0+cGFyYW0oJ2RhdGFzZXQnKTsKICAgIG15ICRxdWVyeV9kYXRh -b2JqID0gJHF1ZXJ5LT5wYXJhbSgnZGF0YW9iaicpOwogICAgbXkgJHF1ZXJ5X2RhdGUgPSAkcXVl -cnktPnBhcmFtKCdmaWx0ZXJfZGF0ZScpOwogICAgbXkgJHF1ZXJ5X2R1cGxpY2F0ZSA9ICRxdWVy -eS0+cGFyYW0oJ2hpZGVfZHVwbGljYXRlcycpOwogICAgaWYoIGRlZmluZWQoJHF1ZXJ5X2RhdGFz -ZXQpICYmIGRlZmluZWQoJHF1ZXJ5X2RhdGFvYmopICkgewogICAgICAgICRmaWx0ZXJfZHVwbGlj -YXRlX2Zvcm0tPmFwcGVuZENoaWxkKCAkeG1sLT5jcmVhdGVfZWxlbWVudCggImlucHV0IiwgdHlw -ZSA9PiAiaGlkZGVuIiwgbmFtZSA9PiAiZGF0YXNldCIsIHZhbHVlID0+ICRxdWVyeV9kYXRhc2V0 -KSApOwogICAgICAgICRmaWx0ZXJfZHVwbGljYXRlX2Zvcm0tPmFwcGVuZENoaWxkKCAkeG1sLT5j -cmVhdGVfZWxlbWVudCggImlucHV0IiwgdHlwZSA9PiAiaGlkZGVuIiwgbmFtZSA9PiAiZGF0YW9i -aiIsIHZhbHVlID0+ICRxdWVyeV9kYXRhb2JqKSApOwogICAgfQogICAgaWYoIGRlZmluZWQoJHF1 -ZXJ5X2RhdGUpICl7CiAgICAgICAgJGZpbHRlcl9kdXBsaWNhdGVfZm9ybS0+YXBwZW5kQ2hpbGQo -ICR4bWwtPmNyZWF0ZV9lbGVtZW50KCAiaW5wdXQiLCB0eXBlID0+ICJoaWRkZW4iLCBuYW1lID0+ -ICJmaWx0ZXJfZGF0ZSIsIHZhbHVlID0+ICRxdWVyeV9kYXRlKSApOwogICAgfQoKICAgIGlmKCBk -ZWZpbmVkKCRxdWVyeV9kdXBsaWNhdGUpICkKICAgIHsKICAgICAgICBpZiggJHF1ZXJ5X2R1cGxp -Y2F0ZSA9PSAxICkKICAgICAgICB7CiAgICAgICAgICAgICRmaWx0ZXJfZHVwbGljYXRlX2Zvcm0t -PmFwcGVuZENoaWxkKCAkeG1sLT5jcmVhdGVfZWxlbWVudCggImlucHV0IiwgdHlwZSA9PiAiaGlk -ZGVuIiwgbmFtZSA9PiAiaGlkZV9kdXBsaWNhdGVzIiwgdmFsdWUgPT4gMCkgKTsKICAgICAgICB9 -IGVsc2UgewogICAgICAgICAgICAkZmlsdGVyX2R1cGxpY2F0ZV9mb3JtLT5hcHBlbmRDaGlsZCgg -JHhtbC0+Y3JlYXRlX2VsZW1lbnQoICJpbnB1dCIsIHR5cGUgPT4gImhpZGRlbiIsIG5hbWUgPT4g -ImhpZGVfZHVwbGljYXRlcyIsIHZhbHVlID0+IDEpICk7CiAgICAgICAgfQogICAgfSBlbHNlIHsK -ICAgICAgICAkZmlsdGVyX2R1cGxpY2F0ZV9mb3JtLT5hcHBlbmRDaGlsZCggJHhtbC0+Y3JlYXRl -X2VsZW1lbnQoICJpbnB1dCIsIHR5cGUgPT4gImhpZGRlbiIsIG5hbWUgPT4gImhpZGVfZHVwbGlj -YXRlcyIsIHZhbHVlID0+IDApICk7CiAgICB9CgoKICAgICRmaWx0ZXJfZHVwbGljYXRlX2Zvcm0t -PmFwcGVuZENoaWxkKCAkc2VsZi0+aHRtbF9waHJhc2UoICJkdXBsaWNhdGVzIiApICk7CiAgICAk -ZmlsdGVyX2R1cGxpY2F0ZV9mb3JtLT5hcHBlbmRDaGlsZCggJHhtbC0+Y3JlYXRlX2VsZW1lbnQo -ICJpbnB1dCIsIHR5cGUgPT4gInN1Ym1pdCIsIGNsYXNzID0+ICJlcF9mb3JtX2FjdGlvbl9idXR0 -b24gZmlsdGVyIiwgdmFsdWUgPT4gJHNlbGYtPnBocmFzZSggInNob3dfaGlkZV9kdXBsaWNhdGVz -IiApKSk7CiAgICAkZHVwbGljYXRlX2Rpdi0+YXBwZW5kQ2hpbGQoICRmaWx0ZXJfZHVwbGljYXRl -X2Zvcm0gKTsKICAgIHJldHVybiAkZHVwbGljYXRlX2RpdjsKfQoKI2NvbnN0cnVjdCB0aGUgaW1w -b3J0IERPTSBjb21wb25lbnRzCnN1YiByZW5kZXJfb3JjaWRfaW1wb3J0CnsKCW15KCAkc2VsZiwg -JHJlcG8sICR1c2VyLCAkeG1sLCAkd29ya3MgKSA9IEBfOwoJbXkgJGZvcm0gPSAkc2VsZi0+cmVu -ZGVyX2Zvcm0oICJQT1NUIiApOwogICAgICAgICRmb3JtLT5hcHBlbmRDaGlsZCggJHJlcG8tPnJl -bmRlcl9oaWRkZW5fZmllbGQoICJvcmNpZF91c2VyaWQiLCAkdXNlci0+aWQgKSApOwoKCSRmb3Jt -LT5hcHBlbmRDaGlsZCggJHNlbGYtPnJlbmRlcl9vcmNpZF9pbXBvcnRfaW50cm8oICR4bWwgKSAp -OwoJJGZvcm0tPmFwcGVuZENoaWxkKCAkc2VsZi0+cmVuZGVyX29yY2lkX3JlY29yZHMoICRyZXBv -LCAkd29ya3MgKSApOwoJJGZvcm0tPmFwcGVuZENoaWxkKCAkc2VsZi0+cmVuZGVyX29yY2lkX2lt -cG9ydF9vdXRybyggJHhtbCApICk7CgoJcmV0dXJuICRmb3JtOwp9CgpzdWIgcmVuZGVyX29yY2lk -X2ltcG9ydF9pbnRybwp7CiAgICAgICAgbXkoICRzZWxmLCAkeG1sICkgPSBAXzsKICAgICAgICBt -eSAkaW50cm9fZGl2ID0gJHhtbC0+Y3JlYXRlX2VsZW1lbnQoICJkaXYiLCBjbGFzcyA9PiAiaW1w -b3J0X2ludHJvIiApOwoKICAgICAgICAjcmVuZGVyIGltcG9ydCBidXR0b24KICAgICAgICBteSAk -YnRuX2RpdiA9ICR4bWwtPmNyZWF0ZV9lbGVtZW50KCAiZGl2IiwgY2xhc3MgPT4gImltcG9ydF9p -bnRyb19idG4iICk7CiAgICAgICAgbXkgJGJ1dHRvbiA9ICRidG5fZGl2LT5hcHBlbmRDaGlsZCgg -JHhtbC0+Y3JlYXRlX2VsZW1lbnQoICJidXR0b24iLAogICAgICAgICAgICAgICAgICAgICAgICB0 -eXBlID0+ICJzdWJtaXQiLAogICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0+ICJfYWN0aW9u -X2ltcG9ydCIsCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzID0+ICJlcF9mb3JtX2FjdGlv -bl9idXR0b24iLAogICAgICAgICkgKTsKICAgICAgICAkYnV0dG9uLT5hcHBlbmRDaGlsZCggJHht -bC0+Y3JlYXRlX3RleHRfbm9kZSggIkltcG9ydCIgKSApOwoKICAgICAgICAjIHRvZ2dsZSBzd2l0 -Y2gKICAgICAgICBteSAkdG9nZ2xlX2J1dHRvbiA9ICRidG5fZGl2LT5hcHBlbmRDaGlsZCggJHht -bC0+Y3JlYXRlX2VsZW1lbnQoICJidXR0b24iLAogICAgICAgICAgICAgICAgICAgICAgICB0eXBl -ID0+ICJidXR0b24iLAogICAgICAgICAgICAgICAgICAgICAgICBvbmNsaWNrID0+ICJ0b2dnbGVP -cmNpZENoZWNrYm94KCk7IiwKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MgPT4gImVwX2Zv -cm1fYWN0aW9uX2J1dHRvbiB0b2dnbGVfYnV0dG9uIiwKICAgICAgICApICk7CiMgICAgICAgICR0 -b2dnbGVfYnV0dG9uLT5hcHBlbmRDaGlsZCggJHhtbC0+Y3JlYXRlX3RleHRfbm9kZSggJHNlbGYt -Pmh0bWxfcGhyYXNlKCAic2VsZWN0IiApICkgKTsKICAgICAgICAkdG9nZ2xlX2J1dHRvbi0+YXBw -ZW5kQ2hpbGQoICRzZWxmLT5odG1sX3BocmFzZSggInNlbGVjdCIgKSApOwoKICAgICAgICAkaW50 -cm9fZGl2LT5hcHBlbmRDaGlsZCggJGJ0bl9kaXYgKTsKCiAgICAgICAgcmV0dXJuICRpbnRyb19k -aXY7Cn0KCnN1YiByZW5kZXJfb3JjaWRfaW1wb3J0X291dHJvCnsKCW15KCAkc2VsZiwgJHhtbCAp -ID0gQF87CgoJbXkgJGJ0bl9kaXYgPSAkeG1sLT5jcmVhdGVfZWxlbWVudCggImRpdiIsIGNsYXNz -ID0+ICJpbXBvcnRfb3V0cm9fYnV0dG9uIiApOwoKCW15ICRidXR0b24gPSAkYnRuX2Rpdi0+YXBw -ZW5kQ2hpbGQoICR4bWwtPmNyZWF0ZV9lbGVtZW50KCAiYnV0dG9uIiwKCQl0eXBlID0+ICJzdWJt -aXQiLAoJCW5hbWUgPT4gIl9hY3Rpb25faW1wb3J0IiwKCQljbGFzcyA9PiAiZXBfZm9ybV9hY3Rp -b25fYnV0dG9uIiwKCSkgKTsKCSRidXR0b24tPmFwcGVuZENoaWxkKCAkeG1sLT5jcmVhdGVfdGV4 -dF9ub2RlKCAiSW1wb3J0IiApICk7CgogICAgIyB0b2dnbGUgc3dpdGNoCiAgICBteSAkdG9nZ2xl -X2J1dHRvbiA9ICRidG5fZGl2LT5hcHBlbmRDaGlsZCggJHhtbC0+Y3JlYXRlX2VsZW1lbnQoICJi -dXR0b24iLAogICAgICAgICAgICAgICAgICAgIHR5cGUgPT4gImJ1dHRvbiIsCiAgICAgICAgICAg -ICAgICAgICAgb25jbGljayA9PiAidG9nZ2xlT3JjaWRDaGVja2JveCgpOyIsCiAgICAgICAgICAg -ICAgICAgICAgY2xhc3MgPT4gImVwX2Zvcm1fYWN0aW9uX2J1dHRvbiB0b2dnbGVfYnV0dG9uIiwK -ICAgICkgKTsKICAgICR0b2dnbGVfYnV0dG9uLT5hcHBlbmRDaGlsZCggJHNlbGYtPmh0bWxfcGhy -YXNlKCAic2VsZWN0IiApICk7CgoJcmV0dXJuICRidG5fZGl2Owp9CgpzdWIgcmVuZGVyX29yY2lk -X3JlY29yZHMKewoJbXkoICRzZWxmLCAkcmVwbywgJHdvcmtzICkgPSBAXzsKCglteSAkeG1sID0g -JHJlcG8tPnhtbDsKCW15ICRpbXBvcnRfY291bnQgPSAwOwoJbXkgJGZpZWxkc2V0ID0gJHhtbC0+ -Y3JlYXRlX2VsZW1lbnQoICJmaWVsZHNldCIsIGNsYXNzID0+ICJvcmNpZF9pbXBvcnRzIiApOwoK -ICAgIG15ICRsZWdlbmQgPSAkeG1sLT5jcmVhdGVfZWxlbWVudCggImxlZ2VuZCIsIGlkPT4ib3Jj -aWRfaW1wb3J0X2xlZ2VuZCIsIGNsYXNzPT4iZXBfZmllbGRfbGVnZW5kIiApOwogICAgJGxlZ2Vu -ZC0+YXBwZW5kQ2hpbGQoICRzZWxmLT5odG1sX3BocmFzZSggImltcG9ydF9oZWxwIiApICk7CiAg -ICAkZmllbGRzZXQtPmFwcGVuZENoaWxkKCAkbGVnZW5kICk7CgogICAgZm9yZWFjaCBteSAkd29y -ayAoIEB7JHdvcmtzfSApCgl7CgkJJGZpZWxkc2V0LT5hcHBlbmRDaGlsZCggJHNlbGYtPnJlbmRl -cl9vcmNpZF9pdGVtKCAkcmVwbywgJHhtbCwgJHdvcmsgKSApOwogICAgICAgICRpbXBvcnRfY291 -bnQrKzsKCX0KICAgIGlmKCAkaW1wb3J0X2NvdW50ID09IDAgKSB7CiAgICAgICAgJGZpZWxkc2V0 -LT5hcHBlbmRDaGlsZCggJHNlbGYtPmh0bWxfcGhyYXNlKCAibm9faXRlbXMiICkgKTsKICAgIH0K -CXJldHVybiAkZmllbGRzZXQ7Cn0KCnN1YiByZW5kZXJfb3JjaWRfaXRlbQp7CglteSggJHNlbGYs -ICRyZXBvLCAkeG1sLCAkd29yayApID0gQF87CglteSAkbGkgPSAkeG1sLT5jcmVhdGVfZWxlbWVu -dCggImRpdiIsIGNsYXNzID0+ICJvcmNpZF9pdGVtIiApOwoKCW15ICRzdW1tYXJ5ID0gJHhtbC0+ -Y3JlYXRlX2VsZW1lbnQoICJkaXYiLCBjbGFzcyA9PiAib3JjaWRfc3VtbWFyeSIgKTsKCSNyZW5k -ZXIgdGl0bGUKCW15ICR0aXRsZSA9ICR3b3JrLT57J3RpdGxlJ30tPnsndGl0bGUnfS0+eyd2YWx1 -ZSd9OwoJJHN1bW1hcnktPmFwcGVuZENoaWxkKCAkc2VsZi0+cmVuZGVyX29yY2lkX3RleHQoICR4 -bWwsICR0aXRsZSwgInRpdGxlIiApICk7CiAgICBpZiggZGVmaW5lZCAkd29yay0+eyd0aXRsZSd9 -LT57J3N1YnRpdGxlJ30gKQogICAgewogICAgICAgICRzdW1tYXJ5LT5hcHBlbmRDaGlsZCggJHNl -bGYtPnJlbmRlcl9vcmNpZF90ZXh0KCAkeG1sLCAkd29yay0+eyd0aXRsZSd9LT57J3N1YnRpdGxl -J30tPnsndmFsdWUnfSwgInN1YnRpdGxlIiApICk7CiAgICB9CgoJI2dldCBkYXRlICsgdHlwZQoJ -bXkgJGRhdGUgPSAiIjsKICAgICAgICAkZGF0ZSAuPSAkd29yay0+eydwdWJsaWNhdGlvbi1kYXRl -J30tPnsnZGF5J30tPnsndmFsdWUnfSBpZiAkd29yay0+eydwdWJsaWNhdGlvbi1kYXRlJ30tPnsn -ZGF5J30tPnsndmFsdWUnfTsKICAgICAgICAkZGF0ZSAuPSAiLyIuJHdvcmstPnsncHVibGljYXRp -b24tZGF0ZSd9LT57J21vbnRoJ30tPnsndmFsdWUnfSBpZiAkd29yay0+eydwdWJsaWNhdGlvbi1k -YXRlJ30tPnsnbW9udGgnfS0+eyd2YWx1ZSd9OwogICAgICAgICRkYXRlIC49ICIvIi4kd29yay0+ -eydwdWJsaWNhdGlvbi1kYXRlJ30tPnsneWVhcid9LT57J3ZhbHVlJ30gaWYgJHdvcmstPnsncHVi -bGljYXRpb24tZGF0ZSd9LT57J3llYXInfS0+eyd2YWx1ZSd9OwoKCSN0eXBlCglteSAkdHlwZSA9 -ICR3b3JrLT57J3R5cGUnfTsKCgkjZGF0ZXx0eXBlIHN0cmluZwoJbXkgJGRhdGVfdHlwZSA9ICIi -OwoJJGRhdGVfdHlwZSAuPSAkZGF0ZSBpZiAkZGF0ZSBuZSAiIjsKCSRkYXRlX3R5cGUgLj0gIiB8 -ICIgaWYgJGRhdGUgbmUgIiIgJiYgZGVmaW5lZCAkdHlwZTsKCSRkYXRlX3R5cGUgLj0gJHR5cGUg -aWYgZGVmaW5lZCAkdHlwZTsKCSRzdW1tYXJ5LT5hcHBlbmRDaGlsZCggJHNlbGYtPnJlbmRlcl9v -cmNpZF90ZXh0KCAkeG1sLCAkZGF0ZV90eXBlLCAiZGF0ZS10eXBlIiApICk7CgoJI2V4dCBpZGVu -dGlmaWVycwoJbXkgJGV4dF9pZHMgPSAkd29yay0+eydleHRlcm5hbC1pZHMnfS0+eydleHRlcm5h -bC1pZCd9OwoJbXkgJGlkX3VsID0gJHhtbC0+Y3JlYXRlX2VsZW1lbnQoICJ1bCIsIGNsYXNzID0+ -ICJleHRlcm5hbF9pZGVudGlmaWVycyIgKTsKICAgICAgICBmb3JlYWNoIG15ICRleHRfaWQgKCBA -JGV4dF9pZHMgKQogICAgICAgIHsKICAgICAgICAgICAgbXkgJGlkX3R5cGUgPSAkZXh0X2lkLT57 -J2V4dGVybmFsLWlkLXR5cGUnfTsKICAgICAgICAgICAgbXkgJGlkID0gJGV4dF9pZC0+eydleHRl -cm5hbC1pZC12YWx1ZSd9OwogICAgICAgICAgICBteSAkaWRfdXJsID0gJGV4dF9pZC0+eydleHRl -cm5hbC1pZC11cmwnfS0+eyd2YWx1ZSd9OwogICAgICAgICAgICAkaWRfdWwtPmFwcGVuZENoaWxk -KCAkc2VsZi0+cmVuZGVyX2V4dF9pZCggJHhtbCwgJGlkX3R5cGUsICRpZCwgJGlkX3VybCApICk7 -Cgl9Cgkkc3VtbWFyeS0+YXBwZW5kQ2hpbGQoICRpZF91bCApOwoKCSNzb3VyY2UKCW15ICRzb3Vy -Y2UgPSAkd29yay0+eydzb3VyY2UnfS0+eydzb3VyY2UtbmFtZSd9LT57J3ZhbHVlJ307Cgkkc3Vt -bWFyeS0+YXBwZW5kQ2hpbGQoICRzZWxmLT5yZW5kZXJfb3JjaWRfdGV4dCggJHhtbCwgIlNvdXJj -ZTogJHNvdXJjZSIsICJzb3VyY2UiICkgKTsKCgkjaW1wb3J0CglteSAkaW1wb3J0ID0gJHhtbC0+ -Y3JlYXRlX2VsZW1lbnQoICJkaXYiLCBjbGFzcyA9PiAib3JjaWRfaW1wb3J0IiApOwoJbXkgJGV4 -aXN0aW5nX2lkID0gJHdvcmstPnsnJGV4aXN0aW5nX2lkJ307CgogICAgI21vZGlmaWNhdGlvbiBk -YXRlIChkaXZpZGVkIGJ5IDEwMDAgYmVjYXVzZSBvZiBkaWZmZXJlbnQgdGltZSBoYW5kbGluZyBz -ZWNvbmRzL21pbGxpc2Vjb25kcyBieSBlcG9jaC91bml4KQogICAgbXkgJGNnaSA9IENHSS0+bmV3 -KCk7CiAgICBteSAkZmlsdGVyX2RhdGUgPSAwOwogICAgbXkgJHdvcmtfZGF0ZSA9ICRzZWxmLT5n -ZXRfd29ya19kYXRlKCAkcmVwbywgJHdvcmsgKTsKICAgIGlmKCBkZWZpbmVkICRjZ2ktPnBhcmFt -KCdmaWx0ZXJfZGF0ZScpKQogICAgewogICAgICAgICRmaWx0ZXJfZGF0ZSA9ICRjZ2ktPnBhcmFt -KCdmaWx0ZXJfZGF0ZScpOwogICAgICAgIG15KCAkeWVhciwgJG1vbnRoLCAkZGF5ICkgPSAkZmls -dGVyX2RhdGUgPX4gL14oXGR7NH0pLShcZHsyfSktKFxkezJ9KSQvOwogICAgICAgICRmaWx0ZXJf -ZGF0ZSA9IHRpbWVnbSggMCwgMCwgMCwgJGRheSwgJG1vbnRoLTEsICR5ZWFyLTE5MDAgKTsKICAg -IH0KCWlmKCAkZXhpc3RpbmdfaWQgKQoJewoJCSRpbXBvcnQtPnNldEF0dHJpYnV0ZSggImNsYXNz -IiwgIm9yY2lkX2ltcG9ydCB3YXJuaW5nIiApOwoJCSRpbXBvcnQtPmFwcGVuZENoaWxkKCAkc2Vs -Zi0+cmVuZGVyX2R1cGxpY2F0ZV9yZWNvcmQoICRyZXBvLCAkeG1sLCAkZXhpc3RpbmdfaWQgKSAp -OwogICAgICAgICRsaS0+c2V0QXR0cmlidXRlKCAiY2xhc3MiLCAib3JjaWRfaXRlbSBkdXBsaWNh -dGUiICk7Cgl9CiAgICBlbHNpZiggJHdvcmtfZGF0ZSA8ICRmaWx0ZXJfZGF0ZSApCiAgICB7CgkJ -JGltcG9ydC0+c2V0QXR0cmlidXRlKCAiY2xhc3MiLCAib3JjaWRfaW1wb3J0IHdhcm5pbmciICk7 -CgkJJGltcG9ydC0+YXBwZW5kQ2hpbGQoICRzZWxmLT5yZW5kZXJfZmlsdGVyZWRfcmVjb3JkKCAk -cmVwbywgJHhtbCwgJHdvcmtfZGF0ZSwgJGZpbHRlcl9kYXRlICkgKTsKICAgICAgICAkbGktPnNl -dEF0dHJpYnV0ZSggImNsYXNzIiwgIm9yY2lkX2l0ZW0gZmlsdGVyZWQiICk7CiAgICB9CgllbHNl -Cgl7CgkJJGltcG9ydC0+YXBwZW5kQ2hpbGQoICRzZWxmLT5yZW5kZXJfaW1wb3J0X3dvcmsoICRy -ZXBvLCAkeG1sLCAkd29yayApICk7Cgl9CgoJJGxpLT5hcHBlbmRDaGlsZCggJHN1bW1hcnkgKTsK -CSRsaS0+YXBwZW5kQ2hpbGQoICRpbXBvcnQgKTsKCglyZXR1cm4gJGxpOwp9CgpzdWIgcmVuZGVy -X29yY2lkX3RleHQKewoJbXkoICRzZWxmLCAkeG1sLCAkZGF0YSwgJGNsYXNzICkgPSBAXzsKCglt -eSAkc3BhbiA9ICR4bWwtPmNyZWF0ZV9lbGVtZW50KCAiZGl2IiwgY2xhc3MgPT4gJGNsYXNzICk7 -Cgkkc3Bhbi0+YXBwZW5kQ2hpbGQoICR4bWwtPmNyZWF0ZV90ZXh0X25vZGUoICRkYXRhICkgKTsK -CXJldHVybiAkc3BhbjsKfQoKc3ViIHJlbmRlcl9leHRfaWQKewoJbXkoICRzZWxmLCAkeG1sLCAk -aWRlbnRpZmllciwgJHZhbHVlLCAkdXJsICkgPSBAXzsKCglteSAkaWRfbGkgPSAkeG1sLT5jcmVh -dGVfZWxlbWVudCggImxpIiApOwoJbXkgJGxhYmVsID0gJHhtbC0+Y3JlYXRlX3RleHRfbm9kZSgg -JGlkZW50aWZpZXIgLiAiOiAiICk7CiAgICAkaWRfbGktPmFwcGVuZENoaWxkKCAkbGFiZWwgKTsK -ICAgIGlmKCBkZWZpbmVkICR1cmwgKQogICAgewogICAgICAgIG15ICRsaW5rID0gJHhtbC0+Y3Jl -YXRlX2VsZW1lbnQoICJhIiwgaHJlZj0+JHVybCwgdGFyZ2V0PT4iX2JsYW5rIiApOwogICAgICAg -ICRsaW5rLT5hcHBlbmRDaGlsZCggJHhtbC0+Y3JlYXRlX3RleHRfbm9kZSggJHZhbHVlICkgKTsK -ICAgICAgICAkaWRfbGktPmFwcGVuZENoaWxkKCAkbGluayApOwogICAgfQogICAgZWxzZQogICAg -ewogICAgICAgICRpZF9saS0+YXBwZW5kQ2hpbGQoICR4bWwtPmNyZWF0ZV90ZXh0X25vZGUoICR2 -YWx1ZSApICk7CiAgICB9CglyZXR1cm4gJGlkX2xpOwp9CgpzdWIgcmVuZGVyX2R1cGxpY2F0ZV9y -ZWNvcmQKewoJbXkoICRzZWxmLCAkcmVwbywgJHhtbCwgJGV4aXN0aW5nX2lkICkgPSBAXzsKCW15 -ICRkaXYgPSAkeG1sLT5jcmVhdGVfZWxlbWVudCggImRpdiIsIGNsYXNzID0+ICJkdXBsaWNhdGVf -cmVjb3JkIiApOwoKCSNnZXQgZHVwbGljYXRlIHJlY29yZAoJbXkgJGRzID0gJHJlcG8tPmRhdGFz -ZXQoICJlcHJpbnQiICk7CglteSAkZXByaW50ID0gJGRzLT5kYXRhb2JqKCBAeyRleGlzdGluZ19p -ZH1bMF0gKTsKCSRkaXYtPmFwcGVuZENoaWxkKCAkc2VsZi0+aHRtbF9waHJhc2UoCgkJIm9yY2lk -X2R1cGxpY2F0ZV9yZWNvcmQiLAoJCXRpdGxlID0+ICRlcHJpbnQtPnJlbmRlcl92YWx1ZSggInRp -dGxlIiApCgkpICk7CglyZXR1cm4gJGRpdjsKfQoKc3ViIHJlbmRlcl9maWx0ZXJlZF9yZWNvcmQK -ewoJbXkoICRzZWxmLCAkcmVwbywgJHhtbCwgJHdvcmtfZGF0ZSwgJGZpbHRlcl9kYXRlICkgPSBA -XzsKCW15ICRkaXYgPSAkeG1sLT5jcmVhdGVfZWxlbWVudCggImRpdiIsIGNsYXNzID0+ICJmaWx0 -ZXJlZF9yZWNvcmRfaW5mbyIgKTsKIAogICAgbXkgJGRhdGVfZm9ybWF0ID0gJHJlcG8tPmNvbmZp -ZyggIm9yY2lkX3N1cHBvcnRfYWR2YW5jZSIsICJmaWx0ZXJfZm9ybWF0IiApIHx8ICIlZC8lbS8l -WSI7CgogICAgIyB3b3JrIGRhdGUKICAgIG15ICRkYXRlX3R5cGUgPSAkcmVwby0+Y29uZmlnKCAi -b3JjaWRfc3VwcG9ydF9hZHZhbmNlIiwgImZpbHRlcl9kYXRlIiApIHx8ICJsYXN0LW1vZGlmaWVk -LWRhdGUiOwogICAgJHdvcmtfZGF0ZSA9IHN0cmZ0aW1lICRkYXRlX2Zvcm1hdCwgZ210aW1lKCAk -d29ya19kYXRlICk7CiAgICAkZGl2LT5hcHBlbmRDaGlsZCggJHNlbGYtPmh0bWxfcGhyYXNlKCAk -ZGF0ZV90eXBlICkgKTsKICAgICRkaXYtPmFwcGVuZENoaWxkKCAkeG1sLT5jcmVhdGVfdGV4dF9u -b2RlKCAkd29ya19kYXRlICkgKTsKCiAgICAkZGl2LT5hcHBlbmRDaGlsZCggJHhtbC0+Y3JlYXRl -X2VsZW1lbnQoICJiciIgKSApOwogCiAgICAjIGZpbHRlciBkYXRlCiAgICAkZmlsdGVyX2RhdGUg -PSBzdHJmdGltZSAkZGF0ZV9mb3JtYXQsIGdtdGltZSggJGZpbHRlcl9kYXRlICk7CiAgICAkZGl2 -LT5hcHBlbmRDaGlsZCggJHhtbC0+Y3JlYXRlX3RleHRfbm9kZSggIkZpbHRlciBkYXRlOiAkZmls -dGVyX2RhdGUiICkgKTsKICAgICRkaXYtPmFwcGVuZENoaWxkKCAkeG1sLT5jcmVhdGVfZWxlbWVu -dCggImJyIiApICk7CglyZXR1cm4gJGRpdjsKfQoKCiNjaGVja2JveCBmb3IgaW1wb3J0aW5nIHdv -cmsgdmlhIEpTT04gcmV0dXJuIGZyb20gb3JjaWQub3JnCnN1YiByZW5kZXJfaW1wb3J0X3dvcmsK -ewoJbXkoICRzZWxmLCAkcmVwbywgJHhtbCwgJHdvcmsgKSA9IEBfOwoKCW15ICRkaXYgPSAkeG1s -LT5jcmVhdGVfZWxlbWVudCggImRpdiIsIGNsYXNzID0+ICJvcmNpZF9pbXBvcnRfd29yayIgKTsK -CglteSAkbGFiZWwgPSAkc2VsZi0+aHRtbF9waHJhc2UoICJvcmNpZF9pbXBvcnRfd29yayIgKTsK -CglteSAkY2hlY2tib3ggPSAkcmVwby0+bWFrZV9lbGVtZW50KCAiaW5wdXQiLAogICAgICAgICAg -ICAgICAgICAgICAgICB0eXBlID0+ICJjaGVja2JveCIsCiAgICAgICAgICAgICAgICAgICAgICAg -IG5hbWUgPT4gInB1dC1jb2RlIiwKICAgICAgICAgICAgICAgICAgICAgICAgImFyaWEtbGFiZWwi -ID0+ICR3b3JrLT57J3RpdGxlJ30tPnsndGl0bGUnfS0+eyd2YWx1ZSd9LAogICAgICAgICk7CgoJ -JGNoZWNrYm94LT5zZXRBdHRyaWJ1dGUoICJjaGVja2VkIiwgInllcyIgKTsKICAgICAgICAkY2hl -Y2tib3gtPnNldEF0dHJpYnV0ZSggInZhbHVlIiwgJHdvcmstPnsncHV0LWNvZGUnfSApOwoKCSRk -aXYtPmFwcGVuZENoaWxkKCAkY2hlY2tib3ggKTsKICAgICAgICAkZGl2LT5hcHBlbmRDaGlsZCgg -JGxhYmVsICk7CgoJcmV0dXJuICRkaXY7Cn0KCiNjaGVrY2JveCBmb3IgaW1wb3J0aW5nIHdvcmsg -dmlhIERPSQpzdWIgcmVuZGVyX2ltcG9ydF9kb2kKewoJbXkoICRzZWxmLCAkcmVwbywgJHhtbCwg -JHdvcmtfc3VtbWFyeSApID0gQF87CgoJbXkgJGRpdiA9ICR4bWwtPmNyZWF0ZV9lbGVtZW50KCAi -ZGl2IiwgY2xhc3MgPT4gIm9yY2lkX2ltcG9ydF9kb2kiICk7CgoJbXkgJGxhYmVsID0gJHNlbGYt -Pmh0bWxfcGhyYXNlKCAib3JjaWRfaW1wb3J0X3ZpYV9kb2kiICk7CglteSAkY2hlY2tib3ggPSAk +bWxfcGhyYXNlKCAic2hvd18kZGF0ZV90eXBlIiApICk7CiAgICBteSAkZGF0ZV9waWNrZXIgPSAk +eG1sLT5jcmVhdGVfZWxlbWVudCggImlucHV0IiwgdHlwZSA9PiAiZGF0ZSIsIG5hbWUgPT4gImZp +bHRlcl9kYXRlIiwgImFyaWEtbGFiZWwiID0+ICJGaWx0ZXIgRGF0ZSIsIHZhbHVlID0+ICRxdWVy +eS0+cGFyYW0oJ2ZpbHRlcl9kYXRlJykgKTsKCiAgICAkZmlsdGVyX2RhdGVfZm9ybS0+YXBwZW5k +Q2hpbGQoICRkYXRlX3BpY2tlciApOwogICAgJGZpbHRlcl9kYXRlX2Zvcm0tPmFwcGVuZENoaWxk +KCAkeG1sLT5jcmVhdGVfZWxlbWVudCggImlucHV0IiwgdHlwZSA9PiAic3VibWl0IiwgY2xhc3Mg +PT4gImVwX2Zvcm1fYWN0aW9uX2J1dHRvbiBmaWx0ZXIiLCB2YWx1ZSA9PiAkc2VsZi0+cGhyYXNl +KCAiZmlsdGVyIiApICkgKTsKICAgICRmaWx0ZXJfZGl2LT5hcHBlbmRDaGlsZCggJGZpbHRlcl9k +YXRlX2Zvcm0gKTsKICAgIHJldHVybiAkZmlsdGVyX2RpdjsKfQoKc3ViIHJlbmRlcl9maWx0ZXJf +ZHVwbGljYXRlX2Zvcm0KewogICAgbXkoICRzZWxmLCAkeG1sLCAkcXVlcnkgKSA9IEBfOwogICAg +bXkgJGR1cGxpY2F0ZV9kaXYgPSAkeG1sLT5jcmVhdGVfZWxlbWVudCggImRpdiIsIGNsYXNzID0+ +ICJmaWx0ZXJfZHVwbGljYXRlIiApOwogICAgbXkgJGZpbHRlcl9kdXBsaWNhdGVfZm9ybSA9ICR4 +bWwtPmNyZWF0ZV9lbGVtZW50KCAiZm9ybSIsIG1ldGhvZCA9PiAiZ2V0IiwgYWN0aW9uID0+ICIv +Y2dpL3VzZXJzL2hvbWUiICk7CiAgICAkZmlsdGVyX2R1cGxpY2F0ZV9mb3JtLT5hcHBlbmRDaGls +ZCggJHhtbC0+Y3JlYXRlX2VsZW1lbnQoICJpbnB1dCIsIHR5cGUgPT4gImhpZGRlbiIsIG5hbWUg +PT4gInNjcmVlbiIsIGlkID0+ICJzY3JlZW4iLCB2YWx1ZSA9PiAiSW1wb3J0RnJvbU9yY2lkIikg +KTsKCiAgICAjIFNhdmUgb3RoZXIgcGFyYW1zCiAgICBteSAkcXVlcnlfZGF0YXNldCA9ICRxdWVy +eS0+cGFyYW0oJ2RhdGFzZXQnKTsKICAgIG15ICRxdWVyeV9kYXRhb2JqID0gJHF1ZXJ5LT5wYXJh +bSgnZGF0YW9iaicpOwogICAgbXkgJHF1ZXJ5X2RhdGUgPSAkcXVlcnktPnBhcmFtKCdmaWx0ZXJf +ZGF0ZScpOwogICAgbXkgJHF1ZXJ5X2R1cGxpY2F0ZSA9ICRxdWVyeS0+cGFyYW0oJ2hpZGVfZHVw +bGljYXRlcycpOwogICAgaWYoIGRlZmluZWQoJHF1ZXJ5X2RhdGFzZXQpICYmIGRlZmluZWQoJHF1 +ZXJ5X2RhdGFvYmopICkgewogICAgICAgICRmaWx0ZXJfZHVwbGljYXRlX2Zvcm0tPmFwcGVuZENo +aWxkKCAkeG1sLT5jcmVhdGVfZWxlbWVudCggImlucHV0IiwgdHlwZSA9PiAiaGlkZGVuIiwgbmFt +ZSA9PiAiZGF0YXNldCIsIHZhbHVlID0+ICRxdWVyeV9kYXRhc2V0KSApOwogICAgICAgICRmaWx0 +ZXJfZHVwbGljYXRlX2Zvcm0tPmFwcGVuZENoaWxkKCAkeG1sLT5jcmVhdGVfZWxlbWVudCggImlu +cHV0IiwgdHlwZSA9PiAiaGlkZGVuIiwgbmFtZSA9PiAiZGF0YW9iaiIsIHZhbHVlID0+ICRxdWVy +eV9kYXRhb2JqKSApOwogICAgfQogICAgaWYoIGRlZmluZWQoJHF1ZXJ5X2RhdGUpICl7CiAgICAg +ICAgJGZpbHRlcl9kdXBsaWNhdGVfZm9ybS0+YXBwZW5kQ2hpbGQoICR4bWwtPmNyZWF0ZV9lbGVt +ZW50KCAiaW5wdXQiLCB0eXBlID0+ICJoaWRkZW4iLCBuYW1lID0+ICJmaWx0ZXJfZGF0ZSIsIHZh +bHVlID0+ICRxdWVyeV9kYXRlKSApOwogICAgfQoKICAgIGlmKCBkZWZpbmVkKCRxdWVyeV9kdXBs +aWNhdGUpICkKICAgIHsKICAgICAgICBpZiggJHF1ZXJ5X2R1cGxpY2F0ZSA9PSAxICkKICAgICAg +ICB7CiAgICAgICAgICAgICRmaWx0ZXJfZHVwbGljYXRlX2Zvcm0tPmFwcGVuZENoaWxkKCAkeG1s +LT5jcmVhdGVfZWxlbWVudCggImlucHV0IiwgdHlwZSA9PiAiaGlkZGVuIiwgbmFtZSA9PiAiaGlk +ZV9kdXBsaWNhdGVzIiwgdmFsdWUgPT4gMCkgKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAg +ICAkZmlsdGVyX2R1cGxpY2F0ZV9mb3JtLT5hcHBlbmRDaGlsZCggJHhtbC0+Y3JlYXRlX2VsZW1l +bnQoICJpbnB1dCIsIHR5cGUgPT4gImhpZGRlbiIsIG5hbWUgPT4gImhpZGVfZHVwbGljYXRlcyIs +IHZhbHVlID0+IDEpICk7CiAgICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgICAkZmlsdGVyX2R1 +cGxpY2F0ZV9mb3JtLT5hcHBlbmRDaGlsZCggJHhtbC0+Y3JlYXRlX2VsZW1lbnQoICJpbnB1dCIs +IHR5cGUgPT4gImhpZGRlbiIsIG5hbWUgPT4gImhpZGVfZHVwbGljYXRlcyIsIHZhbHVlID0+IDAp +ICk7CiAgICB9CgoKICAgICRmaWx0ZXJfZHVwbGljYXRlX2Zvcm0tPmFwcGVuZENoaWxkKCAkc2Vs +Zi0+aHRtbF9waHJhc2UoICJkdXBsaWNhdGVzIiApICk7CiAgICAkZmlsdGVyX2R1cGxpY2F0ZV9m +b3JtLT5hcHBlbmRDaGlsZCggJHhtbC0+Y3JlYXRlX2VsZW1lbnQoICJpbnB1dCIsIHR5cGUgPT4g +InN1Ym1pdCIsIGNsYXNzID0+ICJlcF9mb3JtX2FjdGlvbl9idXR0b24gZmlsdGVyIiwgdmFsdWUg +PT4gJHNlbGYtPnBocmFzZSggInNob3dfaGlkZV9kdXBsaWNhdGVzIiApKSk7CiAgICAkZHVwbGlj +YXRlX2Rpdi0+YXBwZW5kQ2hpbGQoICRmaWx0ZXJfZHVwbGljYXRlX2Zvcm0gKTsKICAgIHJldHVy +biAkZHVwbGljYXRlX2RpdjsKfQoKI2NvbnN0cnVjdCB0aGUgaW1wb3J0IERPTSBjb21wb25lbnRz +CnN1YiByZW5kZXJfb3JjaWRfaW1wb3J0CnsKCW15KCAkc2VsZiwgJHJlcG8sICR1c2VyLCAkeG1s +LCAkd29ya3MgKSA9IEBfOwoJbXkgJGZvcm0gPSAkc2VsZi0+cmVuZGVyX2Zvcm0oICJQT1NUIiAp +OwogICAgICAgICRmb3JtLT5hcHBlbmRDaGlsZCggJHJlcG8tPnJlbmRlcl9oaWRkZW5fZmllbGQo +ICJvcmNpZF91c2VyaWQiLCAkdXNlci0+aWQgKSApOwoKCSRmb3JtLT5hcHBlbmRDaGlsZCggJHNl +bGYtPnJlbmRlcl9vcmNpZF9pbXBvcnRfaW50cm8oICR4bWwgKSApOwoJJGZvcm0tPmFwcGVuZENo +aWxkKCAkc2VsZi0+cmVuZGVyX29yY2lkX3JlY29yZHMoICRyZXBvLCAkd29ya3MgKSApOwoJJGZv +cm0tPmFwcGVuZENoaWxkKCAkc2VsZi0+cmVuZGVyX29yY2lkX2ltcG9ydF9vdXRybyggJHhtbCAp +ICk7CgoJcmV0dXJuICRmb3JtOwp9CgpzdWIgcmVuZGVyX29yY2lkX2ltcG9ydF9pbnRybwp7CiAg +ICAgICAgbXkoICRzZWxmLCAkeG1sICkgPSBAXzsKICAgICAgICBteSAkaW50cm9fZGl2ID0gJHht +bC0+Y3JlYXRlX2VsZW1lbnQoICJkaXYiLCBjbGFzcyA9PiAiaW1wb3J0X2ludHJvIiApOwoKICAg +ICAgICAjcmVuZGVyIGltcG9ydCBidXR0b24KICAgICAgICBteSAkYnRuX2RpdiA9ICR4bWwtPmNy +ZWF0ZV9lbGVtZW50KCAiZGl2IiwgY2xhc3MgPT4gImltcG9ydF9pbnRyb19idG4iICk7CiAgICAg +ICAgbXkgJGJ1dHRvbiA9ICRidG5fZGl2LT5hcHBlbmRDaGlsZCggJHhtbC0+Y3JlYXRlX2VsZW1l +bnQoICJidXR0b24iLAogICAgICAgICAgICAgICAgICAgICAgICB0eXBlID0+ICJzdWJtaXQiLAog +ICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0+ICJfYWN0aW9uX2ltcG9ydCIsCiAgICAgICAg +ICAgICAgICAgICAgICAgIGNsYXNzID0+ICJlcF9mb3JtX2FjdGlvbl9idXR0b24iLAogICAgICAg +ICkgKTsKICAgICAgICAkYnV0dG9uLT5hcHBlbmRDaGlsZCggJHhtbC0+Y3JlYXRlX3RleHRfbm9k +ZSggIkltcG9ydCIgKSApOwoKICAgICAgICAjIHRvZ2dsZSBzd2l0Y2gKICAgICAgICBteSAkdG9n +Z2xlX2J1dHRvbiA9ICRidG5fZGl2LT5hcHBlbmRDaGlsZCggJHhtbC0+Y3JlYXRlX2VsZW1lbnQo +ICJidXR0b24iLAogICAgICAgICAgICAgICAgICAgICAgICB0eXBlID0+ICJidXR0b24iLAogICAg +ICAgICAgICAgICAgICAgICAgICBvbmNsaWNrID0+ICJ0b2dnbGVPcmNpZENoZWNrYm94KCk7IiwK +ICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MgPT4gImVwX2Zvcm1fYWN0aW9uX2J1dHRvbiB0 +b2dnbGVfYnV0dG9uIiwKICAgICAgICApICk7CiMgICAgICAgICR0b2dnbGVfYnV0dG9uLT5hcHBl +bmRDaGlsZCggJHhtbC0+Y3JlYXRlX3RleHRfbm9kZSggJHNlbGYtPmh0bWxfcGhyYXNlKCAic2Vs +ZWN0IiApICkgKTsKICAgICAgICAkdG9nZ2xlX2J1dHRvbi0+YXBwZW5kQ2hpbGQoICRzZWxmLT5o +dG1sX3BocmFzZSggInNlbGVjdCIgKSApOwoKICAgICAgICAkaW50cm9fZGl2LT5hcHBlbmRDaGls +ZCggJGJ0bl9kaXYgKTsKCiAgICAgICAgcmV0dXJuICRpbnRyb19kaXY7Cn0KCnN1YiByZW5kZXJf +b3JjaWRfaW1wb3J0X291dHJvCnsKCW15KCAkc2VsZiwgJHhtbCApID0gQF87CgoJbXkgJGJ0bl9k +aXYgPSAkeG1sLT5jcmVhdGVfZWxlbWVudCggImRpdiIsIGNsYXNzID0+ICJpbXBvcnRfb3V0cm9f +YnV0dG9uIiApOwoKCW15ICRidXR0b24gPSAkYnRuX2Rpdi0+YXBwZW5kQ2hpbGQoICR4bWwtPmNy +ZWF0ZV9lbGVtZW50KCAiYnV0dG9uIiwKCQl0eXBlID0+ICJzdWJtaXQiLAoJCW5hbWUgPT4gIl9h +Y3Rpb25faW1wb3J0IiwKCQljbGFzcyA9PiAiZXBfZm9ybV9hY3Rpb25fYnV0dG9uIiwKCSkgKTsK +CSRidXR0b24tPmFwcGVuZENoaWxkKCAkeG1sLT5jcmVhdGVfdGV4dF9ub2RlKCAiSW1wb3J0IiAp +ICk7CgogICAgIyB0b2dnbGUgc3dpdGNoCiAgICBteSAkdG9nZ2xlX2J1dHRvbiA9ICRidG5fZGl2 +LT5hcHBlbmRDaGlsZCggJHhtbC0+Y3JlYXRlX2VsZW1lbnQoICJidXR0b24iLAogICAgICAgICAg +ICAgICAgICAgIHR5cGUgPT4gImJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgb25jbGljayA9 +PiAidG9nZ2xlT3JjaWRDaGVja2JveCgpOyIsCiAgICAgICAgICAgICAgICAgICAgY2xhc3MgPT4g +ImVwX2Zvcm1fYWN0aW9uX2J1dHRvbiB0b2dnbGVfYnV0dG9uIiwKICAgICkgKTsKICAgICR0b2dn +bGVfYnV0dG9uLT5hcHBlbmRDaGlsZCggJHNlbGYtPmh0bWxfcGhyYXNlKCAic2VsZWN0IiApICk7 +CgoJcmV0dXJuICRidG5fZGl2Owp9CgpzdWIgcmVuZGVyX29yY2lkX3JlY29yZHMKewoJbXkoICRz +ZWxmLCAkcmVwbywgJHdvcmtzICkgPSBAXzsKCglteSAkeG1sID0gJHJlcG8tPnhtbDsKCW15ICRp +bXBvcnRfY291bnQgPSAwOwoJbXkgJGZpZWxkc2V0ID0gJHhtbC0+Y3JlYXRlX2VsZW1lbnQoICJm +aWVsZHNldCIsIGNsYXNzID0+ICJvcmNpZF9pbXBvcnRzIiApOwoKICAgIG15ICRsZWdlbmQgPSAk +eG1sLT5jcmVhdGVfZWxlbWVudCggImxlZ2VuZCIsIGlkPT4ib3JjaWRfaW1wb3J0X2xlZ2VuZCIs +IGNsYXNzPT4iZXBfZmllbGRfbGVnZW5kIiApOwogICAgJGxlZ2VuZC0+YXBwZW5kQ2hpbGQoICRz +ZWxmLT5odG1sX3BocmFzZSggImltcG9ydF9oZWxwIiApICk7CiAgICAkZmllbGRzZXQtPmFwcGVu +ZENoaWxkKCAkbGVnZW5kICk7CgogICAgZm9yZWFjaCBteSAkd29yayAoIEB7JHdvcmtzfSApCgl7 +CgkJJGZpZWxkc2V0LT5hcHBlbmRDaGlsZCggJHNlbGYtPnJlbmRlcl9vcmNpZF9pdGVtKCAkcmVw +bywgJHhtbCwgJHdvcmsgKSApOwogICAgICAgICRpbXBvcnRfY291bnQrKzsKCX0KICAgIGlmKCAk +aW1wb3J0X2NvdW50ID09IDAgKSB7CiAgICAgICAgJGZpZWxkc2V0LT5hcHBlbmRDaGlsZCggJHNl +bGYtPmh0bWxfcGhyYXNlKCAibm9faXRlbXMiICkgKTsKICAgIH0KCXJldHVybiAkZmllbGRzZXQ7 +Cn0KCnN1YiByZW5kZXJfb3JjaWRfaXRlbQp7CglteSggJHNlbGYsICRyZXBvLCAkeG1sLCAkd29y +ayApID0gQF87CglteSAkbGkgPSAkeG1sLT5jcmVhdGVfZWxlbWVudCggImRpdiIsIGNsYXNzID0+ +ICJvcmNpZF9pdGVtIiApOwoKCW15ICRzdW1tYXJ5ID0gJHhtbC0+Y3JlYXRlX2VsZW1lbnQoICJk +aXYiLCBjbGFzcyA9PiAib3JjaWRfc3VtbWFyeSIgKTsKCSNyZW5kZXIgdGl0bGUKCW15ICR0aXRs +ZSA9ICR3b3JrLT57J3RpdGxlJ30tPnsndGl0bGUnfS0+eyd2YWx1ZSd9OwoJJHN1bW1hcnktPmFw +cGVuZENoaWxkKCAkc2VsZi0+cmVuZGVyX29yY2lkX3RleHQoICR4bWwsICR0aXRsZSwgInRpdGxl +IiApICk7CiAgICBpZiggZGVmaW5lZCAkd29yay0+eyd0aXRsZSd9LT57J3N1YnRpdGxlJ30gKQog +ICAgewogICAgICAgICRzdW1tYXJ5LT5hcHBlbmRDaGlsZCggJHNlbGYtPnJlbmRlcl9vcmNpZF90 +ZXh0KCAkeG1sLCAkd29yay0+eyd0aXRsZSd9LT57J3N1YnRpdGxlJ30tPnsndmFsdWUnfSwgInN1 +YnRpdGxlIiApICk7CiAgICB9CgoJI2dldCBkYXRlICsgdHlwZQoJbXkgJGRhdGUgPSAiIjsKICAg +ICAgICAkZGF0ZSAuPSAkd29yay0+eydwdWJsaWNhdGlvbi1kYXRlJ30tPnsnZGF5J30tPnsndmFs +dWUnfSBpZiAkd29yay0+eydwdWJsaWNhdGlvbi1kYXRlJ30tPnsnZGF5J30tPnsndmFsdWUnfTsK +ICAgICAgICAkZGF0ZSAuPSAiLyIuJHdvcmstPnsncHVibGljYXRpb24tZGF0ZSd9LT57J21vbnRo +J30tPnsndmFsdWUnfSBpZiAkd29yay0+eydwdWJsaWNhdGlvbi1kYXRlJ30tPnsnbW9udGgnfS0+ +eyd2YWx1ZSd9OwogICAgICAgICRkYXRlIC49ICIvIi4kd29yay0+eydwdWJsaWNhdGlvbi1kYXRl +J30tPnsneWVhcid9LT57J3ZhbHVlJ30gaWYgJHdvcmstPnsncHVibGljYXRpb24tZGF0ZSd9LT57 +J3llYXInfS0+eyd2YWx1ZSd9OwoKCSN0eXBlCglteSAkdHlwZSA9ICR3b3JrLT57J3R5cGUnfTsK +CgkjZGF0ZXx0eXBlIHN0cmluZwoJbXkgJGRhdGVfdHlwZSA9ICIiOwoJJGRhdGVfdHlwZSAuPSAk +ZGF0ZSBpZiAkZGF0ZSBuZSAiIjsKCSRkYXRlX3R5cGUgLj0gIiB8ICIgaWYgJGRhdGUgbmUgIiIg +JiYgZGVmaW5lZCAkdHlwZTsKCSRkYXRlX3R5cGUgLj0gJHR5cGUgaWYgZGVmaW5lZCAkdHlwZTsK +CSRzdW1tYXJ5LT5hcHBlbmRDaGlsZCggJHNlbGYtPnJlbmRlcl9vcmNpZF90ZXh0KCAkeG1sLCAk +ZGF0ZV90eXBlLCAiZGF0ZS10eXBlIiApICk7CgoJI2V4dCBpZGVudGlmaWVycwoJbXkgJGV4dF9p +ZHMgPSAkd29yay0+eydleHRlcm5hbC1pZHMnfS0+eydleHRlcm5hbC1pZCd9OwoJbXkgJGlkX3Vs +ID0gJHhtbC0+Y3JlYXRlX2VsZW1lbnQoICJ1bCIsIGNsYXNzID0+ICJleHRlcm5hbF9pZGVudGlm +aWVycyIgKTsKICAgICAgICBmb3JlYWNoIG15ICRleHRfaWQgKCBAJGV4dF9pZHMgKQogICAgICAg +IHsKICAgICAgICAgICAgbXkgJGlkX3R5cGUgPSAkZXh0X2lkLT57J2V4dGVybmFsLWlkLXR5cGUn +fTsKICAgICAgICAgICAgbXkgJGlkID0gJGV4dF9pZC0+eydleHRlcm5hbC1pZC12YWx1ZSd9Owog +ICAgICAgICAgICBteSAkaWRfdXJsID0gJGV4dF9pZC0+eydleHRlcm5hbC1pZC11cmwnfS0+eyd2 +YWx1ZSd9OwogICAgICAgICAgICAkaWRfdWwtPmFwcGVuZENoaWxkKCAkc2VsZi0+cmVuZGVyX2V4 +dF9pZCggJHhtbCwgJGlkX3R5cGUsICRpZCwgJGlkX3VybCApICk7Cgl9Cgkkc3VtbWFyeS0+YXBw +ZW5kQ2hpbGQoICRpZF91bCApOwoKCSNzb3VyY2UKCW15ICRzb3VyY2UgPSAkd29yay0+eydzb3Vy +Y2UnfS0+eydzb3VyY2UtbmFtZSd9LT57J3ZhbHVlJ307Cgkkc3VtbWFyeS0+YXBwZW5kQ2hpbGQo +ICRzZWxmLT5yZW5kZXJfb3JjaWRfdGV4dCggJHhtbCwgIlNvdXJjZTogJHNvdXJjZSIsICJzb3Vy +Y2UiICkgKTsKCgkjaW1wb3J0CglteSAkaW1wb3J0ID0gJHhtbC0+Y3JlYXRlX2VsZW1lbnQoICJk +aXYiLCBjbGFzcyA9PiAib3JjaWRfaW1wb3J0IiApOwoJbXkgJGV4aXN0aW5nX2lkID0gJHdvcmst +PnsnJGV4aXN0aW5nX2lkJ307CgogICAgI21vZGlmaWNhdGlvbiBkYXRlIChkaXZpZGVkIGJ5IDEw +MDAgYmVjYXVzZSBvZiBkaWZmZXJlbnQgdGltZSBoYW5kbGluZyBzZWNvbmRzL21pbGxpc2Vjb25k +cyBieSBlcG9jaC91bml4KQogICAgbXkgJGNnaSA9IENHSS0+bmV3KCk7CiAgICBteSAkZmlsdGVy +X2RhdGUgPSAwOwogICAgbXkgJHdvcmtfZGF0ZSA9ICRzZWxmLT5nZXRfd29ya19kYXRlKCAkcmVw +bywgJHdvcmsgKTsKICAgIGlmKCBkZWZpbmVkICRjZ2ktPnBhcmFtKCdmaWx0ZXJfZGF0ZScpKQog +ICAgewogICAgICAgICRmaWx0ZXJfZGF0ZSA9ICRjZ2ktPnBhcmFtKCdmaWx0ZXJfZGF0ZScpOwog +ICAgICAgIG15KCAkeWVhciwgJG1vbnRoLCAkZGF5ICkgPSAkZmlsdGVyX2RhdGUgPX4gL14oXGR7 +NH0pLShcZHsyfSktKFxkezJ9KSQvOwogICAgICAgICRmaWx0ZXJfZGF0ZSA9IHRpbWVnbSggMCwg +MCwgMCwgJGRheSwgJG1vbnRoLTEsICR5ZWFyLTE5MDAgKTsKICAgIH0KCWlmKCAkZXhpc3Rpbmdf +aWQgKQoJewoJCSRpbXBvcnQtPnNldEF0dHJpYnV0ZSggImNsYXNzIiwgIm9yY2lkX2ltcG9ydCB3 +YXJuaW5nIiApOwoJCSRpbXBvcnQtPmFwcGVuZENoaWxkKCAkc2VsZi0+cmVuZGVyX2R1cGxpY2F0 +ZV9yZWNvcmQoICRyZXBvLCAkeG1sLCAkZXhpc3RpbmdfaWQgKSApOwogICAgICAgICRsaS0+c2V0 +QXR0cmlidXRlKCAiY2xhc3MiLCAib3JjaWRfaXRlbSBkdXBsaWNhdGUiICk7Cgl9CiAgICBlbHNp +ZiggJHdvcmtfZGF0ZSA8ICRmaWx0ZXJfZGF0ZSApCiAgICB7CgkJJGltcG9ydC0+c2V0QXR0cmli +dXRlKCAiY2xhc3MiLCAib3JjaWRfaW1wb3J0IHdhcm5pbmciICk7CgkJJGltcG9ydC0+YXBwZW5k +Q2hpbGQoICRzZWxmLT5yZW5kZXJfZmlsdGVyZWRfcmVjb3JkKCAkcmVwbywgJHhtbCwgJHdvcmtf +ZGF0ZSwgJGZpbHRlcl9kYXRlICkgKTsKICAgICAgICAkbGktPnNldEF0dHJpYnV0ZSggImNsYXNz +IiwgIm9yY2lkX2l0ZW0gZmlsdGVyZWQiICk7CiAgICB9CgllbHNlCgl7CgkJJGltcG9ydC0+YXBw +ZW5kQ2hpbGQoICRzZWxmLT5yZW5kZXJfaW1wb3J0X3dvcmsoICRyZXBvLCAkeG1sLCAkd29yayAp +ICk7Cgl9CgoJJGxpLT5hcHBlbmRDaGlsZCggJHN1bW1hcnkgKTsKCSRsaS0+YXBwZW5kQ2hpbGQo +ICRpbXBvcnQgKTsKCglyZXR1cm4gJGxpOwp9CgpzdWIgcmVuZGVyX29yY2lkX3RleHQKewoJbXko +ICRzZWxmLCAkeG1sLCAkZGF0YSwgJGNsYXNzICkgPSBAXzsKCglteSAkc3BhbiA9ICR4bWwtPmNy +ZWF0ZV9lbGVtZW50KCAiZGl2IiwgY2xhc3MgPT4gJGNsYXNzICk7Cgkkc3Bhbi0+YXBwZW5kQ2hp +bGQoICR4bWwtPmNyZWF0ZV90ZXh0X25vZGUoICRkYXRhICkgKTsKCXJldHVybiAkc3BhbjsKfQoK +c3ViIHJlbmRlcl9leHRfaWQKewoJbXkoICRzZWxmLCAkeG1sLCAkaWRlbnRpZmllciwgJHZhbHVl +LCAkdXJsICkgPSBAXzsKCglteSAkaWRfbGkgPSAkeG1sLT5jcmVhdGVfZWxlbWVudCggImxpIiAp +OwoJbXkgJGxhYmVsID0gJHhtbC0+Y3JlYXRlX3RleHRfbm9kZSggJGlkZW50aWZpZXIgLiAiOiAi +ICk7CiAgICAkaWRfbGktPmFwcGVuZENoaWxkKCAkbGFiZWwgKTsKICAgIGlmKCBkZWZpbmVkICR1 +cmwgKQogICAgewogICAgICAgIG15ICRsaW5rID0gJHhtbC0+Y3JlYXRlX2VsZW1lbnQoICJhIiwg +aHJlZj0+JHVybCwgdGFyZ2V0PT4iX2JsYW5rIiApOwogICAgICAgICRsaW5rLT5hcHBlbmRDaGls +ZCggJHhtbC0+Y3JlYXRlX3RleHRfbm9kZSggJHZhbHVlICkgKTsKICAgICAgICAkaWRfbGktPmFw +cGVuZENoaWxkKCAkbGluayApOwogICAgfQogICAgZWxzZQogICAgewogICAgICAgICRpZF9saS0+ +YXBwZW5kQ2hpbGQoICR4bWwtPmNyZWF0ZV90ZXh0X25vZGUoICR2YWx1ZSApICk7CiAgICB9Cgly +ZXR1cm4gJGlkX2xpOwp9CgpzdWIgcmVuZGVyX2R1cGxpY2F0ZV9yZWNvcmQKewoJbXkoICRzZWxm +LCAkcmVwbywgJHhtbCwgJGV4aXN0aW5nX2lkICkgPSBAXzsKCW15ICRkaXYgPSAkeG1sLT5jcmVh +dGVfZWxlbWVudCggImRpdiIsIGNsYXNzID0+ICJkdXBsaWNhdGVfcmVjb3JkIiApOwoKCSNnZXQg +ZHVwbGljYXRlIHJlY29yZAoJbXkgJGRzID0gJHJlcG8tPmRhdGFzZXQoICJlcHJpbnQiICk7Cglt +eSAkZXByaW50ID0gJGRzLT5kYXRhb2JqKCBAeyRleGlzdGluZ19pZH1bMF0gKTsKCSRkaXYtPmFw +cGVuZENoaWxkKCAkc2VsZi0+aHRtbF9waHJhc2UoCgkJIm9yY2lkX2R1cGxpY2F0ZV9yZWNvcmQi +LAoJCXRpdGxlID0+ICRlcHJpbnQtPnJlbmRlcl92YWx1ZSggInRpdGxlIiApCgkpICk7CglyZXR1 +cm4gJGRpdjsKfQoKc3ViIHJlbmRlcl9maWx0ZXJlZF9yZWNvcmQKewoJbXkoICRzZWxmLCAkcmVw +bywgJHhtbCwgJHdvcmtfZGF0ZSwgJGZpbHRlcl9kYXRlICkgPSBAXzsKCW15ICRkaXYgPSAkeG1s +LT5jcmVhdGVfZWxlbWVudCggImRpdiIsIGNsYXNzID0+ICJmaWx0ZXJlZF9yZWNvcmRfaW5mbyIg +KTsKIAogICAgbXkgJGRhdGVfZm9ybWF0ID0gJHJlcG8tPmNvbmZpZyggIm9yY2lkX3N1cHBvcnRf +YWR2YW5jZSIsICJmaWx0ZXJfZm9ybWF0IiApIHx8ICIlZC8lbS8lWSI7CgogICAgIyB3b3JrIGRh +dGUKICAgIG15ICRkYXRlX3R5cGUgPSAkcmVwby0+Y29uZmlnKCAib3JjaWRfc3VwcG9ydF9hZHZh +bmNlIiwgImZpbHRlcl9kYXRlIiApIHx8ICJsYXN0LW1vZGlmaWVkLWRhdGUiOwogICAgJHdvcmtf +ZGF0ZSA9IHN0cmZ0aW1lICRkYXRlX2Zvcm1hdCwgZ210aW1lKCAkd29ya19kYXRlICk7CiAgICAk +ZGl2LT5hcHBlbmRDaGlsZCggJHNlbGYtPmh0bWxfcGhyYXNlKCAkZGF0ZV90eXBlICkgKTsKICAg +ICRkaXYtPmFwcGVuZENoaWxkKCAkeG1sLT5jcmVhdGVfdGV4dF9ub2RlKCAkd29ya19kYXRlICkg +KTsKCiAgICAkZGl2LT5hcHBlbmRDaGlsZCggJHhtbC0+Y3JlYXRlX2VsZW1lbnQoICJiciIgKSAp +OwogCiAgICAjIGZpbHRlciBkYXRlCiAgICAkZmlsdGVyX2RhdGUgPSBzdHJmdGltZSAkZGF0ZV9m +b3JtYXQsIGdtdGltZSggJGZpbHRlcl9kYXRlICk7CiAgICAkZGl2LT5hcHBlbmRDaGlsZCggJHht +bC0+Y3JlYXRlX3RleHRfbm9kZSggIkZpbHRlciBkYXRlOiAkZmlsdGVyX2RhdGUiICkgKTsKICAg +ICRkaXYtPmFwcGVuZENoaWxkKCAkeG1sLT5jcmVhdGVfZWxlbWVudCggImJyIiApICk7CglyZXR1 +cm4gJGRpdjsKfQoKCiNjaGVja2JveCBmb3IgaW1wb3J0aW5nIHdvcmsgdmlhIEpTT04gcmV0dXJu +IGZyb20gb3JjaWQub3JnCnN1YiByZW5kZXJfaW1wb3J0X3dvcmsKewoJbXkoICRzZWxmLCAkcmVw +bywgJHhtbCwgJHdvcmsgKSA9IEBfOwoKCW15ICRkaXYgPSAkeG1sLT5jcmVhdGVfZWxlbWVudCgg +ImRpdiIsIGNsYXNzID0+ICJvcmNpZF9pbXBvcnRfd29yayIgKTsKCglteSAkbGFiZWwgPSAkc2Vs +Zi0+aHRtbF9waHJhc2UoICJvcmNpZF9pbXBvcnRfd29yayIgKTsKCglteSAkY2hlY2tib3ggPSAk cmVwby0+bWFrZV9lbGVtZW50KCAiaW5wdXQiLAogICAgICAgICAgICAgICAgICAgICAgICB0eXBl -ID0+ICJjaGVja2JveCIsCiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPT4gImRvaSIsCiAg -ICAgICAgKTsKCgkjZ2V0IHRoZSBET0kKCW15ICRkb2k7CglteSAkZXh0X2lkcyA9ICR3b3JrX3N1 -bW1hcnktPnsnZXh0ZXJuYWwtaWRzJ30tPnsnZXh0ZXJuYWwtaWQnfTsKICAgICAgICBmb3JlYWNo -IG15ICRleHRfaWQgKCBAJGV4dF9pZHMgKQogICAgICAgIHsKICAgICAgICAgICAgICAgIGlmKCAk -ZXh0X2lkLT57J2V4dGVybmFsLWlkLXR5cGUnfSBlcSAiZG9pIiApCgkJewoJCQkkZG9pID0gJGV4 -dF9pZC0+eydleHRlcm5hbC1pZC12YWx1ZSd9OwoJCQlsYXN0OwoJCX0KICAgICAgICB9CgoJaWYo -IGRlZmluZWQgJGRvaSApCgl7CgkJI3JlZm9ybWF0IGRvaSBmb3IgaW1wb3J0IHBsdWdpbgoJCSRk -b2kgPX4gcy9eKGh0dHAocyk/OlwvXC8oZHhcLik/ZG9pXC5vcmdcLykvL2k7CgoJCSRjaGVja2Jv -eC0+c2V0QXR0cmlidXRlKCAiY2hlY2tlZCIsICJ5ZXMiICk7CgkJJGNoZWNrYm94LT5zZXRBdHRy -aWJ1dGUoICJ2YWx1ZSIsICRkb2kgKTsKCX0KCWVsc2UKCXsKCQkkY2hlY2tib3gtPnNldEF0dHJp -YnV0ZSggImRpc2FibGVkIiApOwoJfQoKCSRkaXYtPmFwcGVuZENoaWxkKCAkY2hlY2tib3ggKTsK -ICAgICAgICAkZGl2LT5hcHBlbmRDaGlsZCggJGxhYmVsICk7CgoJcmV0dXJuICRkaXY7Cn0KCgpz -dWIgaW1wb3J0X3ZpYV9vcmNpZAp7CglteSggJHNlbGYsICRyZXBvLCAkdXNlciwgJHdvcmsgKSA9 -IEBfOwoKCSNJZiB3ZSBoYXZlIGEgd29yazpjaXRhdGlvbiBhbmQgYW4gaW1wb3J0IHBsdWdpbiB0 -aGF0IGNhbgoJI3Byb2Nlc3MgaXQsIHdlIHNob3VsZCB1c2UgdGhhdCB0byAicHJpbWUiIHRoZSBl -cHJpbnQuCgkjUGFyc2VkIE9SQ0lEIGRhdGEgd2lsbCB0aGVuIHRha2UgcHJlY2VkZW50CgoJbXkg -JGVwZGF0YSA9IHt9OwoKCWlmKEVQcmludHM6OlV0aWxzOjppc19zZXQoJHdvcmstPntjaXRhdGlv -bn0pKXsKCgkJbXkgJHRtcGZpbGUgPSBGaWxlOjpUZW1wLT5uZXc7CgkJYmlubW9kZSgkdG1wZmls -ZSwgIjp1dGY4Iik7CgkJcHJpbnQgJHRtcGZpbGUgJHdvcmstPntjaXRhdGlvbn0tPnsiY2l0YXRp -b24tdmFsdWUifTsKCQlzZWVrKCR0bXBmaWxlLCAwLCAwKTsKCgkJaWYoRVByaW50czo6VXRpbHM6 -OmlzX3NldCgkd29yay0+e2NpdGF0aW9ufS0+eyJjaXRhdGlvbi10eXBlIn0pKXsKCQkgICAgbXkg -JHBsdWdpbmlkID0gJHJlcG8tPmNvbmZpZyggIm9yY2lkX3N1cHBvcnRfYWR2YW5jZSIsICJpbXBv -cnRfY2l0YXRpb25fdHlwZV9tYXAiICktPnskd29yay0+e2NpdGF0aW9ufS0+eyJjaXRhdGlvbi10 -eXBlIn19OwoJIAkgICAgbXkgJHBsdWdpbiA9ICRyZXBvLT5wbHVnaW4oICJJbXBvcnQ6OiIuJHBs -dWdpbmlkICk7CgoJCSAgICB1bmxlc3MoICFkZWZpbmVkICRwbHVnaW4gKQoJCSAgICB7CgkJCSAg -ICBteSAkcGFyc2VyID0gQmliVGVYOjpQYXJzZXItPm5ldyggJHRtcGZpbGUgKTsKCQkJICAgIHdo -aWxlKG15ICRlbnRyeSA9ICRwYXJzZXItPm5leHQpCgkJCSAgICB7CgkJCQlpZiggISRlbnRyeS0+ -cGFyc2Vfb2sgKQoJCQkJewoJCQkJICAgICRwbHVnaW4tPndhcm5pbmcoICJFcnJvciBwYXJzaW5n -OiAiIC4gJGVudHJ5LT5lcnJvciApOwoJCQkJICAgIG5leHQ7CgkJCQl9CgkJCQkkZXBkYXRhID0g -JHBsdWdpbi0+Y29udmVydF9pbnB1dCggJGVudHJ5ICk7CgkJCQluZXh0IHVubGVzcyBkZWZpbmVk -ICRlcGRhdGE7CgkJCSAgICB9CiAgCQkgICAgfQoJCX0KCX0KCSRlcGRhdGEtPntlcHJpbnRfc3Rh -dHVzfSA9ICRyZXBvLT5jb25maWcoICJvcmNpZF9zdXBwb3J0X2FkdmFuY2UiLCAiaW1wb3J0X2Rl -c3RpbmF0aW9uIikgfHwgImluYm94IjsKCSRlcGRhdGEtPnt1c2VyaWR9ID0gJHVzZXItPmdldF92 -YWx1ZSggInVzZXJpZCIgKTsKCgkjY3JlYXRlIHRoZSBlcHJpbnQgb2JqZWN0CglteSAkZXByaW50 -ID0gJHJlcG8tPmRhdGFzZXQoICdlcHJpbnQnICktPmNyZWF0ZV9kYXRhb2JqKCRlcGRhdGEpOwoK -CWlmKCBkZWZpbmVkKCAkd29yay0+eyJ0eXBlIn0gKSApCgl7CgkJJGVwcmludC0+c2V0X3ZhbHVl -KCAidHlwZSIsICZ7JHJlcG8tPmNvbmZpZyggIm9yY2lkX3N1cHBvcnRfYWR2YW5jZSIsICJ3b3Jr -X3R5cGVfdG9fZXByaW50IiApfSggJHdvcmstPnsidHlwZSJ9ICkgKTsKCX0KCglpZiggZGVmaW5l -ZCggJHdvcmstPnsidGl0bGUifS0+eyJ0aXRsZSJ9LT57InZhbHVlIn0gKSApCgl7CiAgICAgICAg -aWYoIGRlZmluZWQoICR3b3JrLT57InRpdGxlIn0tPnsic3VidGl0bGUifS0+eyJ2YWx1ZSJ9ICkg -KQogICAgICAgIHsKICAgICAgICAgICAgbXkgJHRpdGxlID0gJHdvcmstPnsidGl0bGUifS0+eyJ0 -aXRsZSJ9LT57InZhbHVlIn07CiAgICAgICAgICAgIG15ICRzdWJ0aXRsZSA9ICR3b3JrLT57InRp -dGxlIn0tPnsic3VidGl0bGUifS0+eyJ2YWx1ZSJ9OwogICAgICAgICAgICBteSAkY29tcGxldGVf -dGl0bGUgPSAiIjsKICAgICAgICAgICAgaWYoICR0aXRsZSA9fiBtL1xXJC8gKQogICAgICAgICAg -ICB7CiAgICAgICAgICAgICAgICAkY29tcGxldGVfdGl0bGUgPSAkY29tcGxldGVfdGl0bGUgPSAk -dGl0bGUgLiAiICIgLiAkc3VidGl0bGU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZQog -ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkY29tcGxldGVfdGl0bGUgPSAkdGl0bGUgLiAi -OiAiIC4gJHN1YnRpdGxlOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRlcHJpbnQtPnNldF92 -YWx1ZSggInRpdGxlIiwgJGNvbXBsZXRlX3RpdGxlICk7CiAgICAgICAgfQogICAgICAgIGVsc2UK -ICAgICAgICB7CiAgICAJCSRlcHJpbnQtPnNldF92YWx1ZSggInRpdGxlIiwgJHdvcmstPnsidGl0 -bGUifS0+eyJ0aXRsZSJ9LT57InZhbHVlIn0gKTsKICAgICAgICB9Cgl9CgoJaWYoIGRlZmluZWQo -ICR3b3JrLT57ImpvdXJuYWwtdGl0bGUifS0+eyJ2YWx1ZSJ9ICkgKQoJewoJCSRlcHJpbnQtPnNl -dF92YWx1ZSggInB1YmxpY2F0aW9uIiAsICR3b3JrLT57ImpvdXJuYWwtdGl0bGUifS0+eyJ2YWx1 -ZSJ9ICk7Cgl9CgoJaWYoIGRlZmluZWQoICR3b3JrLT57InNob3J0LWRlc2NyaXB0aW9uIn0gKSAp -Cgl7CgkJJGVwcmludC0+c2V0X3ZhbHVlKCAiYWJzdHJhY3QiLCAkd29yay0+eyJzaG9ydC1kZXNj -cmlwdGlvbiJ9ICk7Cgl9CgogCSNwdWJsaWNhdGlvbiBkYXRlCiAJaWYoIGRlZmluZWQoJHdvcmst -PnsicHVibGljYXRpb24tZGF0ZSJ9KSApCiAJewogICAgICAgIG15ICR5ZWFyID0gJHdvcmstPnsi -cHVibGljYXRpb24tZGF0ZSJ9LT57InllYXIifS0+eyd2YWx1ZSd9OwogICAgICAgIG15ICRtb250 -aCA9ICR3b3JrLT57InB1YmxpY2F0aW9uLWRhdGUifS0+eyJtb250aCJ9LT57J3ZhbHVlJ307CiAg -ICAgICAgbXkgJGRheSA9ICR3b3JrLT57InB1YmxpY2F0aW9uLWRhdGUifS0+eyJkYXkifS0+eyd2 -YWx1ZSd9OwogICAgICAgIG15ICRkYXRlID0gJHllYXIgLiAiLSIgLiAkbW9udGggLiAiLSIgLiAk -ZGF5OwoJfQoKCWlmKCBkZWZpbmVkKCAkd29yay0+eyJ1cmwifSApICkKCXsKCQkkZXByaW50LT5z -ZXRfdmFsdWUoICJvZmZpY2lhbF91cmwiLCAkd29yay0+eyJ1cmwifS0+eyJ2YWx1ZSJ9ICk7Cgl9 -CgoJaWYoIGRlZmluZWQoICR3b3JrLT57ImV4dGVybmFsLWlkcyJ9LT57ImV4dGVybmFsLWlkIn0g -KSApCgl7CgkJZm9yZWFjaCBteSAkaWRlbnRpZmllciAoQHskd29yay0+eyJleHRlcm5hbC1pZHMi -fS0+eyJleHRlcm5hbC1pZCJ9fSApCgkJewoJCQlpZiggJGlkZW50aWZpZXItPnsiZXh0ZXJuYWwt -aWQtdHlwZSJ9IGVxICJkb2kiICkKCQkJewoJCQkJaWYoICRyZXBvLT5kYXRhc2V0KCAnZXByaW50 -JyApLT5oYXNfZmllbGQoICJkb2kiICkgKQoJCQkJewoJCQkJCSRlcHJpbnQtPnNldF92YWx1ZSgg -ImRvaSIsICRpZGVudGlmaWVyLT57ImV4dGVybmFsLWlkLXZhbHVlIn0gKTsKCQkJCX0KCQkJCWVs -c2UKCQkJCXsKCQkJCQkkZXByaW50LT5zZXRfdmFsdWUoICJpZF9udW1iZXIiLCAiZG9pIi4kaWRl -bnRpZmllci0+eyJleHRlcm5hbC1pZC12YWx1ZSJ9ICk7CgkJCQl9CgkJCX0KCQkgICAgICAgIGVs -c2lmICggJGlkZW50aWZpZXItPnsiZXh0ZXJuYWwtaWQtdHlwZSJ9IGVxICJ1cm4iICkKICAgICAg -ICAgICAgCQl7CgkJCQlpZiggJHJlcG8tPmRhdGFzZXQoICdlcHJpbnQnICktPmhhc19maWVsZCgg -InVybiIgKSApCgkJCQl7CgkJCQkJJGVwcmludC0+c2V0X3ZhbHVlKCAidXJuIiwgJGlkZW50aWZp -ZXItPnsiZXh0ZXJuYWwtaWQtdmFsdWUifSApOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCSRl -cHJpbnQtPnNldF92YWx1ZSggImlkX251bWJlciIsICRpZGVudGlmaWVyLT57ImV4dGVybmFsLWlk -LXZhbHVlIn0gKTsKCQkJCX0KICAgICAgICAgICAgCQl9CiAgICAgICAgICAgIAkJZWxzaWYgKCAk -aWRlbnRpZmllci0+eyJleHRlcm5hbC1pZC10eXBlIn0gZXEgImlzc24iICkKICAgICAgICAgICAg -CQl7CgkJCQkkZXByaW50LT5zZXRfdmFsdWUoICJpc3NuIiwgJGlkZW50aWZpZXItPnsiZXh0ZXJu -YWwtaWQtdmFsdWUifSApOwogICAgICAgICAgICAJCX0KICAgICAgICAgICAgCQllbHNpZiAoICRp -ZGVudGlmaWVyLT57ImV4dGVybmFsLWlkLXR5cGUifSBlcSAiaXNibiIgKQogICAgICAgICAgICAJ -CXsKCQkJCSRlcHJpbnQtPnNldF92YWx1ZSggImlzYm4iLCAkaWRlbnRpZmllci0+eyJleHRlcm5h -bC1pZC12YWx1ZSJ9ICk7CiAgICAgICAgICAgIAkJfQoJCX0KCX0KCgkjY29udHJpYnV0b3JzCglt -eSAlZXByaW50X2NvbnRyaWJzOwogICAgZm9yZWFjaCBteSAkcm9sZSAoIEB7JHJlcG8tPmNvbmZp -ZyggIm9yY2lkIiwgImVwcmludF9maWVsZHMiICl9ICkKICAgIHsKICAgICAgICAkZXByaW50X2Nv -bnRyaWJzeyRyb2xlfSA9IFtdOwogICAgfQoJaWYoIGRlZmluZWQoICR3b3JrLT57ImNvbnRyaWJ1 -dG9ycyJ9ICkgICYmIHNjYWxhciBAeyR3b3JrLT57ImNvbnRyaWJ1dG9ycyJ9LT57ImNvbnRyaWJ1 -dG9yIn19ICkKCXsKCQlmb3JlYWNoIG15ICRjb250cmlidXRvciAoQHskd29yay0+eyJjb250cmli -dXRvcnMifS0+eyJjb250cmlidXRvciJ9fSApCgkJewogICAgICAgICAgICAJCW15ICgkdXNlcm5h -bWUsJHB1dGNvZGUsJG9yY2lkKSA9IHVuZGVmOwoKICAgICAgICAgICAgCQlteSAkdXNlcnNfb3Jj -aWQgPSAkdXNlci0+dmFsdWUoICJvcmNpZCIgKTsKCQkJbXkgJGNfdXNlcjsgIyBhIHVzZXIgb2Jq -ZWN0IGRlcml2ZWQgZnJvbSBjcmVhdG9yIG9iamVjdCwgYWRkaXRpb25hbCB0byB0aGUgbG9nZ2Vk -IGluIG9uZQoJCQlpZiggZGVmaW5lZCggJGNvbnRyaWJ1dG9yLT57ImNvbnRyaWJ1dG9yLW9yY2lk -In0gKSApCgkJCXsKCQkJCSNzZWFyY2ggZm9yIHVzZXIgd2l0aCBvcmNpZCBhbmQgYWRkIHVzZXJu -YW1lIHRvIGVwcmludCBjb250cmlidXRvciBpZiBmb3VuZAoJCQkJJG9yY2lkID0gJGNvbnRyaWJ1 -dG9yLT57ImNvbnRyaWJ1dG9yLW9yY2lkIn0tPnsicGF0aCJ9OwoJCQkJJGNfdXNlciA9IEVQcmlu -dHM6Ok9SQ0lEOjpVdGlsczo6dXNlcl93aXRoX29yY2lkKCAkcmVwbywgJG9yY2lkICk7CgogICAg -ICAgICAgICAgICAgCQkjIFNhdmUgcHV0Y29kZSBpZiB0aGlzIGNvbnRyaWJ1dG9yIGlzIHRoZSBp -bXBvcnRpbmcgdXNlcgogICAgICAgICAgICAgICAgCQlpZiggJHVzZXJzX29yY2lkIGVxICRvcmNp -ZCApCiAgICAgICAgICAgICAgICAJCXsKICAgICAgICAgICAgICAgICAgICAJCQlteSBAd29ya19w -dXRjb2RlcyA9ICggJHdvcmstPnsicHV0LWNvZGUifSApOwogICAgICAgICAgICAgICAgICAgIAkJ -CWZvcmVhY2ggbXkgJHdvcmtfcHV0Y29kZSAoQHdvcmtfcHV0Y29kZXMpCiAgICAgICAgICAgICAg -ICAgICAgCQkJewogICAgICAgICAgICAgICAgICAgICAgICAJCQkkcHV0Y29kZSA9ICR3b3JrX3B1 -dGNvZGU7CiAgICAgICAgICAgICAgICAgICAgCQkJfQogICAgICAgICAgICAgICAgCQl9CgoJCQl9 -CgoJCQkjV2hhdCBraW5kIG9mIGNvbnRyaWJ1dG9yIGlzIHRoaXM/ICBQdWxsIG1hdGNoIGZyb20g -Y29uZmlnCgkJCW15ICRjb250cmliX3JvbGUgPSAkY29udHJpYnV0b3ItPnsiY29udHJpYnV0b3It -YXR0cmlidXRlcyJ9LT57ImNvbnRyaWJ1dG9yLXJvbGUifTsKCQkJbXkgJWNvbnRyaWJfY29uZmln -ID0gJXskcmVwby0+Y29uZmlnKCAib3JjaWRfc3VwcG9ydF9hZHZhbmNlIiwgImNvbnRyaWJ1dG9y -X21hcCIgKX07CgkJCWZvcmVhY2ggbXkgJGNvbnRyaWJfdHlwZSAoIGtleXMgJWNvbnRyaWJfY29u -ZmlnICkKCQkJewoJCQkJaWYoICRjb250cmliX2NvbmZpZ3skY29udHJpYl90eXBlfSBlcSAkY29u -dHJpYl9yb2xlICkKCQkJCXsKCQkJCQkkY29udHJpYl9yb2xlID0gJGNvbnRyaWJfdHlwZTsKCQkJ -CX0KCQkJfQoJCQkjY29uc3RydWN0IGEgaGFzaCBvZiBhcHByb3ByaWF0ZSBpbmZvCgkJCW15KCAk -aG9ub3VyaWZpYywgJGdpdmVuLCAkZmFtaWx5ICkgPSBFUHJpbnRzOjpPUkNJRDo6QWR2YW5jZVV0 -aWxzOjpnZXRfbmFtZSggJGNvbnRyaWJ1dG9yLT57ImNyZWRpdC1uYW1lIn0tPnsidmFsdWUifSAp -OwoJCQlteSAkY29udHJpYnV0b3IgPSB7CgkJCQluYW1lID0+IHsKCQkJCQlob25vdXJpZmljID0+ -ICRob25vdXJpZmljLAoJCQkJCWdpdmVuID0+ICRnaXZlbiwKCQkJCQlmYW1pbHkgPT4gJGZhbWls -eSwKCQkJCX0sCgkJCX07CiAgICAgICAgICAgIAkJI3B1dGNvZGUgb25seSBvcgoJCQkkY29udHJp -YnV0b3ItPnsicHV0Y29kZSJ9ID0gJHB1dGNvZGUgaWYgZGVmaW5lZCAkcHV0Y29kZTsKCQkJI0Fk -ZCBvcmNpZCBpZiB3ZSBoYXZlIG9uZQoJCQkkY29udHJpYnV0b3ItPntvcmNpZH0gPSAkb3JjaWQg -aWYgZGVmaW5lZCAkb3JjaWQ7CgkJCSNBZGQgdXNlciBlbWFpbCBpZiB3ZSBoYXZlIGxpbmtlZCBh -IHVzZXIKCQkJJGNvbnRyaWJ1dG9yLT57ImlkIn0gPSAkY191c2VyLT5nZXRfdmFsdWUoICJlbWFp -bCIgKSBpZiBkZWZpbmVkICRjX3VzZXI7CgoJCQkjYWRkIHVzZXIgdG8gYXBwcm9wcmlhdGUgZmll -bGQKCQkJZm9yIG15ICRrZXkgKGtleXMgJWVwcmludF9jb250cmlicykKICAgICAgICAgICAgewog -ICAgICAgICAgICAgICAgaWYoICRjb250cmliX3JvbGUgZXEgJGtleSApewogICAgICAgICAgICAg -ICAgICAgIHB1c2ggQHskZXByaW50X2NvbnRyaWJzeyRrZXl9fSwgJGNvbnRyaWJ1dG9yOwogICAg -ICAgICAgICAgICAgfQogICAgICAgICAgICB9CgkJfQoJfQoKICAgICMgSWYgdGhlcmUgYXJlIG5v -IGNvbnRyaWJ1dG9ycyB3aGF0c29ldmVyLi4uCiAgICBteSAkbm9fY29udHJpYnMgPSAxOwogICAg -Zm9yIG15ICRrZXkgKGtleXMgJWVwcmludF9jb250cmlicykKICAgIHsKICAgICAgICBpZiggQHsk -ZXByaW50X2NvbnRyaWJzeyRrZXl9fSB8fCAkZXByaW50LT5pc19zZXQoJGtleSkgKQogICAgICAg -IHsKICAgICAgICAgICAgJG5vX2NvbnRyaWJzID0gMDsKICAgICAgICAgICAgbGFzdDsKICAgICAg -ICB9CiAgICB9CiAgICAjIC4uLmFzc3VtZSB0aGUgdXNlciBpcyBhIGNyZWF0b3IKICAgIGlmKCAk -bm9fY29udHJpYnMgKQogICAgewogICAgICAgIG15ICR1c2Vyc19uYW1lID0gJHVzZXItPmdldF92 -YWx1ZSgibmFtZSIpOwogICAgICAgIG15ICRwdXRjb2RlID0gdW5kZWY7CiAgICAgICAgbXkgQHdv -cmtfcHV0Y29kZXMgPSAoICR3b3JrLT57InB1dC1jb2RlIn0gKTsKICAgICAgICBmb3JlYWNoIG15 -ICR3b3JrX3B1dGNvZGUgKEB3b3JrX3B1dGNvZGVzKQogICAgICAgIHsKICAgICAgICAgICAgJHB1 -dGNvZGUgPSAkd29ya19wdXRjb2RlOwogICAgICAgIH0KCQlteSAkY29udHJpYnV0b3IgPSB7CgkJ -CW5hbWUgPT4gewoJCQkJZ2l2ZW4gPT4gJHVzZXJzX25hbWUtPntnaXZlbn0sCgkJCQlmYW1pbHkg -PT4gJHVzZXJzX25hbWUtPntmYW1pbHl9LAoJCQl9LAogICAgICAgCQlpZCA9PiAkdXNlci0+Z2V0 -X3ZhbHVlKCAiZW1haWwiICksCgkJCW9yY2lkID0+ICR1c2VyLT52YWx1ZSggIm9yY2lkIiApLAoJ -CQlwdXRjb2RlID0+ICRwdXRjb2RlLAoJCX07CiAgICAgICAgcHVzaCBAeyRlcHJpbnRfY29udHJp -YnN7Y3JlYXRvcnN9fSwgJGNvbnRyaWJ1dG9yOwogICAgfQoKICAgICMgU2V0IHRoZSBjb250cmli -dXRvcnMgKG92ZXJ3cml0ZXMgd2hhdCBtaWdodCBoYXZlIGJlZW4gZ2xlYW5lZCBmcm9tIGNpdGF0 -aW9uKQogICAgZm9yIG15ICRrZXkgKGtleXMgJWVwcmludF9jb250cmlicykKICAgIHsKICAgICAg -ICAkZXByaW50LT5zZXRfdmFsdWUoICRrZXksICRlcHJpbnRfY29udHJpYnN7JGtleX0gKSBpZiBF -UHJpbnRzOjpVdGlsczo6aXNfc2V0KEB7JGVwcmludF9jb250cmlic3ska2V5fX0pOwogICAgfQoK -CSNzYXZlIHRoZSByZWNvcmQKCSRlcHJpbnQtPmNvbW1pdDsKIwlwcmludCBTVERFUlIgImNyZWF0 -b3JzIGluIGVwcmludDogIi5EdW1wZXIoJGVwcmludC0+dmFsdWUoICJjcmVhdG9ycyIpKS4iXG4i -OwoJcmV0dXJuICRlcHJpbnQ7Cn0KCiMgcmV0dXJuIGEgZGF0ZSBmb3IgdGhlIGZpbHRlcmluZyBw -cm9jZXNzIC0gZGVwZW5kaW5nIG9uIHRoZSB0eXBlIG9mIGRhdGUgd2UncmUgYWZ0ZXIgd2UnbGwg -bmVlZCB0byByZXRyaWV2ZSBpdCBpbiBkaWZmZXJlbnQgd2F5cwpzdWIgZ2V0X3dvcmtfZGF0ZQp7 -CiAgICBteSggJHNlbGYsICRyZXBvLCAkd29yayApID0gQF87CgogICAgbXkgJGRhdGVfdHlwZSA9 -ICRyZXBvLT5jb25maWcoICJvcmNpZF9zdXBwb3J0X2FkdmFuY2UiLCAiZmlsdGVyX2RhdGUiICkg -fHwgImxhc3QtbW9kaWZpZWQtZGF0ZSI7CiAgICBpZiggJGRhdGVfdHlwZSBlcSAibGFzdC1tb2Rp -ZmllZC1kYXRlIiB8fCAkZGF0ZV90eXBlIGVxICJjcmVhdGVkLWRhdGUiICkKICAgIHsKICAgICAg -ICByZXR1cm4gJHdvcmstPnskZGF0ZV90eXBlfS0+eyd2YWx1ZSd9IC8gMTAwMDsKICAgIH0KICAg -IGVsc2lmKCAkZGF0ZV90eXBlIGVxICJwdWJsaWNhdGlvbi1kYXRlIiApCiAgICB7ICAgICAgIAog -ICAgICAgIG15ICR5ZWFyID0gJHdvcmstPnskZGF0ZV90eXBlfS0+e3llYXJ9LT57dmFsdWV9IGlm -KCBkZWZpbmVkICR3b3JrLT57JGRhdGVfdHlwZX0tPnt5ZWFyfS0+e3ZhbHVlfSApOwogICAgICAg -IG15ICRtb250aCA9ICR3b3JrLT57JGRhdGVfdHlwZX0tPnttb250aH0tPnt2YWx1ZX0gaWYoIGRl -ZmluZWQgJHdvcmstPnskZGF0ZV90eXBlfS0+e21vbnRofS0+e3ZhbHVlfSApOwogICAgICAgIG15 -ICRkYXkgPSAkd29yay0+eyRkYXRlX3R5cGV9LT57ZGF5fS0+e3ZhbHVlfSBpZiggZGVmaW5lZCAk -d29yay0+eyRkYXRlX3R5cGV9LT57ZGF5fS0+e3ZhbHVlfSApOwogICAgICAgIGlmKCBkZWZpbmVk -ICR5ZWFyICYmIGRlZmluZWQgJG1vbnRoICYmIGRlZmluZWQgJGRheSApCiAgICAgICAgewogICAg -ICAgICAgICByZXR1cm4gdGltZWdtKCAwLCAwLCAwLCAkZGF5LCAkbW9udGgtMSwgJHllYXItMTkw -MCApOwogICAgICAgIH0KICAgIH0KCiAgICAjIG5vdGhpbmcgd2UgY2FuIHJlYWxseSB3b3JrIHdp -dGguLi4gOigKICAgIHJldHVybiB1bmRlZjsKfQo= +ID0+ICJjaGVja2JveCIsCiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPT4gInB1dC1jb2Rl +IiwKICAgICAgICAgICAgICAgICAgICAgICAgImFyaWEtbGFiZWwiID0+ICR3b3JrLT57J3RpdGxl +J30tPnsndGl0bGUnfS0+eyd2YWx1ZSd9LAogICAgICAgICk7CgoJJGNoZWNrYm94LT5zZXRBdHRy +aWJ1dGUoICJjaGVja2VkIiwgInllcyIgKTsKICAgICAgICAkY2hlY2tib3gtPnNldEF0dHJpYnV0 +ZSggInZhbHVlIiwgJHdvcmstPnsncHV0LWNvZGUnfSApOwoKCSRkaXYtPmFwcGVuZENoaWxkKCAk +Y2hlY2tib3ggKTsKICAgICAgICAkZGl2LT5hcHBlbmRDaGlsZCggJGxhYmVsICk7CgoJcmV0dXJu +ICRkaXY7Cn0KCiNjaGVrY2JveCBmb3IgaW1wb3J0aW5nIHdvcmsgdmlhIERPSQpzdWIgcmVuZGVy +X2ltcG9ydF9kb2kKewoJbXkoICRzZWxmLCAkcmVwbywgJHhtbCwgJHdvcmtfc3VtbWFyeSApID0g +QF87CgoJbXkgJGRpdiA9ICR4bWwtPmNyZWF0ZV9lbGVtZW50KCAiZGl2IiwgY2xhc3MgPT4gIm9y +Y2lkX2ltcG9ydF9kb2kiICk7CgoJbXkgJGxhYmVsID0gJHNlbGYtPmh0bWxfcGhyYXNlKCAib3Jj +aWRfaW1wb3J0X3ZpYV9kb2kiICk7CglteSAkY2hlY2tib3ggPSAkcmVwby0+bWFrZV9lbGVtZW50 +KCAiaW5wdXQiLAogICAgICAgICAgICAgICAgICAgICAgICB0eXBlID0+ICJjaGVja2JveCIsCiAg +ICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPT4gImRvaSIsCiAgICAgICAgKTsKCgkjZ2V0IHRo +ZSBET0kKCW15ICRkb2k7CglteSAkZXh0X2lkcyA9ICR3b3JrX3N1bW1hcnktPnsnZXh0ZXJuYWwt +aWRzJ30tPnsnZXh0ZXJuYWwtaWQnfTsKICAgICAgICBmb3JlYWNoIG15ICRleHRfaWQgKCBAJGV4 +dF9pZHMgKQogICAgICAgIHsKICAgICAgICAgICAgICAgIGlmKCAkZXh0X2lkLT57J2V4dGVybmFs +LWlkLXR5cGUnfSBlcSAiZG9pIiApCgkJewoJCQkkZG9pID0gJGV4dF9pZC0+eydleHRlcm5hbC1p +ZC12YWx1ZSd9OwoJCQlsYXN0OwoJCX0KICAgICAgICB9CgoJaWYoIGRlZmluZWQgJGRvaSApCgl7 +CgkJI3JlZm9ybWF0IGRvaSBmb3IgaW1wb3J0IHBsdWdpbgoJCSRkb2kgPX4gcy9eKGh0dHAocyk/ +OlwvXC8oZHhcLik/ZG9pXC5vcmdcLykvL2k7CgoJCSRjaGVja2JveC0+c2V0QXR0cmlidXRlKCAi +Y2hlY2tlZCIsICJ5ZXMiICk7CgkJJGNoZWNrYm94LT5zZXRBdHRyaWJ1dGUoICJ2YWx1ZSIsICRk +b2kgKTsKCX0KCWVsc2UKCXsKCQkkY2hlY2tib3gtPnNldEF0dHJpYnV0ZSggImRpc2FibGVkIiAp +OwoJfQoKCSRkaXYtPmFwcGVuZENoaWxkKCAkY2hlY2tib3ggKTsKICAgICAgICAkZGl2LT5hcHBl +bmRDaGlsZCggJGxhYmVsICk7CgoJcmV0dXJuICRkaXY7Cn0KCgpzdWIgaW1wb3J0X3ZpYV9vcmNp +ZAp7CglteSggJHNlbGYsICRyZXBvLCAkdXNlciwgJHdvcmsgKSA9IEBfOwoKCSNJZiB3ZSBoYXZl +IGEgd29yazpjaXRhdGlvbiBhbmQgYW4gaW1wb3J0IHBsdWdpbiB0aGF0IGNhbgoJI3Byb2Nlc3Mg +aXQsIHdlIHNob3VsZCB1c2UgdGhhdCB0byAicHJpbWUiIHRoZSBlcHJpbnQuCgkjUGFyc2VkIE9S +Q0lEIGRhdGEgd2lsbCB0aGVuIHRha2UgcHJlY2VkZW50CgoJbXkgJGVwZGF0YSA9IHt9OwoKCWlm +KEVQcmludHM6OlV0aWxzOjppc19zZXQoJHdvcmstPntjaXRhdGlvbn0pKXsKCgkJbXkgJHRtcGZp +bGUgPSBGaWxlOjpUZW1wLT5uZXc7CgkJYmlubW9kZSgkdG1wZmlsZSwgIjp1dGY4Iik7CgkJcHJp +bnQgJHRtcGZpbGUgJHdvcmstPntjaXRhdGlvbn0tPnsiY2l0YXRpb24tdmFsdWUifTsKCQlzZWVr +KCR0bXBmaWxlLCAwLCAwKTsKCgkJaWYoRVByaW50czo6VXRpbHM6OmlzX3NldCgkd29yay0+e2Np +dGF0aW9ufS0+eyJjaXRhdGlvbi10eXBlIn0pKXsKCQkgICAgbXkgJHBsdWdpbmlkID0gJHJlcG8t +PmNvbmZpZyggIm9yY2lkX3N1cHBvcnRfYWR2YW5jZSIsICJpbXBvcnRfY2l0YXRpb25fdHlwZV9t +YXAiICktPnskd29yay0+e2NpdGF0aW9ufS0+eyJjaXRhdGlvbi10eXBlIn19OwoJIAkgICAgbXkg +JHBsdWdpbiA9ICRyZXBvLT5wbHVnaW4oICJJbXBvcnQ6OiIuJHBsdWdpbmlkICk7CgoJCSAgICB1 +bmxlc3MoICFkZWZpbmVkICRwbHVnaW4gKQoJCSAgICB7CgkJCSAgICBteSAkcGFyc2VyID0gQmli +VGVYOjpQYXJzZXItPm5ldyggJHRtcGZpbGUgKTsKCQkJICAgIHdoaWxlKG15ICRlbnRyeSA9ICRw +YXJzZXItPm5leHQpCgkJCSAgICB7CgkJCQlpZiggISRlbnRyeS0+cGFyc2Vfb2sgKQoJCQkJewoJ +CQkJICAgICRwbHVnaW4tPndhcm5pbmcoICJFcnJvciBwYXJzaW5nOiAiIC4gJGVudHJ5LT5lcnJv +ciApOwoJCQkJICAgIG5leHQ7CgkJCQl9CgkJCQkkZXBkYXRhID0gJHBsdWdpbi0+Y29udmVydF9p +bnB1dCggJGVudHJ5ICk7CgkJCQluZXh0IHVubGVzcyBkZWZpbmVkICRlcGRhdGE7CgkJCSAgICB9 +CiAgCQkgICAgfQoJCX0KCX0KCSRlcGRhdGEtPntlcHJpbnRfc3RhdHVzfSA9ICRyZXBvLT5jb25m +aWcoICJvcmNpZF9zdXBwb3J0X2FkdmFuY2UiLCAiaW1wb3J0X2Rlc3RpbmF0aW9uIikgfHwgImlu +Ym94IjsKCSRlcGRhdGEtPnt1c2VyaWR9ID0gJHVzZXItPmdldF92YWx1ZSggInVzZXJpZCIgKTsK +CgkjY3JlYXRlIHRoZSBlcHJpbnQgb2JqZWN0CglteSAkZXByaW50ID0gJHJlcG8tPmRhdGFzZXQo +ICdlcHJpbnQnICktPmNyZWF0ZV9kYXRhb2JqKCRlcGRhdGEpOwoKCWlmKCBkZWZpbmVkKCAkd29y +ay0+eyJ0eXBlIn0gKSApCgl7CgkJJGVwcmludC0+c2V0X3ZhbHVlKCAidHlwZSIsICZ7JHJlcG8t +PmNvbmZpZyggIm9yY2lkX3N1cHBvcnRfYWR2YW5jZSIsICJ3b3JrX3R5cGVfdG9fZXByaW50IiAp +fSggJHdvcmstPnsidHlwZSJ9ICkgKTsKCX0KCglpZiggZGVmaW5lZCggJHdvcmstPnsidGl0bGUi +fS0+eyJ0aXRsZSJ9LT57InZhbHVlIn0gKSApCgl7CiAgICAgICAgaWYoIGRlZmluZWQoICR3b3Jr +LT57InRpdGxlIn0tPnsic3VidGl0bGUifS0+eyJ2YWx1ZSJ9ICkgKQogICAgICAgIHsKICAgICAg +ICAgICAgbXkgJHRpdGxlID0gJHdvcmstPnsidGl0bGUifS0+eyJ0aXRsZSJ9LT57InZhbHVlIn07 +CiAgICAgICAgICAgIG15ICRzdWJ0aXRsZSA9ICR3b3JrLT57InRpdGxlIn0tPnsic3VidGl0bGUi +fS0+eyJ2YWx1ZSJ9OwogICAgICAgICAgICBteSAkY29tcGxldGVfdGl0bGUgPSAiIjsKICAgICAg +ICAgICAgaWYoICR0aXRsZSA9fiBtL1xXJC8gKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAg +ICAkY29tcGxldGVfdGl0bGUgPSAkY29tcGxldGVfdGl0bGUgPSAkdGl0bGUgLiAiICIgLiAkc3Vi +dGl0bGU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZQogICAgICAgICAgICB7CiAgICAg +ICAgICAgICAgICAkY29tcGxldGVfdGl0bGUgPSAkdGl0bGUgLiAiOiAiIC4gJHN1YnRpdGxlOwog +ICAgICAgICAgICB9CiAgICAgICAgICAgICRlcHJpbnQtPnNldF92YWx1ZSggInRpdGxlIiwgJGNv +bXBsZXRlX3RpdGxlICk7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAJCSRl +cHJpbnQtPnNldF92YWx1ZSggInRpdGxlIiwgJHdvcmstPnsidGl0bGUifS0+eyJ0aXRsZSJ9LT57 +InZhbHVlIn0gKTsKICAgICAgICB9Cgl9CgoJaWYoIGRlZmluZWQoICR3b3JrLT57ImpvdXJuYWwt +dGl0bGUifS0+eyJ2YWx1ZSJ9ICkgKQoJewoJCSRlcHJpbnQtPnNldF92YWx1ZSggInB1YmxpY2F0 +aW9uIiAsICR3b3JrLT57ImpvdXJuYWwtdGl0bGUifS0+eyJ2YWx1ZSJ9ICk7Cgl9CgoJaWYoIGRl +ZmluZWQoICR3b3JrLT57InNob3J0LWRlc2NyaXB0aW9uIn0gKSApCgl7CgkJJGVwcmludC0+c2V0 +X3ZhbHVlKCAiYWJzdHJhY3QiLCAkd29yay0+eyJzaG9ydC1kZXNjcmlwdGlvbiJ9ICk7Cgl9Cgog +CSNwdWJsaWNhdGlvbiBkYXRlCiAJaWYoIGRlZmluZWQoJHdvcmstPnsicHVibGljYXRpb24tZGF0 +ZSJ9KSApCiAJewogICAgICAgIG15ICR5ZWFyID0gJHdvcmstPnsicHVibGljYXRpb24tZGF0ZSJ9 +LT57InllYXIifS0+eyd2YWx1ZSd9OwogICAgICAgIG15ICRtb250aCA9ICR3b3JrLT57InB1Ymxp +Y2F0aW9uLWRhdGUifS0+eyJtb250aCJ9LT57J3ZhbHVlJ307CiAgICAgICAgbXkgJGRheSA9ICR3 +b3JrLT57InB1YmxpY2F0aW9uLWRhdGUifS0+eyJkYXkifS0+eyd2YWx1ZSd9OwogICAgICAgIG15 +ICRkYXRlID0gJHllYXIgLiAiLSIgLiAkbW9udGggLiAiLSIgLiAkZGF5OwoJfQoKCWlmKCBkZWZp +bmVkKCAkd29yay0+eyJ1cmwifSApICkKCXsKCQkkZXByaW50LT5zZXRfdmFsdWUoICJvZmZpY2lh +bF91cmwiLCAkd29yay0+eyJ1cmwifS0+eyJ2YWx1ZSJ9ICk7Cgl9CgoJaWYoIGRlZmluZWQoICR3 +b3JrLT57ImV4dGVybmFsLWlkcyJ9LT57ImV4dGVybmFsLWlkIn0gKSApCgl7CgkJZm9yZWFjaCBt +eSAkaWRlbnRpZmllciAoQHskd29yay0+eyJleHRlcm5hbC1pZHMifS0+eyJleHRlcm5hbC1pZCJ9 +fSApCgkJewoJCQlpZiggJGlkZW50aWZpZXItPnsiZXh0ZXJuYWwtaWQtdHlwZSJ9IGVxICJkb2ki +ICkKCQkJewoJCQkJaWYoICRyZXBvLT5kYXRhc2V0KCAnZXByaW50JyApLT5oYXNfZmllbGQoICJk +b2kiICkgKQoJCQkJewoJCQkJCSRlcHJpbnQtPnNldF92YWx1ZSggImRvaSIsICRpZGVudGlmaWVy +LT57ImV4dGVybmFsLWlkLXZhbHVlIn0gKTsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQkkZXBy +aW50LT5zZXRfdmFsdWUoICJpZF9udW1iZXIiLCAiZG9pIi4kaWRlbnRpZmllci0+eyJleHRlcm5h +bC1pZC12YWx1ZSJ9ICk7CgkJCQl9CgkJCX0KCQkgICAgICAgIGVsc2lmICggJGlkZW50aWZpZXIt +PnsiZXh0ZXJuYWwtaWQtdHlwZSJ9IGVxICJ1cm4iICkKICAgICAgICAgICAgCQl7CgkJCQlpZigg +JHJlcG8tPmRhdGFzZXQoICdlcHJpbnQnICktPmhhc19maWVsZCggInVybiIgKSApCgkJCQl7CgkJ +CQkJJGVwcmludC0+c2V0X3ZhbHVlKCAidXJuIiwgJGlkZW50aWZpZXItPnsiZXh0ZXJuYWwtaWQt +dmFsdWUifSApOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCSRlcHJpbnQtPnNldF92YWx1ZSgg +ImlkX251bWJlciIsICRpZGVudGlmaWVyLT57ImV4dGVybmFsLWlkLXZhbHVlIn0gKTsKCQkJCX0K +ICAgICAgICAgICAgCQl9CiAgICAgICAgICAgIAkJZWxzaWYgKCAkaWRlbnRpZmllci0+eyJleHRl +cm5hbC1pZC10eXBlIn0gZXEgImlzc24iICkKICAgICAgICAgICAgCQl7CgkJCQkkZXByaW50LT5z +ZXRfdmFsdWUoICJpc3NuIiwgJGlkZW50aWZpZXItPnsiZXh0ZXJuYWwtaWQtdmFsdWUifSApOwog +ICAgICAgICAgICAJCX0KICAgICAgICAgICAgCQllbHNpZiAoICRpZGVudGlmaWVyLT57ImV4dGVy +bmFsLWlkLXR5cGUifSBlcSAiaXNibiIgKQogICAgICAgICAgICAJCXsKCQkJCSRlcHJpbnQtPnNl +dF92YWx1ZSggImlzYm4iLCAkaWRlbnRpZmllci0+eyJleHRlcm5hbC1pZC12YWx1ZSJ9ICk7CiAg +ICAgICAgICAgIAkJfQoJCX0KCX0KCgkjY29udHJpYnV0b3JzCglteSAlZXByaW50X2NvbnRyaWJz +OwogICAgZm9yZWFjaCBteSAkcm9sZSAoIEB7JHJlcG8tPmNvbmZpZyggIm9yY2lkIiwgImVwcmlu +dF9maWVsZHMiICl9ICkKICAgIHsKICAgICAgICAkZXByaW50X2NvbnRyaWJzeyRyb2xlfSA9IFtd +OwogICAgfQoJaWYoIGRlZmluZWQoICR3b3JrLT57ImNvbnRyaWJ1dG9ycyJ9ICkgICYmIHNjYWxh +ciBAeyR3b3JrLT57ImNvbnRyaWJ1dG9ycyJ9LT57ImNvbnRyaWJ1dG9yIn19ICkKCXsKCQlmb3Jl +YWNoIG15ICRjb250cmlidXRvciAoQHskd29yay0+eyJjb250cmlidXRvcnMifS0+eyJjb250cmli +dXRvciJ9fSApCgkJewogICAgICAgICAgICAJCW15ICgkdXNlcm5hbWUsJHB1dGNvZGUsJG9yY2lk +KSA9IHVuZGVmOwoKICAgICAgICAgICAgCQlteSAkdXNlcnNfb3JjaWQgPSAkdXNlci0+dmFsdWUo +ICJvcmNpZCIgKTsKCQkJbXkgJGNfdXNlcjsgIyBhIHVzZXIgb2JqZWN0IGRlcml2ZWQgZnJvbSBj +cmVhdG9yIG9iamVjdCwgYWRkaXRpb25hbCB0byB0aGUgbG9nZ2VkIGluIG9uZQoJCQlpZiggZGVm +aW5lZCggJGNvbnRyaWJ1dG9yLT57ImNvbnRyaWJ1dG9yLW9yY2lkIn0gKSApCgkJCXsKCQkJCSNz +ZWFyY2ggZm9yIHVzZXIgd2l0aCBvcmNpZCBhbmQgYWRkIHVzZXJuYW1lIHRvIGVwcmludCBjb250 +cmlidXRvciBpZiBmb3VuZAoJCQkJJG9yY2lkID0gJGNvbnRyaWJ1dG9yLT57ImNvbnRyaWJ1dG9y +LW9yY2lkIn0tPnsicGF0aCJ9OwoJCQkJJGNfdXNlciA9IEVQcmludHM6Ok9SQ0lEOjpVdGlsczo6 +dXNlcl93aXRoX29yY2lkKCAkcmVwbywgJG9yY2lkICk7CgogICAgICAgICAgICAgICAgCQkjIFNh +dmUgcHV0Y29kZSBpZiB0aGlzIGNvbnRyaWJ1dG9yIGlzIHRoZSBpbXBvcnRpbmcgdXNlcgogICAg +ICAgICAgICAgICAgCQlpZiggJHVzZXJzX29yY2lkIGVxICRvcmNpZCApCiAgICAgICAgICAgICAg +ICAJCXsKICAgICAgICAgICAgICAgICAgICAJCQlteSBAd29ya19wdXRjb2RlcyA9ICggJHdvcmst +PnsicHV0LWNvZGUifSApOwogICAgICAgICAgICAgICAgICAgIAkJCWZvcmVhY2ggbXkgJHdvcmtf +cHV0Y29kZSAoQHdvcmtfcHV0Y29kZXMpCiAgICAgICAgICAgICAgICAgICAgCQkJewogICAgICAg +ICAgICAgICAgICAgICAgICAJCQkkcHV0Y29kZSA9ICR3b3JrX3B1dGNvZGU7CiAgICAgICAgICAg +ICAgICAgICAgCQkJfQogICAgICAgICAgICAgICAgCQl9CgoJCQl9CgoJCQkjV2hhdCBraW5kIG9m +IGNvbnRyaWJ1dG9yIGlzIHRoaXM/ICBQdWxsIG1hdGNoIGZyb20gY29uZmlnCgkJCW15ICRjb250 +cmliX3JvbGUgPSAkY29udHJpYnV0b3ItPnsiY29udHJpYnV0b3ItYXR0cmlidXRlcyJ9LT57ImNv +bnRyaWJ1dG9yLXJvbGUifTsKCQkJbXkgJWNvbnRyaWJfY29uZmlnID0gJXskcmVwby0+Y29uZmln +KCAib3JjaWRfc3VwcG9ydF9hZHZhbmNlIiwgImNvbnRyaWJ1dG9yX21hcCIgKX07CgkJCWZvcmVh +Y2ggbXkgJGNvbnRyaWJfdHlwZSAoIGtleXMgJWNvbnRyaWJfY29uZmlnICkKCQkJewoJCQkJaWYo +ICRjb250cmliX2NvbmZpZ3skY29udHJpYl90eXBlfSBlcSAkY29udHJpYl9yb2xlICkKCQkJCXsK +CQkJCQkkY29udHJpYl9yb2xlID0gJGNvbnRyaWJfdHlwZTsKCQkJCX0KCQkJfQoJCQkjY29uc3Ry +dWN0IGEgaGFzaCBvZiBhcHByb3ByaWF0ZSBpbmZvCgkJCW15KCAkaG9ub3VyaWZpYywgJGdpdmVu +LCAkZmFtaWx5ICkgPSBFUHJpbnRzOjpPUkNJRDo6QWR2YW5jZVV0aWxzOjpnZXRfbmFtZSggJGNv +bnRyaWJ1dG9yLT57ImNyZWRpdC1uYW1lIn0tPnsidmFsdWUifSApOwoJCQlteSAkY29udHJpYnV0 +b3IgPSB7CgkJCQluYW1lID0+IHsKCQkJCQlob25vdXJpZmljID0+ICRob25vdXJpZmljLAoJCQkJ +CWdpdmVuID0+ICRnaXZlbiwKCQkJCQlmYW1pbHkgPT4gJGZhbWlseSwKCQkJCX0sCgkJCX07CiAg +ICAgICAgICAgIAkJI3B1dGNvZGUgb25seSBvcgoJCQkkY29udHJpYnV0b3ItPnsicHV0Y29kZSJ9 +ID0gJHB1dGNvZGUgaWYgZGVmaW5lZCAkcHV0Y29kZTsKCQkJI0FkZCBvcmNpZCBpZiB3ZSBoYXZl +IG9uZQoJCQkkY29udHJpYnV0b3ItPntvcmNpZH0gPSAkb3JjaWQgaWYgZGVmaW5lZCAkb3JjaWQ7 +CgkJCSNBZGQgdXNlciBlbWFpbCBpZiB3ZSBoYXZlIGxpbmtlZCBhIHVzZXIKCQkJJGNvbnRyaWJ1 +dG9yLT57ImlkIn0gPSAkY191c2VyLT5nZXRfdmFsdWUoICJlbWFpbCIgKSBpZiBkZWZpbmVkICRj +X3VzZXI7CgoJCQkjYWRkIHVzZXIgdG8gYXBwcm9wcmlhdGUgZmllbGQKCQkJZm9yIG15ICRrZXkg +KGtleXMgJWVwcmludF9jb250cmlicykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYo +ICRjb250cmliX3JvbGUgZXEgJGtleSApewogICAgICAgICAgICAgICAgICAgIHB1c2ggQHskZXBy +aW50X2NvbnRyaWJzeyRrZXl9fSwgJGNvbnRyaWJ1dG9yOwogICAgICAgICAgICAgICAgfQogICAg +ICAgICAgICB9CgkJfQoJfQoKICAgICMgSWYgdGhlcmUgYXJlIG5vIGNvbnRyaWJ1dG9ycyB3aGF0 +c29ldmVyLi4uCiAgICBteSAkbm9fY29udHJpYnMgPSAxOwogICAgZm9yIG15ICRrZXkgKGtleXMg +JWVwcmludF9jb250cmlicykKICAgIHsKICAgICAgICBpZiggQHskZXByaW50X2NvbnRyaWJzeyRr +ZXl9fSB8fCAkZXByaW50LT5pc19zZXQoJGtleSkgKQogICAgICAgIHsKICAgICAgICAgICAgJG5v +X2NvbnRyaWJzID0gMDsKICAgICAgICAgICAgbGFzdDsKICAgICAgICB9CiAgICB9CiAgICAjIC4u +LmFzc3VtZSB0aGUgdXNlciBpcyBhIGNyZWF0b3IKICAgIGlmKCAkbm9fY29udHJpYnMgKQogICAg +ewogICAgICAgIG15ICR1c2Vyc19uYW1lID0gJHVzZXItPmdldF92YWx1ZSgibmFtZSIpOwogICAg +ICAgIG15ICRwdXRjb2RlID0gdW5kZWY7CiAgICAgICAgbXkgQHdvcmtfcHV0Y29kZXMgPSAoICR3 +b3JrLT57InB1dC1jb2RlIn0gKTsKICAgICAgICBmb3JlYWNoIG15ICR3b3JrX3B1dGNvZGUgKEB3 +b3JrX3B1dGNvZGVzKQogICAgICAgIHsKICAgICAgICAgICAgJHB1dGNvZGUgPSAkd29ya19wdXRj +b2RlOwogICAgICAgIH0KCQlteSAkY29udHJpYnV0b3IgPSB7CgkJCW5hbWUgPT4gewoJCQkJZ2l2 +ZW4gPT4gJHVzZXJzX25hbWUtPntnaXZlbn0sCgkJCQlmYW1pbHkgPT4gJHVzZXJzX25hbWUtPntm +YW1pbHl9LAoJCQl9LAogICAgICAgCQlpZCA9PiAkdXNlci0+Z2V0X3ZhbHVlKCAiZW1haWwiICks +CgkJCW9yY2lkID0+ICR1c2VyLT52YWx1ZSggIm9yY2lkIiApLAoJCQlwdXRjb2RlID0+ICRwdXRj +b2RlLAoJCX07CiAgICAgICAgcHVzaCBAeyRlcHJpbnRfY29udHJpYnN7Y3JlYXRvcnN9fSwgJGNv +bnRyaWJ1dG9yOwogICAgfQoKICAgICMgU2V0IHRoZSBjb250cmlidXRvcnMgKG92ZXJ3cml0ZXMg +d2hhdCBtaWdodCBoYXZlIGJlZW4gZ2xlYW5lZCBmcm9tIGNpdGF0aW9uKQogICAgZm9yIG15ICRr +ZXkgKGtleXMgJWVwcmludF9jb250cmlicykKICAgIHsKICAgICAgICAkZXByaW50LT5zZXRfdmFs +dWUoICRrZXksICRlcHJpbnRfY29udHJpYnN7JGtleX0gKSBpZiBFUHJpbnRzOjpVdGlsczo6aXNf +c2V0KEB7JGVwcmludF9jb250cmlic3ska2V5fX0pOwogICAgfQoKCSNzYXZlIHRoZSByZWNvcmQK +CSRlcHJpbnQtPmNvbW1pdDsKIwlwcmludCBTVERFUlIgImNyZWF0b3JzIGluIGVwcmludDogIi5E +dW1wZXIoJGVwcmludC0+dmFsdWUoICJjcmVhdG9ycyIpKS4iXG4iOwoJcmV0dXJuICRlcHJpbnQ7 +Cn0KCiMgcmV0dXJuIGEgZGF0ZSBmb3IgdGhlIGZpbHRlcmluZyBwcm9jZXNzIC0gZGVwZW5kaW5n +IG9uIHRoZSB0eXBlIG9mIGRhdGUgd2UncmUgYWZ0ZXIgd2UnbGwgbmVlZCB0byByZXRyaWV2ZSBp +dCBpbiBkaWZmZXJlbnQgd2F5cwpzdWIgZ2V0X3dvcmtfZGF0ZQp7CiAgICBteSggJHNlbGYsICRy +ZXBvLCAkd29yayApID0gQF87CgogICAgbXkgJGRhdGVfdHlwZSA9ICRyZXBvLT5jb25maWcoICJv +cmNpZF9zdXBwb3J0X2FkdmFuY2UiLCAiZmlsdGVyX2RhdGUiICkgfHwgImxhc3QtbW9kaWZpZWQt +ZGF0ZSI7CiAgICBpZiggJGRhdGVfdHlwZSBlcSAibGFzdC1tb2RpZmllZC1kYXRlIiB8fCAkZGF0 +ZV90eXBlIGVxICJjcmVhdGVkLWRhdGUiICkKICAgIHsKICAgICAgICByZXR1cm4gJHdvcmstPnsk +ZGF0ZV90eXBlfS0+eyd2YWx1ZSd9IC8gMTAwMDsKICAgIH0KICAgIGVsc2lmKCAkZGF0ZV90eXBl +IGVxICJwdWJsaWNhdGlvbi1kYXRlIiApCiAgICB7ICAgICAgIAogICAgICAgIG15ICR5ZWFyID0g +JHdvcmstPnskZGF0ZV90eXBlfS0+e3llYXJ9LT57dmFsdWV9IGlmKCBkZWZpbmVkICR3b3JrLT57 +JGRhdGVfdHlwZX0tPnt5ZWFyfS0+e3ZhbHVlfSApOwogICAgICAgIG15ICRtb250aCA9ICR3b3Jr +LT57JGRhdGVfdHlwZX0tPnttb250aH0tPnt2YWx1ZX0gaWYoIGRlZmluZWQgJHdvcmstPnskZGF0 +ZV90eXBlfS0+e21vbnRofS0+e3ZhbHVlfSApOwogICAgICAgIG15ICRkYXkgPSAkd29yay0+eyRk +YXRlX3R5cGV9LT57ZGF5fS0+e3ZhbHVlfSBpZiggZGVmaW5lZCAkd29yay0+eyRkYXRlX3R5cGV9 +LT57ZGF5fS0+e3ZhbHVlfSApOwogICAgICAgIGlmKCBkZWZpbmVkICR5ZWFyICYmIGRlZmluZWQg +JG1vbnRoICYmIGRlZmluZWQgJGRheSApCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gdGlt +ZWdtKCAwLCAwLCAwLCAkZGF5LCAkbW9udGgtMSwgJHllYXItMTkwMCApOwogICAgICAgIH0KICAg +IH0KCiAgICAjIG5vdGhpbmcgd2UgY2FuIHJlYWxseSB3b3JrIHdpdGguLi4gOigKICAgIHJldHVy +biB1bmRlZjsKfQo= @@ -3372,9 +3374,9 @@ dWUgLyAzNiApOwogICAgfQogICAgcmV0dXJuICRyZXR2YWw7Cn0K document plugins/EPrints/Plugin/Screen/Report/Orcid/CheckName.pm text/plain - b9fa56f58a5cdd35b24c0e60b827e780 + 37d5dc4bac8249bddc3cf29d4b74c706 MD5 - 4786 + 4743 cGFja2FnZSBFUHJpbnRzOjpQbHVnaW46OlNjcmVlbjo6UmVwb3J0OjpPcmNpZDo6Q2hlY2tOYW1l OwoKdXNlIEVQcmludHM6OlBsdWdpbjo6U2NyZWVuOjpSZXBvcnQ6Ok9yY2lkOwpvdXIgQElTQSA9 ICggJ0VQcmludHM6OlBsdWdpbjo6U2NyZWVuOjpSZXBvcnQ6Ok9yY2lkJyApOwoKdXNlIHN0cmlj @@ -3412,53 +3414,53 @@ RkFMU0UnLCBtYXRjaCA9PiAnRVgnIH07CgogICAgcmV0dXJuIFxAZmlsdGVyczsKCn0KCnN1YiBp dGVtcwp7CiAgICBteSggJHNlbGYgKSA9IEBfOwoKICAgIG15ICRsaXN0ID0gJHNlbGYtPlNVUEVS OjppdGVtcygpOwogICAgaWYoIGRlZmluZWQgJGxpc3QgKQogICAgewogICAgICAgIG15IEBpZHMg PSAoKTsKCiAgICAgICAgJGxpc3QtPm1hcChzdWJ7CiAgICAgICAgICAgIG15KCAkc2Vzc2lvbiwg -JGRhdGFzZXQsICR1c2VyICkgPSBAXzsKCQlwcmludCBTRFRFUlIgInVzZXI6ICIgLiAkdXNlci0+ -aWQgLiAiXG4iOwogICAgICAgICAgICBteSBAcHJvYmxlbXMgPSAkc2VsZi0+dmFsaWRhdGVfZGF0 -YW9iaiggJHVzZXIgKTsKCiAgICAgICAgICAgIGlmKCAoIHNjYWxhciggQHByb2JsZW1zICkgPiAw -ICkgJiYgKCAkdXNlci0+aXNfc2V0KCAib3JjaWQiICkgKSApCiAgICAgICAgICAgIHsKICAgICAg -ICAgICAgICAgIHB1c2ggQGlkcywgJHVzZXItPmlkOwogICAgICAgICAgICB9CiAgICAgICAgfSk7 -CiAgICAgICAgCiAgICAgICAgbXkgJGRzID0gJHNlbGYtPntzZXNzaW9ufS0+ZGF0YXNldCggJHNl -bGYtPntkYXRhc2V0aWR9ICk7CiAgICAgICAgbXkgJHJlc3VsdHMgPSAkZHMtPmxpc3QoXEBpZHMp -OwogICAgICAgIHJldHVybiAkcmVzdWx0czsKCiAgICB9CiAgICAKICAgICMgd2UgY2FuJ3QgcmV0 -dXJuIGFuIEVQcmludHM6Okxpc3QgaWYge2RhdGFzZXR9IGlzIG5vdCBkZWZpbmVkCiAgICByZXR1 -cm4gdW5kZWY7Cn0KCnN1YiBhamF4X3VzZXIKewogICAgbXkoICRzZWxmICkgPSBAXzsKCiAgICBt -eSAkcmVwbyA9ICRzZWxmLT5yZXBvc2l0b3J5OwoKICAgIG15ICRqc29uID0geyBkYXRhID0+IFtd -IH07CiAgICAkcmVwby0+ZGF0YXNldCggInVzZXIiICkKICAgICAgICAtPmxpc3QoIFskcmVwby0+ -cGFyYW0oICJ1c2VyIiApXSApCiAgICAgICAgLT5tYXAoc3ViIHsKICAgICAgICAgICAgKHVuZGVm -LCB1bmRlZiwgbXkgJHVzZXIpID0gQF87CgogICAgICAgICAgICByZXR1cm4gaWYgIWRlZmluZWQg -JHVzZXI7ICMgb2RkCgogICAgICAgICAgICBteSAkZnJhZyA9ICR1c2VyLT5yZW5kZXJfY2l0YXRp -b25fbGluazsKICAgICAgICAgICAgcHVzaCBAeyRqc29uLT57ZGF0YX19LCB7CiAgICAgICAgICAg -ICAgICBkYXRhc2V0aWQgPT4gJHVzZXItPmRhdGFzZXQtPmJhc2VfaWQsCiAgICAgICAgICAgICAg -ICBkYXRhb2JqaWQgPT4gJHVzZXItPmlkLAogICAgICAgICAgICAgICAgc3VtbWFyeSA9PiBFUHJp -bnRzOjpYTUw6OnRvX3N0cmluZyggJGZyYWcgKSwKICAgICAgICAgICAgICAgICNncm91cGluZyA9 -PiBzcHJpbnRmKCAiJXMiLCAkdXNlci0+dmFsdWUoIFNPTUVfRklFTEQgKSApLAogICAgICAgICAg -ICAgICAgcHJvYmxlbXMgPT4gWyAkc2VsZi0+dmFsaWRhdGVfZGF0YW9iaiggJHVzZXIgKSBdLAog -ICAgICAgICAgICB9OwogICAgICAgIH0pOwogICAgcHJpbnQgJHNlbGYtPnRvX2pzb24oICRqc29u -ICk7Cn0KCnN1YiB2YWxpZGF0ZV9kYXRhb2JqCnsKICAgIG15KCAkc2VsZiwgJHVzZXIgKSA9IEBf -OwoKICAgIG15ICRyZXBvID0gJHNlbGYtPntyZXBvc2l0b3J5fTsKCiAgICBteSBAcHJvYmxlbXM7 -CgogICAgIyBnZXQgdXNlciBwcm9maWxlIG5hbWUgYW5kIG9yY2lkIG5hbWUKICAgIG15ICRuYW1l -ID0gJHVzZXItPmdldF92YWx1ZSggIm5hbWUiICk7CiAgICBteSAkb3JjaWRfbmFtZSA9ICR1c2Vy -LT5nZXRfdmFsdWUoICJvcmNpZF9uYW1lIiApOwoKICAgIGlmKCAkbmFtZS0+e2dpdmVufSBuZSAk -b3JjaWRfbmFtZS0+e2dpdmVufSApCiAgICB7CiAgICAgICAgcHVzaCBAcHJvYmxlbXMsIEVQcmlu -dHM6OlhNTDo6dG9fc3RyaW5nKCAkcmVwby0+aHRtbF9waHJhc2UoICJnaXZlbl9uYW1lX21pc21h -dGNoIiwgZ2l2ZW4gPT4gJHJlcG8tPnhtbC0+Y3JlYXRlX3RleHRfbm9kZSggJG9yY2lkX25hbWUt -PntnaXZlbn0gKSApICk7CiAgICB9CgogICAgaWYoICRuYW1lLT57ZmFtaWx5fSBuZSAkb3JjaWRf -bmFtZS0+e2ZhbWlseX0gKQogICAgewogICAgICAgIHB1c2ggQHByb2JsZW1zLCBFUHJpbnRzOjpY -TUw6OnRvX3N0cmluZyggJHJlcG8tPmh0bWxfcGhyYXNlKCAiZmFtaWx5X25hbWVfbWlzbWF0Y2gi -LCBmYW1pbHkgPT4gJHJlcG8tPnhtbC0+Y3JlYXRlX3RleHRfbm9kZSggJG9yY2lkX25hbWUtPntm -YW1pbHl9ICkgKSApOwogICAgfQoKICAgICMgaWYgd2UgaGF2ZSBwcm9ibGVtcywgYWRkIGZsYWcg -b3B0aW9uIHRvIHJlbW92ZSB0aGVtCiAgICBpZiggc2NhbGFyIEBwcm9ibGVtcyA+IDAgKQogICAg -ewogICAgICAgIG15ICRmcmFnID0gJHJlcG8tPnhtbC0+Y3JlYXRlX2RvY3VtZW50X2ZyYWdtZW50 -KCk7CgogICAgICAgICRmcmFnLT5hcHBlbmRDaGlsZCggJHJlcG8tPmh0bWxfcGhyYXNlKCAiZmxh -Z19uYW1lX21pc21hdGNoIiApICk7CgogICAgICAgIG15ICRkaXYgPSAkZnJhZy0+YXBwZW5kQ2hp -bGQoICRyZXBvLT5tYWtlX2VsZW1lbnQoICJkaXYiLCBjbGFzcyA9PiAiZmxhZ19uYW1lX21pc21h -dGNoIiApICk7CiAKICAgICAgICAkZGl2LT5hcHBlbmRDaGlsZCggJHJlcG8tPnJlbmRlcl9oaWRk -ZW5fZmllbGQoICJ1c2VyaWQiLCAkdXNlci0+aWQgKSApOwoKICAgICAgICBteSAkY2hlY2tib3gg -PSAkZGl2LT5hcHBlbmRDaGlsZCggJHJlcG8tPm1ha2VfZWxlbWVudCggImlucHV0IiwKICAgICAg -ICAgICAgdHlwZSA9PiAiY2hlY2tib3giLAogICAgICAgICAgICBuYW1lID0+ICJmbGFnX25hbWVf -bWlzbWF0Y2giLAogICAgICAgICAgICB2YWx1ZSA9PiAkdXNlci0+dmFsdWUoICJvcmNpZF9uYW1l -X2ZsYWciICksCiAgICAgICAgKSApOwogICAgICAgIHB1c2ggQHByb2JsZW1zLCBFUHJpbnRzOjpY -TUw6OnRvX3N0cmluZyggJGZyYWcgKTsKICAgIH0KCiAgICByZXR1cm4gQHByb2JsZW1zOwp9Cg== +JGRhdGFzZXQsICR1c2VyICkgPSBAXzsKCiAgICAgICAgICAgIG15IEBwcm9ibGVtcyA9ICRzZWxm +LT52YWxpZGF0ZV9kYXRhb2JqKCAkdXNlciApOwoKICAgICAgICAgICAgaWYoICggc2NhbGFyKCBA +cHJvYmxlbXMgKSA+IDAgKSAmJiAoICR1c2VyLT5pc19zZXQoICJvcmNpZCIgKSApICkKICAgICAg +ICAgICAgewogICAgICAgICAgICAgICAgcHVzaCBAaWRzLCAkdXNlci0+aWQ7CiAgICAgICAgICAg +IH0KICAgICAgICB9KTsKICAgICAgICAKICAgICAgICBteSAkZHMgPSAkc2VsZi0+e3Nlc3Npb259 +LT5kYXRhc2V0KCAkc2VsZi0+e2RhdGFzZXRpZH0gKTsKICAgICAgICBteSAkcmVzdWx0cyA9ICRk +cy0+bGlzdChcQGlkcyk7CiAgICAgICAgcmV0dXJuICRyZXN1bHRzOwoKICAgIH0KICAgIAogICAg +IyB3ZSBjYW4ndCByZXR1cm4gYW4gRVByaW50czo6TGlzdCBpZiB7ZGF0YXNldH0gaXMgbm90IGRl +ZmluZWQKICAgIHJldHVybiB1bmRlZjsKfQoKc3ViIGFqYXhfdXNlcgp7CiAgICBteSggJHNlbGYg +KSA9IEBfOwoKICAgIG15ICRyZXBvID0gJHNlbGYtPnJlcG9zaXRvcnk7CgogICAgbXkgJGpzb24g +PSB7IGRhdGEgPT4gW10gfTsKICAgICRyZXBvLT5kYXRhc2V0KCAidXNlciIgKQogICAgICAgIC0+ +bGlzdCggWyRyZXBvLT5wYXJhbSggInVzZXIiICldICkKICAgICAgICAtPm1hcChzdWIgewogICAg +ICAgICAgICAodW5kZWYsIHVuZGVmLCBteSAkdXNlcikgPSBAXzsKCiAgICAgICAgICAgIHJldHVy +biBpZiAhZGVmaW5lZCAkdXNlcjsgIyBvZGQKCiAgICAgICAgICAgIG15ICRmcmFnID0gJHVzZXIt +PnJlbmRlcl9jaXRhdGlvbl9saW5rOwogICAgICAgICAgICBwdXNoIEB7JGpzb24tPntkYXRhfX0s +IHsKICAgICAgICAgICAgICAgIGRhdGFzZXRpZCA9PiAkdXNlci0+ZGF0YXNldC0+YmFzZV9pZCwK +ICAgICAgICAgICAgICAgIGRhdGFvYmppZCA9PiAkdXNlci0+aWQsCiAgICAgICAgICAgICAgICBz +dW1tYXJ5ID0+IEVQcmludHM6OlhNTDo6dG9fc3RyaW5nKCAkZnJhZyApLAogICAgICAgICAgICAg +ICAgI2dyb3VwaW5nID0+IHNwcmludGYoICIlcyIsICR1c2VyLT52YWx1ZSggU09NRV9GSUVMRCAp +ICksCiAgICAgICAgICAgICAgICBwcm9ibGVtcyA9PiBbICRzZWxmLT52YWxpZGF0ZV9kYXRhb2Jq +KCAkdXNlciApIF0sCiAgICAgICAgICAgIH07CiAgICAgICAgfSk7CiAgICBwcmludCAkc2VsZi0+ +dG9fanNvbiggJGpzb24gKTsKfQoKc3ViIHZhbGlkYXRlX2RhdGFvYmoKewogICAgbXkoICRzZWxm +LCAkdXNlciApID0gQF87CgogICAgbXkgJHJlcG8gPSAkc2VsZi0+e3JlcG9zaXRvcnl9OwoKICAg +IG15IEBwcm9ibGVtczsKCiAgICAjIGdldCB1c2VyIHByb2ZpbGUgbmFtZSBhbmQgb3JjaWQgbmFt +ZQogICAgbXkgJG5hbWUgPSAkdXNlci0+Z2V0X3ZhbHVlKCAibmFtZSIgKTsKICAgIG15ICRvcmNp +ZF9uYW1lID0gJHVzZXItPmdldF92YWx1ZSggIm9yY2lkX25hbWUiICk7CgogICAgaWYoICRuYW1l +LT57Z2l2ZW59IG5lICRvcmNpZF9uYW1lLT57Z2l2ZW59ICkKICAgIHsKICAgICAgICBwdXNoIEBw +cm9ibGVtcywgRVByaW50czo6WE1MOjp0b19zdHJpbmcoICRyZXBvLT5odG1sX3BocmFzZSggImdp +dmVuX25hbWVfbWlzbWF0Y2giLCBnaXZlbiA9PiAkcmVwby0+eG1sLT5jcmVhdGVfdGV4dF9ub2Rl +KCAkb3JjaWRfbmFtZS0+e2dpdmVufSApICkgKTsKICAgIH0KCiAgICBpZiggJG5hbWUtPntmYW1p +bHl9IG5lICRvcmNpZF9uYW1lLT57ZmFtaWx5fSApCiAgICB7CiAgICAgICAgcHVzaCBAcHJvYmxl +bXMsIEVQcmludHM6OlhNTDo6dG9fc3RyaW5nKCAkcmVwby0+aHRtbF9waHJhc2UoICJmYW1pbHlf +bmFtZV9taXNtYXRjaCIsIGZhbWlseSA9PiAkcmVwby0+eG1sLT5jcmVhdGVfdGV4dF9ub2RlKCAk +b3JjaWRfbmFtZS0+e2ZhbWlseX0gKSApICk7CiAgICB9CgogICAgIyBpZiB3ZSBoYXZlIHByb2Js +ZW1zLCBhZGQgZmxhZyBvcHRpb24gdG8gcmVtb3ZlIHRoZW0KICAgIGlmKCBzY2FsYXIgQHByb2Js +ZW1zID4gMCApCiAgICB7CiAgICAgICAgbXkgJGZyYWcgPSAkcmVwby0+eG1sLT5jcmVhdGVfZG9j +dW1lbnRfZnJhZ21lbnQoKTsKCiAgICAgICAgJGZyYWctPmFwcGVuZENoaWxkKCAkcmVwby0+aHRt +bF9waHJhc2UoICJmbGFnX25hbWVfbWlzbWF0Y2giICkgKTsKCiAgICAgICAgbXkgJGRpdiA9ICRm +cmFnLT5hcHBlbmRDaGlsZCggJHJlcG8tPm1ha2VfZWxlbWVudCggImRpdiIsIGNsYXNzID0+ICJm +bGFnX25hbWVfbWlzbWF0Y2giICkgKTsKIAogICAgICAgICRkaXYtPmFwcGVuZENoaWxkKCAkcmVw +by0+cmVuZGVyX2hpZGRlbl9maWVsZCggInVzZXJpZCIsICR1c2VyLT5pZCApICk7CgogICAgICAg +IG15ICRjaGVja2JveCA9ICRkaXYtPmFwcGVuZENoaWxkKCAkcmVwby0+bWFrZV9lbGVtZW50KCAi +aW5wdXQiLAogICAgICAgICAgICB0eXBlID0+ICJjaGVja2JveCIsCiAgICAgICAgICAgIG5hbWUg +PT4gImZsYWdfbmFtZV9taXNtYXRjaCIsCiAgICAgICAgICAgIHZhbHVlID0+ICR1c2VyLT52YWx1 +ZSggIm9yY2lkX25hbWVfZmxhZyIgKSwKICAgICAgICApICk7CiAgICAgICAgcHVzaCBAcHJvYmxl +bXMsIEVQcmludHM6OlhNTDo6dG9fc3RyaW5nKCAkZnJhZyApOwogICAgfQoKICAgIHJldHVybiBA +cHJvYmxlbXM7Cn0K @@ -5775,7 +5777,7 @@ Y2s7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9Cg== text/x-asm - text + other
static/style/auto/orcid_support_advance.css
install @@ -6017,7 +6019,7 @@ OCbBIYRwTIJDCOGYBIcQwrH/Dw9FzEHSgHCpAAAAAElFTkSuQmCC coverimage - 2.0.1 + 2.0.2 EPMC::OrcidSupportAdvance diff --git a/orcid_support_advance.epmi b/orcid_support_advance.epmi index 2530e47..93c3705 100644 --- a/orcid_support_advance.epmi +++ b/orcid_support_advance.epmi @@ -145,17 +145,17 @@ document plugins/EPrints/Plugin/Screen/ExportToOrcid.pm text/plain - 249660b4831282052d23569479493583 + df421b45c8431b7280e57993a05e9940 MD5 - 21971 + 22010 document plugins/EPrints/Plugin/Screen/ImportFromOrcid.pm text/plain - c4bf73ff5e21870f0897244b14fa4838 + 2cddd5c82b6208a65cc74f014bf326f3 MD5 - 31151 + 31190 document @@ -169,9 +169,9 @@ document plugins/EPrints/Plugin/Screen/Report/Orcid/CheckName.pm text/plain - b9fa56f58a5cdd35b24c0e60b827e780 + 37d5dc4bac8249bddc3cf29d4b74c706 MD5 - 4786 + 4743 document @@ -239,7 +239,7 @@ text/x-asm - text + other
static/style/auto/orcid_support_advance.css
install @@ -259,7 +259,7 @@ coverimage - 2.0.1 + 2.0.2 EPMC::OrcidSupportAdvance