diff --git a/reports.epm b/reports.epm
index e47b871..5da874f 100644
--- a/reports.epm
+++ b/reports.epm
@@ -134,9 +134,9 @@ ICAgIHNob3dfemVyb19yZXN1bHRzID0+IDEsCn07Cgo=
lang/en/phrases/reports.xml
text/xml
- f344518160d45ccd1d1709a926d9e6d1
+ 9c23d9b3d22356d0ff30793364082dbb
MD5
- 2563
+ 2685
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjwh
RE9DVFlQRSBwaHJhc2VzIFNZU1RFTSAiZW50aXRpZXMuZHRkIj4KPGVwcDpwaHJhc2VzIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB4bWxuczplcHA9Imh0dHA6Ly9lcHJpbnRz
@@ -181,7 +181,10 @@ ZXByaW50X3JlcG9ydDpncm91cDpkYXRlIj5EYXRlPC9lcHA6cGhyYXNlPgoKPCEtLSBVc2VyIFJl
cG9ydCAtLT4KPGVwcDpwaHJhc2UgaWQ9IlBsdWdpbi9TY3JlZW4vUmVwb3J0L1VzZXI6dGl0bGUi
PlVzZXJzPC9lcHA6cGhyYXNlPgo8ZXBwOnBocmFzZSBpZD0iZXhwb3J0ZmllbGRzOnVzZXJfcmVw
b3J0X2NvcmUiPkV4cG9ydCBGaWVsZHM8L2VwcDpwaHJhc2U+CjxlcHA6cGhyYXNlIGlkPSJ1c2Vy
-X3JlcG9ydDpzb3J0OmJ5bmFtZSI+TmFtZTwvZXBwOnBocmFzZT4KCjwvZXBwOnBocmFzZXM+Cg==
+X3JlcG9ydDpzb3J0OmJ5bmFtZSI+TmFtZTwvZXBwOnBocmFzZT4KCjwhLS0gRml4IGZvciB0eXBv
+LWVkIHBocmFzZSBuYW1lIGluIHByZS0zLjQuNiBFUHJpbnRzIC0tPgo8ZXBwOnBocmFzZSBpZD0i
+VXBkYXRlL1ZpZXdzOmdyb3VwX3NlcGFyYXRvciI+IHwgPC9lcHA6cGhyYXNlPgoKPC9lcHA6cGhy
+YXNlcz4K
@@ -763,7 +766,7 @@ YWx1ZVwiIjsKCX0KCglyZXR1cm4gJHZhbHVlOwp9CgoKMTsK
plugins/EPrints/Plugin/Screen/Report.pm
text/plain
- f39fb0deae29a19b89b66997340c3894
+ 645bd1e2a38d975945e731b597c26f9d
MD5
44087
cGFja2FnZSBFUHJpbnRzOjpQbHVnaW46OlNjcmVlbjo6UmVwb3J0OwoKIyBBYnN0cmFjdCBjbGFz
@@ -1267,7 +1270,7 @@ ICAgICB7CgkJbXkgJHNvcnRfdmFsdWUgPSAkc29ydF9jb25mLT57JHNvcnRfbmFtZX07CgkJaWYo
ICRmaXJzdCApCgkJewoJCQkkZm9ybS0+YXBwZW5kQ2hpbGQoICRyZXBvLT5yZW5kZXJfaGlkZGVu
X2ZpZWxkKCAic29ydCIsICRzb3J0X3ZhbHVlKSApOwoJCX0KCgkJaWYoICEkZmlyc3QgKQogICAg
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgCSRzb3J0X2xpbmtzLT5hcHBlbmRDaGlsZCgg
-JHJlcG8tPmh0bWxfcGhyYXNlKCAiVXBkYXRlL1ZpZXdzOmdyb3VwX3NlcGVyYXRvciIgKSApOwog
+JHJlcG8tPmh0bWxfcGhyYXNlKCAiVXBkYXRlL1ZpZXdzOmdyb3VwX3NlcGFyYXRvciIgKSApOwog
ICAgICAgICAgICAgICAgfQoJCQoJCWlmKCBkZWZpbmVkICRzZWxmLT57cHJvY2Vzc29yfS0+e3Nv
cnR9ICYmICRzZWxmLT57cHJvY2Vzc29yfS0+e3NvcnR9IGVxICRzb3J0X3ZhbHVlICkKCQl7CgkJ
CW15ICRzdHJvbmcgPSAkcmVwby0+bWFrZV9lbGVtZW50KCAic3Ryb25nIiApOwoJCQkkc3Ryb25n
@@ -1301,7 +1304,7 @@ LCAkZ3JvdXBfdmFsdWUgKTsKCQlpZiggJGZpcnN0ICkKCQl7CgkJCSRmb3JtLT5hcHBlbmRDaGls
ZCggJHJlcG8tPnJlbmRlcl9oaWRkZW5fZmllbGQoICJncm91cCIsICRncm91cF92YWx1ZSkgKTsK
CQl9CgoJCWlmKCAhJGZpcnN0ICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIAkk
Z3JvdXBfbGlua3MtPmFwcGVuZENoaWxkKCAkcmVwby0+aHRtbF9waHJhc2UoICJVcGRhdGUvVmll
-d3M6Z3JvdXBfc2VwZXJhdG9yIiApICk7CiAgICAgICAgICAgICAgICB9CgkJCgkJaWYoIGRlZmlu
+d3M6Z3JvdXBfc2VwYXJhdG9yIiApICk7CiAgICAgICAgICAgICAgICB9CgkJCgkJaWYoIGRlZmlu
ZWQgJHNlbGYtPntwcm9jZXNzb3J9LT57Z3JvdXB9ICYmICRzZWxmLT57cHJvY2Vzc29yfS0+e2dy
b3VwfSBlcSAkZ3JvdXBfZmllbGQgKQoJCXsKCQkJbXkgJHN0cm9uZyA9ICRyZXBvLT5tYWtlX2Vs
ZW1lbnQoICJzdHJvbmciICk7CgkJCSRzdHJvbmctPmFwcGVuZENoaWxkKCAkcmVwby0+aHRtbF9w
@@ -1313,7 +1316,7 @@ Pmh0bWxfcGhyYXNlKCAkc2VsZi0+e2dyb3VwX2NvbmZ9IC4gIjpncm91cDoiIC4gJGdyb3VwX2Zp
ZWxkICkgKTsKCQkJJGdyb3VwX2xpbmtzLT5hcHBlbmRDaGlsZCggJGxpbmsgKTsKCQl9CgkJJGZp
cnN0ID0gMDsKICAgICAgICB9ICAgICAgICAgICAKCQoJI25vIGdyb3VwaW5nIGxpbmsgYXQgdGhl
IGVuZAoJJGdyb3VwX2xpbmtzLT5hcHBlbmRDaGlsZCggJHJlcG8tPmh0bWxfcGhyYXNlKCAiVXBk
-YXRlL1ZpZXdzOmdyb3VwX3NlcGVyYXRvciIgKSApOwoJaWYoIGRlZmluZWQgJHNlbGYtPntwcm9j
+YXRlL1ZpZXdzOmdyb3VwX3NlcGFyYXRvciIgKSApOwoJaWYoIGRlZmluZWQgJHNlbGYtPntwcm9j
ZXNzb3J9LT57Z3JvdXB9ICYmICRzZWxmLT57cHJvY2Vzc29yfS0+e2dyb3VwfSBuZSAiIiApCgl7
CgkJbXkgJGxpbmsgPSAkcmVwby0+cmVuZGVyX2xpbmsoICdqYXZhc2NyaXB0Omdyb3VwX3JlcG9y
dCgiIiknICk7CQoJCSRsaW5rLT5hcHBlbmRDaGlsZCggJHJlcG8tPmh0bWxfcGhyYXNlKCAicmVw
@@ -1338,7 +1341,7 @@ X2FjdGlvbl9uZXdzZWFyY2g9MSIgKTsKCSAgIAkkbmV3X2xpbmstPmFwcGVuZENoaWxkKCAkcmVw
by0+aHRtbF9waHJhc2UoICJsaWIvc2VhcmNoZXhwcmVzc2lvbjpuZXciICkgKTsKCQkkc2VhcmNo
X2xpbmtzLT5hcHBlbmRDaGlsZCggJG5ld19saW5rICk7CgoJCSNhZGQgYSBzZXBhcmF0b3IuLi4K
CQkkc2VhcmNoX2xpbmtzLT5hcHBlbmRDaGlsZCggJHJlcG8tPmh0bWxfcGhyYXNlKCAiVXBkYXRl
-L1ZpZXdzOmdyb3VwX3NlcGVyYXRvciIgKSApOwoKCQkjc2V0IHVwIHJlZmluZSBzZWFyY2ggbGlu
+L1ZpZXdzOmdyb3VwX3NlcGFyYXRvciIgKSApOwoKCQkjc2V0IHVwIHJlZmluZSBzZWFyY2ggbGlu
awoJCW15ICRyZWZpbmVfYmFzZXVybCA9IFVSSS0+bmV3KCAkc2VsZi0+e3Nlc3Npb259LT5nZXRf
dXJpICk7CiAgICAgICAgCSRyZWZpbmVfYmFzZXVybC0+cXVlcnlfZm9ybSgKCSAgICAgICAgCWNh
Y2hlID0+ICRjYWNoZWlkLAoJICAgICAgICAgICAgICAgIGV4cCA9PiAkZXNjZXhwLAogICAgICAg
@@ -2144,9 +2147,9 @@ mCeqVAAAAABJRU5ErkJggg==
static/javascript/auto/reports.js
text/plain
- 399f9957d04d330098e2280f062661d9
+ fb34e39d76dbc63ac1d052981fca063f
MD5
- 12696
+ 12978
dmFyIGluaXRSZXBvcnRGb3JtID0gZnVuY3Rpb24oKXsKCiAgICAgICAgLy9wb2x5ZmlsbCBmb3Ig
SUUKICAgICAgICAoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgaWYgKCB0eXBlb2Ygd2lu
ZG93LkN1c3RvbUV2ZW50ID09PSAiZnVuY3Rpb24iICkgcmV0dXJuIGZhbHNlOyAvL0lmIG5vdCBJ
@@ -2170,206 +2173,211 @@ YnV0ZSgnZm9ybScpOwoJCgkvL2hpZGUgb3RoZXIgZm9ybXMKCSQkKCcuZXBfc2VhcmNoX2ZpZWxk
cycpLmVhY2goZnVuY3Rpb24gKGVsZW0pIAoJewkKCQkvL2hpZGUgdGhlIGZvcm0KCQkkKGVsZW0p
LmhpZGUoKTsKCQkkKGVsZW0pLnJlbW92ZUNsYXNzTmFtZSgic2VsZWN0ZWRfZm9ybSIpOwoJCSQo
ZWxlbSkuc2VsZWN0KCdpbnB1dCcpLmVhY2goZnVuY3Rpb24gKGlucHV0KQoJCXsKCQkJJChpbnB1
-dCkuc2V0QXR0cmlidXRlKCJkaXNhYmxlZCIsICJkaXNhYmxlZCIpOwoJCX0pOwoJfSk7CgkJCgkv
-L3Nob3cgdGhlIGZvcm0gd2Ugd2FudAoJJChmb3JtaWQpLnNob3coKTsKCSQoZm9ybWlkKS5hZGRD
-bGFzc05hbWUoInNlbGVjdGVkX2Zvcm0iKTsKCgkvL2VuYWJsZSB0aGlzIGZvcm0ncyBpbnB1dCBl
-bGVtZW50cwoJJChmb3JtaWQpLnNlbGVjdCgnaW5wdXQnKS5lYWNoKGZ1bmN0aW9uIChpbnB1dCkK
-CXsKCQkkKGlucHV0KS5yZW1vdmVBdHRyaWJ1dGUoImRpc2FibGVkIik7Cgl9KTsKCn07CgovLyBV
-c2VkIGJ5IHRoZSBTY3JlZW46OlJlcG9ydDo6cmVuZGVyIG1ldGhvZAoKdmFyIEVQcmludHNfU2Ny
-ZWVuX1JlcG9ydF9Mb2FkZXIgPSBDbGFzcy5jcmVhdGUoewoJaGFzX3Byb2JsZW1zOiAwLAoJY291
-bnQ6IDAsCglydW5zOiAwLAoJcHJvZ3Jlc3M6IG51bGwsCglpZHM6IEFycmF5KCksCglzdGVwOiAy
-MCwKCXByZWZpeDogJycsCglvblByb2JsZW1zOiBmdW5jdGlvbigpIHt9LAoJb25GaW5pc2g6IGZ1
-bmN0aW9uKCkge30sCgl1cmw6ICIiLAoJcGFyYW1ldGVyczogIiIsCgljb250YWluZXI6IG51bGws
-CglzaG93X2NvbXBsaWFuY2U6IDEsCQoKCS8vIHRvIHNob3cgYSBwcmV0dHkgcHJvZ3Jlc3MgYmFy
-ICglIGNvbXBsaWFuY2UpOgoJdG90YWxfZGF0YW9ianM6IDAsCgl0b3RhbF9ub25jb21wbGlhbnQ6
-IDAsCgoKCWluaXRpYWxpemU6IGZ1bmN0aW9uKG9wdHMpIHsKCQlpZiggb3B0cy5pZHMgKQoJCQl0
-aGlzLmlkcyA9IG9wdHMuaWRzOwoJCWlmKCBvcHRzLnN0ZXAgKQoJCQl0aGlzLnN0ZXAgPSBvcHRz
-LnN0ZXA7CgkJaWYoIG9wdHMucHJlZml4ICkKCQkJdGhpcy5wcmVmaXggPSBvcHRzLnByZWZpeDsK
-CQlpZiggb3B0cy5vbkZpbmlzaCApCgkJCXRoaXMub25GaW5pc2ggPSBvcHRzLm9uRmluaXNoOwoJ
-CWlmKCBvcHRzLm9uUHJvYmxlbXMgKQoJCQl0aGlzLm9uUHJvYmxlbXMgPSBvcHRzLm9uUHJvYmxl
-bXM7CgkJaWYoIG9wdHMudXJsICkKCQl7CgkJCXRoaXMudXJsID0gb3B0cy51cmw7CgkJfQoJCWlm
-KCBvcHRzLnBhcmFtZXRlcnMgKQoJCQl0aGlzLnBhcmFtZXRlcnMgPSBvcHRzLnBhcmFtZXRlcnM7
-CgkJaWYoIG9wdHMuY29udGFpbmVyX2lkICkKCQkJdGhpcy5jb250YWluZXIgPSAkKCBvcHRzLmNv
-bnRhaW5lcl9pZCApOwkvLyBzaG91bGQgZmFpbCBpZiBjb250YWluZXIgZG9lc24ndCBleGlzdC4u
-LgoJCWlmKCBvcHRzLmhhc093blByb3BlcnR5KCdzaG93X2NvbXBsaWFuY2UnKSApCgkJewoJCQl0
-aGlzLnNob3dfY29tcGxpYW5jZSA9IG9wdHMuc2hvd19jb21wbGlhbmNlOwoJCX0KCQlpZiggb3B0
-cy5sYWJlbHMgKQoJCXsKCQkJdGhpcy5sYWJlbHMgPSBvcHRzLmxhYmVsczsKCQl9Cgl9LAoKCWV4
-ZWN1dGU6IGZ1bmN0aW9uKCkgewoJCS8vIHByb2dyZXNzLWJhcgoKCQl0aGlzLmNvbnRhaW5lci5p
-bnNlcnQoIG5ldyBFbGVtZW50KCAnZGl2JywgeyAnY2xhc3MnOiAnZXBfcmVwb3J0X3Byb2dyZXNz
-X2JhcicsICdpZCc6IHRoaXMucHJlZml4ICsgIl9wcm9ncmVzc19iYXIiIH0gKSApOwkKCgkJdmFy
-IGN1cnJlbnRfZ3JvdXBpbmcgPSBudWxsOwkvLyBtaWdodCBub3QgYmUgc2V0IGluIHRoZSByZXR1
-cm5lZCB2YWx1ZSBidXQgdGhhdCdzIGFsbG93ZWQvT0sKCgkJdmFyIGRhdGFvYmpzID0ge307CgkJ
-dmFyIGdyb3VwZWQgPSBmYWxzZTsKCQl2YXIgc2Vlbl9pZHMgPSB7fTsKCQl0aGlzLm5vX2l0ZW1z
-ID0gdGhpcy5pZHMubGVuZ3RoOwoJCXRoaXMucmV0cmlldmVkID0gW107CgkJaWYoICFpc0ludGVn
-ZXIodGhpcy5pZHNbMF0pICkgLy9pZHMgaGF2ZSBiZWVuIGdyb3VwZWQKCQl7CQoJCQlncm91cGVk
-ID0gdHJ1ZTsKCQkJdGhpcy5ncm91cGVkX2lkcyA9IHRoaXMuaWRzOwoJCQl0aGlzLmlkcyA9IFtd
-OwoJCQlmb3IoIHZhciBpID0gMDsgaSA8IHRoaXMuZ3JvdXBlZF9pZHMubGVuZ3RoOyBpKysgKQoJ
-CQl7CgkJCQl0aGlzLmlkcyA9IHRoaXMuaWRzLmNvbmNhdCh0aGlzLmdyb3VwZWRfaWRzW2ldLmxp
-c3QpOwoJCQl9CgkJCS8vdGhlIGdyb3VwaW5nIG1heSBoYXZlIGNyZWF0ZWQgZHVwbGljYXRlIHJl
-Y29yZHMgKGkuZS4gYSByZWNvcmQgY2FuIGFwcGVhciBpbiBtb3JlIHRoYW4gb25lIGdyb3VwKSAt
-IGl0J3MgaGFuZHkgdG8gaGF2ZSBhbiBhcnJheSBvZiBhbGwgdGhlIHVuaXF1ZSByZWNvcmRzCgkJ
-CXRoaXMudW5pcXVlID0gdGhpcy5pZHMuZmlsdGVyKGZ1bmN0aW9uKGl0ZW0sIGksIGFyKXsgcmV0
-dXJuIGFyLmluZGV4T2YoaXRlbSkgPT09IGk7IH0pOwoJCQl0aGlzLm5vX2l0ZW1zID0gdGhpcy51
-bmlxdWUubGVuZ3RoOwoJCX0KCQlmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5pZHMubGVuZ3RoOyBp
-Kz10aGlzLnN0ZXApCgkJewoJCQkvLyBhcmd1bWVudHMgZm9yIEFqYXggcXVlcnkgQU5EIGNyZWF0
-ZXMgdGhlIEhUTUwgcGxhY2Vob2xkZXJzIDxkaXY+J3MgKHRoYXQgd2lsbCByZWNlaXZlIHRoZSBj
-b250ZW50IG9mIHRoZSBBamF4IHF1ZXJ5Li4uKQkJCQkKCQkJdmFyIGFyZ3MgPSAnJmFqYXg9Jyt0
-aGlzLnByZWZpeDsKCQkJZm9yKHZhciBqID0gMDsgaiA8IHRoaXMuc3RlcCAmJiBpK2ogPCB0aGlz
-Lmlkcy5sZW5ndGg7IGorKykKCQkJewoJCQkJYXJncyArPSAnJicgKyB0aGlzLnByZWZpeCArICc9
-JyArIHRoaXMuaWRzW2kral07CgkJCQl2YXIgaWQgPSB0aGlzLnByZWZpeCArICdfJyArIHRoaXMu
-aWRzW2kral07CgkJCQl2YXIgdGFyZ2V0X2VsID0gJCggaWQgKTsKCQkJCWlmKCB0YXJnZXRfZWwg
-IT0gbnVsbCApCgkJCQl7CgkJCQkJLy9zdG9yZSBhIHJlY29yZCBvZiB0aGlzIGluIHNlZW5faWRz
-IHRvIGVuc3VyZSBlYWNoIHBsYWNlaG9sZGVyIGhhcyBhIHVuaXF1ZSBpZAoJCQkJCWlmKCAhKGlk
-IGluIHNlZW5faWRzKSApCgkJCQkJewoJCQkJCQlzZWVuX2lkc1tpZF0gPSAxOwoJCQkJCX0KCQkJ
-CQllbHNlCgkJCQkJewoJCQkJCQlzZWVuX2lkc1tpZF0gPSBzZWVuX2lkc1tpZF0gKyAxOwoJCQkJ
-CX0KCQkJCQlpZCA9IGlkICsgIl8iICsgc2Vlbl9pZHNbaWRdOwoJCQkJfQoJCQkJCQoJCQkJdGhp
-cy5jb250YWluZXIuaW5zZXJ0KCBuZXcgRWxlbWVudCggJ2RpdicsIHsgJ2NsYXNzJzogJ2VwX3Jl
-cG9ydF9yb3cnLCAnaWQnOiBpZCwgJ3Bvc2l0aW9uJzogaStqIH0gKSwgeyAncG9zaXRpb24nOiAn
-YWZ0ZXInIH0gKTsKCQkJfQoJCQluZXcgQWpheC5SZXF1ZXN0KCB0aGlzLnVybCwgewoJCQkJbWV0
-aG9kOiAnZ2V0JywKCQkJCXBhcmFtZXRlcnM6IHRoaXMucGFyYW1ldGVycyArIGFyZ3MsCgkJCQlv
-blN1Y2Nlc3M6IChmdW5jdGlvbih0cmFuc3BvcnQpIHsKCgkJCQkJdmFyIGpzb24gPSB0cmFuc3Bv
-cnQucmVzcG9uc2VUZXh0LmV2YWxKU09OKCk7CgkJCQkJdmFyIGRhdGEgPSBqc29uLmRhdGE7CgkK
-CQkJCQlpZiggZGF0YSA9PSBudWxsICkKCQkJCQkJZGF0YSA9IG5ldyBBcnJheSgpOwoJCQkJCWZv
-ciggdmFyIGk9MDsgaTxkYXRhLmxlbmd0aDsgaSsrICkKCQkJCQl7CgkJCQkJCXZhciBlbnRyeSA9
-IGRhdGFbaV07CgkJCQkKCQkJCQkJLy8gZW50cnkuZGF0YW9iamlkCgkJCQkJCS8vIGVudHJ5LnN1
-bW1hcnkKCQkJCQkJLy8gZW50cnkuZ3JvdXBpbmcKCQkJCQkJLy8gZW50cnkucHJvYmxlbXMKCgkJ
-CQkJCWlmKCBlbnRyeSA9PSBudWxsICkKCQkJCQkJCWNvbnRpbnVlOwoJCQkJCQkKCQkJCQkJdmFy
-IGRhdGFvYmppZCA9IGVudHJ5LmRhdGFvYmppZDsKCQkJCQkJaWYoIGRhdGFvYmppZCA9PSBudWxs
-ICkKCQkJCQkJCWNvbnRpbnVlOwoJCQkJCQlpZiggIShkYXRhb2JqaWQgaW4gZGF0YW9ianMpICkK
-CQkJCQkJewoJCQkJCQkJdGhpcy5jb3VudCsrOwoJCQkJCQkJZGF0YW9ianNbZGF0YW9iamlkXSA9
-IGVudHJ5OwoJCQkJCQl9CgkJCQkJfQoJCQkKCQkJCQkvLyB3ZSd2ZSByZXRyaWV2ZWQgYWxsIHRo
-ZSByZWNvcmRzCQkJCQoJCQkJCWlmKCB0aGlzLmNvdW50ID09IHRoaXMubm9faXRlbXMgKQoJCQkJ
-CXsKCQkJCQkJJCggdGhpcy5wcmVmaXggKyAnX3Byb2dyZXNzX2JhcicgKS5yZW1vdmUoKTsKCQkJ
-CQkJaWYoIHRoaXMuaGFzX3Byb2JsZW1zICkKCQkJCQkJCXRoaXMub25Qcm9ibGVtcyh0aGlzKTsK
-CQkJCQkJdGhpcy5vbkZpbmlzaCh0aGlzKTsKCQkJCQkJCQoJCQkJCQkvL2FkZCB0aGUgZ3JvdXAg
-aGVhZGluZ3MKCQkJCQkJaWYoZ3JvdXBlZCkKCQkJCQkJewoJCQkJCQkJdmFyIHBvc2l0aW9uID0g
-MDsKCQkJCQkJCWZvciggdmFyIGkgPSAwOyBpIDwgdGhpcy5ncm91cGVkX2lkcy5sZW5ndGg7IGkr
-KyApCgkJCQkgICAgICAgICAgICAgICAgICAgICAgICB7CQoJCQkJCQkJCXZhciB0YXJnZXRfZWwg
-PSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbcG9zaXRpb249IicgKyBwb3NpdGlvbiArICci
-XScpWzBdOwoJCQkJCQkJCXBvc2l0aW9uID0gcG9zaXRpb24gKyB0aGlzLmdyb3VwZWRfaWRzW2ld
-Lmxpc3QubGVuZ3RoOwkJCQoJCQkJCQkJCXZhciBncm91cGluZ19jb250YWluZXIgPSBuZXcgRWxl
-bWVudCggJ2RpdicsIHsgJ2NsYXNzJzogJ2VwX3JlcG9ydF9ncm91cGluZycgfSApOwogICAgICAg
+dCkuc2V0QXR0cmlidXRlKCJkaXNhYmxlZCIsICJkaXNhYmxlZCIpOwoJCX0pOwoJCSQoZWxlbSku
+c2VsZWN0KCdzZWxlY3QnKS5lYWNoKGZ1bmN0aW9uIChzZWxlY3QpCiAgICAgICAgewogICAgICAg
+ICAgICAkKHNlbGVjdCkuc2V0QXR0cmlidXRlKCJkaXNhYmxlZCIsICJkaXNhYmxlZCIpOwogICAg
+ICAgIH0pOwoJfSk7CgkJCgkvL3Nob3cgdGhlIGZvcm0gd2Ugd2FudAoJJChmb3JtaWQpLnNob3co
+KTsKCSQoZm9ybWlkKS5hZGRDbGFzc05hbWUoInNlbGVjdGVkX2Zvcm0iKTsKCgkvL2VuYWJsZSB0
+aGlzIGZvcm0ncyBpbnB1dCBlbGVtZW50cwoJJChmb3JtaWQpLnNlbGVjdCgnaW5wdXQnKS5lYWNo
+KGZ1bmN0aW9uIChpbnB1dCkKCXsKCQkkKGlucHV0KS5yZW1vdmVBdHRyaWJ1dGUoImRpc2FibGVk
+Iik7Cgl9KTsKCS8vZW5hYmxlIHRoaXMgZm9ybSdzIHNlbGVjdCBlbGVtZW50cwoJJChmb3JtaWQp
+LnNlbGVjdCgnc2VsZWN0JykuZWFjaChmdW5jdGlvbiAoc2VsZWN0KQogICAgewogICAgICAgICQo
+c2VsZWN0KS5yZW1vdmVBdHRyaWJ1dGUoImRpc2FibGVkIik7CiAgICB9KTsKCn07CgovLyBVc2Vk
+IGJ5IHRoZSBTY3JlZW46OlJlcG9ydDo6cmVuZGVyIG1ldGhvZAoKdmFyIEVQcmludHNfU2NyZWVu
+X1JlcG9ydF9Mb2FkZXIgPSBDbGFzcy5jcmVhdGUoewoJaGFzX3Byb2JsZW1zOiAwLAoJY291bnQ6
+IDAsCglydW5zOiAwLAoJcHJvZ3Jlc3M6IG51bGwsCglpZHM6IEFycmF5KCksCglzdGVwOiAyMCwK
+CXByZWZpeDogJycsCglvblByb2JsZW1zOiBmdW5jdGlvbigpIHt9LAoJb25GaW5pc2g6IGZ1bmN0
+aW9uKCkge30sCgl1cmw6ICIiLAoJcGFyYW1ldGVyczogIiIsCgljb250YWluZXI6IG51bGwsCglz
+aG93X2NvbXBsaWFuY2U6IDEsCQoKCS8vIHRvIHNob3cgYSBwcmV0dHkgcHJvZ3Jlc3MgYmFyICgl
+IGNvbXBsaWFuY2UpOgoJdG90YWxfZGF0YW9ianM6IDAsCgl0b3RhbF9ub25jb21wbGlhbnQ6IDAs
+CgoKCWluaXRpYWxpemU6IGZ1bmN0aW9uKG9wdHMpIHsKCQlpZiggb3B0cy5pZHMgKQoJCQl0aGlz
+LmlkcyA9IG9wdHMuaWRzOwoJCWlmKCBvcHRzLnN0ZXAgKQoJCQl0aGlzLnN0ZXAgPSBvcHRzLnN0
+ZXA7CgkJaWYoIG9wdHMucHJlZml4ICkKCQkJdGhpcy5wcmVmaXggPSBvcHRzLnByZWZpeDsKCQlp
+Ziggb3B0cy5vbkZpbmlzaCApCgkJCXRoaXMub25GaW5pc2ggPSBvcHRzLm9uRmluaXNoOwoJCWlm
+KCBvcHRzLm9uUHJvYmxlbXMgKQoJCQl0aGlzLm9uUHJvYmxlbXMgPSBvcHRzLm9uUHJvYmxlbXM7
+CgkJaWYoIG9wdHMudXJsICkKCQl7CgkJCXRoaXMudXJsID0gb3B0cy51cmw7CgkJfQoJCWlmKCBv
+cHRzLnBhcmFtZXRlcnMgKQoJCQl0aGlzLnBhcmFtZXRlcnMgPSBvcHRzLnBhcmFtZXRlcnM7CgkJ
+aWYoIG9wdHMuY29udGFpbmVyX2lkICkKCQkJdGhpcy5jb250YWluZXIgPSAkKCBvcHRzLmNvbnRh
+aW5lcl9pZCApOwkvLyBzaG91bGQgZmFpbCBpZiBjb250YWluZXIgZG9lc24ndCBleGlzdC4uLgoJ
+CWlmKCBvcHRzLmhhc093blByb3BlcnR5KCdzaG93X2NvbXBsaWFuY2UnKSApCgkJewoJCQl0aGlz
+LnNob3dfY29tcGxpYW5jZSA9IG9wdHMuc2hvd19jb21wbGlhbmNlOwoJCX0KCQlpZiggb3B0cy5s
+YWJlbHMgKQoJCXsKCQkJdGhpcy5sYWJlbHMgPSBvcHRzLmxhYmVsczsKCQl9Cgl9LAoKCWV4ZWN1
+dGU6IGZ1bmN0aW9uKCkgewoJCS8vIHByb2dyZXNzLWJhcgoKCQl0aGlzLmNvbnRhaW5lci5pbnNl
+cnQoIG5ldyBFbGVtZW50KCAnZGl2JywgeyAnY2xhc3MnOiAnZXBfcmVwb3J0X3Byb2dyZXNzX2Jh
+cicsICdpZCc6IHRoaXMucHJlZml4ICsgIl9wcm9ncmVzc19iYXIiIH0gKSApOwkKCgkJdmFyIGN1
+cnJlbnRfZ3JvdXBpbmcgPSBudWxsOwkvLyBtaWdodCBub3QgYmUgc2V0IGluIHRoZSByZXR1cm5l
+ZCB2YWx1ZSBidXQgdGhhdCdzIGFsbG93ZWQvT0sKCgkJdmFyIGRhdGFvYmpzID0ge307CgkJdmFy
+IGdyb3VwZWQgPSBmYWxzZTsKCQl2YXIgc2Vlbl9pZHMgPSB7fTsKCQl0aGlzLm5vX2l0ZW1zID0g
+dGhpcy5pZHMubGVuZ3RoOwoJCXRoaXMucmV0cmlldmVkID0gW107CgkJaWYoICFpc0ludGVnZXIo
+dGhpcy5pZHNbMF0pICkgLy9pZHMgaGF2ZSBiZWVuIGdyb3VwZWQKCQl7CQoJCQlncm91cGVkID0g
+dHJ1ZTsKCQkJdGhpcy5ncm91cGVkX2lkcyA9IHRoaXMuaWRzOwoJCQl0aGlzLmlkcyA9IFtdOwoJ
+CQlmb3IoIHZhciBpID0gMDsgaSA8IHRoaXMuZ3JvdXBlZF9pZHMubGVuZ3RoOyBpKysgKQoJCQl7
+CgkJCQl0aGlzLmlkcyA9IHRoaXMuaWRzLmNvbmNhdCh0aGlzLmdyb3VwZWRfaWRzW2ldLmxpc3Qp
+OwoJCQl9CgkJCS8vdGhlIGdyb3VwaW5nIG1heSBoYXZlIGNyZWF0ZWQgZHVwbGljYXRlIHJlY29y
+ZHMgKGkuZS4gYSByZWNvcmQgY2FuIGFwcGVhciBpbiBtb3JlIHRoYW4gb25lIGdyb3VwKSAtIGl0
+J3MgaGFuZHkgdG8gaGF2ZSBhbiBhcnJheSBvZiBhbGwgdGhlIHVuaXF1ZSByZWNvcmRzCgkJCXRo
+aXMudW5pcXVlID0gdGhpcy5pZHMuZmlsdGVyKGZ1bmN0aW9uKGl0ZW0sIGksIGFyKXsgcmV0dXJu
+IGFyLmluZGV4T2YoaXRlbSkgPT09IGk7IH0pOwoJCQl0aGlzLm5vX2l0ZW1zID0gdGhpcy51bmlx
+dWUubGVuZ3RoOwoJCX0KCQlmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5pZHMubGVuZ3RoOyBpKz10
+aGlzLnN0ZXApCgkJewoJCQkvLyBhcmd1bWVudHMgZm9yIEFqYXggcXVlcnkgQU5EIGNyZWF0ZXMg
+dGhlIEhUTUwgcGxhY2Vob2xkZXJzIDxkaXY+J3MgKHRoYXQgd2lsbCByZWNlaXZlIHRoZSBjb250
+ZW50IG9mIHRoZSBBamF4IHF1ZXJ5Li4uKQkJCQkKCQkJdmFyIGFyZ3MgPSAnJmFqYXg9Jyt0aGlz
+LnByZWZpeDsKCQkJZm9yKHZhciBqID0gMDsgaiA8IHRoaXMuc3RlcCAmJiBpK2ogPCB0aGlzLmlk
+cy5sZW5ndGg7IGorKykKCQkJewoJCQkJYXJncyArPSAnJicgKyB0aGlzLnByZWZpeCArICc9JyAr
+IHRoaXMuaWRzW2kral07CgkJCQl2YXIgaWQgPSB0aGlzLnByZWZpeCArICdfJyArIHRoaXMuaWRz
+W2kral07CgkJCQl2YXIgdGFyZ2V0X2VsID0gJCggaWQgKTsKCQkJCWlmKCB0YXJnZXRfZWwgIT0g
+bnVsbCApCgkJCQl7CgkJCQkJLy9zdG9yZSBhIHJlY29yZCBvZiB0aGlzIGluIHNlZW5faWRzIHRv
+IGVuc3VyZSBlYWNoIHBsYWNlaG9sZGVyIGhhcyBhIHVuaXF1ZSBpZAoJCQkJCWlmKCAhKGlkIGlu
+IHNlZW5faWRzKSApCgkJCQkJewoJCQkJCQlzZWVuX2lkc1tpZF0gPSAxOwoJCQkJCX0KCQkJCQll
+bHNlCgkJCQkJewoJCQkJCQlzZWVuX2lkc1tpZF0gPSBzZWVuX2lkc1tpZF0gKyAxOwoJCQkJCX0K
+CQkJCQlpZCA9IGlkICsgIl8iICsgc2Vlbl9pZHNbaWRdOwoJCQkJfQoJCQkJCQoJCQkJdGhpcy5j
+b250YWluZXIuaW5zZXJ0KCBuZXcgRWxlbWVudCggJ2RpdicsIHsgJ2NsYXNzJzogJ2VwX3JlcG9y
+dF9yb3cnLCAnaWQnOiBpZCwgJ3Bvc2l0aW9uJzogaStqIH0gKSwgeyAncG9zaXRpb24nOiAnYWZ0
+ZXInIH0gKTsKCQkJfQoJCQluZXcgQWpheC5SZXF1ZXN0KCB0aGlzLnVybCwgewoJCQkJbWV0aG9k
+OiAnZ2V0JywKCQkJCXBhcmFtZXRlcnM6IHRoaXMucGFyYW1ldGVycyArIGFyZ3MsCgkJCQlvblN1
+Y2Nlc3M6IChmdW5jdGlvbih0cmFuc3BvcnQpIHsKCgkJCQkJdmFyIGpzb24gPSB0cmFuc3BvcnQu
+cmVzcG9uc2VUZXh0LmV2YWxKU09OKCk7CgkJCQkJdmFyIGRhdGEgPSBqc29uLmRhdGE7CgkKCQkJ
+CQlpZiggZGF0YSA9PSBudWxsICkKCQkJCQkJZGF0YSA9IG5ldyBBcnJheSgpOwoJCQkJCWZvcigg
+dmFyIGk9MDsgaTxkYXRhLmxlbmd0aDsgaSsrICkKCQkJCQl7CgkJCQkJCXZhciBlbnRyeSA9IGRh
+dGFbaV07CgkJCQkKCQkJCQkJLy8gZW50cnkuZGF0YW9iamlkCgkJCQkJCS8vIGVudHJ5LnN1bW1h
+cnkKCQkJCQkJLy8gZW50cnkuZ3JvdXBpbmcKCQkJCQkJLy8gZW50cnkucHJvYmxlbXMKCgkJCQkJ
+CWlmKCBlbnRyeSA9PSBudWxsICkKCQkJCQkJCWNvbnRpbnVlOwoJCQkJCQkKCQkJCQkJdmFyIGRh
+dGFvYmppZCA9IGVudHJ5LmRhdGFvYmppZDsKCQkJCQkJaWYoIGRhdGFvYmppZCA9PSBudWxsICkK
+CQkJCQkJCWNvbnRpbnVlOwoJCQkJCQlpZiggIShkYXRhb2JqaWQgaW4gZGF0YW9ianMpICkKCQkJ
+CQkJewoJCQkJCQkJdGhpcy5jb3VudCsrOwoJCQkJCQkJZGF0YW9ianNbZGF0YW9iamlkXSA9IGVu
+dHJ5OwoJCQkJCQl9CgkJCQkJfQoJCQkKCQkJCQkvLyB3ZSd2ZSByZXRyaWV2ZWQgYWxsIHRoZSBy
+ZWNvcmRzCQkJCQoJCQkJCWlmKCB0aGlzLmNvdW50ID09IHRoaXMubm9faXRlbXMgKQoJCQkJCXsK
+CQkJCQkJJCggdGhpcy5wcmVmaXggKyAnX3Byb2dyZXNzX2JhcicgKS5yZW1vdmUoKTsKCQkJCQkJ
+aWYoIHRoaXMuaGFzX3Byb2JsZW1zICkKCQkJCQkJCXRoaXMub25Qcm9ibGVtcyh0aGlzKTsKCQkJ
+CQkJdGhpcy5vbkZpbmlzaCh0aGlzKTsKCQkJCQkJCQoJCQkJCQkvL2FkZCB0aGUgZ3JvdXAgaGVh
+ZGluZ3MKCQkJCQkJaWYoZ3JvdXBlZCkKCQkJCQkJewoJCQkJCQkJdmFyIHBvc2l0aW9uID0gMDsK
+CQkJCQkJCWZvciggdmFyIGkgPSAwOyBpIDwgdGhpcy5ncm91cGVkX2lkcy5sZW5ndGg7IGkrKyAp
+CgkJCQkgICAgICAgICAgICAgICAgICAgICAgICB7CQoJCQkJCQkJCXZhciB0YXJnZXRfZWwgPSBk
+b2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbcG9zaXRpb249IicgKyBwb3NpdGlvbiArICciXScp
+WzBdOwoJCQkJCQkJCXBvc2l0aW9uID0gcG9zaXRpb24gKyB0aGlzLmdyb3VwZWRfaWRzW2ldLmxp
+c3QubGVuZ3RoOwkJCQoJCQkJCQkJCXZhciBncm91cGluZ19jb250YWluZXIgPSBuZXcgRWxlbWVu
+dCggJ2RpdicsIHsgJ2NsYXNzJzogJ2VwX3JlcG9ydF9ncm91cGluZycgfSApOwogICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFy
+Z2V0X2VsLmluc2VydCggeyAnYmVmb3JlJyA6IGdyb3VwaW5nX2NvbnRhaW5lciB9ICk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-dGFyZ2V0X2VsLmluc2VydCggeyAnYmVmb3JlJyA6IGdyb3VwaW5nX2NvbnRhaW5lciB9ICk7CiAg
+ICBncm91cGluZ19jb250YWluZXIudXBkYXRlKCB0aGlzLmdyb3VwZWRfaWRzW2ldLmxhYmVsICk7
+CgkJCQkgICAgICAgICAgICAgICAgICAgICAgICB9CgkJCQkJCX0KCgkJCQkJCS8vYWRkIHRoZSBl
+cHJpbnQgc3VtbWFyaWVzCgkJCQkJCXZhciBhZGRlZF9pZHMgPSB7fTsKCQkJCQkJZm9yKCB2YXIg
+YyA9IDA7IGMgPCB0aGlzLmlkcy5sZW5ndGg7IGMrKyApCgkJCQkJCXsKCQkJCQkJCXZhciBkYXRh
+b2JqaWQgPSB0aGlzLmlkc1tjXTsKCQkJCQkJCXZhciBlbnRyeSA9IGRhdGFvYmpzW2RhdGFvYmpp
+ZF07CgoJCQkJCQkJLy9zdG9yZSB0aGF0IHdlIGhhdmUgYWRkZWQgdGhpcyBvYmplY3RpZAoJCQkJ
+CQkJaWYoICEoZGF0YW9iamlkIGluIGFkZGVkX2lkcykgKQoJCQkJCQkJewoJCQkJCQkJCWFkZGVk
+X2lkc1tkYXRhb2JqaWRdID0gMDsKCQkJCQkJCX0KCQkJCQkJCWVsc2UKCQkJCQkJCXsKCQkJCQkJ
+CQlhZGRlZF9pZHNbZGF0YW9iamlkXSA9IGFkZGVkX2lkc1tkYXRhb2JqaWRdICsgMTsKCQkJCQkJ
+CX0KCQkJCQkJCXRoaXMudG90YWxfZGF0YW9ianMrKzsKCgkJCQkJCQl2YXIgc3VtbWFyeSA9IGVu
+dHJ5LnN1bW1hcnk7CgoJCQkJCQkJdmFyIHRhcmdldF9pZCA9IHRoaXMucHJlZml4ICsgJ18nICsg
+ZGF0YW9iamlkOwoJCQkJCQkJaWYoIGFkZGVkX2lkc1tkYXRhb2JqaWRdID4gMCApCgkJCQkJCQl7
+CgkJCQkJCQkJdGFyZ2V0X2lkID0gdGFyZ2V0X2lkICsgJ18nICsgYWRkZWRfaWRzW2RhdGFvYmpp
+ZF07CgkJCQkJCQl9CgkJCQkJCQl2YXIgdGFyZ2V0X2VsID0gJCggdGFyZ2V0X2lkICk7CgoJCQkJ
+CQkJaWYoIHRhcmdldF9lbCAhPSBudWxsICYmIHN1bW1hcnkgIT0gbnVsbCApCgkJCQkJCQl7CgkJ
+CQkJCQkJdmFyIHN1bW1hcnlfZWwgPSB0YXJnZXRfZWwuYXBwZW5kQ2hpbGQoIG5ldyBFbGVtZW50
+KCAnZGl2JywgeyAnY2xhc3MnOiAnZXBfcmVwb3J0X3Jvd19zdW1tYXJ5JyB9ICkgKTsKCQkJCQkJ
+CQlzdW1tYXJ5X2VsLnVwZGF0ZSggc3VtbWFyeSApOwoKCQkJCQkJCQkvL3RvdGFsIHVwIG5vbiBj
+b21wbGlhbnQgcmVjb3JkcwoJCQkJCQkJCWlmKCBlbnRyeS5pc19jb21wbGlhbnQgPT0gbnVsbCAm
+JiBlbnRyeS5wcm9ibGVtcyAmJiBlbnRyeS5wcm9ibGVtcy5sZW5ndGggKQoJCQkJCQkJCXsKCQkJ
+CQkJCQkJdGhpcy50b3RhbF9ub25jb21wbGlhbnQrKzsKCQkJCQkJCQl9CgkJCQkJCQkJCgkJCQkJ
+CQkJaWYoIGVudHJ5LnByb2JsZW1zICYmIGVudHJ5LnByb2JsZW1zLmxlbmd0aCApCgkJCQkJCQkJ
+ewoJCQkJCQkJCQl2YXIgcHJvYmxlbXNfZWwgPSB0YXJnZXRfZWwuYXBwZW5kQ2hpbGQoIG5ldyBF
+bGVtZW50KCAndWwnLCB7ICdjbGFzcyc6ICdlcF9yZXBvcnRfcm93X3Byb2JsZW1zJyB9ICkgKTsK
+CgkJCQkJCQkJCWZvciggdmFyIHA9MDsgcDwgZW50cnkucHJvYmxlbXMubGVuZ3RoOyBwKysgKQoJ
+CQkJCQkJCQl7CgkJCQkJCQkJCQl2YXIgbGkgPSBwcm9ibGVtc19lbC5hcHBlbmRDaGlsZCggbmV3
+IEVsZW1lbnQoICdsaScgKSk7CgkJCQkJCQkJCQlsaS51cGRhdGUoIGVudHJ5LnByb2JsZW1zW3Bd
+ICk7CgkJCQkJCQkJCX0JCQkJCQkJCQoJCQkJCQkJCX0KCQkJCQkJCQllbHNlCgkJCQkJCQkJewoJ
+CQkJCQkJCQkvL2FkZCBzdXBwb3J0IGZvciBjb21wbGlhbnQgaXRlbXMgdG8gaW5jbHVkZSBidWxs
+ZXQgcG9pbnRzIHRvbwoJCQkJCQkJCQlpZiggZW50cnkuYnVsbGV0cyAmJiBlbnRyeS5idWxsZXRz
+Lmxlbmd0aCApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYnVs
+bGV0c19lbCA9IHRhcmdldF9lbC5hcHBlbmRDaGlsZCggbmV3IEVsZW1lbnQoICd1bCcsIHsgJ2Ns
+YXNzJzogJ2VwX3JlcG9ydF9yb3dfYnVsbGV0cycgfSApICk7CgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICBncm91cGluZ19jb250YWluZXIudXBkYXRlKCB0aGlzLmdyb3VwZWRfaWRzW2ldLmxhYmVs
-ICk7CgkJCQkgICAgICAgICAgICAgICAgICAgICAgICB9CgkJCQkJCX0KCgkJCQkJCS8vYWRkIHRo
-ZSBlcHJpbnQgc3VtbWFyaWVzCgkJCQkJCXZhciBhZGRlZF9pZHMgPSB7fTsKCQkJCQkJZm9yKCB2
-YXIgYyA9IDA7IGMgPCB0aGlzLmlkcy5sZW5ndGg7IGMrKyApCgkJCQkJCXsKCQkJCQkJCXZhciBk
-YXRhb2JqaWQgPSB0aGlzLmlkc1tjXTsKCQkJCQkJCXZhciBlbnRyeSA9IGRhdGFvYmpzW2RhdGFv
-YmppZF07CgoJCQkJCQkJLy9zdG9yZSB0aGF0IHdlIGhhdmUgYWRkZWQgdGhpcyBvYmplY3RpZAoJ
-CQkJCQkJaWYoICEoZGF0YW9iamlkIGluIGFkZGVkX2lkcykgKQoJCQkJCQkJewoJCQkJCQkJCWFk
-ZGVkX2lkc1tkYXRhb2JqaWRdID0gMDsKCQkJCQkJCX0KCQkJCQkJCWVsc2UKCQkJCQkJCXsKCQkJ
-CQkJCQlhZGRlZF9pZHNbZGF0YW9iamlkXSA9IGFkZGVkX2lkc1tkYXRhb2JqaWRdICsgMTsKCQkJ
-CQkJCX0KCQkJCQkJCXRoaXMudG90YWxfZGF0YW9ianMrKzsKCgkJCQkJCQl2YXIgc3VtbWFyeSA9
-IGVudHJ5LnN1bW1hcnk7CgoJCQkJCQkJdmFyIHRhcmdldF9pZCA9IHRoaXMucHJlZml4ICsgJ18n
-ICsgZGF0YW9iamlkOwoJCQkJCQkJaWYoIGFkZGVkX2lkc1tkYXRhb2JqaWRdID4gMCApCgkJCQkJ
-CQl7CgkJCQkJCQkJdGFyZ2V0X2lkID0gdGFyZ2V0X2lkICsgJ18nICsgYWRkZWRfaWRzW2RhdGFv
-YmppZF07CgkJCQkJCQl9CgkJCQkJCQl2YXIgdGFyZ2V0X2VsID0gJCggdGFyZ2V0X2lkICk7CgoJ
-CQkJCQkJaWYoIHRhcmdldF9lbCAhPSBudWxsICYmIHN1bW1hcnkgIT0gbnVsbCApCgkJCQkJCQl7
-CgkJCQkJCQkJdmFyIHN1bW1hcnlfZWwgPSB0YXJnZXRfZWwuYXBwZW5kQ2hpbGQoIG5ldyBFbGVt
-ZW50KCAnZGl2JywgeyAnY2xhc3MnOiAnZXBfcmVwb3J0X3Jvd19zdW1tYXJ5JyB9ICkgKTsKCQkJ
-CQkJCQlzdW1tYXJ5X2VsLnVwZGF0ZSggc3VtbWFyeSApOwoKCQkJCQkJCQkvL3RvdGFsIHVwIG5v
-biBjb21wbGlhbnQgcmVjb3JkcwoJCQkJCQkJCWlmKCBlbnRyeS5pc19jb21wbGlhbnQgPT0gbnVs
-bCAmJiBlbnRyeS5wcm9ibGVtcyAmJiBlbnRyeS5wcm9ibGVtcy5sZW5ndGggKQoJCQkJCQkJCXsK
-CQkJCQkJCQkJdGhpcy50b3RhbF9ub25jb21wbGlhbnQrKzsKCQkJCQkJCQl9CgkJCQkJCQkJCgkJ
-CQkJCQkJaWYoIGVudHJ5LnByb2JsZW1zICYmIGVudHJ5LnByb2JsZW1zLmxlbmd0aCApCgkJCQkJ
-CQkJewoJCQkJCQkJCQl2YXIgcHJvYmxlbXNfZWwgPSB0YXJnZXRfZWwuYXBwZW5kQ2hpbGQoIG5l
-dyBFbGVtZW50KCAndWwnLCB7ICdjbGFzcyc6ICdlcF9yZXBvcnRfcm93X3Byb2JsZW1zJyB9ICkg
-KTsKCgkJCQkJCQkJCWZvciggdmFyIHA9MDsgcDwgZW50cnkucHJvYmxlbXMubGVuZ3RoOyBwKysg
-KQoJCQkJCQkJCQl7CgkJCQkJCQkJCQl2YXIgbGkgPSBwcm9ibGVtc19lbC5hcHBlbmRDaGlsZCgg
-bmV3IEVsZW1lbnQoICdsaScgKSk7CgkJCQkJCQkJCQlsaS51cGRhdGUoIGVudHJ5LnByb2JsZW1z
-W3BdICk7CgkJCQkJCQkJCX0JCQkJCQkJCQoJCQkJCQkJCX0KCQkJCQkJCQllbHNlCgkJCQkJCQkJ
-ewoJCQkJCQkJCQkvL2FkZCBzdXBwb3J0IGZvciBjb21wbGlhbnQgaXRlbXMgdG8gaW5jbHVkZSBi
-dWxsZXQgcG9pbnRzIHRvbwoJCQkJCQkJCQlpZiggZW50cnkuYnVsbGV0cyAmJiBlbnRyeS5idWxs
-ZXRzLmxlbmd0aCApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIg
-YnVsbGV0c19lbCA9IHRhcmdldF9lbC5hcHBlbmRDaGlsZCggbmV3IEVsZW1lbnQoICd1bCcsIHsg
-J2NsYXNzJzogJ2VwX3JlcG9ydF9yb3dfYnVsbGV0cycgfSApICk7CgogICAgICAgICAgICAgICAg
+ICAgIGZvciggdmFyIGI9MDsgYjwgZW50cnkuYnVsbGV0cy5sZW5ndGg7IGIrKyApCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgIGZvciggdmFyIGI9MDsgYjwgZW50cnkuYnVsbGV0cy5sZW5ndGg7IGIrKyApCiAgICAg
+ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxpID0g
+YnVsbGV0c19lbC5hcHBlbmRDaGlsZCggbmV3IEVsZW1lbnQoICdsaScgKSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxp
-ID0gYnVsbGV0c19lbC5hcHBlbmRDaGlsZCggbmV3IEVsZW1lbnQoICdsaScgKSk7CiAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICBsaS51cGRhdGUoIGVudHJ5LmJ1bGxldHNbYl0gKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICBsaS51cGRhdGUoIGVudHJ5LmJ1bGxldHNbYl0gKTsKICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCQkJCQkJCQl9CgoJCQkJCQkJ
-CS8vZGlzcGxheSBzdGF0ZQoJCQkJCQkJCXZhciByZSA9IG5ldyBSZWdFeHAoIl4jKD86WzAtOWEt
-ZkEtRl17M30pezEsMn0kIik7CgkJCQkJCQkJaWYoIGVudHJ5LnN0YXRlICYmIHJlLnRlc3QoZW50
-cnkuc3RhdGUpICkKCQkJCQkJCQl7CgkJCQkJCQkJCXRhcmdldF9lbC5zdHlsZS5ib3JkZXJMZWZ0
-V2lkdGggPSAnN3B4JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2VsLnN0eWxlLmJvcmRlckxlZnRT
-dHlsZSA9ICdzb2xpZCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9lbC5zdHlsZS5ib3JkZXJMZWZ0
-Q29sb3IgPSBlbnRyeS5zdGF0ZTsKCQkJCQkJCQl9CgkJCQkJCQkJZWxzZSAvL25vIHN0YXRlIHBy
-b3ZpZGVkLCBzbyBkZXJpdmUgb25lIGZyb20gZXhpc3RlbmNlIG9mIHByb2JsZW1zCgkJCQkJCQkJ
-ewoJCQkJCQkJCQlpZiggZW50cnkucHJvYmxlbXMgJiYgZW50cnkucHJvYmxlbXMubGVuZ3RoICkK
-CQkJCQkJCQkJewoJCQkJCQkJCQkJdGFyZ2V0X2VsLmFkZENsYXNzTmFtZSggJ2VwX3JlcG9ydF9y
-b3dfcHJvYmxlbXMnICk7CgkJCQkJCQkJCX0KCQkJCQkJCQkJZWxzZQoJCQkJCQkJCQl7CgkJCQkJ
-CQkJCQl0YXJnZXRfZWwuYWRkQ2xhc3NOYW1lKCAnZXBfcmVwb3J0X3Jvd19vaycgKTsKCQkJCQkJ
-CQkJfQoKCQkJCQkJCQkJaWYoICF0aGlzLnNob3dfY29tcGxpYW5jZSApCgkJCQkJCQkJCXsKCQkJ
-CQkJCQkJCXRhcmdldF9lbC5hZGRDbGFzc05hbWUoICdlcF9yZXBvcnRfcm93X25vX2NvbXBsaWFu
-Y2UnICk7CgkJCQkJCQkJCX0KCQkJCQkJCQl9CQkJCQkJCQkKCQkJCQkJCQl0YXJnZXRfZWwuc2hv
-dygpOwoKCQkJCQkJCQl2YXIgZ3JvdXBpbmcgPSBlbnRyeS5ncm91cGluZzsKCQkJCQkJCQlpZigg
-Z3JvdXBpbmcgIT0gbnVsbCApCgkJCQkJCQkJewoJCQkJCQkJCQlpZiggY3VycmVudF9ncm91cGlu
-ZyA9PSBudWxsIHx8IGN1cnJlbnRfZ3JvdXBpbmcgIT0gZ3JvdXBpbmcpCgkJCQkJCQkJCXsKCQkJ
-CQkJCQkJCWN1cnJlbnRfZ3JvdXBpbmcgPSBncm91cGluZzsKCQkJCQkJCQkJCXZhciBncm91cGlu
-Z19jb250YWluZXIgPSBuZXcgRWxlbWVudCggJ2RpdicsIHsgJ2NsYXNzJzogJ2VwX3JlcG9ydF9n
-cm91cGluZycgfSApOwoJCQkJCQkJCQkJdGFyZ2V0X2VsLmluc2VydCggeyAnYmVmb3JlJyA6IGdy
-b3VwaW5nX2NvbnRhaW5lciB9ICk7CgkJCQkJCQkJCQlncm91cGluZ19jb250YWluZXIudXBkYXRl
-KCBjdXJyZW50X2dyb3VwaW5nICk7CgkJCQkJCQkJCX0KCQkJCQkJCQl9CgkJCQkJCQl9CgkJCQkJ
-CX0KCgoJCQkJCQlpZiggdGhpcy50b3RhbF9kYXRhb2JqcyApCgkJCQkJCXsKCQkJCQkJCQoJCQkJ
-CQkJdGhpcy5jb250YWluZXIuaW5zZXJ0QmVmb3JlKCBuZXcgRWxlbWVudCggJ2RpdicsIHsgJ2Ns
-YXNzJzogJ2VwX3JlcG9ydF9jb21wbGlhbmNlX2NvbnRhaW5lcicsICdpZCc6IHRoaXMucHJlZml4
-ICsgIl9jb21wbGlhbmNlX2NvbnRhaW5lciIgfSApLCB0aGlzLmNvbnRhaW5lci5maXJzdENoaWxk
-ICk7CgkJCQkJCQkvL3NldCB1cCB0ZXh0IGNvbnRhaW5lcgoJCQkJCQkJJCggdGhpcy5wcmVmaXgg
-KyAiX2NvbXBsaWFuY2VfY29udGFpbmVyIiApLmFwcGVuZENoaWxkKCBuZXcgRWxlbWVudCggJ2Rp
-dicsIHsgJ2NsYXNzJzogJ2VwX3JlcG9ydF9jb21wbGlhbmNlX3RleHQnLCAnaWQnOiB0aGlzLnBy
-ZWZpeCArICJfY29tcGxpYW5jZV90ZXh0IiwgIH0gKSk7CgoJCQkJCQkJLy9zZXQgdXAgb3V0cHV0
-cyBsYWJlbAoJCQkJCQkJdmFyIG91dHB1dHM7CgkJCQkJCQlpZiggdGhpcy5sYWJlbHMgKQoJCQkJ
-CQkJewoJCQkJCQkJCW91dHB1dHMgPSB0aGlzLmxhYmVscy5vdXRwdXRzOwoJCQkJCQkJfQoJCQkJ
-CQkJZWxzZQoJCQkJCQkJewoJCQkJCQkJCW91dHB1dHMgPSAib3V0cHV0IjsKCQkJCQkJCQlpZigg
-dGhpcy50b3RhbF9kYXRhb2JqcyA+IDEgKQoJCQkJCQkJCQlvdXRwdXRzID0gb3V0cHV0cyArICJz
-IjsKCQkJCQkJCX0KCgkJCQkJCQlpZiggdGhpcy5zaG93X2NvbXBsaWFuY2UgKQoJCQkJCQkJewoJ
-CQkJCQkJCXZhciByZWZfd2lkdGggPSAyMDA7CgkJCQkJCQkJdmFyIGNvbXBsaWFuY2UgPSAoIHRo
-aXMudG90YWxfZGF0YW9ianMgLSB0aGlzLnRvdGFsX25vbmNvbXBsaWFudCApIC8gdGhpcy50b3Rh
-bF9kYXRhb2JqczsKCgkJCQkJCQkJJCggdGhpcy5wcmVmaXggKyAiX2NvbXBsaWFuY2VfY29udGFp
-bmVyIiApLmFwcGVuZENoaWxkKCBuZXcgRWxlbWVudCggJ2RpdicsIHsgJ2NsYXNzJzogJ2VwX3Jl
-cG9ydF9jb21wbGlhbmNlX3dyYXBwZXInLCAnaWQnOiB0aGlzLnByZWZpeCArICJfY29tcGxpYW5j
-ZSIsICdzdHlsZSc6ICd3aWR0aDogJytyZWZfd2lkdGggKyAncHgnIH0gKSApOwoKCQkJCQkJCQl2
-YXIgY29tcGxpYW5jZV93aWR0aCA9IE1hdGguZmxvb3IoIDIwMCAqIGNvbXBsaWFuY2UgKTsKCQoJ
-CQkJCQkJCSQoIHRoaXMucHJlZml4ICsgIl9jb21wbGlhbmNlIiApLmFwcGVuZENoaWxkKCBuZXcg
-RWxlbWVudCggJ2RpdicsIHsgJ2NsYXNzJzogJ2VwX3JlcG9ydF9jb21wbGlhbmNlJywgJ3N0eWxl
-JzogJ3dpZHRoOicrY29tcGxpYW5jZV93aWR0aCArICdweCcgfSApICk7CgkKCQkJCQkJCQkkKCB0
-aGlzLnByZWZpeCArICJfY29tcGxpYW5jZV90ZXh0IiApLnVwZGF0ZSggdGhpcy50b3RhbF9kYXRh
-b2JqcyArICIgIiArIG91dHB1dHMgKyAiIC0gIiArIE1hdGguZmxvb3IoIGNvbXBsaWFuY2UgKiAx
-MDAgKSArICIlIGNvbXBsaWFuY2UiKTsKCQkJCQkJCX0KCQkJCQkJCWVsc2UKCQkJCQkJCXsKCQkJ
-CQkJCQkkKCB0aGlzLnByZWZpeCArICJfY29tcGxpYW5jZV90ZXh0IiApLnVwZGF0ZSggdGhpcy50
-b3RhbF9kYXRhb2JqcyArICIgIiArIG91dHB1dHMgKTsKCQkJCQkJCX0KCQkJCQkJfQkKCgkJCQkJ
-fQoJCQkJCWVsc2UKCQkJCQl7CgkJCQkJCXZhciB3aWR0aCA9IDIwMDsKCQkJCQkJJCggdGhpcy5w
-cmVmaXggKyAnX3Byb2dyZXNzX2JhcicgKS5zdHlsZS5iYWNrZ3JvdW5kUG9zaXRpb24gPSBNYXRo
-LnJvdW5kKC13aWR0aCArIHdpZHRoICogdGhpcy5jb3VudCAvIHRoaXMuaWRzLmxlbmd0aCkgKyAi
-cHggMHB4IjsKCQkJCQl9CgoJCQkJCWlmKCB0aGlzLnJ1bnMgPT0gMCAmJiB0aGlzLmNvdW50ID09
-IDAgKQoJCQkJCXsKCQkJCQkJdmFyIHBOb2RlID0gJCggdGhpcy5wcmVmaXggKyAnX3Byb2dyZXNz
-X2JhcicgKS5wYXJlbnROb2RlOwoJCQkJCQkkKHRoaXMucHJlZml4ICsgJ19wcm9ncmVzc19iYXIn
-KS5yZW1vdmUoKTsKCQkJCQkJdmFyIHNwYW4gPSBuZXcgRWxlbWVudCggJ3NwYW4nLCB7ICdjbGFz
-cyc6ICdlcF9yZWZfcmVwb3J0X2VtcHR5JyB9ICk7CgkJCQkJCXNwYW4udXBkYXRlKCAnUmVwb3J0
-IGVtcHR5JyApOwoJCQkJCQlwTm9kZS5pbnNlcnQoIHNwYW4gKTsKCQkJCQl9CgkJCQkJdGhpcy5y
-dW5zKys7CgoJCQkJfSkuYmluZCh0aGlzKQoJCQl9KTsKCQl9CgkJaWYoIHRoaXMuaWRzID09IG51
-bGwgfHwgdGhpcy5pZHMubGVuZ3RoID09IDAgKQoJCXsKCQkJdmFyIHBOb2RlID0gJCh0aGlzLnBy
-ZWZpeCArICdfcHJvZ3Jlc3NfYmFyJykucGFyZW50Tm9kZTsKCQkJJCh0aGlzLnByZWZpeCArICdf
-cHJvZ3Jlc3NfYmFyJykuaGlkZSgpOwoJCQl2YXIgc3BhbiA9IG5ldyBFbGVtZW50KCAnc3Bhbics
-IHsgJ2NsYXNzJzogJ2VwX3JlZl9yZXBvcnRfZW1wdHknIH0gKTsKCQkJc3Bhbi51cGRhdGUoICdS
-ZXBvcnQgZW1wdHknICk7CgkJCXBOb2RlLmluc2VydCggc3BhbiApOwoJCX0KCX0KCgp9KTsKCmZ1
-bmN0aW9uIGdyb3VwX3JlcG9ydChncm91cCkKewoJZG9jdW1lbnQuZ3JvdXBfcmVwb3J0Lmdyb3Vw
-LnZhbHVlID0gZ3JvdXA7Cglkb2N1bWVudC5ncm91cF9yZXBvcnQuc3VibWl0KCk7Cn0KCmZ1bmN0
-aW9uIHNvcnRfcmVwb3J0KHNvcnQpCnsKCWRvY3VtZW50LnNvcnRfcmVwb3J0LnNvcnQudmFsdWUg
-PSBzb3J0OwoJZG9jdW1lbnQuc29ydF9yZXBvcnQuc3VibWl0KCk7Cn0KCmZ1bmN0aW9uIGlzSW50
-ZWdlcihudW0pIHsKICByZXR1cm4gKG51bSBeIDApID09PSBudW07Cn0K
+ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCQkJCQkJCQl9CgoJCQkJCQkJCS8v
+ZGlzcGxheSBzdGF0ZQoJCQkJCQkJCXZhciByZSA9IG5ldyBSZWdFeHAoIl4jKD86WzAtOWEtZkEt
+Rl17M30pezEsMn0kIik7CgkJCQkJCQkJaWYoIGVudHJ5LnN0YXRlICYmIHJlLnRlc3QoZW50cnku
+c3RhdGUpICkKCQkJCQkJCQl7CgkJCQkJCQkJCXRhcmdldF9lbC5zdHlsZS5ib3JkZXJMZWZ0V2lk
+dGggPSAnN3B4JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2VsLnN0eWxlLmJvcmRlckxlZnRTdHls
+ZSA9ICdzb2xpZCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9lbC5zdHlsZS5ib3JkZXJMZWZ0Q29s
+b3IgPSBlbnRyeS5zdGF0ZTsKCQkJCQkJCQl9CgkJCQkJCQkJZWxzZSAvL25vIHN0YXRlIHByb3Zp
+ZGVkLCBzbyBkZXJpdmUgb25lIGZyb20gZXhpc3RlbmNlIG9mIHByb2JsZW1zCgkJCQkJCQkJewoJ
+CQkJCQkJCQlpZiggZW50cnkucHJvYmxlbXMgJiYgZW50cnkucHJvYmxlbXMubGVuZ3RoICkKCQkJ
+CQkJCQkJewoJCQkJCQkJCQkJdGFyZ2V0X2VsLmFkZENsYXNzTmFtZSggJ2VwX3JlcG9ydF9yb3df
+cHJvYmxlbXMnICk7CgkJCQkJCQkJCX0KCQkJCQkJCQkJZWxzZQoJCQkJCQkJCQl7CgkJCQkJCQkJ
+CQl0YXJnZXRfZWwuYWRkQ2xhc3NOYW1lKCAnZXBfcmVwb3J0X3Jvd19vaycgKTsKCQkJCQkJCQkJ
+fQoKCQkJCQkJCQkJaWYoICF0aGlzLnNob3dfY29tcGxpYW5jZSApCgkJCQkJCQkJCXsKCQkJCQkJ
+CQkJCXRhcmdldF9lbC5hZGRDbGFzc05hbWUoICdlcF9yZXBvcnRfcm93X25vX2NvbXBsaWFuY2Un
+ICk7CgkJCQkJCQkJCX0KCQkJCQkJCQl9CQkJCQkJCQkKCQkJCQkJCQl0YXJnZXRfZWwuc2hvdygp
+OwoKCQkJCQkJCQl2YXIgZ3JvdXBpbmcgPSBlbnRyeS5ncm91cGluZzsKCQkJCQkJCQlpZiggZ3Jv
+dXBpbmcgIT0gbnVsbCApCgkJCQkJCQkJewoJCQkJCQkJCQlpZiggY3VycmVudF9ncm91cGluZyA9
+PSBudWxsIHx8IGN1cnJlbnRfZ3JvdXBpbmcgIT0gZ3JvdXBpbmcpCgkJCQkJCQkJCXsKCQkJCQkJ
+CQkJCWN1cnJlbnRfZ3JvdXBpbmcgPSBncm91cGluZzsKCQkJCQkJCQkJCXZhciBncm91cGluZ19j
+b250YWluZXIgPSBuZXcgRWxlbWVudCggJ2RpdicsIHsgJ2NsYXNzJzogJ2VwX3JlcG9ydF9ncm91
+cGluZycgfSApOwoJCQkJCQkJCQkJdGFyZ2V0X2VsLmluc2VydCggeyAnYmVmb3JlJyA6IGdyb3Vw
+aW5nX2NvbnRhaW5lciB9ICk7CgkJCQkJCQkJCQlncm91cGluZ19jb250YWluZXIudXBkYXRlKCBj
+dXJyZW50X2dyb3VwaW5nICk7CgkJCQkJCQkJCX0KCQkJCQkJCQl9CgkJCQkJCQl9CgkJCQkJCX0K
+CgoJCQkJCQlpZiggdGhpcy50b3RhbF9kYXRhb2JqcyApCgkJCQkJCXsKCQkJCQkJCQoJCQkJCQkJ
+dGhpcy5jb250YWluZXIuaW5zZXJ0QmVmb3JlKCBuZXcgRWxlbWVudCggJ2RpdicsIHsgJ2NsYXNz
+JzogJ2VwX3JlcG9ydF9jb21wbGlhbmNlX2NvbnRhaW5lcicsICdpZCc6IHRoaXMucHJlZml4ICsg
+Il9jb21wbGlhbmNlX2NvbnRhaW5lciIgfSApLCB0aGlzLmNvbnRhaW5lci5maXJzdENoaWxkICk7
+CgkJCQkJCQkvL3NldCB1cCB0ZXh0IGNvbnRhaW5lcgoJCQkJCQkJJCggdGhpcy5wcmVmaXggKyAi
+X2NvbXBsaWFuY2VfY29udGFpbmVyIiApLmFwcGVuZENoaWxkKCBuZXcgRWxlbWVudCggJ2Rpdics
+IHsgJ2NsYXNzJzogJ2VwX3JlcG9ydF9jb21wbGlhbmNlX3RleHQnLCAnaWQnOiB0aGlzLnByZWZp
+eCArICJfY29tcGxpYW5jZV90ZXh0IiwgIH0gKSk7CgoJCQkJCQkJLy9zZXQgdXAgb3V0cHV0cyBs
+YWJlbAoJCQkJCQkJdmFyIG91dHB1dHM7CgkJCQkJCQlpZiggdGhpcy5sYWJlbHMgKQoJCQkJCQkJ
+ewoJCQkJCQkJCW91dHB1dHMgPSB0aGlzLmxhYmVscy5vdXRwdXRzOwoJCQkJCQkJfQoJCQkJCQkJ
+ZWxzZQoJCQkJCQkJewoJCQkJCQkJCW91dHB1dHMgPSAib3V0cHV0IjsKCQkJCQkJCQlpZiggdGhp
+cy50b3RhbF9kYXRhb2JqcyA+IDEgKQoJCQkJCQkJCQlvdXRwdXRzID0gb3V0cHV0cyArICJzIjsK
+CQkJCQkJCX0KCgkJCQkJCQlpZiggdGhpcy5zaG93X2NvbXBsaWFuY2UgKQoJCQkJCQkJewoJCQkJ
+CQkJCXZhciByZWZfd2lkdGggPSAyMDA7CgkJCQkJCQkJdmFyIGNvbXBsaWFuY2UgPSAoIHRoaXMu
+dG90YWxfZGF0YW9ianMgLSB0aGlzLnRvdGFsX25vbmNvbXBsaWFudCApIC8gdGhpcy50b3RhbF9k
+YXRhb2JqczsKCgkJCQkJCQkJJCggdGhpcy5wcmVmaXggKyAiX2NvbXBsaWFuY2VfY29udGFpbmVy
+IiApLmFwcGVuZENoaWxkKCBuZXcgRWxlbWVudCggJ2RpdicsIHsgJ2NsYXNzJzogJ2VwX3JlcG9y
+dF9jb21wbGlhbmNlX3dyYXBwZXInLCAnaWQnOiB0aGlzLnByZWZpeCArICJfY29tcGxpYW5jZSIs
+ICdzdHlsZSc6ICd3aWR0aDogJytyZWZfd2lkdGggKyAncHgnIH0gKSApOwoKCQkJCQkJCQl2YXIg
+Y29tcGxpYW5jZV93aWR0aCA9IE1hdGguZmxvb3IoIDIwMCAqIGNvbXBsaWFuY2UgKTsKCQoJCQkJ
+CQkJCSQoIHRoaXMucHJlZml4ICsgIl9jb21wbGlhbmNlIiApLmFwcGVuZENoaWxkKCBuZXcgRWxl
+bWVudCggJ2RpdicsIHsgJ2NsYXNzJzogJ2VwX3JlcG9ydF9jb21wbGlhbmNlJywgJ3N0eWxlJzog
+J3dpZHRoOicrY29tcGxpYW5jZV93aWR0aCArICdweCcgfSApICk7CgkKCQkJCQkJCQkkKCB0aGlz
+LnByZWZpeCArICJfY29tcGxpYW5jZV90ZXh0IiApLnVwZGF0ZSggdGhpcy50b3RhbF9kYXRhb2Jq
+cyArICIgIiArIG91dHB1dHMgKyAiIC0gIiArIE1hdGguZmxvb3IoIGNvbXBsaWFuY2UgKiAxMDAg
+KSArICIlIGNvbXBsaWFuY2UiKTsKCQkJCQkJCX0KCQkJCQkJCWVsc2UKCQkJCQkJCXsKCQkJCQkJ
+CQkkKCB0aGlzLnByZWZpeCArICJfY29tcGxpYW5jZV90ZXh0IiApLnVwZGF0ZSggdGhpcy50b3Rh
+bF9kYXRhb2JqcyArICIgIiArIG91dHB1dHMgKTsKCQkJCQkJCX0KCQkJCQkJfQkKCgkJCQkJfQoJ
+CQkJCWVsc2UKCQkJCQl7CgkJCQkJCXZhciB3aWR0aCA9IDIwMDsKCQkJCQkJJCggdGhpcy5wcmVm
+aXggKyAnX3Byb2dyZXNzX2JhcicgKS5zdHlsZS5iYWNrZ3JvdW5kUG9zaXRpb24gPSBNYXRoLnJv
+dW5kKC13aWR0aCArIHdpZHRoICogdGhpcy5jb3VudCAvIHRoaXMuaWRzLmxlbmd0aCkgKyAicHgg
+MHB4IjsKCQkJCQl9CgoJCQkJCWlmKCB0aGlzLnJ1bnMgPT0gMCAmJiB0aGlzLmNvdW50ID09IDAg
+KQoJCQkJCXsKCQkJCQkJdmFyIHBOb2RlID0gJCggdGhpcy5wcmVmaXggKyAnX3Byb2dyZXNzX2Jh
+cicgKS5wYXJlbnROb2RlOwoJCQkJCQkkKHRoaXMucHJlZml4ICsgJ19wcm9ncmVzc19iYXInKS5y
+ZW1vdmUoKTsKCQkJCQkJdmFyIHNwYW4gPSBuZXcgRWxlbWVudCggJ3NwYW4nLCB7ICdjbGFzcyc6
+ICdlcF9yZWZfcmVwb3J0X2VtcHR5JyB9ICk7CgkJCQkJCXNwYW4udXBkYXRlKCAnUmVwb3J0IGVt
+cHR5JyApOwoJCQkJCQlwTm9kZS5pbnNlcnQoIHNwYW4gKTsKCQkJCQl9CgkJCQkJdGhpcy5ydW5z
+Kys7CgoJCQkJfSkuYmluZCh0aGlzKQoJCQl9KTsKCQl9CgkJaWYoIHRoaXMuaWRzID09IG51bGwg
+fHwgdGhpcy5pZHMubGVuZ3RoID09IDAgKQoJCXsKCQkJdmFyIHBOb2RlID0gJCh0aGlzLnByZWZp
+eCArICdfcHJvZ3Jlc3NfYmFyJykucGFyZW50Tm9kZTsKCQkJJCh0aGlzLnByZWZpeCArICdfcHJv
+Z3Jlc3NfYmFyJykuaGlkZSgpOwoJCQl2YXIgc3BhbiA9IG5ldyBFbGVtZW50KCAnc3BhbicsIHsg
+J2NsYXNzJzogJ2VwX3JlZl9yZXBvcnRfZW1wdHknIH0gKTsKCQkJc3Bhbi51cGRhdGUoICdSZXBv
+cnQgZW1wdHknICk7CgkJCXBOb2RlLmluc2VydCggc3BhbiApOwoJCX0KCX0KCgp9KTsKCmZ1bmN0
+aW9uIGdyb3VwX3JlcG9ydChncm91cCkKewoJZG9jdW1lbnQuZ3JvdXBfcmVwb3J0Lmdyb3VwLnZh
+bHVlID0gZ3JvdXA7Cglkb2N1bWVudC5ncm91cF9yZXBvcnQuc3VibWl0KCk7Cn0KCmZ1bmN0aW9u
+IHNvcnRfcmVwb3J0KHNvcnQpCnsKCWRvY3VtZW50LnNvcnRfcmVwb3J0LnNvcnQudmFsdWUgPSBz
+b3J0OwoJZG9jdW1lbnQuc29ydF9yZXBvcnQuc3VibWl0KCk7Cn0KCmZ1bmN0aW9uIGlzSW50ZWdl
+cihudW0pIHsKICByZXR1cm4gKG51bSBeIDApID09PSBudW07Cn0K
@@ -2870,7 +2878,7 @@ mCeqVAAAAABJRU5ErkJggg==
coverimage
- 3.3
+ 3.3.1
-
@@ -2893,6 +2901,20 @@ mCeqVAAAAABJRU5ErkJggg==
rwf1v07@soton.ac.uk
+ -
+
+ Oakley
+ Ed
+
+ E.J.Oakley@soton.ac.uk
+
+ -
+
+ Newman
+ David R
+
+ drn@ecs.soton.ac.uk
+
2017-06-14 15:21:27
Generic Reporting Framework
diff --git a/reports.epmi b/reports.epmi
index 5a473f9..017e64a 100644
--- a/reports.epmi
+++ b/reports.epmi
@@ -29,9 +29,9 @@
lang/en/phrases/reports.xml
text/xml
- f344518160d45ccd1d1709a926d9e6d1
+ 9c23d9b3d22356d0ff30793364082dbb
MD5
- 2563
+ 2685
plugins/EPrints/Plugin/Export/Grid2.pm
@@ -85,7 +85,7 @@
plugins/EPrints/Plugin/Screen/Report.pm
text/plain
- f39fb0deae29a19b89b66997340c3894
+ 645bd1e2a38d975945e731b597c26f9d
MD5
44087
@@ -134,9 +134,9 @@
static/javascript/auto/reports.js
text/plain
- 399f9957d04d330098e2280f062661d9
+ fb34e39d76dbc63ac1d052981fca063f
MD5
- 12696
+ 12978
static/style/auto/reports.css
@@ -166,7 +166,7 @@
coverimage
- 3.3
+ 3.3.1
-
@@ -189,6 +189,20 @@
rwf1v07@soton.ac.uk
+ -
+
+ Oakley
+ Ed
+
+ E.J.Oakley@soton.ac.uk
+
+ -
+
+ Newman
+ David R
+
+ drn@ecs.soton.ac.uk
+
2017-06-14 15:21:27
Generic Reporting Framework