diff --git a/VI3DGL/sync-bundle-01.txt b/VI3DGL/sync-bundle-01.txt index b411d75..ef72373 100644 --- a/VI3DGL/sync-bundle-01.txt +++ b/VI3DGL/sync-bundle-01.txt @@ -3095,7 +3095,7 @@ QGVjaG8gb2ZmDQpzZXRsb2NhbA0KZWNoby4NCmVjaG8gPT09IFZJMyBER0wtUGxhbnVuZzogU2Vs YnN0dGVzdCAvIEhlYWx0aC1DaGVjayA9PT0NCmVjaG8uDQpwb3dlcnNoZWxsIC1Ob1Byb2ZpbGUg LUV4ZWN1dGlvblBvbGljeSBCeXBhc3MgLUZpbGUgIiV+ZHAwY2hlY2sucHMxIiAlKg0KZWNoby4N CnBhdXNlDQo= -### FILE: check.ps1 | 11689 +### FILE: check.ps1 | 14928 I3JlcXVpcmVzIC12ZXJzaW9uIDMNCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KIyBjaGVjay5wczEg LSBTZWxic3R0ZXN0IC8gSGVhbHRoLUNoZWNrICJsYXVmZW4gYWxsZSBGdW5rdGlvbmVuPyINCiMg @@ -3103,205 +3103,261 @@ LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBFaWdlbnN0YWVuZGlnZXIgR2VzdW5kaGVpdHMtQ2hlY2sg ZnVlciBkYXMgUG9ydGFsLiBTcGllZ2VsdCBkZW4gU2VsYnN0dGVzdA0KIyBhdXMgZGVtIERldi1T ZXJ2ZXIgKGRldi9zZXJ2ZXIucHkgLT4gX3Vfc2VsZnRlc3QpIHVuZCBlcndlaXRlcnQgaWhuIHVt -DQojIE1hbmlmZXN0LSwgQXNzZXQtIHVuZCBEYXRlbi1FbmRwdW5rdC1QcnVlZnVuZ2VuIChBbmZv -cmRlcnVuZyBDTEFVREUubWQNCiMgIlVwZGF0ZS1TZWxic3R0ZXN0IFZFUkJJTkRMSUNIIikuDQoj -DQojIEF1ZnJ1ZjoNCiMgICBwb3dlcnNoZWxsIC1Ob1Byb2ZpbGUgLUV4ZWN1dGlvblBvbGljeSBC -eXBhc3MgLUZpbGUgY2hlY2sucHMxDQojICAgLi4ub3B0aW9uYWw6ICAtUG9ydCA4MDgwICAtUm9v -dCAiQzpcUGZhZFx6dW1cUG9ydGFsIiAgLU5vSHR0cA0KIw0KIyBFeGl0LUNvZGU6ICAwID0gYWxs -ZXMgZ3J1ZW4gfCAxID0gbWluZGVzdGVucyBlaW5lIFBydWVmdW5nIGZlaGxnZXNjaGxhZ2VuDQoj -DQojIFVFQkVSVFJBR0JBUiAoRkxELVNjaGljaHRwbGFudW5nIC8gUG9ydGFsX1VuaW9uKTogTlVS -IGRlbiBDT05GSUctQmxvY2sgdW50ZW4NCiMgYW5wYXNzZW4gKERhdGVpLSB1bmQgRW5kcHVua3Qt -TGlzdGVuKS4gRGllIFBydWVmLUxvZ2lrIGJsZWlidCB1bnZlcmFlbmRlcnQuDQojID09PT09PT09 +DQojIE1hbmlmZXN0LSwgQXNzZXQtLCBEYXRlbi0gdW5kIFVwZGF0ZS1FbmRwdW5rdC1QcnVlZnVu +Z2VuIChBbmZvcmRlcnVuZw0KIyBDTEFVREUubWQgIlVwZGF0ZS1TZWxic3R0ZXN0IFZFUkJJTkRM +SUNIIikuDQojDQojIEF1ZnJ1ZjoNCiMgICBwb3dlcnNoZWxsIC1Ob1Byb2ZpbGUgLUV4ZWN1dGlv +blBvbGljeSBCeXBhc3MgLUZpbGUgY2hlY2sucHMxDQojICAgLi4ub3B0aW9uYWw6ICAtUG9ydCA4 +MDgwICAtUm9vdCAiQzpcUGZhZFx6dW1cUG9ydGFsIiAgLU5vSHR0cA0KIyAgICAgICAgICAgICAg +ICAgLUFzc2V0RmFsbGJhY2sgIjxTaGFyZT4iICAgKFF1ZWxsLS9TaGFyZS1PcmRuZXIpDQojICAg +ICAgICAgICAgICAgICAtRGF0YURpciAiPFNoYXJlPlxkYXRhIiAgICAoZXhwbGl6aXRlciBEYXRl +bi1QZmFkKQ0KIw0KIyBXSUNIVElHIC0gZ2V0cmVubnRlIFBmYWRlIGluIFByb2R1a3Rpb246IGRl +ciBTZXJ2ZXIgbGFldWZ0IGF1cyBlaW5lbQ0KIyBlcGhlbWVyZW4gbG9rYWxlbiBDb2RlLUNhY2hl +IChSb290ID0gLi4uXGFzc2V0c188dHM+KSwgZGllIExpdmUtRGF0ZW4gbGllZ2VuDQojIGFiZXIg +c2VwYXJhdCBhdWYgZGVtIFNoYXJlICg9IEFzc2V0RmFsbGJhY2tcZGF0YSBiencuIC1EYXRhUGF0 +aCB2b24gZGdsLmJhdCkuDQojIERhcnVtIGxvZXN0IGNoZWNrLnBzMSBkZW4gRGF0ZW4tT3JkbmVy +IEdFTkFVU08gYXVmIHdpZSBzZXJ2ZXIucHMxOg0KIyAgIC1EYXRhRGlyICA+ICBBc3NldEZhbGxi +YWNrXGRhdGEgID4gIFJvb3RcZGF0YSAgPiAgU2tyaXB0b3JkbmVyXGRhdGENCiMgdW5kIG5pbW10 +IGRlbiBFUlNURU4sIGRlciBlaW4gYWRtaW4uanNvbiBlbnRoYWVsdC4gT2huZSBkYXMgd3VlcmRl +IGRlcg0KIyAiTGl2ZS1EYXRlbiBndWVsdGlnIi1DaGVjayBpbSBsZWVyZW4gYXNzZXRzXzx0cz5c +ZGF0YSBpbnMgTmljaHRzIGxhdWZlbi4NCiMNCiMgRXhpdC1Db2RlOiAgMCA9IGFsbGVzIGdydWVu +IHwgMSA9IG1pbmRlc3RlbnMgZWluZSBQcnVlZnVuZyBmZWhsZ2VzY2hsYWdlbg0KIw0KIyBVRUJF +UlRSQUdCQVIgKEZMRC1TY2hpY2h0cGxhbnVuZyAvIFBvcnRhbF9Vbmlvbik6IE5VUiBkZW4gQ09O +RklHLUJsb2NrIHVudGVuDQojIGFucGFzc2VuIChEYXRlaS0gdW5kIEVuZHB1bmt0LUxpc3Rlbiku +IERpZSBQcnVlZi1Mb2dpayBibGVpYnQgdW52ZXJhZW5kZXJ0Lg0KIyA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 -PT09PT09PT09PT0NCnBhcmFtKA0KICAgIFtpbnRdJFBvcnQgPSA4MDgwLA0KICAgIFtzdHJpbmdd -JFJvb3QgPSAnJywNCiAgICBbc3dpdGNoXSROb0h0dHANCikNCiRFcnJvckFjdGlvblByZWZlcmVu -Y2UgPSAnU3RvcCcNCg0KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t -LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQ09ORklHIC0gcHJvamVrdHNw -ZXppZmlzY2gsIGhpZXIgKHVuZCBudXIgaGllcikgcHJvIFBvcnRhbCBhbnBhc3Nlbi4NCiMgLS0t +PT09DQpwYXJhbSgNCiAgICBbaW50XSRQb3J0ID0gODA4MCwNCiAgICBbc3RyaW5nXSRSb290ID0g +JycsDQogICAgW3N0cmluZ10kQXNzZXRGYWxsYmFjayA9ICcnLA0KICAgIFtzdHJpbmddJERhdGFE +aXIgPSAnJywNCiAgICBbc3dpdGNoXSROb0h0dHANCikNCiRFcnJvckFjdGlvblByZWZlcmVuY2Ug +PSAnU3RvcCcNCg0KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t +LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQ09ORklHIC0gcHJvamVrdHNwZXpp +ZmlzY2gsIGhpZXIgKHVuZCBudXIgaGllcikgcHJvIFBvcnRhbCBhbnBhc3Nlbi4NCiMgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t -LS0tLS0tLS0tLS0tLS0tDQokQ0ZHID0gQHsNCiAgICAjIEtlcm5kYXRlaWVuOiBtdWVzc2VuIHZv -cmhhbmRlbiBVTkQgbmljaHQgbGVlciBzZWluLg0KICAgIEtlcm5EYXRlaWVuICAgID0gQCgnaW5k -ZXguaHRtbCcsICdhcHAuanMnKQ0KICAgICMgVmVyc2lvbnNkYXRlaSAoSW5oYWx0IGRhcmYgbmlj -aHQgbGVlciAvIG5pY2h0IDAuMC4wIHNlaW4pLg0KICAgIFZlcnNpb25EYXRlaSAgID0gJ1ZFUlNJ -T04nDQogICAgIyBMaXZlLURhdGVuIHVudGVyIGRhdGFcIDogbXVlc3NlbiAtIGZhbGxzIHZvcmhh -bmRlbiAtIGd1ZWx0aWdlcyBKU09OIHNlaW4uDQogICAgRGF0ZW5Kc29uICAgICAgPSBAKCdhZG1p -bi5qc29uJywgJ3BsYW51bmcuanNvbicsICdsb2didWNoLmpzb24nLCAnaGlud2Vpc2UuanNvbicp -DQogICAgIyBTdGF0aXNjaGUgSFRUUC1FbmRwdW5rdGU6IG11ZXNzZW4gMjAwIGxpZWZlcm4uDQog -ICAgU3RhdGlzY2hlRXAgICAgPSBAKCcvaW5kZXguaHRtbCcsICcvYXBwLmpzJywgJy9hcGkvaW5m -bycpDQogICAgIyBEYXRlbi1FbmRwdW5rdGU6IG11ZXNzZW4gMjAwIGxpZWZlcm4gVU5EIHBhcnNl -YmFyZXMgSlNPTiB6dXJ1ZWNrZ2ViZW4uDQogICAgRGF0ZW5FcCAgICAgICAgPSBAKCcvYXBpL3Bs -YW51bmcnLCAnL2FwaS9hZG1pbicsICcvYXBpL2hpbndlaXNlJykNCn0NCg0KIyAtLS0tLS0tLS0t +LS0tLS0tLS0tLS0tDQokQ0ZHID0gQHsNCiAgICAjIEtlcm5kYXRlaWVuOiBtdWVzc2VuIHZvcmhh +bmRlbiBVTkQgbmljaHQgbGVlciBzZWluLg0KICAgIEtlcm5EYXRlaWVuICAgID0gQCgnaW5kZXgu +aHRtbCcsICdhcHAuanMnKQ0KICAgICMgVmVyc2lvbnNkYXRlaSAoSW5oYWx0IGRhcmYgbmljaHQg +bGVlciAvIG5pY2h0IDAuMC4wIHNlaW4pLg0KICAgIFZlcnNpb25EYXRlaSAgID0gJ1ZFUlNJT04n +DQogICAgIyBMaXZlLURhdGVuIHVudGVyIGRhdGFcIDogbXVlc3NlbiAtIGZhbGxzIHZvcmhhbmRl +biAtIGd1ZWx0aWdlcyBKU09OIHNlaW4uDQogICAgRGF0ZW5Kc29uICAgICAgPSBAKCdhZG1pbi5q +c29uJywgJ3BsYW51bmcuanNvbicsICdsb2didWNoLmpzb24nLCAnaGlud2Vpc2UuanNvbicpDQog +ICAgIyBTdGF0aXNjaGUgSFRUUC1FbmRwdW5rdGU6IG11ZXNzZW4gMjAwIGxpZWZlcm4uDQogICAg +U3RhdGlzY2hlRXAgICAgPSBAKCcvaW5kZXguaHRtbCcsICcvYXBwLmpzJywgJy9hcGkvaW5mbycp +DQogICAgIyBEYXRlbi1FbmRwdW5rdGU6IG11ZXNzZW4gMjAwIGxpZWZlcm4gVU5EIHBhcnNlYmFy +ZXMgSlNPTiB6dXJ1ZWNrZ2ViZW4uDQogICAgRGF0ZW5FcCAgICAgICAgPSBAKCcvYXBpL3BsYW51 +bmcnLCAnL2FwaS9hZG1pbicsICcvYXBpL2hpbndlaXNlJykNCiAgICAjIFVwZGF0ZS1FbmRwdW5r +dDogbXVzcyBFWElTVElFUkVOICgyMDAgb2ssIDQwMyBvaz1TVS1nYXRlZDsgNDA0ID0gZmVobHQp +Lg0KICAgICMgTGVlcnN0cmluZyAnJyA9IFBydWVmdW5nIHVlYmVyc3ByaW5nZW4gKFBvcnRhbCBv +aG5lIEluLUFwcC1VcGRhdGUpLg0KICAgIFVwZGF0ZUVwICAgICAgID0gJy9hcGkvdXBkYXRlL3N0 +YXR1cycNCn0NCg0KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t +LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgUG9ydGFsLVd1cnplbCBiZXN0aW1t +ZW4uIFJlaWhlbmZvbGdlOiAtUm9vdCA+IFNrcmlwdG9yZG5lciAod2VubiBpbmRleC5odG1sKQ0K +IyA+IEVsdGVybm9yZG5lciBkZXMgU2tyaXB0cyAoQXVmcnVmIGF1cyBTeW5jSm9iXCBoZXJhdXMp +ID4gYWt0dWVsbGVzIFZlcnouDQojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t +LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24gR2V0LVNj +cmlwdERpciB7DQogICAgaWYgKCRQU1NjcmlwdFJvb3QpIHsgcmV0dXJuICRQU1NjcmlwdFJvb3Qg +fQ0KICAgIGlmICgkTXlJbnZvY2F0aW9uLk15Q29tbWFuZC5QYXRoKSB7IHJldHVybiBTcGxpdC1Q +YXRoIC1QYXJlbnQgJE15SW52b2NhdGlvbi5NeUNvbW1hbmQuUGF0aCB9DQogICAgcmV0dXJuIChH +ZXQtTG9jYXRpb24pLlBhdGgNCn0NCmZ1bmN0aW9uIFJlc29sdmUtUm9vdCB7DQogICAgcGFyYW0o +W3N0cmluZ10kSGludCkNCiAgICBpZiAoJEhpbnQgLWFuZCAoVGVzdC1QYXRoIC1MaXRlcmFsUGF0 +aCAoSm9pbi1QYXRoICRIaW50ICdpbmRleC5odG1sJykpKSB7IHJldHVybiAoUmVzb2x2ZS1QYXRo +IC1MaXRlcmFsUGF0aCAkSGludCkuUGF0aCB9DQogICAgJHNkID0gR2V0LVNjcmlwdERpcg0KICAg +IGlmIChUZXN0LVBhdGggLUxpdGVyYWxQYXRoIChKb2luLVBhdGggJHNkICdpbmRleC5odG1sJykp +IHsgcmV0dXJuICRzZCB9DQogICAgJHBhcmVudCA9IFNwbGl0LVBhdGggLVBhcmVudCAkc2QNCiAg +ICBpZiAoJHBhcmVudCAtYW5kIChUZXN0LVBhdGggLUxpdGVyYWxQYXRoIChKb2luLVBhdGggJHBh +cmVudCAnaW5kZXguaHRtbCcpKSkgeyByZXR1cm4gJHBhcmVudCB9DQogICAgJGN3ZCA9IChHZXQt +TG9jYXRpb24pLlBhdGgNCiAgICBpZiAoVGVzdC1QYXRoIC1MaXRlcmFsUGF0aCAoSm9pbi1QYXRo +ICRjd2QgJ2luZGV4Lmh0bWwnKSkgeyByZXR1cm4gJGN3ZCB9DQogICAgcmV0dXJuICRudWxsDQp9 +DQoNCiMgRGF0ZW4tT3JkbmVyIEdFTkFVU08gYXVmbG9lc2VuIHdpZSBzZXJ2ZXIucHMxOiBlcnN0 +ZSBRdWVsbGUgbWl0IGFkbWluLmpzb24uDQpmdW5jdGlvbiBSZXNvbHZlLURhdGFEaXIgew0KICAg +IHBhcmFtKFtzdHJpbmddJFJvb3REaXIsIFtzdHJpbmddJEFzc2V0RmFsbGJhY2tEaXIsIFtzdHJp +bmddJERhdGFEaXJIaW50KQ0KICAgICRjYW5kcyA9IEAoKQ0KICAgIGlmICgkRGF0YURpckhpbnQp +ICAgICAgeyAkY2FuZHMgKz0gJERhdGFEaXJIaW50IH0NCiAgICBpZiAoJEFzc2V0RmFsbGJhY2tE +aXIpIHsgJGNhbmRzICs9IChKb2luLVBhdGggJEFzc2V0RmFsbGJhY2tEaXIgJ2RhdGEnKSB9DQog +ICAgJGNhbmRzICs9IChKb2luLVBhdGggJFJvb3REaXIgJ2RhdGEnKQ0KICAgICRzZCA9IEdldC1T +Y3JpcHREaXINCiAgICBpZiAoJHNkKSB7ICRjYW5kcyArPSAoSm9pbi1QYXRoICRzZCAnZGF0YScp +IH0NCiAgICBmb3JlYWNoICgkYyBpbiAkY2FuZHMpIHsNCiAgICAgICAgaWYgKCRjIC1hbmQgKFRl +c3QtUGF0aCAtTGl0ZXJhbFBhdGggKEpvaW4tUGF0aCAkYyAnYWRtaW4uanNvbicpKSkgew0KICAg +ICAgICAgICAgcmV0dXJuIChSZXNvbHZlLVBhdGggLUxpdGVyYWxQYXRoICRjKS5QYXRoDQogICAg +ICAgIH0NCiAgICB9DQogICAgIyBrZWluIGFkbWluLmpzb24gZ2VmdW5kZW46IGVyc3RlbiBleGlz +dGllcmVuZGVuIE9yZG5lciBuZWhtZW4sIHNvbnN0IFJvb3RcZGF0YQ0KICAgIGZvcmVhY2ggKCRj +IGluICRjYW5kcykgew0KICAgICAgICBpZiAoJGMgLWFuZCAoVGVzdC1QYXRoIC1MaXRlcmFsUGF0 +aCAkYykpIHsgcmV0dXJuIChSZXNvbHZlLVBhdGggLUxpdGVyYWxQYXRoICRjKS5QYXRoIH0NCiAg +ICB9DQogICAgcmV0dXJuIChKb2luLVBhdGggJFJvb3REaXIgJ2RhdGEnKQ0KfQ0KDQokUm9vdERp +ciA9IFJlc29sdmUtUm9vdCAtSGludCAkUm9vdA0KaWYgKC1ub3QgJFJvb3REaXIpIHsNCiAgICBX +cml0ZS1Ib3N0ICdGRUhMRVI6IFBvcnRhbC1XdXJ6ZWwgbmljaHQgZ2VmdW5kZW4gKGtlaW5lIGlu +ZGV4Lmh0bWwgaW4gU2tyaXB0LSwgRWx0ZXJuLSBvZGVyIGFrdHVlbGxlbSBPcmRuZXIpLicgLUZv +cmVncm91bmRDb2xvciBSZWQNCiAgICBXcml0ZS1Ib3N0ICdjaGVjay5wczEgaW4gZGllIFBvcnRh +bC1XdXJ6ZWwgbGVnZW4gb2RlciAtUm9vdCAiQzpcUGZhZCIgYW5nZWJlbi4nIC1Gb3JlZ3JvdW5k +Q29sb3IgUmVkDQogICAgZXhpdCAxDQp9DQoNCiMgQXNzZXRGYWxsYmFjayAoU2hhcmUtUXVlbGxl +KSBhdWZsb2VzZW4sIGZhbGxzIGFuZ2VnZWJlbiAmIHZvcmhhbmRlbi4NCiRBc3NldEZhbGxiYWNr +RGlyID0gJycNCmlmICgkQXNzZXRGYWxsYmFjayAtYW5kIChUZXN0LVBhdGggLUxpdGVyYWxQYXRo +ICRBc3NldEZhbGxiYWNrKSkgew0KICAgICRBc3NldEZhbGxiYWNrRGlyID0gKFJlc29sdmUtUGF0 +aCAtTGl0ZXJhbFBhdGggJEFzc2V0RmFsbGJhY2spLlBhdGgNCn0NCg0KJERhdGFEaXJSZXNvbHZl +ZCA9IFJlc29sdmUtRGF0YURpciAtUm9vdERpciAkUm9vdERpciAtQXNzZXRGYWxsYmFja0RpciAk +QXNzZXRGYWxsYmFja0RpciAtRGF0YURpckhpbnQgJERhdGFEaXINCiRCYXNlVXJsID0gKCdodHRw +Oi8vbG9jYWxob3N0OnswfScgLWYgJFBvcnQpDQoNCldyaXRlLUhvc3QgJycNCldyaXRlLUhvc3Qg +Jz09PSBWSTMgU2VsYnN0dGVzdCAvIEhlYWx0aC1DaGVjayA9PT0nDQpXcml0ZS1Ib3N0ICgnUG9y +dGFsLVd1cnplbCA6ICcgKyAkUm9vdERpcikNCmlmICgkQXNzZXRGYWxsYmFja0RpcikgeyBXcml0 +ZS1Ib3N0ICgnQXNzZXRGYWxsYmFjayA6ICcgKyAkQXNzZXRGYWxsYmFja0RpcikgfQ0KV3JpdGUt +SG9zdCAoJ0RhdGVuLU9yZG5lciAgOiAnICsgJERhdGFEaXJSZXNvbHZlZCkNCldyaXRlLUhvc3Qg +KCdTZXJ2ZXItVVJMICAgIDogJyArICRCYXNlVXJsKQ0KV3JpdGUtSG9zdCAnJw0KDQojIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t -LS0tLS0tLS0NCiMgUG9ydGFsLVd1cnplbCBiZXN0aW1tZW4uIFJlaWhlbmZvbGdlOiAtUm9vdCA+ -IFNrcmlwdG9yZG5lciAod2VubiBpbmRleC5odG1sKQ0KIyA+IEVsdGVybm9yZG5lciBkZXMgU2ty -aXB0cyAoQXVmcnVmIGF1cyBTeW5jSm9iXCBoZXJhdXMpID4gYWt0dWVsbGVzIFZlcnouDQojIC0t -LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t -LS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24gR2V0LVNjcmlwdERpciB7DQogICAgaWYgKCRQU1Nj -cmlwdFJvb3QpIHsgcmV0dXJuICRQU1NjcmlwdFJvb3QgfQ0KICAgIGlmICgkTXlJbnZvY2F0aW9u -Lk15Q29tbWFuZC5QYXRoKSB7IHJldHVybiBTcGxpdC1QYXRoIC1QYXJlbnQgJE15SW52b2NhdGlv -bi5NeUNvbW1hbmQuUGF0aCB9DQogICAgcmV0dXJuIChHZXQtTG9jYXRpb24pLlBhdGgNCn0NCmZ1 -bmN0aW9uIFJlc29sdmUtUm9vdCB7DQogICAgcGFyYW0oW3N0cmluZ10kSGludCkNCiAgICBpZiAo -JEhpbnQgLWFuZCAoVGVzdC1QYXRoIC1MaXRlcmFsUGF0aCAoSm9pbi1QYXRoICRIaW50ICdpbmRl -eC5odG1sJykpKSB7IHJldHVybiAoUmVzb2x2ZS1QYXRoIC1MaXRlcmFsUGF0aCAkSGludCkuUGF0 -aCB9DQogICAgJHNkID0gR2V0LVNjcmlwdERpcg0KICAgIGlmIChUZXN0LVBhdGggLUxpdGVyYWxQ -YXRoIChKb2luLVBhdGggJHNkICdpbmRleC5odG1sJykpIHsgcmV0dXJuICRzZCB9DQogICAgJHBh -cmVudCA9IFNwbGl0LVBhdGggLVBhcmVudCAkc2QNCiAgICBpZiAoJHBhcmVudCAtYW5kIChUZXN0 -LVBhdGggLUxpdGVyYWxQYXRoIChKb2luLVBhdGggJHBhcmVudCAnaW5kZXguaHRtbCcpKSkgeyBy -ZXR1cm4gJHBhcmVudCB9DQogICAgJGN3ZCA9IChHZXQtTG9jYXRpb24pLlBhdGgNCiAgICBpZiAo -VGVzdC1QYXRoIC1MaXRlcmFsUGF0aCAoSm9pbi1QYXRoICRjd2QgJ2luZGV4Lmh0bWwnKSkgeyBy -ZXR1cm4gJGN3ZCB9DQogICAgcmV0dXJuICRudWxsDQp9DQoNCiRSb290RGlyID0gUmVzb2x2ZS1S -b290IC1IaW50ICRSb290DQppZiAoLW5vdCAkUm9vdERpcikgew0KICAgIFdyaXRlLUhvc3QgJ0ZF -SExFUjogUG9ydGFsLVd1cnplbCBuaWNodCBnZWZ1bmRlbiAoa2VpbmUgaW5kZXguaHRtbCBpbiBT -a3JpcHQtLCBFbHRlcm4tIG9kZXIgYWt0dWVsbGVtIE9yZG5lcikuJyAtRm9yZWdyb3VuZENvbG9y -IFJlZA0KICAgIFdyaXRlLUhvc3QgJ2NoZWNrLnBzMSBpbiBkaWUgUG9ydGFsLVd1cnplbCBsZWdl -biBvZGVyIC1Sb290ICJDOlxQZmFkIiBhbmdlYmVuLicgLUZvcmVncm91bmRDb2xvciBSZWQNCiAg -ICBleGl0IDENCn0NCiREYXRhRGlyID0gSm9pbi1QYXRoICRSb290RGlyICdkYXRhJw0KJEJhc2VV -cmwgPSAoJ2h0dHA6Ly9sb2NhbGhvc3Q6ezB9JyAtZiAkUG9ydCkNCg0KV3JpdGUtSG9zdCAnJw0K -V3JpdGUtSG9zdCAnPT09IFZJMyBTZWxic3R0ZXN0IC8gSGVhbHRoLUNoZWNrID09PScNCldyaXRl -LUhvc3QgKCdQb3J0YWwtV3VyemVsIDogJyArICRSb290RGlyKQ0KV3JpdGUtSG9zdCAoJ1NlcnZl -ci1VUkwgICAgOiAnICsgJEJhc2VVcmwpDQpXcml0ZS1Ib3N0ICcnDQoNCiMgLS0tLS0tLS0tLS0t -LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t -LS0tLS0tDQojIFBydWVmLUdlcnVlc3QuIEplZGUgUHJ1ZWZ1bmcgbGllZmVydCBAe29rPSRib29s -OyBkZXRhaWw9Jy4uLid9Lg0KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t -LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiRzY3JpcHQ6UmVzdWx0cyA9 -IEAoKQ0KZnVuY3Rpb24gQWRkLUNoZWNrIHsNCiAgICBwYXJhbShbc3RyaW5nXSROYW1lLCBbc2Ny -aXB0YmxvY2tdJEZuKQ0KICAgICRvayA9ICRmYWxzZTsgJGRldGFpbCA9ICcnDQogICAgdHJ5IHsN -CiAgICAgICAgJHIgPSAmICRGbg0KICAgICAgICAkb2sgPSBbYm9vbF0kci5vaw0KICAgICAgICAk -ZGV0YWlsID0gW3N0cmluZ10kci5kZXRhaWwNCiAgICB9IGNhdGNoIHsNCiAgICAgICAgJG9rID0g -JGZhbHNlDQogICAgICAgICRkZXRhaWwgPSAkXy5FeGNlcHRpb24uTWVzc2FnZQ0KICAgIH0NCiAg -ICAkc2NyaXB0OlJlc3VsdHMgKz0gW3BzY3VzdG9tb2JqZWN0XUB7IE5hbWUgPSAkTmFtZTsgT2sg -PSAkb2s7IERldGFpbCA9ICRkZXRhaWwgfQ0KICAgIGlmICgkb2spIHsNCiAgICAgICAgV3JpdGUt -SG9zdCAoJyAgWyBPSyBdICcgKyAkTmFtZSArICcgIC0gICcgKyAkZGV0YWlsKSAtRm9yZWdyb3Vu -ZENvbG9yIEdyZWVuDQogICAgfSBlbHNlIHsNCiAgICAgICAgV3JpdGUtSG9zdCAoJyAgW0ZFSExd -ICcgKyAkTmFtZSArICcgIC0gICcgKyAkZGV0YWlsKSAtRm9yZWdyb3VuZENvbG9yIFJlZA0KICAg -IH0NCn0NCg0KIyBIVFRQLUhlbGZlcjogbGllZmVydCBAe2NvZGU9PGludHwwPjsgYm9keT0nPHRl -eHQ+J307IGNvZGU9MCA9IG5pY2h0IGVycmVpY2hiYXIuDQpmdW5jdGlvbiBJbnZva2UtSHR0cCB7 -DQogICAgcGFyYW0oW3N0cmluZ10kVXJsLCBbaW50XSRUaW1lb3V0U2VjID0gOCkNCiAgICB0cnkg -ew0KICAgICAgICAkcmVzcCA9IEludm9rZS1XZWJSZXF1ZXN0IC1VcmkgJFVybCAtVXNlQmFzaWNQ -YXJzaW5nIC1UaW1lb3V0U2VjICRUaW1lb3V0U2VjDQogICAgICAgIHJldHVybiBAeyBjb2RlID0g -W2ludF0kcmVzcC5TdGF0dXNDb2RlOyBib2R5ID0gW3N0cmluZ10kcmVzcC5Db250ZW50IH0NCiAg -ICB9IGNhdGNoIHsNCiAgICAgICAgJGNvZGUgPSAwDQogICAgICAgIGlmICgkXy5FeGNlcHRpb24u -UmVzcG9uc2UgLWFuZCAkXy5FeGNlcHRpb24uUmVzcG9uc2UuU3RhdHVzQ29kZSkgew0KICAgICAg -ICAgICAgJGNvZGUgPSBbaW50XSRfLkV4Y2VwdGlvbi5SZXNwb25zZS5TdGF0dXNDb2RlLnZhbHVl -X18NCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gQHsgY29kZSA9ICRjb2RlOyBib2R5ID0gJycg -fQ0KICAgIH0NCn0NCg0KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t -LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgMSkgS2VybmRhdGVpZW4gdm9y -aGFuZGVuICYgbmljaHQgbGVlcg0KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t -LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkFkZC1DaGVjayAnS2Vy -bmRhdGVpZW4gdm9yaGFuZGVuICYgbmljaHQgbGVlcicgew0KICAgICRmZWhsdCA9IEAoKQ0KICAg -IGZvcmVhY2ggKCRmIGluICRDRkcuS2VybkRhdGVpZW4pIHsNCiAgICAgICAgJHAgPSBKb2luLVBh -dGggJFJvb3REaXIgJGYNCiAgICAgICAgaWYgKC1ub3QgKFRlc3QtUGF0aCAtTGl0ZXJhbFBhdGgg -JHApIC1vciAoKEdldC1JdGVtIC1MaXRlcmFsUGF0aCAkcCkuTGVuZ3RoIC1lcSAwKSkgeyAkZmVo -bHQgKz0gJGYgfQ0KICAgIH0NCiAgICBpZiAoJGZlaGx0LkNvdW50KSB7IHJldHVybiBAeyBvayA9 -ICRmYWxzZTsgZGV0YWlsID0gJ2ZlaGx0L2xlZXI6ICcgKyAoJGZlaGx0IC1qb2luICcsICcpIH0g -fQ0KICAgIHJldHVybiBAeyBvayA9ICR0cnVlOyBkZXRhaWwgPSAoJENGRy5LZXJuRGF0ZWllbiAt -am9pbiAnLCAnKSArICcgdm9yaGFuZGVuJyB9DQp9DQoNCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t -LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoj -IDIpIFZFUlNJT04gZ2VzZXR6dA0KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t -LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkFkZC1DaGVjayAnVkVS -U0lPTiBnZXNldHp0JyB7DQogICAgJHAgPSBKb2luLVBhdGggJFJvb3REaXIgJENGRy5WZXJzaW9u -RGF0ZWkNCiAgICBpZiAoLW5vdCAoVGVzdC1QYXRoIC1MaXRlcmFsUGF0aCAkcCkpIHsgcmV0dXJu -IEB7IG9rID0gJGZhbHNlOyBkZXRhaWwgPSAkQ0ZHLlZlcnNpb25EYXRlaSArICcgZmVobHQnIH0g -fQ0KICAgICR2ID0gKEdldC1Db250ZW50IC1MaXRlcmFsUGF0aCAkcCAtUmF3KS5UcmltKCkNCiAg -ICAkb2sgPSAoJHYgLW5lICcnIC1hbmQgJHYgLW5lICcwLjAuMCcpDQogICAgcmV0dXJuIEB7IG9r -ID0gJG9rOyBkZXRhaWwgPSAnVkVSU0lPTj0nICsgJHYgfQ0KfQ0KDQojIC0tLS0tLS0tLS0tLS0t -LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t -LS0tLQ0KIyAzKSBNYW5pZmVzdC1EYXRlaWVuIHZvcmhhbmRlbiAoYWxsZSBpbSBNQU5JRkVTVCBn -ZWxpc3RldGVuIENvZGUtRGF0ZWllbiBkYSkNCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t +LS0tLS0tLS0tLS0tLQ0KIyBQcnVlZi1HZXJ1ZXN0LiBKZWRlIFBydWVmdW5nIGxpZWZlcnQgQHtv +az0kYm9vbDsgZGV0YWlsPScuLi4nfS4NCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t +LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQokc2NyaXB0OlJl +c3VsdHMgPSBAKCkNCmZ1bmN0aW9uIEFkZC1DaGVjayB7DQogICAgcGFyYW0oW3N0cmluZ10kTmFt +ZSwgW3NjcmlwdGJsb2NrXSRGbikNCiAgICAkb2sgPSAkZmFsc2U7ICRkZXRhaWwgPSAnJw0KICAg +IHRyeSB7DQogICAgICAgICRyID0gJiAkRm4NCiAgICAgICAgJG9rID0gW2Jvb2xdJHIub2sNCiAg +ICAgICAgJGRldGFpbCA9IFtzdHJpbmddJHIuZGV0YWlsDQogICAgfSBjYXRjaCB7DQogICAgICAg +ICRvayA9ICRmYWxzZQ0KICAgICAgICAkZGV0YWlsID0gJF8uRXhjZXB0aW9uLk1lc3NhZ2UNCiAg +ICB9DQogICAgJHNjcmlwdDpSZXN1bHRzICs9IFtwc2N1c3RvbW9iamVjdF1AeyBOYW1lID0gJE5h +bWU7IE9rID0gJG9rOyBEZXRhaWwgPSAkZGV0YWlsIH0NCiAgICBpZiAoJG9rKSB7DQogICAgICAg +IFdyaXRlLUhvc3QgKCcgIFsgT0sgXSAnICsgJE5hbWUgKyAnICAtICAnICsgJGRldGFpbCkgLUZv +cmVncm91bmRDb2xvciBHcmVlbg0KICAgIH0gZWxzZSB7DQogICAgICAgIFdyaXRlLUhvc3QgKCcg +IFtGRUhMXSAnICsgJE5hbWUgKyAnICAtICAnICsgJGRldGFpbCkgLUZvcmVncm91bmRDb2xvciBS +ZWQNCiAgICB9DQp9DQoNCiMgSFRUUC1IZWxmZXI6IGxpZWZlcnQgQHtjb2RlPTxpbnR8MD47IGJv +ZHk9Jzx0ZXh0Pid9OyBjb2RlPTAgPSBuaWNodCBlcnJlaWNoYmFyLg0KZnVuY3Rpb24gSW52b2tl +LUh0dHAgew0KICAgIHBhcmFtKFtzdHJpbmddJFVybCwgW2ludF0kVGltZW91dFNlYyA9IDgpDQog +ICAgdHJ5IHsNCiAgICAgICAgJHJlc3AgPSBJbnZva2UtV2ViUmVxdWVzdCAtVXJpICRVcmwgLVVz +ZUJhc2ljUGFyc2luZyAtVGltZW91dFNlYyAkVGltZW91dFNlYw0KICAgICAgICByZXR1cm4gQHsg +Y29kZSA9IFtpbnRdJHJlc3AuU3RhdHVzQ29kZTsgYm9keSA9IFtzdHJpbmddJHJlc3AuQ29udGVu +dCB9DQogICAgfSBjYXRjaCB7DQogICAgICAgICRjb2RlID0gMA0KICAgICAgICBpZiAoJF8uRXhj +ZXB0aW9uLlJlc3BvbnNlIC1hbmQgJF8uRXhjZXB0aW9uLlJlc3BvbnNlLlN0YXR1c0NvZGUpIHsN +CiAgICAgICAgICAgICRjb2RlID0gW2ludF0kXy5FeGNlcHRpb24uUmVzcG9uc2UuU3RhdHVzQ29k +ZS52YWx1ZV9fDQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIEB7IGNvZGUgPSAkY29kZTsgYm9k +eSA9ICcnIH0NCiAgICB9DQp9DQoNCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t +LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIDEpIEtlcm5kYXRl +aWVuIHZvcmhhbmRlbiAmIG5pY2h0IGxlZXINCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpBZGQtQ2hl -Y2sgJ01hbmlmZXN0LURhdGVpZW4gdm9sbHN0YWVuZGlnJyB7DQogICAgJGNhbmRzID0gQCgoSm9p -bi1QYXRoICRSb290RGlyICdTeW5jSm9iXE1BTklGRVNULnR4dCcpLCAoSm9pbi1QYXRoIChHZXQt -U2NyaXB0RGlyKSAnTUFOSUZFU1QudHh0JykpDQogICAgJG1hbiA9ICRudWxsDQogICAgZm9yZWFj -aCAoJGMgaW4gJGNhbmRzKSB7IGlmIChUZXN0LVBhdGggLUxpdGVyYWxQYXRoICRjKSB7ICRtYW4g -PSAkYzsgYnJlYWsgfSB9DQogICAgaWYgKC1ub3QgJG1hbikgeyByZXR1cm4gQHsgb2sgPSAkdHJ1 -ZTsgZGV0YWlsID0gJ3VlYmVyc3BydW5nZW4gKGtlaW4gTUFOSUZFU1QudHh0IGdlZnVuZGVuKScg -fSB9DQogICAgJGZlaGx0ID0gQCgpOyAkbiA9IDANCiAgICBmb3JlYWNoICgkbGluZSBpbiAoR2V0 -LUNvbnRlbnQgLUxpdGVyYWxQYXRoICRtYW4pKSB7DQogICAgICAgIGlmICgkbGluZSAtbWF0Y2gg -J15ccyojJyAtb3IgJGxpbmUuVHJpbSgpIC1lcSAnJykgeyBjb250aW51ZSB9DQogICAgICAgICRw -YXJ0cyA9ICRsaW5lIC1zcGxpdCAiYHQiDQogICAgICAgIGlmICgkcGFydHMuQ291bnQgLWx0IDIp -IHsgY29udGludWUgfQ0KICAgICAgICAkcmVsID0gJHBhcnRzWzFdLlRyaW0oKQ0KICAgICAgICAk -bisrDQogICAgICAgICRmdWxsID0gSm9pbi1QYXRoICRSb290RGlyICgkcmVsIC1yZXBsYWNlICcv -JywgJ1wnKQ0KICAgICAgICBpZiAoLW5vdCAoVGVzdC1QYXRoIC1MaXRlcmFsUGF0aCAkZnVsbCkp -IHsgJGZlaGx0ICs9ICRyZWwgfQ0KICAgIH0NCiAgICBpZiAoJGZlaGx0LkNvdW50KSB7IHJldHVy -biBAeyBvayA9ICRmYWxzZTsgZGV0YWlsID0gKCcnICsgJGZlaGx0LkNvdW50ICsgJyB2b24gJyAr -ICRuICsgJyBmZWhsZW46ICcgKyAoJGZlaGx0IC1qb2luICcsICcpKSB9IH0NCiAgICByZXR1cm4g -QHsgb2sgPSAkdHJ1ZTsgZGV0YWlsID0gKCcnICsgJG4gKyAnIERhdGVpZW4gbGF1dCBNQU5JRkVT -VCB2b3JoYW5kZW4nKSB9DQp9DQoNCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t -LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIDQpIEFzc2V0LVJl -ZmVyZW56ZW4gYXVzIGluZGV4Lmh0bWwgbG9lc2VuIGF1ZiAobG9rYWxlIHNyYy9ocmVmIGV4aXN0 -aWVyZW4pDQojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t -LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KQWRkLUNoZWNrICdBc3NldC1SZWZlcmVuemVu -IChpbmRleC5odG1sKSBhdWZsb2VzYmFyJyB7DQogICAgJGlkeCA9IEpvaW4tUGF0aCAkUm9vdERp -ciAnaW5kZXguaHRtbCcNCiAgICBpZiAoLW5vdCAoVGVzdC1QYXRoIC1MaXRlcmFsUGF0aCAkaWR4 -KSkgeyByZXR1cm4gQHsgb2sgPSAkZmFsc2U7IGRldGFpbCA9ICdpbmRleC5odG1sIGZlaGx0JyB9 -IH0NCiAgICAkaHRtbCA9IEdldC1Db250ZW50IC1MaXRlcmFsUGF0aCAkaWR4IC1SYXcNCiAgICAk -bSA9IFtyZWdleF06Ok1hdGNoZXMoJGh0bWwsICcoP2kpKD86c3JjfGhyZWYpXHMqPVxzKiIoW14i -XSspIicpDQogICAgJGZlaGx0ID0gQCgpOyAkbiA9IDANCiAgICBmb3JlYWNoICgkeCBpbiAkbSkg -ew0KICAgICAgICAkcmVmID0gJHguR3JvdXBzWzFdLlZhbHVlDQogICAgICAgIGlmICgkcmVmIC1t -YXRjaCAnXihodHRwcz86KT8vLycgLW9yICRyZWYgLW1hdGNoICdeKGRhdGE6fG1haWx0bzp8I3xq -YXZhc2NyaXB0OiknKSB7IGNvbnRpbnVlIH0NCiAgICAgICAgJGNsZWFuID0gKCRyZWYgLXNwbGl0 -ICdbPyNdJylbMF0NCiAgICAgICAgaWYgKCRjbGVhbiAtZXEgJycgLW9yICRjbGVhbiAtbm90bWF0 -Y2ggJ1wuW0EtWmEtejAtOV17MSw1fSQnKSB7IGNvbnRpbnVlIH0NCiAgICAgICAgJG4rKw0KICAg -ICAgICAkZnVsbCA9IEpvaW4tUGF0aCAkUm9vdERpciAoJGNsZWFuLlRyaW1TdGFydCgnLycpIC1y -ZXBsYWNlICcvJywgJ1wnKQ0KICAgICAgICBpZiAoLW5vdCAoVGVzdC1QYXRoIC1MaXRlcmFsUGF0 -aCAkZnVsbCkpIHsgJGZlaGx0ICs9ICRjbGVhbiB9DQogICAgfQ0KICAgIGlmICgkZmVobHQuQ291 -bnQpIHsgcmV0dXJuIEB7IG9rID0gJGZhbHNlOyBkZXRhaWwgPSAoJ3RvdGVyIFZlcndlaXM6ICcg -KyAoJGZlaGx0IC1qb2luICcsICcpKSB9IH0NCiAgICByZXR1cm4gQHsgb2sgPSAkdHJ1ZTsgZGV0 -YWlsID0gKCcnICsgJG4gKyAnIGxva2FsZSBWZXJ3ZWlzZSB2b3JoYW5kZW4nKSB9DQp9DQoNCiMg +Y2sgJ0tlcm5kYXRlaWVuIHZvcmhhbmRlbiAmIG5pY2h0IGxlZXInIHsNCiAgICAkZmVobHQgPSBA +KCkNCiAgICBmb3JlYWNoICgkZiBpbiAkQ0ZHLktlcm5EYXRlaWVuKSB7DQogICAgICAgICRwID0g +Sm9pbi1QYXRoICRSb290RGlyICRmDQogICAgICAgIGlmICgtbm90IChUZXN0LVBhdGggLUxpdGVy +YWxQYXRoICRwKSAtb3IgKChHZXQtSXRlbSAtTGl0ZXJhbFBhdGggJHApLkxlbmd0aCAtZXEgMCkp +IHsgJGZlaGx0ICs9ICRmIH0NCiAgICB9DQogICAgaWYgKCRmZWhsdC5Db3VudCkgeyByZXR1cm4g +QHsgb2sgPSAkZmFsc2U7IGRldGFpbCA9ICdmZWhsdC9sZWVyOiAnICsgKCRmZWhsdCAtam9pbiAn +LCAnKSB9IH0NCiAgICByZXR1cm4gQHsgb2sgPSAkdHJ1ZTsgZGV0YWlsID0gKCRDRkcuS2VybkRh +dGVpZW4gLWpvaW4gJywgJykgKyAnIHZvcmhhbmRlbicgfQ0KfQ0KDQojIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t -LS0tLS0tLS0tLS0tLS0tLS0tDQojIDUpIExpdmUtRGF0ZW4gdW52ZXJzZWhydCAoSlNPTiBndWVs -dGlnKQ0KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t -LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkFkZC1DaGVjayAnTGl2ZS1EYXRlbiB1bnZlcnNl -aHJ0IChKU09OIGd1ZWx0aWcpJyB7DQogICAgJGJhZCA9IEAoKTsgJGdlcHJ1ZWZ0ID0gQCgpDQog -ICAgZm9yZWFjaCAoJGYgaW4gJENGRy5EYXRlbkpzb24pIHsNCiAgICAgICAgJHAgPSBKb2luLVBh -dGggJERhdGFEaXIgJGYNCiAgICAgICAgaWYgKC1ub3QgKFRlc3QtUGF0aCAtTGl0ZXJhbFBhdGgg -JHApKSB7IGNvbnRpbnVlIH0NCiAgICAgICAgJGdlcHJ1ZWZ0ICs9ICRmDQogICAgICAgIHRyeSB7 -IEdldC1Db250ZW50IC1MaXRlcmFsUGF0aCAkcCAtUmF3IC1FbmNvZGluZyBVVEY4IHwgQ29udmVy -dEZyb20tSnNvbiB8IE91dC1OdWxsIH0NCiAgICAgICAgY2F0Y2ggeyAkYmFkICs9ICRmIH0NCiAg -ICB9DQogICAgaWYgKCRiYWQuQ291bnQpIHsgcmV0dXJuIEB7IG9rID0gJGZhbHNlOyBkZXRhaWwg -PSAnZGVmZWt0OiAnICsgKCRiYWQgLWpvaW4gJywgJykgfSB9DQogICAgaWYgKC1ub3QgJGdlcHJ1 -ZWZ0LkNvdW50KSB7IHJldHVybiBAeyBvayA9ICR0cnVlOyBkZXRhaWwgPSAna2VpbmUgZGF0YS1K -U09OIHZvcmhhbmRlbiAodWViZXJzcHJ1bmdlbiknIH0gfQ0KICAgIHJldHVybiBAeyBvayA9ICR0 -cnVlOyBkZXRhaWwgPSAoJGdlcHJ1ZWZ0IC1qb2luICcsICcpICsgJyBndWVsdGlnJyB9DQp9DQoN -CiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t -LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIDYpICsgNykgSFRUUC1FbmRwdW5rdGUgKG51ciB3ZW5u -IFNlcnZlciBsYWV1ZnQgdW5kIC1Ob0h0dHAgbmljaHQgZ2VzZXR6dCkNCiMgLS0tLS0tLS0tLS0t +LS0tLQ0KIyAyKSBWRVJTSU9OIGdlc2V0enQNCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t +LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpBZGQtQ2hl +Y2sgJ1ZFUlNJT04gZ2VzZXR6dCcgew0KICAgICRwID0gSm9pbi1QYXRoICRSb290RGlyICRDRkcu +VmVyc2lvbkRhdGVpDQogICAgaWYgKC1ub3QgKFRlc3QtUGF0aCAtTGl0ZXJhbFBhdGggJHApKSB7 +IHJldHVybiBAeyBvayA9ICRmYWxzZTsgZGV0YWlsID0gJENGRy5WZXJzaW9uRGF0ZWkgKyAnIGZl +aGx0JyB9IH0NCiAgICAkdiA9IChHZXQtQ29udGVudCAtTGl0ZXJhbFBhdGggJHAgLVJhdykuVHJp +bSgpDQogICAgJG9rID0gKCR2IC1uZSAnJyAtYW5kICR2IC1uZSAnMC4wLjAnKQ0KICAgIHJldHVy +biBAeyBvayA9ICRvazsgZGV0YWlsID0gJ1ZFUlNJT049JyArICR2IH0NCn0NCg0KIyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t -LS0tLS0tDQppZiAoJE5vSHR0cCkgew0KICAgIFdyaXRlLUhvc3QgJyAgWyAtLSBdIEhUVFAtUHJ1 -ZWZ1bmdlbiB1ZWJlcnNwcnVuZ2VuICgtTm9IdHRwKS4nIC1Gb3JlZ3JvdW5kQ29sb3IgWWVsbG93 -DQp9IGVsc2Ugew0KICAgICRwcm9iZSA9IEludm9rZS1IdHRwICgkQmFzZVVybCArICcvYXBpL2lu -Zm8nKSA2DQogICAgaWYgKCRwcm9iZS5jb2RlIC1lcSAwKSB7DQogICAgICAgIEFkZC1DaGVjayAn -U2VydmVyIGVycmVpY2hiYXInIHsgcmV0dXJuIEB7IG9rID0gJGZhbHNlOyBkZXRhaWwgPSAoJ2tl -aW5lIEFudHdvcnQgYXVmICcgKyAkQmFzZVVybCArICcgLSBsYWV1ZnQgc2VydmVyLnBzMT8nKSB9 -IH0NCiAgICB9IGVsc2Ugew0KICAgICAgICBBZGQtQ2hlY2sgJ0hUVFAtRW5kcHVua3RlIGVycmVp -Y2hiYXIgKDIwMCknIHsNCiAgICAgICAgICAgICRiYWQgPSBAKCkNCiAgICAgICAgICAgIGZvcmVh -Y2ggKCRlcCBpbiAkQ0ZHLlN0YXRpc2NoZUVwKSB7DQogICAgICAgICAgICAgICAgJHIgPSBJbnZv -a2UtSHR0cCAoJEJhc2VVcmwgKyAkZXApIDgNCiAgICAgICAgICAgICAgICBpZiAoJHIuY29kZSAt -bmUgMjAwKSB7ICRiYWQgKz0gKCRlcCArICc9JyArICRyLmNvZGUpIH0NCiAgICAgICAgICAgIH0N -CiAgICAgICAgICAgIGlmICgkYmFkLkNvdW50KSB7IHJldHVybiBAeyBvayA9ICRmYWxzZTsgZGV0 -YWlsID0gKCRiYWQgLWpvaW4gJywgJykgfSB9DQogICAgICAgICAgICByZXR1cm4gQHsgb2sgPSAk -dHJ1ZTsgZGV0YWlsID0gKCRDRkcuU3RhdGlzY2hlRXAgLWpvaW4gJywgJykgKyAnID0gMjAwJyB9 -DQogICAgICAgIH0NCiAgICAgICAgQWRkLUNoZWNrICdEYXRlbi1FbmRwdW5rdGUgMjAwICsgcGFy -c2ViYXInIHsNCiAgICAgICAgICAgICRiYWQgPSBAKCkNCiAgICAgICAgICAgIGZvcmVhY2ggKCRl -cCBpbiAkQ0ZHLkRhdGVuRXApIHsNCiAgICAgICAgICAgICAgICAkciA9IEludm9rZS1IdHRwICgk -QmFzZVVybCArICRlcCkgMTINCiAgICAgICAgICAgICAgICBpZiAoJHIuY29kZSAtbmUgMjAwKSB7 -ICRiYWQgKz0gKCRlcCArICc9JyArICRyLmNvZGUpOyBjb250aW51ZSB9DQogICAgICAgICAgICAg -ICAgdHJ5IHsgJHIuYm9keSB8IENvbnZlcnRGcm9tLUpzb24gfCBPdXQtTnVsbCB9DQogICAgICAg -ICAgICAgICAgY2F0Y2ggeyAkYmFkICs9ICgkZXAgKyAnPWtlaW4tSlNPTicpIH0NCiAgICAgICAg -ICAgIH0NCiAgICAgICAgICAgIGlmICgkYmFkLkNvdW50KSB7IHJldHVybiBAeyBvayA9ICRmYWxz -ZTsgZGV0YWlsID0gKCRiYWQgLWpvaW4gJywgJykgfSB9DQogICAgICAgICAgICByZXR1cm4gQHsg -b2sgPSAkdHJ1ZTsgZGV0YWlsID0gKCRDRkcuRGF0ZW5FcCAtam9pbiAnLCAnKSArICcgb2snIH0N -CiAgICAgICAgfQ0KICAgIH0NCn0NCg0KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t -LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgRXJnZWJuaXMN -CiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t -LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQokdG90YWwgPSAkc2NyaXB0OlJlc3VsdHMuQ291bnQNCiRv -ayA9ICgkc2NyaXB0OlJlc3VsdHMgfCBXaGVyZS1PYmplY3QgeyAkXy5PayB9KS5Db3VudA0KJGZh -aWwgPSAkdG90YWwgLSAkb2sNCldyaXRlLUhvc3QgJycNCmlmICgkZmFpbCAtZXEgMCkgew0KICAg -IFdyaXRlLUhvc3QgKCdHUlVFTjogYWxsZSAnICsgJHRvdGFsICsgJyBQcnVlZnVuZ2VuIGJlc3Rh -bmRlbi4nKSAtRm9yZWdyb3VuZENvbG9yIEdyZWVuDQogICAgZXhpdCAwDQp9IGVsc2Ugew0KICAg -IFdyaXRlLUhvc3QgKCdST1Q6ICcgKyAkZmFpbCArICcgdm9uICcgKyAkdG90YWwgKyAnIFBydWVm -dW5nZW4gZmVobGdlc2NobGFnZW4uJykgLUZvcmVncm91bmRDb2xvciBSZWQNCiAgICBleGl0IDEN -Cn0NCg== +LS0tLS0tLS0tLS0NCiMgMykgTWFuaWZlc3QtRGF0ZWllbiB2b3JoYW5kZW4gKGFsbGUgaW0gTUFO +SUZFU1QgZ2VsaXN0ZXRlbiBDb2RlLURhdGVpZW4gZGEpDQojIC0tLS0tLS0tLS0tLS0tLS0tLS0t +LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K +QWRkLUNoZWNrICdNYW5pZmVzdC1EYXRlaWVuIHZvbGxzdGFlbmRpZycgew0KICAgICRjYW5kcyA9 +IEAoKEpvaW4tUGF0aCAkUm9vdERpciAnU3luY0pvYlxNQU5JRkVTVC50eHQnKSwgKEpvaW4tUGF0 +aCAoR2V0LVNjcmlwdERpcikgJ01BTklGRVNULnR4dCcpKQ0KICAgICRtYW4gPSAkbnVsbA0KICAg +IGZvcmVhY2ggKCRjIGluICRjYW5kcykgeyBpZiAoVGVzdC1QYXRoIC1MaXRlcmFsUGF0aCAkYykg +eyAkbWFuID0gJGM7IGJyZWFrIH0gfQ0KICAgIGlmICgtbm90ICRtYW4pIHsgcmV0dXJuIEB7IG9r +ID0gJHRydWU7IGRldGFpbCA9ICd1ZWJlcnNwcnVuZ2VuIChrZWluIE1BTklGRVNULnR4dCBnZWZ1 +bmRlbiknIH0gfQ0KICAgICRmZWhsdCA9IEAoKTsgJG4gPSAwDQogICAgZm9yZWFjaCAoJGxpbmUg +aW4gKEdldC1Db250ZW50IC1MaXRlcmFsUGF0aCAkbWFuKSkgew0KICAgICAgICBpZiAoJGxpbmUg +LW1hdGNoICdeXHMqIycgLW9yICRsaW5lLlRyaW0oKSAtZXEgJycpIHsgY29udGludWUgfQ0KICAg +ICAgICAkcGFydHMgPSAkbGluZSAtc3BsaXQgImB0Ig0KICAgICAgICBpZiAoJHBhcnRzLkNvdW50 +IC1sdCAyKSB7IGNvbnRpbnVlIH0NCiAgICAgICAgJHJlbCA9ICRwYXJ0c1sxXS5UcmltKCkNCiAg +ICAgICAgJG4rKw0KICAgICAgICAkZnVsbCA9IEpvaW4tUGF0aCAkUm9vdERpciAoJHJlbCAtcmVw +bGFjZSAnLycsICdcJykNCiAgICAgICAgaWYgKC1ub3QgKFRlc3QtUGF0aCAtTGl0ZXJhbFBhdGgg +JGZ1bGwpKSB7ICRmZWhsdCArPSAkcmVsIH0NCiAgICB9DQogICAgaWYgKCRmZWhsdC5Db3VudCkg +eyByZXR1cm4gQHsgb2sgPSAkZmFsc2U7IGRldGFpbCA9ICgnJyArICRmZWhsdC5Db3VudCArICcg +dm9uICcgKyAkbiArICcgZmVobGVuOiAnICsgKCRmZWhsdCAtam9pbiAnLCAnKSkgfSB9DQogICAg +cmV0dXJuIEB7IG9rID0gJHRydWU7IGRldGFpbCA9ICgnJyArICRuICsgJyBEYXRlaWVuIGxhdXQg +TUFOSUZFU1Qgdm9yaGFuZGVuJykgfQ0KfQ0KDQojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t +LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyA0KSBB +c3NldC1SZWZlcmVuemVuIGF1cyBpbmRleC5odG1sIGxvZXNlbiBhdWYgKGxva2FsZSBzcmMvaHJl +ZiBleGlzdGllcmVuKQ0KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t +LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkFkZC1DaGVjayAnQXNzZXQtUmVm +ZXJlbnplbiAoaW5kZXguaHRtbCkgYXVmbG9lc2Jhcicgew0KICAgICRpZHggPSBKb2luLVBhdGgg +JFJvb3REaXIgJ2luZGV4Lmh0bWwnDQogICAgaWYgKC1ub3QgKFRlc3QtUGF0aCAtTGl0ZXJhbFBh +dGggJGlkeCkpIHsgcmV0dXJuIEB7IG9rID0gJGZhbHNlOyBkZXRhaWwgPSAnaW5kZXguaHRtbCBm +ZWhsdCcgfSB9DQogICAgJGh0bWwgPSBHZXQtQ29udGVudCAtTGl0ZXJhbFBhdGggJGlkeCAtUmF3 +DQogICAgJG0gPSBbcmVnZXhdOjpNYXRjaGVzKCRodG1sLCAnKD9pKSg/OnNyY3xocmVmKVxzKj1c +cyoiKFteIl0rKSInKQ0KICAgICRmZWhsdCA9IEAoKTsgJG4gPSAwDQogICAgZm9yZWFjaCAoJHgg +aW4gJG0pIHsNCiAgICAgICAgJHJlZiA9ICR4Lkdyb3Vwc1sxXS5WYWx1ZQ0KICAgICAgICBpZiAo +JHJlZiAtbWF0Y2ggJ14oaHR0cHM/Oik/Ly8nIC1vciAkcmVmIC1tYXRjaCAnXihkYXRhOnxtYWls +dG86fCN8amF2YXNjcmlwdDopJykgeyBjb250aW51ZSB9DQogICAgICAgICRjbGVhbiA9ICgkcmVm +IC1zcGxpdCAnWz8jXScpWzBdDQogICAgICAgIGlmICgkY2xlYW4gLWVxICcnIC1vciAkY2xlYW4g +LW5vdG1hdGNoICdcLltBLVphLXowLTldezEsNX0kJykgeyBjb250aW51ZSB9DQogICAgICAgICRu +KysNCiAgICAgICAgJGZ1bGwgPSBKb2luLVBhdGggJFJvb3REaXIgKCRjbGVhbi5UcmltU3RhcnQo +Jy8nKSAtcmVwbGFjZSAnLycsICdcJykNCiAgICAgICAgaWYgKC1ub3QgKFRlc3QtUGF0aCAtTGl0 +ZXJhbFBhdGggJGZ1bGwpKSB7ICRmZWhsdCArPSAkY2xlYW4gfQ0KICAgIH0NCiAgICBpZiAoJGZl +aGx0LkNvdW50KSB7IHJldHVybiBAeyBvayA9ICRmYWxzZTsgZGV0YWlsID0gKCd0b3RlciBWZXJ3 +ZWlzOiAnICsgKCRmZWhsdCAtam9pbiAnLCAnKSkgfSB9DQogICAgcmV0dXJuIEB7IG9rID0gJHRy +dWU7IGRldGFpbCA9ICgnJyArICRuICsgJyBsb2thbGUgVmVyd2Vpc2Ugdm9yaGFuZGVuJykgfQ0K +fQ0KDQojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t +LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyA1KSBMaXZlLURhdGVuIHVudmVyc2VocnQgKEpT +T04gZ3VlbHRpZykgLSBpbSBTSEFSRS1rb3JyZWt0IGF1ZmdlbG9lc3RlbiBEYXRhRGlyDQojIC0t +LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t +LS0tLS0tLS0tLS0tLS0tLQ0KQWRkLUNoZWNrICdMaXZlLURhdGVuIHVudmVyc2VocnQgKEpTT04g +Z3VlbHRpZyknIHsNCiAgICAkYmFkID0gQCgpOyAkZ2VwcnVlZnQgPSBAKCkNCiAgICBmb3JlYWNo +ICgkZiBpbiAkQ0ZHLkRhdGVuSnNvbikgew0KICAgICAgICAkcCA9IEpvaW4tUGF0aCAkRGF0YURp +clJlc29sdmVkICRmDQogICAgICAgIGlmICgtbm90IChUZXN0LVBhdGggLUxpdGVyYWxQYXRoICRw +KSkgeyBjb250aW51ZSB9DQogICAgICAgICRnZXBydWVmdCArPSAkZg0KICAgICAgICB0cnkgeyBH +ZXQtQ29udGVudCAtTGl0ZXJhbFBhdGggJHAgLVJhdyAtRW5jb2RpbmcgVVRGOCB8IENvbnZlcnRG +cm9tLUpzb24gfCBPdXQtTnVsbCB9DQogICAgICAgIGNhdGNoIHsgJGJhZCArPSAkZiB9DQogICAg +fQ0KICAgIGlmICgkYmFkLkNvdW50KSB7IHJldHVybiBAeyBvayA9ICRmYWxzZTsgZGV0YWlsID0g +J2RlZmVrdDogJyArICgkYmFkIC1qb2luICcsICcpIH0gfQ0KICAgIGlmICgtbm90ICRnZXBydWVm +dC5Db3VudCkgeyByZXR1cm4gQHsgb2sgPSAkZmFsc2U7IGRldGFpbCA9ICgna2VpbmUgZGF0YS1K +U09OIGluICcgKyAkRGF0YURpclJlc29sdmVkICsgJyBnZWZ1bmRlbiAoRGF0YURpciBmYWxzY2g/ +KScpIH0gfQ0KICAgIHJldHVybiBAeyBvayA9ICR0cnVlOyBkZXRhaWwgPSAoJGdlcHJ1ZWZ0IC1q +b2luICcsICcpICsgJyBndWVsdGlnJyB9DQp9DQoNCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t +LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIDYp +ICsgNykgKyA4KSBIVFRQLUVuZHB1bmt0ZSAobnVyIHdlbm4gU2VydmVyIGxhZXVmdCB1bmQgLU5v +SHR0cCBuaWNodCBnZXNldHp0KQ0KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t +LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmlmICgkTm9IdHRwKSB7 +DQogICAgV3JpdGUtSG9zdCAnICBbIC0tIF0gSFRUUC1QcnVlZnVuZ2VuIHVlYmVyc3BydW5nZW4g +KC1Ob0h0dHApLicgLUZvcmVncm91bmRDb2xvciBZZWxsb3cNCn0gZWxzZSB7DQogICAgJHByb2Jl +ID0gSW52b2tlLUh0dHAgKCRCYXNlVXJsICsgJy9hcGkvaW5mbycpIDYNCiAgICBpZiAoJHByb2Jl +LmNvZGUgLWVxIDApIHsNCiAgICAgICAgQWRkLUNoZWNrICdTZXJ2ZXIgZXJyZWljaGJhcicgeyBy +ZXR1cm4gQHsgb2sgPSAkZmFsc2U7IGRldGFpbCA9ICgna2VpbmUgQW50d29ydCBhdWYgJyArICRC +YXNlVXJsICsgJyAtIGxhZXVmdCBzZXJ2ZXIucHMxPycpIH0gfQ0KICAgIH0gZWxzZSB7DQogICAg +ICAgIEFkZC1DaGVjayAnSFRUUC1FbmRwdW5rdGUgZXJyZWljaGJhciAoMjAwKScgew0KICAgICAg +ICAgICAgJGJhZCA9IEAoKQ0KICAgICAgICAgICAgZm9yZWFjaCAoJGVwIGluICRDRkcuU3RhdGlz +Y2hlRXApIHsNCiAgICAgICAgICAgICAgICAkciA9IEludm9rZS1IdHRwICgkQmFzZVVybCArICRl +cCkgOA0KICAgICAgICAgICAgICAgIGlmICgkci5jb2RlIC1uZSAyMDApIHsgJGJhZCArPSAoJGVw +ICsgJz0nICsgJHIuY29kZSkgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKCRiYWQu +Q291bnQpIHsgcmV0dXJuIEB7IG9rID0gJGZhbHNlOyBkZXRhaWwgPSAoJGJhZCAtam9pbiAnLCAn +KSB9IH0NCiAgICAgICAgICAgIHJldHVybiBAeyBvayA9ICR0cnVlOyBkZXRhaWwgPSAoJENGRy5T +dGF0aXNjaGVFcCAtam9pbiAnLCAnKSArICcgPSAyMDAnIH0NCiAgICAgICAgfQ0KICAgICAgICBB +ZGQtQ2hlY2sgJ0RhdGVuLUVuZHB1bmt0ZSAyMDAgKyBwYXJzZWJhcicgew0KICAgICAgICAgICAg +JGJhZCA9IEAoKQ0KICAgICAgICAgICAgZm9yZWFjaCAoJGVwIGluICRDRkcuRGF0ZW5FcCkgew0K +ICAgICAgICAgICAgICAgICRyID0gSW52b2tlLUh0dHAgKCRCYXNlVXJsICsgJGVwKSAxMg0KICAg +ICAgICAgICAgICAgIGlmICgkci5jb2RlIC1uZSAyMDApIHsgJGJhZCArPSAoJGVwICsgJz0nICsg +JHIuY29kZSk7IGNvbnRpbnVlIH0NCiAgICAgICAgICAgICAgICB0cnkgeyAkci5ib2R5IHwgQ29u +dmVydEZyb20tSnNvbiB8IE91dC1OdWxsIH0NCiAgICAgICAgICAgICAgICBjYXRjaCB7ICRiYWQg +Kz0gKCRlcCArICc9a2Vpbi1KU09OJykgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYg +KCRiYWQuQ291bnQpIHsgcmV0dXJuIEB7IG9rID0gJGZhbHNlOyBkZXRhaWwgPSAoJGJhZCAtam9p +biAnLCAnKSB9IH0NCiAgICAgICAgICAgIHJldHVybiBAeyBvayA9ICR0cnVlOyBkZXRhaWwgPSAo +JENGRy5EYXRlbkVwIC1qb2luICcsICcpICsgJyBvaycgfQ0KICAgICAgICB9DQogICAgICAgIGlm +ICgkQ0ZHLlVwZGF0ZUVwKSB7DQogICAgICAgICAgICBBZGQtQ2hlY2sgJ1VwZGF0ZS1FbmRwb2lu +dCB2b3JoYW5kZW4nIHsNCiAgICAgICAgICAgICAgICAjIDQwMy10b2xlcmFudDogZGVyIEVuZHBv +aW50IGlzdCBTdXBlclVzZXItZ2F0ZWQsIGNoZWNrLnBzMSBsYWV1ZnQNCiAgICAgICAgICAgICAg +ICAjIGFscyBub3JtYWxlciBCZW51dHplci4gMjAwIE9ERVIgNDAzID0gdm9yaGFuZGVuL3ZlcmRy +YWh0ZXQ7DQogICAgICAgICAgICAgICAgIyBudXIgNDA0IChvZGVyIGtlaW4gQ29kZSkgYmVkZXV0 +ZXQ6IEVuZHBvaW50IGZlaGx0IChhbHRlciBTZXJ2ZXIpLg0KICAgICAgICAgICAgICAgICRyID0g +SW52b2tlLUh0dHAgKCRCYXNlVXJsICsgJENGRy5VcGRhdGVFcCkgOA0KICAgICAgICAgICAgICAg +IGlmICgkci5jb2RlIC1lcSAyMDAgLW9yICRyLmNvZGUgLWVxIDQwMykgew0KICAgICAgICAgICAg +ICAgICAgICByZXR1cm4gQHsgb2sgPSAkdHJ1ZTsgZGV0YWlsID0gKCRDRkcuVXBkYXRlRXAgKyAn +ID0gJyArICRyLmNvZGUgKyAnICh2b3JoYW5kZW4pJykgfQ0KICAgICAgICAgICAgICAgIH0NCiAg +ICAgICAgICAgICAgICBpZiAoJHIuY29kZSAtZXEgNDA0KSB7DQogICAgICAgICAgICAgICAgICAg +IHJldHVybiBAeyBvayA9ICRmYWxzZTsgZGV0YWlsID0gKCRDRkcuVXBkYXRlRXAgKyAnID0gNDA0 +IChFbmRwb2ludCBmZWhsdCAtIGFsdGVyIHNlcnZlci5wczE/KScpIH0NCiAgICAgICAgICAgICAg +ICB9DQogICAgICAgICAgICAgICAgcmV0dXJuIEB7IG9rID0gJGZhbHNlOyBkZXRhaWwgPSAoJENG +Ry5VcGRhdGVFcCArICcgPSAnICsgJHIuY29kZSkgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9 +DQogICAgfQ0KfQ0KDQojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t +LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBFcmdlYm5pcw0KIyAtLS0tLS0t +LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t +LS0tLS0tLS0tLS0NCiR0b3RhbCA9ICRzY3JpcHQ6UmVzdWx0cy5Db3VudA0KJG9rID0gKCRzY3Jp +cHQ6UmVzdWx0cyB8IFdoZXJlLU9iamVjdCB7ICRfLk9rIH0pLkNvdW50DQokZmFpbCA9ICR0b3Rh +bCAtICRvaw0KV3JpdGUtSG9zdCAnJw0KaWYgKCRmYWlsIC1lcSAwKSB7DQogICAgV3JpdGUtSG9z +dCAoJ0dSVUVOOiBhbGxlICcgKyAkdG90YWwgKyAnIFBydWVmdW5nZW4gYmVzdGFuZGVuLicpIC1G +b3JlZ3JvdW5kQ29sb3IgR3JlZW4NCiAgICBleGl0IDANCn0gZWxzZSB7DQogICAgV3JpdGUtSG9z +dCAoJ1JPVDogJyArICRmYWlsICsgJyB2b24gJyArICR0b3RhbCArICcgUHJ1ZWZ1bmdlbiBmZWhs +Z2VzY2hsYWdlbi4nKSAtRm9yZWdyb3VuZENvbG9yIFJlZA0KICAgIGV4aXQgMQ0KfQ0K ### FILE: data/mainframe.html | 7724 PGRpdiBpZD0iYW5zaWNodC1zdGF0aXN0aWsiIGNsYXNzPSJhbnNpY2h0IHZlcnN0ZWNrdCI+CiAg ICA8ZGl2IGNsYXNzPSJsYXlvdXQtc3RhdGlzdGlrIj4KICAgICAgICA8ZGl2IGNsYXNzPSJhZG1p