<!-- saved from url=(0017)http://localhost/ -->
From: <TestComplete>
Subject: TestComplete Log Files
MIME-Version: 1.0
Content-Type: multipart/related;
	boundary="----=30AD9628A3274F06AF82E5991D4657D1";
	type="text/html"

This is a multi-part message in MIME format.


------=30AD9628A3274F06AF82E5991D4657D1
Content-Type: text/html
Content-Transfer-Encoding: base64
Content-Location: http://localhost/index.htm

PCFkb2N0eXBlIGh0bWw+DQo8aHRtbD4NCjxoZWFkPg0KCTx0aXRsZT5UZXN0Q29tcGxldGUgMTIg
TG9nPC90aXRsZT4NCgk8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVm
PSJkZWZhdWx0LmNzcyI+DQoJPCEtLVtpZiBsdGUgSUUgOF0+PHN0eWxlPi5pY29uIHsgYmFja2dy
b3VuZC1wb3NpdGlvbi15OiAtNXB4OyB9PC9zdHlsZT48IVtlbmRpZl0tLT4NCgk8bWV0YSBodHRw
LWVxdWl2PSJYLVVBLUNvbXBhdGlibGUiIGNvbnRlbnQ9IklFPWVkZ2UiPg0KCTxtZXRhIGh0dHAt
ZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9VVRGLTgiPg0K
PC9oZWFkPg0KPGJvZHkgb25yZXNpemU9ImRvV2luZG93UmVzaXplKCkiPg0KCTxzY3JpcHQ+DQoJ
CXZhciBuYXYgPSBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCk7DQoJCXZhciBpc09w
ZXJhID0gKHdpbmRvdy5vcGVyYSAhPSBudWxsKTsNCgkJdmFyIGlzRkYgPSAobmF2aWdhdG9yLnBy
b2R1Y3QgPT0gIkdlY2tvIik7DQoJCXZhciBpc0lFMTEgPSBuYXYuaW5kZXhPZigidHJpZGVudC83
LjAiKSA+IDA7DQoJCXZhciBpc0lFID0gKCFpc09wZXJhICYmIChuYXYuaW5kZXhPZigibXNpZSIp
ID49IDApKSB8fCBpc0lFMTE7DQoJCXZhciBpc1N1cHBvcnRlZCA9IChpc0lFIHx8IHdpbmRvdy5Y
TUxIdHRwUmVxdWVzdCAhPSBudWxsKTsNCgkJaWYgKGlzT3BlcmEpDQoJCXsNCgkJCWlmICghaXNT
dXBwb3J0ZWQpDQoJCQkJYWxlcnQoJ1RvIHZpZXcgdGhpcyBsb2cgeW91IG5lZWQgYW5vdGhlciBi
cm93c2VyIScpOw0KCQl9DQoJPC9zY3JpcHQ+DQoNCgk8c2NyaXB0IHNyYz0iYXFkcy5qcyI+PC9z
Y3JpcHQ+DQoJPHNjcmlwdCBzcmM9ImNhcHRpb24uanMiPjwvc2NyaXB0Pg0KCTxzY3JpcHQgc3Jj
PSJ0ZXh0LmpzIj48L3NjcmlwdD4NCgk8c2NyaXB0IHNyYz0icGljdHVyZS5qcyI+PC9zY3JpcHQ+
DQoJPHNjcmlwdCBzcmM9InRhYmxlLmpzIj48L3NjcmlwdD4NCg0KCTxkaXYgaWQ9ImxvZ3Jvb3Qi
PjwvZGl2Pg0KDQoJPHNjcmlwdCBzcmM9ImxvZ3RyZWUuanMiPjwvc2NyaXB0Pg0KPC9ib2R5Pg0K
PC9odG1sPg==

------=30AD9628A3274F06AF82E5991D4657D1
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://localhost/null.gif

R0lGODlhAQABAJEAAAAAAP///////wAAACH5BAEAAAIALAAAAAABAAEAAAICVAEAOw==

------=30AD9628A3274F06AF82E5991D4657D1
Content-Type: image/png
Content-Transfer-Encoding: base64
Content-Location: http://localhost/icons.png

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

------=30AD9628A3274F06AF82E5991D4657D1
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://localhost/null.gif

R0lGODlhAQABAJEAAAAAAP///////wAAACH5BAEAAAIALAAAAAABAAEAAAICVAEAOw==

------=30AD9628A3274F06AF82E5991D4657D1
Content-Type: text/plain
Content-Transfer-Encoding: base64
Content-Location: http://localhost/_root.js

77u/X2pzb25fbG9hZGVkKCJfcm9vdC5qcyIseyJuYW1lIjoiU2NyaXB0IFRlc3QgTG9nIFtUYWJs
ZXNcXENoZWNrQ3N2RGR0RHJpdmVyXSIsImlkIjoie0E0ODZGOEY5LTk2NjgtNEM2OC05NjZELUMx
Q0MwQTIyMUIxNn0iLCJzdGF0dXMiOjAsInByb3ZpZGVycyI6W3sibmFtZSI6IlRlc3QgTG9nIiwi
c2NoZW1hVHlwZSI6ImFxZHM6dHJlZSIsImhyZWYiOiJodHRwOi8vbG9jYWxob3N0L19UZXN0TG9n
LmpzIn1dLCJjaGlsZHJlbiI6W119KQ==

------=30AD9628A3274F06AF82E5991D4657D1
Content-Type: text/plain
Content-Transfer-Encoding: base64
Content-Location: http://localhost/picture.js

dmFyIGdsb2JhbF9waWN0dXJlX2lkID0gMDsNCg0KZnVuY3Rpb24gcGljdHVyZV9sb2FkKGVsZW1l
bnQpDQp7DQoJZWxlbWVudC5zY2hlbWFzID0gbmV3IEFycmF5KCJhcWRzOmltYWdlIiwgImFxZHM6
cGljdHVyZSIpOw0KDQoJaWYgKGVsZW1lbnQubV9yb290ZGl2ID09IG51bGwpDQoJew0KCQkNCgkJ
dmFyIG9UYWJsZSA9IHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJUQUJMRSIpOw0KCQll
bGVtZW50LmFwcGVuZENoaWxkKG9UYWJsZSk7DQoNCgkJaWYgKGVsZW1lbnQuZGV0YWlsc0hlYWQg
PT0gbnVsbCkNCgkJCW9UYWJsZS5jbGFzc05hbWUgPSAic2luZ2xlRnJhbWUiOw0KCQlvVGFibGUu
Y2VsbFNwYWNpbmcgPSAwOw0KCQlvVGFibGUuY2VsbFBhZGRpbmcgPSAwOw0KCQlvVGFibGUuYm9y
ZGVyID0gMDsNCg0KCQllbGVtZW50Lm1fcm9vdFRhYmxlID0gb1RhYmxlOw0KDQoJCW9UYWJsZS5z
dHlsZS53aWR0aCA9ICIxMDAlIjsNCgkJb1RhYmxlLnN0eWxlLmhlaWdodCA9ICIxMDAlIjsNCi8v
CQlvVGFibGUuaGVpZ2h0ID0gZWxlbWVudC5wYXJlbnROb2RlLm9mZnNldEhlaWdodCAtIGNfSW5u
ZXJQYWRkaW5nICogMiAtIDI7DQoJCQ0KCQl2YXIgb0JvZHkgPSB3aW5kb3cuZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiVEJPRFkiKTsNCgkJb1RhYmxlLmFwcGVuZENoaWxkKG9Cb2R5KTsNCgkJDQoJ
CXZhciBvVFIgPSB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiVFIiKTsNCgkJb0JvZHku
YXBwZW5kQ2hpbGQob1RSKTsNCgkJDQoJCXZhciBvVEQgPSB3aW5kb3cuZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiVEQiKTsNCgkJb1RELnZBbGlnbiA9ICJ0b3AiOw0KCQlvVFIuYXBwZW5kQ2hpbGQo
b1REKTsNCgkJDQoJCWVsZW1lbnQubV9yb290ZGl2ID0gd2luZG93LmRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoIkRJViIpOw0KCQllbGVtZW50Lm1fcm9vdGRpdi5zdHlsZS5wYWRkaW5nID0gIjNweCI7
DQoJCWVsZW1lbnQubV9yb290ZGl2LnN0eWxlLm92ZXJmbG93ID0gImF1dG8iOw0KDQoJCW9URC5h
cHBlbmRDaGlsZChlbGVtZW50Lm1fcm9vdGRpdik7DQoJfQ0KDQoJZWxlbWVudC5kb1Jlc2l6ZSA9
IGZ1bmN0aW9uKF9XaWR0aCwgX0hlaWdodCkNCgl7DQoJCWlmICh0aGlzLm1fcm9vdGRpdikNCgkJ
ew0KCQkJdGhpcy5tX3Jvb3RkaXYuc3R5bGUud2lkdGggPSAoX1dpZHRoIC0gKGVsZW1lbnQubV9w
aWNzID8gMCA6IDIpKSArICJweCI7DQoJCQl0aGlzLm1fcm9vdGRpdi5zdHlsZS5oZWlnaHQgPSAo
X0hlaWdodCAtIChlbGVtZW50Lm1fcGljcyA/IDAgOiAyKSkgKyAicHgiOw0KDQoJCQlpZiAoZWxl
bWVudC5tX3BpY3MpDQoJCQl7DQoJCQkJdmFyIHBpY0NvdW50ID0gZWxlbWVudC5tX3BpY3MubGVu
Z3RoOw0KCQkJCWlmIChwaWNDb3VudCA+IDIpIHBpY0NvdW50ID0gMjsNCgkJCQlmb3IgKHZhciBp
ID0gMDsgaSA8IHBpY0NvdW50OyBpKyspDQoJCQkJew0KCQkJCQl2YXIgcGljID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInBpY3R1cmVEaXZfIiArIGVsZW1lbnQubV9waWNzW2ldKTsNCgkJCQkJ
aWYgKHBpYykgeyBwaWMuc3R5bGUud2lkdGggPSBNYXRoLnJvdW5kKChfV2lkdGggLSAyMSkgLyBw
aWNDb3VudCkgKyAicHgiOyBwaWMuc3R5bGUuaGVpZ2h0ID0gKF9IZWlnaHQgLSAzMCkgKyAicHgi
OyB9DQoJCQkJfQ0KCQkJfQ0KCQl9DQoNCgkJdGhpcy5tX3Jvb3RUYWJsZS5zdHlsZS53aWR0aCA9
IF9XaWR0aCArICJweCI7DQoJCXRoaXMubV9yb290VGFibGUuc3R5bGUuaGVpZ2h0ID0gX0hlaWdo
dCArICJweCI7DQoNCgkJdGhpcy5zdHlsZS53aWR0aCA9IF9XaWR0aCArICJweCI7DQoJCXRoaXMu
c3R5bGUuaGVpZ2h0ID0gX0hlaWdodCArICJweCI7DQoJfQ0KDQoJZWxlbWVudC5kb1Jlc2l6ZShl
bGVtZW50Lm9mZnNldFdpZHRoLCBlbGVtZW50Lm9mZnNldEhlaWdodCk7DQoNCgllbGVtZW50Lm1f
cm9vdGRpdi5pbm5lckhUTUwgPSAiIjsNCg0KCWlmIChlbGVtZW50LnNyYyAhPSBudWxsKQ0KCXsN
CgkJCWVsZW1lbnQubV9yb290ZGl2LmlubmVySFRNTCA9ICIiOw0KDQoJCQl2YXIgb1NwYW4gPSB3
aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiU1BBTiIpOw0KCQkJZWxlbWVudC5tX3Jvb3Rk
aXYuYXBwZW5kQ2hpbGQob1NwYW4pOw0KCQkJLy8gVE9ETw0KCX0NCgllbHNlIGlmIChlbGVtZW50
LnZhbHVlICE9IG51bGwpIA0KCXsNCgkJZWxlbWVudC5tX3Jvb3RkaXYuaW5uZXJIVE1MID0gIiI7
DQoNCgkJdmFyIG9TcGFuID0gd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlNQQU4iKTsN
CgkgICAgIAlvU3Bhbi5pbm5lckhUTUwgPSAiPGltZyBzcmM9XCIiICsgZWxlbWVudC52YWx1ZSAr
ICJcIiBib3JkZXI9XCIwXCI+IjsNCgkJZWxlbWVudC5tX3Jvb3RkaXYuYXBwZW5kQ2hpbGQob1Nw
YW4pOw0KCX0NCgllbHNlIGlmIChlbGVtZW50LnRhYmxlICE9IG51bGwgJiYgZWxlbWVudC5waWN0
dXJlcykgLy8gPjEgcGljdHVyZXMNCgl7DQoJCXZhciBwaWNzID0gZWxlbWVudC5waWN0dXJlczsN
CgkJaWYgKHBpY3MubGVuZ3RoICE9IDIgJiYgcGljcy5sZW5ndGggIT0gMykgcmV0dXJuOw0KDQoJ
CXZhciBfV2lkdGggPSBlbGVtZW50Lm9mZnNldFdpZHRoOw0KCQl2YXIgX0hlaWdodCA9IGVsZW1l
bnQub2Zmc2V0SGVpZ2h0Ow0KDQoJCWVsZW1lbnQubV9yb290VGFibGUuc3R5bGUuYm9yZGVyID0g
IjBweCI7DQoJCWVsZW1lbnQubV9yb290ZGl2LnN0eWxlLnBhZGRpbmcgPSAiMHB4IjsNCgkJZWxl
bWVudC5tX3Jvb3RkaXYuc3R5bGUud2lkdGggPSBfV2lkdGggKyAicHgiOw0KCQllbGVtZW50Lm1f
cm9vdGRpdi5zdHlsZS5oZWlnaHQgPSBfSGVpZ2h0ICsgInB4IjsNCgkJZWxlbWVudC5tX3Jvb3Rk
aXYuc3R5bGUub3ZlcmZsb3cgPSAiaGlkZGVuIjsNCgkJZWxlbWVudC5tX3Jvb3RkaXYuaW5uZXJI
VE1MID0gIjx0YWJsZSBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nID0gMCBib3JkZXI9MD4iICsN
CgkJCSI8dHI+PHRkIGNsYXNzPSdzaW5nbGVGcmFtZSc+PC90ZD48dGQgd2lkdGg9JzVweCc+Jm5i
c3A7PC90ZD48dGQgY2xhc3M9J3NpbmdsZUZyYW1lJz48L3RkPjwvdHI+PC90YWJsZT4iOw0KDQoJ
CWVsZW1lbnQubV9waWNzID0gbmV3IEFycmF5KCk7DQoJCWZvciAodmFyIGkgPSAwOyBpIDwgMjsg
aSsrKQ0KCQl7DQoJCQllbGVtZW50Lm1fcGljc1tpXSA9IChnbG9iYWxfcGljdHVyZV9pZCsrKTsN
Cg0KCQkJdmFyIHRkID0gZWxlbWVudC5tX3Jvb3RkaXYuY2hpbGROb2Rlc1swXS5yb3dzWzBdLmNl
bGxzW2kgKiAyXTsNCgkJCXRkLm9ubW91c2Vtb3ZlID0gcGljdHVyZV9tb3VzZW1vdmU7DQoJCQl0
ZC5vbm1vdXNlZG93biA9IHBpY3R1cmVfbW91c2Vkb3duOw0KCQkJdGQub25tb3VzZXVwID0gcGlj
dHVyZV9tb3VzZXVwOw0KCQkJdGQuX2VsZW1lbnQgPSBlbGVtZW50Ow0KCQkJdGQuaW5uZXJIVE1M
ID0gIiI7DQoJCQl0ZC5vbmRibGNsaWNrID0gcGljdHVyZV9kYmxjbGljazsNCg0KCQkJdmFyIHBp
Y19jYXB0aW9uX3JvdyA9ICI8dHI+PHRkIGlkPSdwaWNIZWFkRGl2XyIgKyBlbGVtZW50Lm1fcGlj
c1tpXSArICInPiIgKyBwaWNzW2ldLk5hbWUgKyAiPC90ZD48L3RyPiI7DQoJCQl2YXIgdGFicyA9
IG5ldyBUYWJzT2JqZWN0KCJwaWNIZWFkRGl2XyIgKyBlbGVtZW50Lm1fcGljc1tpXSk7DQoNCgkJ
CXZhciBwaWNfaW1hZ2UgPSAiIjsNCgkJCWZvciAodmFyIGogPSBpOyBqIDwgKGkgPiAwID8gcGlj
cy5sZW5ndGggOiAxKTsgaisrKQ0KCQkJew0KCQkJCWlmIChqICE9IGkpIGVsZW1lbnQubV9waWNz
W2pdID0gKGdsb2JhbF9waWN0dXJlX2lkKyspOw0KCQkJCXBpY19pbWFnZSArPSAiPGltZyBzdHls
ZT0nY3Vyc29yOnBvaW50ZXI7IiArIChqID4gMSA/ICIgZGlzcGxheTpub25lOyIgOiAiIikgKyAi
JyBib3JkZXI9JzAnICI7DQoJCQkJcGljX2ltYWdlICs9ICJpZD0ncGljdHVyZUltZ18iICsgZWxl
bWVudC5tX3BpY3Nbal0gKyAiJyAiOw0KCQkJCXBpY19pbWFnZSArPSAic3JjPSciICsgY29ycmVj
dExvY2F0aW9uKGVsZW1lbnQubG9jYXRpb24sIHBpY3Nbal0uZmlsZW5hbWUpICsgIic+IjsNCgkJ
CQl2YXIgdGFiX2NhcHRpb24gPSBwaWNzW2pdLk5hbWU7DQoJCQkJaWYgKHRhYl9jYXB0aW9uID09
IG51bGwgfHwgdGFiX2NhcHRpb24ubGVuZ3RoID09IDApDQoJCQkJCXRhYl9jYXB0aW9uID0gIkNv
bXBhcmlzb24gTW9kZSI7DQoJCQkJdGFicy5hZGRJdGVtKHRhYl9jYXB0aW9uLCAicGljdHVyZUlt
Z18iICsgZWxlbWVudC5tX3BpY3Nbal0pOw0KCQkJfQ0KDQoJCQl0ZC5pbm5lckhUTUwgPSAiPHRh
YmxlIGNlbGxzcGFjaW5nPTAgY2VsbHBhZGRpbmc9MCBib3JkZXI9MD4iICsgcGljX2NhcHRpb25f
cm93ICsNCgkJCQkiPHRyPjx0ZCBzdHlsZT0ncGFkZGluZzozcHg7Jz48ZGl2IGlkPSdwaWN0dXJl
RGl2XyIgKyBlbGVtZW50Lm1fcGljc1tpXSArICInICIgKw0KCQkJCSJzdHlsZT0nb3ZlcmZsb3c6
YXV0bzsgd2lkdGg6IiArIE1hdGgucm91bmQoKF9XaWR0aCAtIDIxKSAvIDIpICsgInB4OyBoZWln
aHQ6IiArIChfSGVpZ2h0IC0gMzApICsgInB4Oyc+IiArIHBpY19pbWFnZSArDQoJCQkJIjwvZGl2
PjwvdGQ+PC90cj48L3RhYmxlPiI7DQoNCgkJCXRhYnMucmVuZGVyKCk7DQoJCX0NCgl9DQoJDQoJ
aWYgKG9TcGFuKQ0KCXsNCgkJb1NwYW4uc3R5bGUuY3Vyc29yID0gInBvaW50ZXIiOw0KCQlvU3Bh
bi5vbm1vdXNlbW92ZSA9IHBpY3R1cmVfbW91c2Vtb3ZlOw0KCQlvU3Bhbi5vbm1vdXNlZG93biA9
IHBpY3R1cmVfbW91c2Vkb3duOw0KCQlvU3Bhbi5vbm1vdXNldXAgPSBwaWN0dXJlX21vdXNldXA7
DQoJCW9TcGFuLm9uZGJsY2xpY2sgPSBwaWN0dXJlX2RibGNsaWNrOw0KCX0NCgkNCn0NCg0KZnVu
Y3Rpb24gcGljdHVyZV9tb3ZlKHBpYywgZHgsIGR5KQ0Kew0KCWlmICghcGljKSByZXR1cm47DQoN
Cgl2YXIgbWF4WCA9IHBpYy5zY3JvbGxXaWR0aCAgLSBwaWMuY2xpZW50V2lkdGg7DQoJdmFyIG1h
eFkgPSBwaWMuc2Nyb2xsSGVpZ2h0IC0gcGljLmNsaWVudEhlaWdodDsNCglpZiAobWF4WCA8PSAw
ICYmIG1heFkgPD0gMCkgcmV0dXJuOw0KDQoJdmFyIHggPSBwaWMuc2Nyb2xsTGVmdCArIGR4Ow0K
CXZhciB5ID0gcGljLnNjcm9sbFRvcCArIGR5Ow0KDQoJaWYgKHggPiBtYXhYKSB4ID0gbWF4WDsg
aWYgKHggPCAwKSB4ID0gMDsNCglpZiAoeSA+IG1heFkpIHkgPSBtYXhZOyBpZiAoeSA8IDApIHkg
PSAwOw0KDQoJaWYgKHBpYy5zY3JvbGxMZWZ0ICE9IHgpIHBpYy5zY3JvbGxMZWZ0ID0geDsNCglp
ZiAocGljLnNjcm9sbFRvcCAhPSB5KSBwaWMuc2Nyb2xsVG9wID0geTsNCn0NCg0KZnVuY3Rpb24g
cGljdHVyZV9tb3VzZW1vdmUoZSkNCnsNCglpZiAoIXRoaXMuX21vdmluZ0ltYWdlKSByZXR1cm47
DQoJaWYgKCFlKSBlID0gd2luZG93LmV2ZW50Ow0KDQoJdmFyIGR4ID0gKHRoaXMuX21vdmVkRnJv
bVggLSBlLmNsaWVudFgpOw0KCXZhciBkeSA9ICh0aGlzLl9tb3ZlZEZyb21ZIC0gZS5jbGllbnRZ
KTsNCg0KCXRoaXMuX21vdmVkRnJvbVggPSBlLmNsaWVudFg7DQoJdGhpcy5fbW92ZWRGcm9tWSA9
IGUuY2xpZW50WTsNCg0KCXZhciB0YXJnZXQgPSB0aGlzLl9tb3ZpbmdJbWFnZS5wYXJlbnROb2Rl
Ow0KCWlmICghdGhpcy5fZWxlbWVudCkNCgkJdGFyZ2V0ID0gdGFyZ2V0LnBhcmVudE5vZGU7DQoN
Cgl2YXIgcHJldlggPSB0YXJnZXQuc2Nyb2xsTGVmdDsNCgl2YXIgcHJldlkgPSB0YXJnZXQuc2Ny
b2xsVG9wOw0KDQoJcGljdHVyZV9tb3ZlKHRhcmdldCwgZHgsIGR5KTsNCg0KCWR4ID0gdGFyZ2V0
LnNjcm9sbExlZnQgLSBwcmV2WDsNCglkeSA9IHRhcmdldC5zY3JvbGxUb3AgLSBwcmV2WTsNCglp
ZiAoZHggPT0gMCAmJiBkeSA9PSAwKSByZXR1cm47DQoNCglpZiAodGhpcy5fZWxlbWVudCAmJiB0
aGlzLl9lbGVtZW50Lm1fcGljcykgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9lbGVtZW50Lm1f
cGljcy5sZW5ndGg7IGkrKykNCgl7DQoJCWlmIChpID4gMSkgYnJlYWs7DQoJCXZhciBpZCA9ICJw
aWN0dXJlRGl2XyIgKyB0aGlzLl9lbGVtZW50Lm1fcGljc1tpXTsNCgkJaWYgKGlkID09IHRhcmdl
dC5pZCkgY29udGludWU7DQoJCXZhciBwaWMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7
DQoJCXZhciB4ID0gZHggKyAocHJldlggLSBwaWMuc2Nyb2xsTGVmdCk7DQoJCXZhciB5ID0gZHkg
KyAocHJldlkgLSBwaWMuc2Nyb2xsVG9wKTsNCgkJcGljdHVyZV9tb3ZlKHBpYywgeCwgeSk7DQoJ
fQ0KfQ0KDQpmdW5jdGlvbiBwaWN0dXJlX21vdXNlZG93bihlKQ0Kew0KCWlmICghZSkgZSA9IHdp
bmRvdy5ldmVudDsNCgl2YXIgdGFyZ2V0ID0gZS50YXJnZXQgfHwgZS5zcmNFbGVtZW50Ow0KCWlm
ICh0YXJnZXQubm9kZU5hbWUgIT0gIklNRyIpIHJldHVybjsNCg0KCXRoaXMuX21vdmluZ0ltYWdl
ID0gdGFyZ2V0Ow0KCXRoaXMuX21vdmVkRnJvbVggPSBlLmNsaWVudFg7DQoJdGhpcy5fbW92ZWRG
cm9tWSA9IGUuY2xpZW50WTsNCgl0aGlzLnNldENhcHR1cmUoKTsNCg0KCWlmIChlLnByZXZlbnRE
ZWZhdWx0KSBlLnByZXZlbnREZWZhdWx0KCk7DQp9DQoNCmZ1bmN0aW9uIHBpY3R1cmVfbW91c2V1
cChlKQ0Kew0KCWlmICghZSkgZSA9IHdpbmRvdy5ldmVudDsNCgl0aGlzLl9tb3ZpbmdJbWFnZSA9
IG51bGw7DQoJdGhpcy5yZWxlYXNlQ2FwdHVyZSgpOw0KfQ0KDQpmdW5jdGlvbiBwaWN0dXJlX2Ri
bGNsaWNrKGUpDQp7DQoJaWYgKCFlKSBlID0gd2luZG93LmV2ZW50Ow0KCXZhciB0YXJnZXQgPSBl
LnRhcmdldCB8fCBlLnNyY0VsZW1lbnQ7DQoJaWYgKHRhcmdldC5ub2RlTmFtZSAhPSAiSU1HIikg
cmV0dXJuOw0KCQ0KCXRhYmxlX2RvU2hvd0xpbmsoZmFsc2UsIG51bGwsIHRhcmdldC5zcmMpOw0K
fQ0KDQp2YXIgcGljdHVyZV9qcyA9IHRydWU7

------=30AD9628A3274F06AF82E5991D4657D1
Content-Type: text/css
Content-Transfer-Encoding: base64
Content-Location: http://localhost/default.css

QG1lZGlhIGFsbCB7DQoNCmh0bWwNCgl7DQoJaGVpZ2h0OiAxMDAlOw0KCW1hcmdpbjogMHB4Ow0K
CXBhZGRpbmc6IDBweDsNCgl9DQoNCmJvZHkNCgl7DQoJaGVpZ2h0OiAxMDAlOw0KCWJhY2tncm91
bmQtY29sb3I6IFdoaXRlOw0KCW1hcmdpbjogNXB4Ow0KCXBhZGRpbmc6IDBweDsNCglvdmVyZmxv
dzogaGlkZGVuOw0KCX0NCgkNCmJvZHksIHRhYmxlLCB0ZCwgZGl2LCBwLCBwcmUsIGEsIHNlbGVj
dCANCgl7DQoJZm9udC1mYW1pbHk6IEFyaWFsLCBUYWhvbWE7DQoJZm9udC1zaXplOiA4cHQ7IA0K
CWxpbmUtaGVpZ2h0OiAxMXB0Ow0KCS1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDsNCgktd2Vi
a2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7DQoJYm94LXNpemluZzogYm9yZGVyLWJveDsNCgl9
DQoNCnRhYmxlLm1vbm9mb250IHRkDQoJew0KCWZvbnQtZmFtaWx5OiAnQ291cmllciBOZXcnLCBD
b3VyaWVyLCBtb25vc3BhY2U7DQoJfQ0KDQpzZWxlY3QNCgl7DQoJbWFyZ2luOiAwcHg7DQoJfQ0K
DQouc2luZ2xlRnJhbWUgDQoJeyANCglib3JkZXItc3R5bGU6IHNvbGlkOyANCglib3JkZXItd2lk
dGg6IDFweDsgDQoJYm9yZGVyLWNvbG9yOiAjOTk5OTk5OyANCgliYWNrZ3JvdW5kLWNvbG9yOiBX
aGl0ZTsNCgl9ICAgIA0KDQouY2VsbENhcHRpb24gDQoJeyANCgl0ZXh0LWluZGVudDogOHB4Ow0K
CWhlaWdodDogMTlweDsNCgliYWNrZ3JvdW5kLWNvbG9yOiAjQ0NDQ0NDOyANCgljb2xvcjogIzQ0
NDQ0NDsgDQoJcGFkZGluZy10b3A6IDJweDsNCgljdXJzb3I6IGRlZmF1bHQ7DQoJfQ0KDQoudGFi
bGVIZWFkZXJDZWxsDQoJew0KCWhlaWdodDogMTlweDsNCgliYWNrZ3JvdW5kLWNvbG9yOiAjQ0ND
Q0NDOw0KCWNvbG9yOiAjMDAwMDAwOyANCglwYWRkaW5nLXRvcDogMXB4Ow0KCWN1cnNvcjogcG9p
bnRlcjsNCglib3JkZXItc3R5bGU6IHNvbGlkOyANCglib3JkZXItd2lkdGg6IDFweDsgDQoJYm9y
ZGVyLWNvbG9yOiAjOTk5OTk5OyANCgl9DQoJDQoudGFibGVCb2R5DQoJew0KCS8qIGJhY2tncm91
bmQtY29sb3I6ICNFRUVFRUU7ICovDQoJYm9yZGVyLXN0eWxlOiBzb2xpZDsgDQoJYm9yZGVyLXdp
ZHRoOiAxcHg7IA0KCWJvcmRlci1jb2xvcjogIzk5OTk5OTsgDQoJcGFkZGluZzogMnB4Ow0KCW92
ZXJmbG93OiBhdXRvOw0KCX0NCgkNCi5jZWxsVmFsdWUNCgl7DQoJcGFkZGluZy1sZWZ0OiA3cHg7
DQoJcGFkZGluZy1yaWdodDogN3B4Ow0KCWhlaWdodDogMTlweDsJDQoJdmVydGljYWwtYWxpZ246
IGNlbnRlcjsNCgl0ZXh0LWFsaWduOiBsZWZ0Ow0KCXdoaXRlLXNwYWNlOiBub3dyYXA7DQoJfQ0K
DQouZGV0YWlsc0JvZHkNCgl7DQoJYmFja2dyb3VuZC1jb2xvcjogI0VFRUVFRTsNCgl9DQoNCi5s
aW5rQ2VsbA0KCXsNCgljdXJzb3I6IHBvaW50ZXI7DQoJdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxp
bmU7DQoJcGFkZGluZy10b3A6IDJweDsNCgloZWlnaHQ6IDE5cHg7DQoJfQ0KDQoudHJlZU5vZGVD
YXB0aW9uDQoJew0KCXRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplOw0KCWJvcmRlci13aWR0aDog
MXB4Ow0KCWJvcmRlci1jb2xvcjogd2hpdGU7DQoJYm9yZGVyLXN0eWxlOiBzb2xpZDsNCglwYWRk
aW5nOiAxcHggNXB4IDFweCAycHg7DQoJY3Vyc29yOiBwb2ludGVyOw0KCX0NCgkNCi50cmVlTm9k
ZQ0KCXsNCgltYXJnaW46IDBweDsNCgljdXJzb3I6IHBvaW50ZXI7DQoJd2lkdGg6IDEwMCU7DQoJ
fQ0KDQouc2VsZWN0ZWRSb3cNCgl7DQoJYmFja2dyb3VuZC1jb2xvcjogI0VFRUVFRTsNCgl9DQoN
Cg0KLmJ0bl9kaXNhYmxlZA0KCXsNCgljb2xvcjogIzk5OTk5OTsNCgljdXJzb3I6IGRlZmF1bHQ7
DQoJYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7DQoJfQ0KDQouYnRuX2hvdmVyZWQNCgl7DQoJY29s
b3I6ICMwMDAwMDA7DQoJY3Vyc29yOiBwb2ludGVyOw0KCWJhY2tncm91bmQtY29sb3I6ICNDMEQw
RjA7DQoJfQ0KDQouYnRuX2VuYWJsZWQNCgl7DQoJY29sb3I6ICMwMDAwMDA7DQoJY3Vyc29yOiBw
b2ludGVyOw0KCWJhY2tncm91bmQtY29sb3I6IHdoaXRlOw0KCX0NCgkNCi5sb2d0cmVlX2NhcHRp
b25fdmVydGljYWwsDQouZGV0YWlsc19jYXB0aW9uX3ZlcnRpY2FsDQoJew0KCS13ZWJraXQtdHJh
bnNmb3JtOiByb3RhdGUoOTBkZWcpOw0KCS1tcy10cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7DQoJ
dHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOw0KCW1hcmdpbi1sZWZ0OiAxcHg7DQoJbWFyZ2luLXRv
cDogNXB4Ow0KCXdoaXRlLXNwYWNlOiBub3dyYXA7DQoJfQ0KDQouaWNvbiB7DQoJYmFja2dyb3Vu
ZC1pbWFnZTogdXJsKGljb25zLnBuZyk7DQoJYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsN
CgliYWNrZ3JvdW5kLXNpemU6IDU3MHB4IDQ1cHg7DQp9DQoNCi5pY29uLWNsb3NlIHsNCgl3aWR0
aDogMTNweDsNCgloZWlnaHQ6IDEzcHg7DQoJYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2cHggLTIw
cHg7DQp9DQoNCi5pY29uLWNsb3NlMSB7DQoJd2lkdGg6IDEzcHg7DQoJaGVpZ2h0OiAxM3B4Ow0K
CWJhY2tncm91bmQtcG9zaXRpb246IC0zOXB4IC0yMHB4Ow0KfQ0KDQouaWNvbi1maWx0ZXIgew0K
CXdpZHRoOiAxM3B4Ow0KCWhlaWdodDogMTNweDsNCgliYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNjJw
eCAtMjBweDsNCn0NCg0KLmljb24tZmlsdGVyMCB7DQoJd2lkdGg6IDEzcHg7DQoJaGVpZ2h0OiAx
M3B4Ow0KCWJhY2tncm91bmQtcG9zaXRpb246IC04NXB4IC0yMHB4Ow0KfQ0KDQouaWNvbi1maWx0
ZXIxIHsNCgl3aWR0aDogMTNweDsNCgloZWlnaHQ6IDEzcHg7DQoJYmFja2dyb3VuZC1wb3NpdGlv
bjogLTEwOHB4IC0yMHB4Ow0KfQ0KDQouaWNvbi1oaWRlIHsNCgl3aWR0aDogMTNweDsNCgloZWln
aHQ6IDEzcHg7DQoJYmFja2dyb3VuZC1wb3NpdGlvbjogLTEzMXB4IC0yMHB4Ow0KfQ0KDQouaWNv
bi1oaWRlMSB7DQoJd2lkdGg6IDEzcHg7DQoJaGVpZ2h0OiAxM3B4Ow0KCWJhY2tncm91bmQtcG9z
aXRpb246IC0xNTRweCAtMjBweDsNCn0NCg0KLmljb24tc2hvdyB7DQoJd2lkdGg6IDEzcHg7DQoJ
aGVpZ2h0OiAxM3B4Ow0KCWJhY2tncm91bmQtcG9zaXRpb246IC0xNzdweCAtMjBweDsNCn0NCg0K
Lmljb24tc2hvdzEgew0KCXdpZHRoOiAxM3B4Ow0KCWhlaWdodDogMTNweDsNCgliYWNrZ3JvdW5k
LXBvc2l0aW9uOiAtMjAwcHggLTIwcHg7DQp9DQoNCi5pY29uLW1pbnVzIHsNCgl3aWR0aDogOXB4
Ow0KCWhlaWdodDogOXB4Ow0KCWJhY2tncm91bmQtcG9zaXRpb246IC0yMjNweCAtMjBweDsNCn0N
Cg0KLmljb24tcGx1cyB7DQoJd2lkdGg6IDlweDsNCgloZWlnaHQ6IDlweDsNCgliYWNrZ3JvdW5k
LXBvc2l0aW9uOiAtMjQycHggLTIwcHg7DQp9DQoNCi5pY29uLXNvcnQtYSB7DQoJd2lkdGg6IDEw
cHg7DQoJaGVpZ2h0OiA5cHg7DQoJYmFja2dyb3VuZC1wb3NpdGlvbjogLTI2MXB4IC0yMHB4Ow0K
fQ0KDQouaWNvbi1zb3J0LWQgew0KCXdpZHRoOiAxMHB4Ow0KCWhlaWdodDogOXB4Ow0KCWJhY2tn
cm91bmQtcG9zaXRpb246IC0yODFweCAtMjBweDsNCn0NCg0KLmljb24tc2VsZWN0IHsNCgl3aWR0
aDogMTlweDsNCgloZWlnaHQ6IDE5cHg7DQoJYmFja2dyb3VuZC1wb3NpdGlvbjogLTMwMXB4IC0y
MHB4Ow0KfQ0KDQouaWNvbi11bnNlbGVjdCB7DQoJd2lkdGg6IDE5cHg7DQoJaGVpZ2h0OiAxOXB4
Ow0KCWJhY2tncm91bmQtcG9zaXRpb246IC0zMzBweCAtMjBweDsNCn0NCg0KLmljb24tY29sbGFw
c2Ugew0KCXdpZHRoOiAyMHB4Ow0KCWhlaWdodDogMjBweDsNCgliYWNrZ3JvdW5kLXBvc2l0aW9u
OiAtMzU5cHggLTIwcHg7DQp9DQoNCi5pY29uLWV4cGFuZCB7DQoJd2lkdGg6IDIwcHg7DQoJaGVp
Z2h0OiAyMHB4Ow0KCWJhY2tncm91bmQtcG9zaXRpb246IC0zODlweCAtMjBweDsNCn0NCg0KLmlj
b24tb2ssIC5pY29uLXN1Y2Nlc3MsIC5pY29uLXBhc3NlZCB7DQoJd2lkdGg6IDE2cHg7DQoJaGVp
Z2h0OiAxNnB4Ow0KCWJhY2tncm91bmQtcG9zaXRpb246IC00MTlweCAtMjBweDsNCn0NCg0KLmlj
b24td2FybmluZyB7DQoJd2lkdGg6IDE2cHg7DQoJaGVpZ2h0OiAxNnB4Ow0KCWJhY2tncm91bmQt
cG9zaXRpb246IC00NDVweCAtMjBweDsNCn0NCg0KLmljb24tZXJyb3IsIC5pY29uLWZhaWxlZCB7
DQoJd2lkdGg6IDE2cHg7DQoJaGVpZ2h0OiAxNnB4Ow0KCWJhY2tncm91bmQtcG9zaXRpb246IC00
NzFweCAtMjBweDsNCn0NCg0KLmljb24tZXZlbnQgew0KCXdpZHRoOiAxNnB4Ow0KCWhlaWdodDog
MTZweDsNCgliYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDk3cHggLTIwcHg7DQp9DQoNCi5pY29uLWNo
ZWNrcG9pbnQgew0KCXdpZHRoOiAxNnB4Ow0KCWhlaWdodDogMTZweDsNCgliYWNrZ3JvdW5kLXBv
c2l0aW9uOiAtNTIzcHggLTIwcHg7DQp9DQoNCi5pY29uLW1lc3NhZ2Ugew0KCXdpZHRoOiAxNnB4
Ow0KCWhlaWdodDogMTZweDsNCgliYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNTQ5cHggLTIwcHg7DQp9
DQoNCn0NCg0KQG1lZGlhIHByaW50IHsNCg0KLm5vcHJpbnQNCgl7DQoJZGlzcGxheTogbm9uZTsN
Cgl9DQoNCi5wcmludE9ubHkNCgl7DQoJY29sb3I6IGJsYWNrOw0KCX0NCg0KaHRtbA0KCXsNCglt
YXJnaW46IDBweDsNCglwYWRkaW5nOiAwcHg7DQoJfQ0KDQpib2R5DQoJew0KCWJhY2tncm91bmQt
Y29sb3I6IFdoaXRlOw0KCW1hcmdpbjogMHB4Ow0KCXBhZGRpbmc6IDBweDsNCglvdmVyZmxvdzog
dmlzaWJsZTsNCgl9DQoNCi5zaW5nbGVGcmFtZQ0KCXsNCglib3JkZXItc3R5bGU6IHNvbGlkOw0K
CWJvcmRlci13aWR0aDogMXB4Ow0KCWJvcmRlci1jb2xvcjogd2hpdGU7DQoJYmFja2dyb3VuZC1j
b2xvcjogV2hpdGU7DQoJfQ0KDQouY2VsbENhcHRpb24NCgl7DQoJdGV4dC1pbmRlbnQ6IDhweDsN
CgloZWlnaHQ6IDE5cHg7DQoJYmFja2dyb3VuZC1jb2xvcjogI0NDQ0NDQzsNCglib3JkZXI6IDFw
eCBzb2xpZCAjQ0NDQ0NDOw0KCWNvbG9yOiAjNDQ0NDQ0Ow0KCXBhZGRpbmctdG9wOiAycHg7DQoJ
fQ0KDQoudGFibGVCb2R5DQoJew0KCWJvcmRlci1zdHlsZTogc29saWQ7DQoJYm9yZGVyLXdpZHRo
OiAxcHg7DQoJYm9yZGVyLWNvbG9yOiB3aGl0ZTsNCglwYWRkaW5nOiAycHg7DQoJb3ZlcmZsb3c6
IHZpc2libGU7DQoJfQ0KDQouY2VsbFZhbHVlDQoJew0KCXBhZGRpbmctbGVmdDogMHB4Ow0KCXBh
ZGRpbmctcmlnaHQ6IDdweDsNCgloZWlnaHQ6IDE5cHg7DQoJdmVydGljYWwtYWxpZ246IGNlbnRl
cjsNCgl0ZXh0LWFsaWduOiBsZWZ0Ow0KCXdoaXRlLXNwYWNlOiBub3dyYXA7DQoJfQ0KDQp9

------=30AD9628A3274F06AF82E5991D4657D1
Content-Type: text/plain
Content-Transfer-Encoding: base64
Content-Location: http://localhost/text.js

dmFyIGNfRmlsZXNDb21wYXJlX01heExpbmVDb3VudCA9IDUwMDA7DQp2YXIgY19GaWxlc0NvbXBh
cmVfVXNlTW9ub0ZvbnQgPSB0cnVlOw0KdmFyIGNfRmlsZXNDb21wYXJlX0tlZXBTcGFjZXMgPSB0
cnVlOw0KdmFyIGNfRmlsZXNDb21wYXJlX1Nob3dMaW5lTnVtYmVycyA9IGZhbHNlOw0KDQp2YXIg
Y19GaWxlc0NvbXBhcmVfTWF4TGluZURpZmZQZXJjZW50ID0gODA7DQp2YXIgY19GaWxlc0NvbXBh
cmVfQ2hlY2tTaWJsaW5nTGluZXMgPSA1MDsNCg0KdmFyIGNfRmlsZXNDb21wYXJlX01heExpbmVE
aWZmQ291bnQgPSAxMDsNCnZhciBjX0ZpbGVzQ29tcGFyZV9Ub29sYmFySGVpZ2h0ID0gMjg7DQoN
CnZhciBtX3RleHRfZmlsZXNfZGlmZnNfcHJvZ3Jlc3MgPSAwOw0KdmFyIG1fdGV4dF9maWxlc19k
aWZmX3BvcyA9IC0xOw0KdmFyIG1fdGV4dF9maWxlc19kaWZmX2xpbmVzID0gW107DQp2YXIgbV90
ZXh0X2ZpbGVzX3Jvb3REaXYgPSBudWxsOw0KDQpmdW5jdGlvbiB0ZXh0X2xvYWQoZWxlbWVudCkN
CnsNCgl0ZXh0X2NsZWFyKGVsZW1lbnQpOw0KCWVsZW1lbnQuaW5uZXJIVE1MID0gIiI7DQoNCgll
bGVtZW50LnNjaGVtYXMgPSBuZXcgQXJyYXkoImFxZHM6dGV4dCIsICJhcWRzOnhtbCIpOw0KDQoJ
ZWxlbWVudC5tX3Jvb3RkaXYgPSBudWxsOw0KDQoJZWxlbWVudC5tX3Jvb3RUYWJsZSA9IHdpbmRv
dy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJUQUJMRSIpOw0KCWlmIChlbGVtZW50LmRldGFpbHNI
ZWFkID09IG51bGwpDQoJCWVsZW1lbnQubV9yb290VGFibGUuY2xhc3NOYW1lID0gInNpbmdsZUZy
YW1lIjsNCgllbGVtZW50Lm1fcm9vdFRhYmxlLmNlbGxTcGFjaW5nID0gMDsNCgllbGVtZW50Lm1f
cm9vdFRhYmxlLmNlbGxQYWRkaW5nID0gMDsNCgllbGVtZW50Lm1fcm9vdFRhYmxlLmJvcmRlciA9
IDA7DQoNCgllbGVtZW50Lm1fcm9vdFRhYmxlLnN0eWxlLndpZHRoID0gIjEwMCUiOw0KCWVsZW1l
bnQubV9yb290VGFibGUuc3R5bGUuaGVpZ2h0ID0gIjEwMCUiOw0KDQoJZWxlbWVudC5hcHBlbmRD
aGlsZChlbGVtZW50Lm1fcm9vdFRhYmxlKTsNCgkNCgl2YXIgb0JvZHkgPSB3aW5kb3cuZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiVEJPRFkiKTsNCgllbGVtZW50Lm1fcm9vdFRhYmxlLmFwcGVuZENo
aWxkKG9Cb2R5KTsNCgkNCgl2YXIgb1RSID0gd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
IlRSIik7DQoJb0JvZHkuYXBwZW5kQ2hpbGQob1RSKTsNCgkNCgllbGVtZW50Lm1fcm9vdFREID0g
d2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlREIik7DQoJZWxlbWVudC5tX3Jvb3RURC52
QWxpZ24gPSAidG9wIjsNCglvVFIuYXBwZW5kQ2hpbGQoZWxlbWVudC5tX3Jvb3RURCk7DQoNCgll
bGVtZW50LmRvUmVzaXplID0gZnVuY3Rpb24oX1dpZHRoLCBfSGVpZ2h0KQ0KCXsNCgkJaWYgKF9I
ZWlnaHQgPCAyMCkgX0hlaWdodCA9IDIwOw0KCQ0KCQlpZiAoZWxlbWVudC5kZXRhaWxzSGVhZCA9
PSBudWxsKSB7IF9XaWR0aCAtPSAyOyBfSGVpZ2h0IC09IDI7IH0NCgkJaWYgKGVsZW1lbnQubG9j
YXRpb24gPT0gbnVsbCkgeyAvKl9XaWR0aCAtPSAyOyBfSGVpZ2h0IC09IDI7Ki8gfQ0KCQllbHNl
IHsgZWxlbWVudC5tX3Jvb3RURC5maXJzdENoaWxkLmhlaWdodCA9IF9IZWlnaHQgLSAyOyB9DQoN
CgkJaWYgKGVsZW1lbnQucG9wdXBEaXYgIT0gbnVsbCkNCgkJew0KCQkJdmFyIGxlZnQgPSAoZ2V0
U2NyZWVuWChlbGVtZW50KSAtIDEpICsgInB4IjsNCgkJCWVsZW1lbnQucG9wdXBEaXYuc3R5bGUu
bGVmdCA9IGxlZnQ7DQoJCQllbGVtZW50LnBvcHVwRGl2LnN0eWxlLndpZHRoID0gX1dpZHRoICsg
MjsNCgkJCWlmIChlbGVtZW50LnBvcHVwSUZyYW1lICE9IG51bGwpDQoJCQl7DQoJCQkJZWxlbWVu
dC5wb3B1cElGcmFtZS5zdHlsZS5sZWZ0ID0gbGVmdDsNCgkJCQllbGVtZW50LnBvcHVwSUZyYW1l
LnN0eWxlLndpZHRoID0gX1dpZHRoICsgMjsNCgkJCX0NCgkJfQ0KDQoJCWlmICh0aGlzLm1fcm9v
dGRpdikNCgkJew0KCQkJdGhpcy5tX3Jvb3RkaXYuc3R5bGUud2lkdGggPSBfV2lkdGggKyAicHgi
Ow0KCQkJdGhpcy5tX3Jvb3RkaXYuc3R5bGUuaGVpZ2h0ID0gX0hlaWdodCArICJweCI7DQoJCX0N
CgkJdGhpcy5tX3Jvb3RUYWJsZS5zdHlsZS53aWR0aCA9IF9XaWR0aCArICJweCI7DQoJCXRoaXMu
bV9yb290VGFibGUuc3R5bGUuaGVpZ2h0ID0gX0hlaWdodCArICJweCI7DQoNCgkJaWYgKGVsZW1l
bnQuZGV0YWlsc0hlYWQgPT0gbnVsbCkgeyBfV2lkdGggKz0gMjsgX0hlaWdodCArPSAyOyB9DQoJ
CXRoaXMuc3R5bGUud2lkdGggPSBfV2lkdGggKyAicHgiOw0KCQl0aGlzLnN0eWxlLmhlaWdodCA9
IF9IZWlnaHQgKyAicHgiOw0KCX0NCg0KCXZhciBfV2lkdGggPSBlbGVtZW50Lm9mZnNldFdpZHRo
Ow0KCXZhciBfSGVpZ2h0ID0gZWxlbWVudC5vZmZzZXRIZWlnaHQ7DQoNCgl0ZXh0X0xvYWQoZWxl
bWVudCk7DQoNCgllbGVtZW50LmRvUmVzaXplKF9XaWR0aCwgX0hlaWdodCk7DQp9DQoNCmZ1bmN0
aW9uIHRleHRfY2xlYXIoZWxlbWVudCkNCnsNCgltX3RleHRfZmlsZXNfcm9vdERpdiA9IG51bGw7
DQoJZWxlbWVudC5tX3Jvb3RURCA9IG51bGw7DQoJaWYgKGVsZW1lbnQubV9yb290ZGl2KQ0KCXsN
CgkJZWxlbWVudC5tX3Jvb3RkaXYuY29tcGFyZVRhYmxlID0gbnVsbDsNCgkJZWxlbWVudC5tX3Jv
b3RkaXYubV90b29sYmFyID0gbnVsbDsNCgkJaWYgKGVsZW1lbnQubV9yb290ZGl2LmZpbGUxRGl2
KQ0KCQkJZWxlbWVudC5tX3Jvb3RkaXYuZmlsZTFEaXYucGFyZW50RGl2ID0gbnVsbDsNCgkJaWYg
KGVsZW1lbnQubV9yb290ZGl2LmZpbGUyRGl2KQ0KCQkJZWxlbWVudC5tX3Jvb3RkaXYuZmlsZTJE
aXYucGFyZW50RGl2ID0gbnVsbDsNCgkJZWxlbWVudC5tX3Jvb3RkaXYuZmlsZTFEaXYgPSBudWxs
Ow0KCQllbGVtZW50Lm1fcm9vdGRpdi5maWxlMkRpdiA9IG51bGw7DQoJfQ0KCWVsZW1lbnQubV9y
b290ZGl2ID0gbnVsbDsNCgllbGVtZW50Lm1fcm9vdFRhYmxlID0gbnVsbDsNCn0NCg0KZnVuY3Rp
b24gdGV4dF9jcmVhdGVSb290RGl2KGVsZW1lbnQpDQp7DQoJaWYgKGVsZW1lbnQubV9yb290ZGl2
ID09IG51bGwpDQoJewkNCgkJZWxlbWVudC5tX3Jvb3RkaXYgPSB3aW5kb3cuZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiRElWIik7DQoJCWVsZW1lbnQubV9yb290ZGl2LnN0eWxlLnBhZGRpbmcgPSAi
NXB4IjsNCgkJZWxlbWVudC5tX3Jvb3RkaXYuc3R5bGUub3ZlcmZsb3cgPSAic2Nyb2xsIjsNCgkJ
ZWxlbWVudC5tX3Jvb3RURC5hcHBlbmRDaGlsZChlbGVtZW50Lm1fcm9vdGRpdik7DQoJfQ0KfQ0K
DQpmdW5jdGlvbiB0ZXh0X0xvYWQoZWxlbWVudCkNCnsNCglpZiAoZWxlbWVudC52YWx1ZSA9PSBu
dWxsICYmIChlbGVtZW50LnNyYyAhPSBudWxsIHx8IGVsZW1lbnQubG9jYXRpb24gIT0gbnVsbCkg
JiYgZWxlbWVudC50ZXh0T2JqZWN0KQ0KCXsNCgkJdmFyIHR4dCA9IGVsZW1lbnQudGV4dE9iamVj
dDsNCgkJaWYgKHR4dC5uYW1lICYmIHR4dFt0eHQubmFtZV0pDQoJCQllbGVtZW50LnZhbHVlID0g
dHh0W3R4dC5uYW1lXS50ZXh0Ow0KCX0NCg0KCWlmIChlbGVtZW50LnZhbHVlICE9IG51bGwpIA0K
CXsNCgkJdGV4dF9jcmVhdGVSb290RGl2KGVsZW1lbnQpOw0KCQllbGVtZW50Lm1fcm9vdGRpdi5p
bm5lckhUTUwgPSAiIjsNCg0KCQl2YXIgdGV4dEZvcm1hdCA9IDA7DQoJCWlmIChlbGVtZW50LnRl
eHRPYmplY3QgIT0gbnVsbCkNCgkJCXRleHRGb3JtYXQgPSBlbGVtZW50LnRleHRPYmplY3QudGV4
dEZvcm1hdDsNCg0KCQlpZiAoZWxlbWVudC5pc0ZpbGVOYW1lICE9IG51bGwgJiYgZWxlbWVudC5p
c0ZpbGVOYW1lID09IGZhbHNlKQ0KCQkJdGV4dEZvcm1hdCA9IDA7DQoNCgkJaWYgKHRleHRGb3Jt
YXQgPT0gMCB8fCB0ZXh0Rm9ybWF0ID09IDMpDQoJCXsNCgkJCWVsZW1lbnQubV9yb290ZGl2LnN0
eWxlLnBhZGRpbmcgPSAiNXB4IjsNCgkJCWVsZW1lbnQubV9yb290ZGl2LnN0eWxlLm92ZXJmbG93
ID0gInNjcm9sbCI7DQoJCQllbGVtZW50Lm1fcm9vdGRpdi5zdHlsZS53aGl0ZVNwYWNlID0gInBy
ZSI7DQoJCQllbGVtZW50Lm1fcm9vdGRpdi5pbm5lclRleHQgPSBlbGVtZW50LnZhbHVlOw0KCQl9
DQoJCWVsc2UNCgkJew0KCQkJdmFyIHAgPSBlbGVtZW50LmxvY2F0aW9uLmxhc3RJbmRleE9mKCJc
XCIpOw0KCQkJaWYgKHAgPCAwKSBwID0gZWxlbWVudC5sb2NhdGlvbi5sYXN0SW5kZXhPZigiLyIp
Ow0KCQkJaWYgKHAgPiAwKSBlbGVtZW50LnZhbHVlID0gZWxlbWVudC5sb2NhdGlvbi5zdWJzdHJp
bmcoMCwgcCArIDEpICsgZWxlbWVudC52YWx1ZTsNCgkJCXZhciB1cmwgPSBlbGVtZW50LnZhbHVl
Ow0KCQkJaWYgKGlzT3BlcmEpIHVybCA9IHVybC50b0xvd2VyQ2FzZSgpOw0KCQkJdmFyIGxvYyA9
IGlzSUUgPyAicHJvYmFibHkubWh0IiA6ICIiOw0KCQkJdHJ5IHsgbG9jID0gd2luZG93LmRvY3Vt
ZW50LmxvY2F0aW9uLmhyZWY7IH0gY2F0Y2ggKGUpIHsgfQ0KCQkJdmFyIE1IVF9YTUwgPSAodXJs
LmluZGV4T2YoIi54bWwiKSA9PSB1cmwubGVuZ3RoIC0gNCkgJiYgKGxvYy5pbmRleE9mKCIubWh0
IikgPT0gbG9jLmxlbmd0aCAtIDQpOw0KCQkJaWYgKE1IVF9YTUwpDQoJCQl7DQoJCQkJZWxlbWVu
dC5tX3Jvb3RkaXYuY2VsbFZhbHVlID0gdXJsOw0KCQkJCWVsZW1lbnQubV9yb290ZGl2LnRvcENv
bnRyb2wgPSBlbGVtZW50Ow0KCQkJCWVsZW1lbnQubV9yb290VEQudGFibGVFbGVtZW50ID0gZWxl
bWVudDsNCgkJCQllbGVtZW50Lm1fcm9vdGRpdi5sb2NhdGlvbiA9IGVsZW1lbnQubG9jYXRpb247
DQoJCQkJdGFibGVfc2hvd0xpbmtQb3B1cChlbGVtZW50Lm1fcm9vdGRpdiwgTUhUX1hNTCwgdHJ1
ZSk7DQoJCQl9DQoJCQllbHNlDQoJCQl7DQoJCQkJZWxlbWVudC5tX3Jvb3RkaXYuc3R5bGUucGFk
ZGluZyA9ICIwcHgiOw0KCQkJCWVsZW1lbnQubV9yb290ZGl2LnN0eWxlLm92ZXJmbG93ID0gImhp
ZGRlbiI7DQoJCQkJZWxlbWVudC5tX3Jvb3RkaXYuaW5uZXJIVE1MID0gIjxpZnJhbWUgd2lkdGg9
JzEwMCUnIGhlaWdodD0nMTAwJScgZnJhbWVib3JkZXI9JzAnIHNyYz0nIiArIHVybCArICInLz4i
Ow0KCQkJfQ0KCQl9DQoJfQ0KfQ0KDQpmdW5jdGlvbiB0ZXh0X2NyZWF0ZVRhYmxlKHdpZHRoLCBo
ZWlnaHQsIGNsYXNzTmFtZSwgY2FwdGlvbiwgY3JlYXRlT25lUm93LCBjb2x1bW5Db3VudCkNCnsN
CglpZiAoIWNvbHVtbkNvdW50KSBjb2x1bW5Db3VudCA9IDE7DQoNCgl2YXIgdGFibGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJUQUJMRSIpOw0KCXRhYmxlLmNlbGxTcGFjaW5nID0gMDsNCgl0
YWJsZS5jZWxsUGFkZGluZyA9IDA7DQoJdGFibGUuYm9yZGVyID0gMDsNCglpZiAod2lkdGgpIHRh
YmxlLnN0eWxlLndpZHRoID0gd2lkdGggKyAicHgiOw0KCWlmIChoZWlnaHQpIHRhYmxlLnN0eWxl
LmhlaWdodCA9IGhlaWdodCArICJweCI7DQoJaWYgKGNsYXNzTmFtZSkgdGFibGUuY2xhc3NOYW1l
ID0gY2xhc3NOYW1lOw0KDQoJaWYgKGNhcHRpb24pIHRleHRfc2V0VGFibGVDYXB0aW9uKHRhYmxl
LCBjYXB0aW9uLCBjb2x1bW5Db3VudCk7DQoNCgl2YXIgb0JvZHkgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJUQk9EWSIpOw0KCXRhYmxlLmFwcGVuZENoaWxkKG9Cb2R5KTsNCgkNCglpZiAoY3Jl
YXRlT25lUm93KQ0KCXsNCgkJdmFyIG9UUiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlRSIik7
DQoJCW9Cb2R5LmFwcGVuZENoaWxkKG9UUik7DQoNCgkJZm9yICh2YXIgaSA9IDA7IGkgPCBjb2x1
bW5Db3VudDsgaSsrKQ0KCQkJb1RSLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
IlREIikpOw0KCX0NCg0KCXJldHVybiB0YWJsZTsNCn0NCg0KZnVuY3Rpb24gdGV4dF9zZXRUYWJs
ZUNhcHRpb24odGFibGUsIGNhcHRpb24sIGNvbFNwYW4pDQp7DQoJdmFyIG9IZWFkID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiVEhFQUQiKTsNCgl0YWJsZS5hcHBlbmRDaGlsZChvSGVhZCk7DQoJ
DQoJdmFyIG9UUiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlRSIik7DQoJb0hlYWQuYXBwZW5k
Q2hpbGQob1RSKTsNCgkNCgl2YXIgb1REID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiVEQiKTsN
CglvVEQuY29sU3BhbiA9IGNvbFNwYW47DQoJb1RSLmFwcGVuZENoaWxkKG9URCk7DQoNCglvVEQu
Y2xhc3NOYW1lID0gImNlbGxDYXB0aW9uIjsNCglvVEQuaW5uZXJUZXh0ID0gY2FwdGlvbjsNCn0N
Cg0KZnVuY3Rpb24gdGV4dF9maWxlc19jb21wYXJlKGVsZW1lbnQpDQp7DQoJZWxlbWVudC5zY2hl
bWFzID0gbmV3IEFycmF5KCJhcWRzOmZpbGVzY29tcGFyZSIpOw0KDQoJZWxlbWVudC5tX3Jvb3RU
YWJsZSA9IHRleHRfY3JlYXRlVGFibGUoZWxlbWVudC5vZmZzZXRXaWR0aCwgZWxlbWVudC5vZmZz
ZXRIZWlnaHQsICJzaW5nbGVGcmFtZSIsIGVsZW1lbnQuZmlsZXNDb21wYXJlLmNhcHRpb24sIHRy
dWUpOw0KCWVsZW1lbnQuYXBwZW5kQ2hpbGQoZWxlbWVudC5tX3Jvb3RUYWJsZSk7DQoNCgl2YXIg
b1REID0gZWxlbWVudC5tX3Jvb3RUYWJsZS50Qm9kaWVzWzBdLnJvd3NbMF0uY2VsbHNbMF07DQoJ
ZWxlbWVudC5tX3Jvb3RkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJESVYiKTsNCgllbGVt
ZW50Lm1fcm9vdGRpdi5zdHlsZS5wYWRkaW5nID0gY19Jbm5lclBhZGRpbmcgKyAicHgiOw0KCWVs
ZW1lbnQubV9yb290ZGl2LnN0eWxlLm92ZXJmbG93ID0gImhpZGRlbiI7DQoJZWxlbWVudC5tX3Jv
b3RkaXYuc3R5bGUud2lkdGggPSBvVEQub2Zmc2V0V2lkdGggKyAicHgiOw0KCWVsZW1lbnQubV9y
b290ZGl2LnN0eWxlLmhlaWdodCA9IG9URC5vZmZzZXRIZWlnaHQgKyAicHgiOw0KCW9URC5hcHBl
bmRDaGlsZChlbGVtZW50Lm1fcm9vdGRpdik7DQoNCgllbGVtZW50LmRvUmVzaXplID0gZnVuY3Rp
b24oX1dpZHRoLCBfSGVpZ2h0KQ0KCXsNCgkJX1dpZHRoID0gX1dpZHRoIC0gMjsNCgkJX0hlaWdo
dCA9IF9IZWlnaHQgLSAyMTsNCg0KCQlpZiAodGhpcy5tX3Jvb3RkaXYpDQoJCXsNCgkJCXRoaXMu
bV9yb290ZGl2LnN0eWxlLndpZHRoID0gX1dpZHRoICsgInB4IjsNCgkJCXRoaXMubV9yb290ZGl2
LnN0eWxlLmhlaWdodCA9IF9IZWlnaHQgKyAicHgiOw0KCQkJdmFyIGlubmVyV2lkdGggPSAodGhp
cy5tX3Jvb3RkaXYuY2xpZW50V2lkdGggLSBjX0lubmVyUGFkZGluZyAqIDIpOw0KCQkJdmFyIGlu
bmVySGVpZ2h0ID0gKF9IZWlnaHQgLSBjX0lubmVyUGFkZGluZyAqIDIpOw0KCQkJaWYgKHRoaXMu
bV9yb290ZGl2LmNvbXBhcmVUYWJsZSkNCgkJCXsNCgkJCQl0aGlzLm1fcm9vdGRpdi5jb21wYXJl
VGFibGUuc3R5bGUud2lkdGggPSBpbm5lcldpZHRoICsgInB4IjsNCgkJCQl0aGlzLm1fcm9vdGRp
di5jb21wYXJlVGFibGUuc3R5bGUuaGVpZ2h0ID0gaW5uZXJIZWlnaHQgKyAicHgiOw0KCQkJfQ0K
CQkJaWYgKHRoaXMubV9yb290ZGl2Lm1fdG9vbGJhcikNCgkJCXsNCgkJCQl0aGlzLm1fcm9vdGRp
di5tX3Rvb2xiYXIuc3R5bGUud2lkdGggPSBpbm5lcldpZHRoICsgInB4IjsNCgkJCQlpbm5lckhl
aWdodCAtPSAoY19GaWxlc0NvbXBhcmVfVG9vbGJhckhlaWdodCArIGNfSW5uZXJQYWRkaW5nKTsN
CgkJCX0NCgkJCWlmICh0aGlzLm1fcm9vdGRpdi5maWxlMURpdikNCgkJCXsNCgkJCQl0aGlzLm1f
cm9vdGRpdi5maWxlMURpdi5zdHlsZS53aWR0aCA9IChpbm5lcldpZHRoIC8gMikgLSA5ICsgInB4
IjsNCgkJCQl0aGlzLm1fcm9vdGRpdi5maWxlMURpdi5zdHlsZS5oZWlnaHQgPSAoaW5uZXJIZWln
aHQgLSAxOSkgKyAicHgiOw0KCQkJfQ0KCQkJaWYgKHRoaXMubV9yb290ZGl2LmZpbGUyRGl2KQ0K
CQkJew0KCQkJCXRoaXMubV9yb290ZGl2LmZpbGUyRGl2LnN0eWxlLndpZHRoID0gKGlubmVyV2lk
dGggLyAyKSArICJweCI7DQoJCQkJdGhpcy5tX3Jvb3RkaXYuZmlsZTJEaXYuc3R5bGUuaGVpZ2h0
ID0gKGlubmVySGVpZ2h0IC0gMTkpICsgInB4IjsNCgkJCX0NCgkJfQ0KDQoJCXRoaXMubV9yb290
VGFibGUuc3R5bGUud2lkdGggPSBfV2lkdGggKyAicHgiOw0KCQl0aGlzLm1fcm9vdFRhYmxlLnN0
eWxlLmhlaWdodCA9IF9IZWlnaHQgKyAicHgiOw0KDQoJCXRoaXMuc3R5bGUud2lkdGggPSBfV2lk
dGggKyAicHgiOw0KCQl0aGlzLnN0eWxlLmhlaWdodCA9IF9IZWlnaHQgKyAicHgiOw0KCQkNCgkJ
ZmlsZXNDb21wYXJlX1VwZGF0ZVRvb2xiYXIoKTsNCgl9DQoNCgl2YXIgX1dpZHRoID0gZWxlbWVu
dC5vZmZzZXRXaWR0aDsNCgl2YXIgX0hlaWdodCA9IGVsZW1lbnQub2Zmc2V0SGVpZ2h0Ow0KDQoJ
aWYgKGVsZW1lbnQuZmlsZXNDb21wYXJlLmZpbGVzICYmIGVsZW1lbnQuZmlsZXNDb21wYXJlLmZp
bGVzLmxlbmd0aCA9PSAyKQ0KCXsNCgkJdmFyIGZpbGUxID0gZWxlbWVudC5maWxlc0NvbXBhcmUu
ZmlsZXNbMF07DQoJCXZhciBmaWxlMiA9IGVsZW1lbnQuZmlsZXNDb21wYXJlLmZpbGVzWzFdOw0K
CQl2YXIgZmlsZW5hbWUxID0gZmlsZTEuZmlsZW5hbWU7DQoJCXZhciBmaWxlbmFtZTIgPSBmaWxl
Mi5maWxlbmFtZTsNCgkJaWYgKGZpbGVuYW1lMSAhPSAiIiAmJiBmaWxlbmFtZTIgIT0gIiIpDQoJ
CXsNCgkJCXZhciB0ZXh0ID0gX2xvYWRfVGV4dChjb3JyZWN0TG9jYXRpb24oZWxlbWVudC5sb2Nh
dGlvbiwgZmlsZW5hbWUxKSk7DQoJCQlpZiAodGV4dCA9PT0gbnVsbCkgLy8gZmFpbGVkIHRvIGxv
YWQNCgkJCXsNCgkJCSAgdmFyIGVycm9yX21lc3NhZ2UgPSAiWW91IGFyZSB1bmFibGUgdG8gdmll
dyBmaWxlIGNvbXBhcmlzb24gcmVzdWx0LCBiZWNhdXNlIHlvdXIgYnJvd3NlciBzZXR0aW5ncyBk
byBub3QgYWxsb3cgcmVhZGluZyBkYXRhIGZyb20gZmlsZXMuIjsNCg0KCQkJCXZhciBwYyA9IG5h
dmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZigiQ2hyb21lIik7DQoJCQkJdmFyIHBlID0gbmF2aWdh
dG9yLnVzZXJBZ2VudC5pbmRleE9mKCJFZGdlIik7DQoJCQkJaWYgKHBjID4gMCAmJiBwZSA8IDAp
DQoJCQkJew0KCQkJCSAgZXJyb3JfbWVzc2FnZSArPSAiPGJyPjxicj4iICsNCgkJCQkJCSI8Yj5U
byBzZWUgdGhlIGZpbGUgY29tcGFyaXNvbiByZXN1bHQsIGNoYW5nZSB0aGUgYnJvd3NlciBzZXR0
aW5nczo8L2I+PGJyPiIgKw0KCQkJCQkJIjEuIE9wZW4gdGhlIHByb3BlcnRpZXMgb2YgdGhlIEdv
b2dsZSBDaHJvbWUgc2hvcnRjdXQuIFRvIGRvIHRoaXMsIHJpZ2h0LWNsaWNrIHRoZSBDaHJvbWUg
c2hvcnRjdXQgb24gdGhlIGRlc2t0b3Agb3IgaW4gdGhlIFdpbmRvd3MgbWVudSBhbmQgY2hvb3Nl
IFByb3BlcnRpZXMgZnJvbSB0aGUgY29udGV4dCBtZW51Ljxicj4iICsNCgkJCQkJCSIyLiBBZGQg
dGhlIFwiIC0tYWxsb3ctZmlsZS1hY2Nlc3MtZnJvbS1maWxlc1wiIGNvbW1hbmQtbGluZSBhcmd1
bWVudCB0byB0aGUgZW5kIG9mIHRoZSBUYXJnZXQgdGV4dCBib3guPGJyPiIgKw0KCQkJCQkJIjMu
IENsaWNrIE9LIHRvIGNsb3NlIHRoZSBQcm9wZXJ0aWVzIGRpYWxvZyBhbmQgdG8gc2F2ZSB0aGUg
Y2hhbmdlcy48YnI+IiArDQoJCQkJCQkiNC4gUmVzdGFydCBHb29nbGUgQ2hyb21lIGFuZCByZS1v
cGVuIHRoZSBsb2cgZmlsZS4iOw0KCQkJCX0NCg0KCQkJCXZhciBjb2xvciA9ICIjQkIwMDAwIjsN
CgkJCQl2YXIgZGVjbyA9ICJwYWRkaW5nOjRweDsgYm9yZGVyOjFweCBzb2xpZCAiICsgY29sb3Ig
KyAiOyI7DQoJCQkJdmFyIGZvbnQgPSAiZm9udC1zaXplOjEycHg7IjsNCgkJCQkNCgkJCQllbGVt
ZW50Lm1fcm9vdGRpdi5pbm5lckhUTUwgPQ0KCQkJCQkiPGRpdiBzdHlsZT0nIiArIGZvbnQgKyBk
ZWNvICsgIiBiYWNrZ3JvdW5kLWNvbG9yOiIgKyBjb2xvciArICI7IGNvbG9yOndoaXRlOyBmb250
LXdlaWdodDpib2xkOyc+RmlsZSBjYW5ub3QgYmUgbG9hZGVkPC9kaXY+IiArDQoJCQkJCSI8ZGl2
IHN0eWxlPSciICsgZm9udCArIGRlY28gKyAiIGxpbmUtaGVpZ2h0OjE4cHg7Jz4iICsgZXJyb3Jf
bWVzc2FnZSArICI8L2Rpdj4iDQoJCQl9DQoJCQllbHNlDQoJCQl7DQoJCQkJdGV4dF9zaG93X2Zp
bGVzX2RpZmZzKGVsZW1lbnQubV9yb290ZGl2LA0KCQkJCQljb3JyZWN0TG9jYXRpb24oZWxlbWVu
dC5sb2NhdGlvbiwgZmlsZW5hbWUxKSwNCgkJCQkJY29ycmVjdExvY2F0aW9uKGVsZW1lbnQubG9j
YXRpb24sIGZpbGVuYW1lMiksDQoJCQkJCWZpbGUxLk5hbWUsIC8vICsgIiAiICsgZmlsZTEuRmls
ZSwNCgkJCQkJZmlsZTIuTmFtZSAvLyArICIgIiArIGZpbGUyLkZpbGUNCgkJCQkpOw0KCQkJfQ0K
CQl9DQoJfQ0KDQoJZWxlbWVudC5kb1Jlc2l6ZShfV2lkdGgsIF9IZWlnaHQpOw0KfQ0KDQpmdW5j
dGlvbiB0ZXh0X2xvYWRfZnJvbV9maWxlKHVybCkNCnsNCgl2YXIgdGV4dCA9IF9sb2FkX1RleHQo
dXJsKTsNCglpZiAodGV4dCA9PT0gbnVsbCkNCgkJcmV0dXJuICIiOw0KDQoJcmV0dXJuIHRleHQu
cmVwbGFjZShuZXcgUmVnRXhwKCJcclxuIiwgImciKSwgIlxuIikuc3BsaXQoIlxuIik7DQp9DQoN
CmZ1bmN0aW9uIHRleHRfZmlsZVBhbmVsU2Nyb2xsKCkNCnsNCglpZiAoIXRoaXMucGFyZW50RGl2
KSByZXR1cm47DQoNCglpZiAodGhpcyA9PSB0aGlzLnBhcmVudERpdi5maWxlMURpdikNCgl7DQoJ
CXRoaXMucGFyZW50RGl2LmZpbGUyRGl2LnNjcm9sbExlZnQgPSB0aGlzLnBhcmVudERpdi5maWxl
MURpdi5zY3JvbGxMZWZ0Ow0KCX0NCgllbHNlDQoJew0KCQl0aGlzLnBhcmVudERpdi5maWxlMURp
di5zY3JvbGxUb3AgPSB0aGlzLnBhcmVudERpdi5maWxlMkRpdi5zY3JvbGxUb3A7DQoJCXRoaXMu
cGFyZW50RGl2LmZpbGUxRGl2LnNjcm9sbExlZnQgPSB0aGlzLnBhcmVudERpdi5maWxlMkRpdi5z
Y3JvbGxMZWZ0Ow0KDQoJCW1fdGV4dF9maWxlc19kaWZmX3BvcyA9IE1hdGgucm91bmQodGhpcy5w
YXJlbnREaXYuZmlsZTJEaXYuc2Nyb2xsVG9wIC8gdGhpcy5wYXJlbnREaXYubV9yb3dIZWlnaHQp
Ow0KCQlmaWxlc0NvbXBhcmVfVXBkYXRlVG9vbGJhcigpOw0KCX0NCn0NCg0KZnVuY3Rpb24gdGV4
dF9jcmVhdGVGaWxlUGFuZWwocGFyZW50LCB3aWR0aCwgaGVpZ2h0LCBpc0xlZnQpDQp7DQoJaWYg
KGlzTGVmdCkgcGFyZW50LnN0eWxlLndpZHRoID0gIjUwJSI7DQoJaWYgKGlzTGVmdCkgcGFyZW50
LnN0eWxlLnBhZGRpbmdSaWdodCA9ICI0cHgiOyBlbHNlIHBhcmVudC5zdHlsZS5wYWRkaW5nTGVm
dCA9ICI0cHgiOw0KCWlmIChpc0xlZnQpIHBhcmVudC5zdHlsZS5ib3JkZXJSaWdodCA9ICIxcHgg
c29saWQgIzk5OTk5OSI7DQoJcGFyZW50LnZBbGlnbiA9ICJ0b3AiOw0KDQoJdmFyIG9EaXYgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJESVYiKTsNCglvRGl2LnN0eWxlLndpZHRoID0gKHdpZHRo
IC8gMiAtIChpc0xlZnQgPyA5IDogMCkpICsgInB4IjsNCglvRGl2LnN0eWxlLmhlaWdodCA9ICho
ZWlnaHQgLSAxOSkgKyAicHgiOw0KCW9EaXYuc3R5bGUub3ZlcmZsb3dYID0gInNjcm9sbCI7DQoJ
b0Rpdi5zdHlsZS5vdmVyZmxvd1kgPSBpc0xlZnQgPyAiaGlkZGVuIiA6ICJzY3JvbGwiOw0KCW9E
aXYub25zY3JvbGwgPSB0ZXh0X2ZpbGVQYW5lbFNjcm9sbDsNCglwYXJlbnQuYXBwZW5kQ2hpbGQo
b0Rpdik7DQoJcmV0dXJuIG9EaXY7DQp9DQoNCmZ1bmN0aW9uIHRleHRfZmluZF9saW5lX2RpZmZz
KGxpbmUxLCBsaW5lMiwgaXNNYXRjaCwgaXRlcmF0aW9uKQ0Kew0KCXZhciBpc01hdGNoID0gKGlz
TWF0Y2ggfHwgZmFsc2UpOw0KCXZhciBpdGVyYXRpb24gPSAoaXRlcmF0aW9uIHx8IDApOw0KDQoJ
dmFyIGxpbmUxX2xlbmd0aCA9IGxpbmUxLmxlbmd0aDsNCgl2YXIgbGluZTJfbGVuZ3RoID0gbGlu
ZTIubGVuZ3RoOw0KCXZhciBtaW5fbGVuZ3RoID0gTWF0aC5taW4obGluZTFfbGVuZ3RoLCBsaW5l
Ml9sZW5ndGgpOw0KDQoJLy8gRmluZCBmaXJzdCBhbmQgbGFzdCBzeW1ib2xzIHRoYXQgZGlmZmVy
cyAvIG1hdGNoZXMgKGRlcGVuZGluZyBvbiBpc01hdGNoKQ0KCXZhciBkaWZmX3N0YXJ0ID0gLTE7
DQoJdmFyIGRpZmZfZW5kID0gLTE7DQoJZm9yICh2YXIgaSA9IDA7IGkgPCBtaW5fbGVuZ3RoOyBp
KyspDQoJew0KCQlpZiAoZGlmZl9zdGFydCA8IDAgJiYgKChsaW5lMS5zdWJzdHJpbmcoaSwgaSsx
KSA9PSBsaW5lMi5zdWJzdHJpbmcoaSwgaSsxKSkgPT0gaXNNYXRjaCkpDQoJCQlkaWZmX3N0YXJ0
ID0gaTsNCg0KCQlpZiAoZGlmZl9lbmQgPCAwICYmIChsaW5lMS5zdWJzdHJpbmcobGluZTFfbGVu
Z3RoIC0gaSAtIDEsIGxpbmUxX2xlbmd0aCAtIGkpID09IGxpbmUyLnN1YnN0cmluZyhsaW5lMl9s
ZW5ndGggLSBpIC0gMSwgbGluZTJfbGVuZ3RoIC0gaSkpID09IGlzTWF0Y2gpDQoJCQlkaWZmX2Vu
ZCA9IGk7DQoJCQkNCgkJaWYgKGRpZmZfc3RhcnQgPj0gMCAmJiBkaWZmX2VuZCA+PSAwKQ0KCQkJ
YnJlYWs7DQoJfQ0KDQoJaWYgKGRpZmZfc3RhcnQgPiAobWluX2xlbmd0aCAtIGRpZmZfZW5kKSkN
Cgl7DQoJCWRpZmZfc3RhcnQgPSAtMTsNCgkJZGlmZl9lbmQgPSAtMTsNCgl9DQoNCglpZiAoZGlm
Zl9zdGFydCA9PSAwICYmIGRpZmZfZW5kIDwgMCkNCgkJZGlmZl9lbmQgPSBtaW5fbGVuZ3RoOw0K
CWlmIChkaWZmX3N0YXJ0IDwgMCAmJiBkaWZmX2VuZCA9PSAwKQ0KCQlkaWZmX3N0YXJ0ID0gbWlu
X2xlbmd0aDsNCg0KCS8vIEdldCByZXN1bHQsIGdvIGRlZXBlciBpZiBuZWVkZWQNCgl2YXIgZGlm
ZjEgPSAiIjsNCgl2YXIgZGlmZjIgPSAiIjsNCgl2YXIgZGlmZnMgPSBbIFtdLCBbXSBdOw0KCWlm
IChkaWZmX3N0YXJ0ID49IDAgJiYgZGlmZl9lbmQgPj0gMCkNCgl7DQoJCWRpZmYxID0gbGluZTEu
c3Vic3RyaW5nKGRpZmZfc3RhcnQsIGxpbmUxX2xlbmd0aCAtIGRpZmZfZW5kKTsNCgkJZGlmZjIg
PSBsaW5lMi5zdWJzdHJpbmcoZGlmZl9zdGFydCwgbGluZTJfbGVuZ3RoIC0gZGlmZl9lbmQpOw0K
CQlpZiAoaXNNYXRjaCA/IChkaWZmMSAhPSBkaWZmMikgOiAoaXRlcmF0aW9uIDwgY19GaWxlc0Nv
bXBhcmVfTWF4TGluZURpZmZDb3VudCkpDQoJCXsNCgkJCWRpZmZzID0gdGV4dF9maW5kX2xpbmVf
ZGlmZnMoZGlmZjEsIGRpZmYyLCAhaXNNYXRjaCwgaXRlcmF0aW9uICsgMSk7DQoJCX0NCgkJZWxz
ZQ0KCQl7DQoJCQlkaWZmc1swXVswXSA9IGRpZmYxOw0KCQkJZGlmZnNbMV1bMF0gPSBkaWZmMjsN
CgkJfQ0KCX0NCgllbHNlIGlmICghaXNNYXRjaCAmJiBsaW5lMV9sZW5ndGggIT0gbGluZTJfbGVu
Z3RoKQ0KCXsNCgkJZGlmZjEgPSBsaW5lMTsNCgkJZGlmZjIgPSBsaW5lMjsNCgkJZGlmZnNbMF1b
MF0gPSBkaWZmMTsNCgkJZGlmZnNbMV1bMF0gPSBkaWZmMjsNCgl9DQoJDQoJdmFyIHJlc3VsdHMg
PSBbXTsNCglyZXN1bHRzWzBdID0gZGlmZjEubGVuZ3RoID09IDAgPyBbbGluZTFdIDogW2xpbmUx
LnN1YnN0cmluZygwLCBkaWZmX3N0YXJ0KV0uY29uY2F0KGRpZmZzWzBdKS5jb25jYXQoW2xpbmUx
LnN1YnN0cmluZyhsaW5lMV9sZW5ndGggLSBkaWZmX2VuZCldKTsNCglyZXN1bHRzWzFdID0gZGlm
ZjIubGVuZ3RoID09IDAgPyBbbGluZTJdIDogW2xpbmUyLnN1YnN0cmluZygwLCBkaWZmX3N0YXJ0
KV0uY29uY2F0KGRpZmZzWzFdKS5jb25jYXQoW2xpbmUyLnN1YnN0cmluZyhsaW5lMl9sZW5ndGgg
LSBkaWZmX2VuZCldKTsNCglyZXR1cm4gcmVzdWx0czsNCn0NCg0KZnVuY3Rpb24gdGV4dF9maXhf
cmF3X3N0cmluZyhzdHIpDQp7DQoJdmFyIHJlc3VsdCA9IHN0ci5yZXBsYWNlKG5ldyBSZWdFeHAo
IjwiLCAiZyIpLCAiJmx0OyIpLnJlcGxhY2UobmV3IFJlZ0V4cCgiPiIsICJnIiksICImZ3Q7Iik7
DQoJaWYgKGNfRmlsZXNDb21wYXJlX0tlZXBTcGFjZXMpIHJlc3VsdCA9IHJlc3VsdC5yZXBsYWNl
KG5ldyBSZWdFeHAoIlx0IiwgImciKSwgIiAgIikucmVwbGFjZShuZXcgUmVnRXhwKCIgIiwgImci
KSwgIiZuYnNwOyIpOw0KCXJldHVybiByZXN1bHQ7DQp9DQoNCmZ1bmN0aW9uIHRleHRfZ2V0X2Rp
ZmZzX3BlcmNlbnQoZGlmZnMsIGxpbmUxX2xlbmd0aCwgbGluZTJfbGVuZ3RoKQ0Kew0KCXZhciBk
aWZmMV9sZW5ndGggPSBkaWZmc1swXS5sZW5ndGg7DQoJdmFyIGRpZmYyX2xlbmd0aCA9IGRpZmZz
WzFdLmxlbmd0aDsNCg0KCXZhciBkaWZmMSA9IDA7DQoJZm9yICh2YXIgaSA9IDE7IGkgPCBkaWZm
MV9sZW5ndGg7IGkgKz0gMikNCgkJZGlmZjEgKz0gZGlmZnNbMF1baV0ubGVuZ3RoOw0KDQoJdmFy
IGRpZmYyID0gMDsNCglmb3IgKHZhciBpID0gMTsgaSA8IGRpZmYyX2xlbmd0aDsgaSArPSAyKQ0K
CQlkaWZmMiArPSBkaWZmc1sxXVtpXS5sZW5ndGg7DQoNCglkaWZmMSA9IGxpbmUxX2xlbmd0aCA+
IDAgPyBNYXRoLnJvdW5kKGRpZmYxICogMTAwIC8gbGluZTFfbGVuZ3RoKSA6IChsaW5lMl9sZW5n
dGggPT0gMCA/IDAgOiAxMDApOw0KCWRpZmYyID0gbGluZTJfbGVuZ3RoID4gMCA/IE1hdGgucm91
bmQoZGlmZjIgKiAxMDAgLyBsaW5lMl9sZW5ndGgpIDogKGxpbmUxX2xlbmd0aCA9PSAwID8gMCA6
IDEwMCk7DQoNCglyZXR1cm4gTWF0aC5tYXgoZGlmZjEsIGRpZmYyKTsNCn0NCg0KZnVuY3Rpb24g
dGV4dF9maW5kX3NpbWlsYXJfbGluZShsaW5lczEsIGxpbmVzMiwgbGluZTFfaW5kZXgsIGxpbmUy
X2luZGV4LCBtYXhMaW5lQ291bnQpDQp7DQoJdmFyIHJlc3VsdCA9IG51bGw7DQoNCgl2YXIgbGlu
ZV9jb3VudCA9IE1hdGgubWluKG1heExpbmVDb3VudCB8fCBjX0ZpbGVzQ29tcGFyZV9DaGVja1Np
YmxpbmdMaW5lcywgbGluZXMxLmxlbmd0aCAtIGxpbmUxX2luZGV4IC0gMSwgbGluZXMyLmxlbmd0
aCAtIGxpbmUyX2luZGV4IC0gMSk7DQoNCgkvLyBDaGVjayBpZiB0aGVyZSBhcmUgdGhlIHNhbWUg
bGluZXMgd2l0aGluIG5leHQgbGluZV9jb3VudCBsaW5lcw0KDQoJZm9yICh2YXIgaSA9IDE7IGkg
PD0gbGluZV9jb3VudDsgaSsrKQ0KCXsNCgkJdmFyIGxpbmUxaSA9IGxpbmVzMVtsaW5lMV9pbmRl
eCArIGldOw0KCQl2YXIgbGluZTJpID0gbGluZXMyW2xpbmUyX2luZGV4ICsgaV07DQoNCgkJaWYg
KGxpbmUxaS5sZW5ndGggPiAwICYmIGxpbmUxaSA9PSBsaW5lMmkpDQoJCQlyZXR1cm4gbnVsbDsN
CgkJDQoJCWZvciAodmFyIGogPSAwOyBqIDwgaTsgaisrKQ0KCQl7DQoJCQl2YXIgbGluZTFqID0g
bGluZXMxW2xpbmUxX2luZGV4ICsgal07DQoJCQl2YXIgbGluZTJqID0gbGluZXMyW2xpbmUyX2lu
ZGV4ICsgal07DQoNCgkJCWlmIChsaW5lMWkubGVuZ3RoID4gMCAmJiBsaW5lMWkgPT0gbGluZTJq
KQ0KCQkJCXJldHVybiB7IGxpbmUxX2luZGV4OiBpLCBsaW5lMl9pbmRleDogaiwgZGlmZnNfcGVy
Y2VudDogMCwgZGlmZnM6IFsgW2xpbmUxaV0sIFtsaW5lMmpdIF0sIGFyZUVxdWFsOiB0cnVlIH07
DQoJCQllbHNlIGlmIChsaW5lMmkubGVuZ3RoID4gMCAmJiBsaW5lMmkgPT0gbGluZTFqKQ0KCQkJ
CXJldHVybiB7IGxpbmUxX2luZGV4OiBqLCBsaW5lMl9pbmRleDogaSwgZGlmZnNfcGVyY2VudDog
MCwgZGlmZnM6IFsgW2xpbmUxal0sIFtsaW5lMmldIF0sIGFyZUVxdWFsOiB0cnVlIH07DQoJCX0N
Cgl9DQoNCgkvLyBHZXQgbWluaW11bSBkaWZmZXJlbmNlIGJldHdlZW4gbmV4dCBsaW5lX2NvdW50
IGxpbmVzDQoNCgl2YXIgbGluZTEgPSBsaW5lczFbbGluZTFfaW5kZXhdOw0KCXZhciBsaW5lMiA9
IGxpbmVzMltsaW5lMl9pbmRleF07DQoNCgl2YXIgbWluRGlmZiA9IDEwMDsNCgl2YXIgZW1wdHlS
ZXN1bHQgPSBudWxsOw0KCXZhciBoYXNTa2lwcGVkTWF0Y2hpbmdFbXB0eVN0cmluZ3MgPSBmYWxz
ZTsNCgkNCglmdW5jdGlvbiBjb21wYXJlTGluZXMoX2xpbmUxLCBfbGluZTIsIF9saW5lMV9pbmRl
eCwgX2xpbmUyX2luZGV4KQ0KCXsNCgkJdmFyIGxpbmUxX2xlbmd0aCA9IF9saW5lMS5sZW5ndGg7
DQoJCXZhciBsaW5lMl9sZW5ndGggPSBfbGluZTIubGVuZ3RoOw0KCQlpZiAobGluZTFfbGVuZ3Ro
ID09IDAgJiYgbGluZTJfbGVuZ3RoID09IDApDQoJCXsNCgkJCWlmIChlbXB0eVJlc3VsdCA9PSBu
dWxsKSBlbXB0eVJlc3VsdCA9IHsgbGluZTFfaW5kZXg6IF9saW5lMV9pbmRleCwgbGluZTJfaW5k
ZXg6IF9saW5lMl9pbmRleCwgZGlmZnNfcGVyY2VudDogMCwgZGlmZnM6IFsgWyIiXSwgWyIiXSBd
LCBhcmVFcXVhbDogdHJ1ZSB9DQoJCX0NCgkJZWxzZQ0KCQl7DQoJCQl2YXIgZGlmZnMgPSB0ZXh0
X2ZpbmRfbGluZV9kaWZmcyhfbGluZTEsIF9saW5lMik7DQoJCQl2YXIgZGlmZnNfcGVyY2VudCA9
IHRleHRfZ2V0X2RpZmZzX3BlcmNlbnQoZGlmZnMsIGxpbmUxX2xlbmd0aCwgbGluZTJfbGVuZ3Ro
KTsNCgkJCWlmIChkaWZmc19wZXJjZW50IDwgbWluRGlmZikNCgkJCXsNCgkJCQlyZXN1bHQgPSB7
IGxpbmUxX2luZGV4OiBfbGluZTFfaW5kZXgsIGxpbmUyX2luZGV4OiBfbGluZTJfaW5kZXgsIGRp
ZmZzX3BlcmNlbnQ6IGRpZmZzX3BlcmNlbnQsIGRpZmZzOiBkaWZmcywgYXJlRXF1YWw6IF9saW5l
MSA9PSBfbGluZTIgfTsNCgkJCQltaW5EaWZmID0gZGlmZnNfcGVyY2VudDsNCgkJCQlpZiAobWlu
RGlmZiA9PSAwKQ0KCQkJCQlyZXR1cm4gdHJ1ZTsNCgkJCX0NCgkJfQ0KCQlyZXR1cm4gZmFsc2U7
DQoJfQ0KDQoJZm9yICh2YXIgaSA9IDE7IGkgPD0gbGluZV9jb3VudDsgaSsrKQ0KCXsNCgkJdmFy
IGxpbmUxaSA9IGxpbmVzMVtsaW5lMV9pbmRleCArIGldOw0KCQl2YXIgbGluZTJpID0gbGluZXMy
W2xpbmUyX2luZGV4ICsgaV07DQoJCQ0KCQlpZiAoY29tcGFyZUxpbmVzKGxpbmUxaSwgbGluZTIs
IGksIDApIHx8IGNvbXBhcmVMaW5lcyhsaW5lMSwgbGluZTJpLCAwLCBpKSkNCgkJCWJyZWFrOw0K
CX0NCgkNCglpZiAobWluRGlmZiA+IDApDQoJew0KCQlpZiAoZW1wdHlSZXN1bHQpDQoJCQlyZXR1
cm4gZW1wdHlSZXN1bHQ7DQoJCWlmIChoYXNTa2lwcGVkTWF0Y2hpbmdFbXB0eVN0cmluZ3MpDQoJ
CQlyZXR1cm4gbnVsbDsNCgl9DQoNCglyZXR1cm4gcmVzdWx0Ow0KfQ0KDQpmdW5jdGlvbiB0ZXh0
X3Nob3dfZmlsZXNfZGlmZnMoZGl2LCBmaWxlbmFtZTEsIGZpbGVuYW1lMiwgY2FwdGlvbjEsIGNh
cHRpb24yKQ0Kew0KCW1fdGV4dF9maWxlc19kaWZmX3BvcyA9IC0xOw0KCW1fdGV4dF9maWxlc19k
aWZmX2xpbmVzID0gW107DQoJbV90ZXh0X2ZpbGVzX3Jvb3REaXYgPSBkaXY7DQoNCgl2YXIgdGV4
dDEgPSB0ZXh0X2xvYWRfZnJvbV9maWxlKGZpbGVuYW1lMSk7DQoJdmFyIHRleHQyID0gdGV4dF9s
b2FkX2Zyb21fZmlsZShmaWxlbmFtZTIpOw0KDQoJdmFyIHJlc3VsdCA9IGRvY3VtZW50LmNyZWF0
ZURvY3VtZW50RnJhZ21lbnQoKTsNCg0KCXZhciB3aWR0aCA9IGRpdi5vZmZzZXRXaWR0aCAtIGNf
SW5uZXJQYWRkaW5nICogMjsNCgl2YXIgaGVpZ2h0ID0gZGl2Lm9mZnNldEhlaWdodCAtIGNfSW5u
ZXJQYWRkaW5nICogMiAtIChjX0ZpbGVzQ29tcGFyZV9Ub29sYmFySGVpZ2h0ICsgY19Jbm5lclBh
ZGRpbmcpOw0KDQoJdmFyIHRvb2xiYXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJESVYiKTsN
Cgl0b29sYmFyLmNsYXNzTmFtZSA9ICJzaW5nbGVGcmFtZSI7DQoJdG9vbGJhci5zdHlsZS53aWR0
aCA9IHdpZHRoICsgInB4IjsNCgl0b29sYmFyLnN0eWxlLmhlaWdodCA9IGNfRmlsZXNDb21wYXJl
X1Rvb2xiYXJIZWlnaHQgKyAicHgiOw0KCXRvb2xiYXIuc3R5bGUub3ZlcmZsb3cgPSAiaGlkZGVu
IjsNCgl0b29sYmFyLmlkID0gImRpZmZzX3Rvb2xiYXIiOw0KCXRvb2xiYXIuc3R5bGUubWFyZ2lu
Qm90dG9tID0gY19Jbm5lclBhZGRpbmcgKyAicHgiOw0KCWRpdi5hcHBlbmRDaGlsZCh0b29sYmFy
KTsNCglkaXYubV90b29sYmFyID0gdG9vbGJhcjsNCg0KCXZhciBidG5fdGQgPSAiPHRkIHN0eWxl
PSdib3JkZXI6MXB4IHNvbGlkICNBQ0E4OTk7IHdoaXRlLXNwYWNlOiBub3dyYXA7JyBvbm1vdXNl
b3Zlcj0nZmlsZXNDb21wYXJlX2J0blRvZ2dsZSh0aGlzLCB0cnVlKScgb25tb3VzZW91dD0nZmls
ZXNDb21wYXJlX2J0blRvZ2dsZSh0aGlzLCBmYWxzZSknIG9ubW91c2Vkb3duPSdyZXR1cm4gZmFs
c2UnICI7DQoJdG9vbGJhci5pbm5lckhUTUwgPSAiPHRhYmxlIGNlbGxwYWRkaW5nPTAgY2VsbHNw
YWNpbmc9MiBib3JkZXI9MD48dHI+IiArDQoJCWJ0bl90ZCArICJvbmNsaWNrPSdmaWxlc0NvbXBh
cmVfTmV4dERpZmYoKScgb25kYmxjbGljaz0nZmlsZXNDb21wYXJlX05leHREaWZmKCknIGlkPSdm
aWxlc0NvbXBhcmVfYnRuTmV4dCcgY2xhc3M9J2J0bl9kaXNhYmxlZCc+IDxpbWcgc3JjPSdudWxs
LmdpZicgY2xhc3M9J2ljb24gaWNvbi1zb3J0LWQnIHN0eWxlPSd2ZXJ0aWNhbC1hbGlnbjptaWRk
bGU7IG1hcmdpbjo2cHggMHB4IDVweCA1cHg7Jz4gTmV4dCBEaWZmZXJlbmNlICZuYnNwOyZuYnNw
OzwvdGQ+IiArDQoJCWJ0bl90ZCArICJvbmNsaWNrPSdmaWxlc0NvbXBhcmVfUHJldkRpZmYoKScg
b25kYmxjbGljaz0nZmlsZXNDb21wYXJlX1ByZXZEaWZmKCknIGlkPSdmaWxlc0NvbXBhcmVfYnRu
UHJldicgY2xhc3M9J2J0bl9kaXNhYmxlZCc+IDxpbWcgc3JjPSdudWxsLmdpZicgY2xhc3M9J2lj
b24gaWNvbi1zb3J0LWEnIHN0eWxlPSd2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7IG1hcmdpbjo2cHgg
MHB4IDVweCA1cHg7Jz4gUHJldmlvdXMgRGlmZmVyZW5jZSAmbmJzcDsmbmJzcDs8L3RkPiIgKw0K
CQkiPC90cj48L3RhYmxlPiI7DQoNCgl2YXIgdGJsID0gdGV4dF9jcmVhdGVUYWJsZSh3aWR0aCwg
aGVpZ2h0LCBudWxsLCBjYXB0aW9uMSwgdHJ1ZSwgMik7DQoJcmVzdWx0LmFwcGVuZENoaWxkKHRi
bCk7DQoJZGl2LmNvbXBhcmVUYWJsZSA9IHRibDsNCg0KCXZhciBvVFIgPSB0YmwudEhlYWQucm93
c1swXTsNCglvVFIuY2VsbHNbMF0uY29sU3BhbiA9IDE7DQoJdmFyIG9URCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoIlREIik7DQoJb1RELmNsYXNzTmFtZSA9ICJjZWxsQ2FwdGlvbiI7DQoJb1RE
LmlubmVyVGV4dCA9IGNhcHRpb24yOw0KCW9UUi5hcHBlbmRDaGlsZChvVEQpOw0KDQoJZGl2LmZp
bGUxRGl2ID0gdGV4dF9jcmVhdGVGaWxlUGFuZWwodGJsLnRCb2RpZXNbMF0ucm93c1swXS5jZWxs
c1swXSwgd2lkdGgsIGhlaWdodCwgdHJ1ZSk7DQoJZGl2LmZpbGUxRGl2LnBhcmVudERpdiA9IGRp
djsNCg0KCWRpdi5maWxlMkRpdiA9IHRleHRfY3JlYXRlRmlsZVBhbmVsKHRibC50Qm9kaWVzWzBd
LnJvd3NbMF0uY2VsbHNbMV0sIHdpZHRoLCBoZWlnaHQsIGZhbHNlKTsNCglkaXYuZmlsZTJEaXYu
cGFyZW50RGl2ID0gZGl2Ow0KCQ0KCWZ1bmN0aW9uIHByZXBhcmVfbGluZXNfdXNpbmdfZGlmZnMo
ZGlmZnMpDQoJew0KCQlsaW5lMSA9IChkaWZmc1swXS5sZW5ndGggPT0gMSA/IHRleHRfZml4X3Jh
d19zdHJpbmcoZGlmZnNbMF1bMF0pIDogIiIpOw0KCQlpZiAoZGlmZnNbMF0ubGVuZ3RoID4gMSkN
CgkJCWZvciAodmFyIHogPSAwOyB6IDwgZGlmZnNbMF0ubGVuZ3RoOyB6KyspDQoJCQkJbGluZTEg
Kz0gKGRpZmZzWzBdW3pdLmxlbmd0aCA9PSAwID8gIiIgOiAiPHNwYW4gc3R5bGU9J2JhY2tncm91
bmQtY29sb3I6IiArICh6ICUgMiA9PSAwID8gIiNDOUUwQzkiIDogIiM3RUI2N0UiKSArICInPiIg
KyANCgkJCQkJdGV4dF9maXhfcmF3X3N0cmluZyhkaWZmc1swXVt6XSkgKyAiPC9zcGFuPiIpOw0K
DQoJCWxpbmUyID0gKGRpZmZzWzFdLmxlbmd0aCA9PSAxID8gdGV4dF9maXhfcmF3X3N0cmluZyhk
aWZmc1sxXVswXSkgOiAiIik7DQoJCWlmIChkaWZmc1sxXS5sZW5ndGggPiAxKQ0KCQkJZm9yICh2
YXIgeiA9IDA7IHogPCBkaWZmc1sxXS5sZW5ndGg7IHorKykNCgkJCQlsaW5lMiArPSAoZGlmZnNb
MV1bel0ubGVuZ3RoID09IDAgPyAiIiA6ICI8c3BhbiBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjoi
ICsgKHogJSAyID09IDAgPyAiI0M5RTBDOSIgOiAiIzdFQjY3RSIpICsgIic+IiArIA0KCQkJCQl0
ZXh0X2ZpeF9yYXdfc3RyaW5nKGRpZmZzWzFdW3pdKSArICI8L3NwYW4+Iik7DQoJfQ0KDQoJdmFy
IGNvbDFfd2lkdGhfc2V0ID0gZmFsc2U7DQoJZnVuY3Rpb24gYXBwZW5kX2xpbmVzKF9saW5lMSwg
X2xpbmUyLCBsaW5lMV9zdHlsZSwgbGluZTJfc3R5bGUsIGhhc19saW5lMSwgaGFzX2xpbmUyLCBf
bGluZTFfaW5kZXgsIF9saW5lMl9pbmRleCkNCgl7DQoJCWZpbGUxTGluZXNbZmlsZTFMaW5lcy5s
ZW5ndGhdID0gIjx0cj4iICsgKGNfRmlsZXNDb21wYXJlX1Nob3dMaW5lTnVtYmVycyAmJiBoYXNf
bGluZTEgPyAiPHRkIiArIChjb2wxX3dpZHRoX3NldCA/ICIiIDogIiB3aWR0aD0nMSUnIikgKyAi
PiIgKyAoX2xpbmUxX2luZGV4ICsgMSkgKyAiJm5ic3A7PC90ZD4iIDogIiIpICsNCgkJCSI8dGQg
c3R5bGU9J3doaXRlLXNwYWNlOm5vd3JhcDsiICsgKGxpbmUxX3N0eWxlICE9ICIiID8gIiBiYWNr
Z3JvdW5kLWNvbG9yOiIgKyBsaW5lMV9zdHlsZSA6ICIiKSArICInPiIgKyAoX2xpbmUxIHx8ICIm
bmJzcDsiKSArICI8L3RkPjwvdHI+IjsNCgkJZmlsZTJMaW5lc1tmaWxlMkxpbmVzLmxlbmd0aF0g
PSAiPHRyPiIgKyAoY19GaWxlc0NvbXBhcmVfU2hvd0xpbmVOdW1iZXJzICYmIGhhc19saW5lMiA/
ICI8dGQiICsgKGNvbDFfd2lkdGhfc2V0ID8gIiIgOiAiIHdpZHRoPScxJSciKSArICI+IiArIChf
bGluZTJfaW5kZXggKyAxKSArICImbmJzcDs8L3RkPiIgOiAiIikgKw0KCQkJIjx0ZCBzdHlsZT0n
d2hpdGUtc3BhY2U6bm93cmFwOyIgKyAobGluZTJfc3R5bGUgIT0gIiIgPyAiIGJhY2tncm91bmQt
Y29sb3I6IiArIGxpbmUyX3N0eWxlIDogIiIpICsgIic+IiArIChfbGluZTIgfHwgIiZuYnNwOyIp
ICsgIjwvdGQ+PC90cj4iOw0KCQljb2wxX3dpZHRoX3NldCA9IHRydWU7DQoJfQ0KDQoJdmFyIHRl
eHQxX2xlbmd0aCA9IHRleHQxLmxlbmd0aDsNCgl2YXIgdGV4dDJfbGVuZ3RoID0gdGV4dDIubGVu
Z3RoOw0KCXZhciBtYXhUZXh0TGluZXMgPSBNYXRoLm1heCh0ZXh0MV9sZW5ndGgsIHRleHQyX2xl
bmd0aCk7DQoJdmFyIG1heExpbmVDb3VudCA9IE1hdGgubWluKG1heFRleHRMaW5lcywgY19GaWxl
c0NvbXBhcmVfTWF4TGluZUNvdW50KTsNCg0KCXZhciBpc1RydW5jYXRlZCA9IG1heFRleHRMaW5l
cyA+IGNfRmlsZXNDb21wYXJlX01heExpbmVDb3VudDsNCgl2YXIgZmlyc3REaWZmRm91bmQgPSBm
YWxzZTsNCgl2YXIgZmlyc3RTaG93bkxpbmVJbmRleCA9IDA7DQoJdmFyIGxpbmVzQmVmb3JlRmly
c3REaWZmID0gMjsNCg0KCXZhciBvbGRfc3RhdHVzID0gd2luZG93LnN0YXR1czsNCgl3aW5kb3cu
c3RhdHVzID0gIlByb2Nlc3NpbmcuLi4iOw0KDQoJdmFyIGZpbGUxTGluZXMgPSBbXTsNCgl2YXIg
ZmlsZTJMaW5lcyA9IFtdOw0KCXZhciBwcmV2aW91c0RpZmZMaW5lID0gLTE7DQoJZm9yICh2YXIg
aSA9IDAsIGxpbmUxX2luZGV4ID0gMCwgbGluZTJfaW5kZXggPSAwOyA7IGkrKywgbGluZTFfaW5k
ZXgrKywgbGluZTJfaW5kZXgrKykNCgl7DQoJCWlmIChsaW5lMV9pbmRleCAlIDEwMCA9PSAwIHx8
IGxpbmUyX2luZGV4ICUgMTAwID09IDApDQoJCQl0ZXh0X3NldF9maWxlc19kaWZmc19wcm9ncmVz
cyhNYXRoLnJvdW5kKE1hdGgubWluKGxpbmUxX2luZGV4LCBsaW5lMl9pbmRleCkgKiA3MCAvIG1h
eExpbmVDb3VudCkpOw0KCQkNCgkJdmFyIHRleHQxX25vdEVPRiA9IChsaW5lMV9pbmRleCA8IHRl
eHQxX2xlbmd0aCk7DQoJCXZhciB0ZXh0Ml9ub3RFT0YgPSAobGluZTJfaW5kZXggPCB0ZXh0Ml9s
ZW5ndGgpOw0KDQoJCWlmICgoIXRleHQxX25vdEVPRiB8fCBsaW5lMV9pbmRleCA+PSBtYXhMaW5l
Q291bnQpICYmDQoJCQkoIXRleHQyX25vdEVPRiB8fCBsaW5lMl9pbmRleCA+PSBtYXhMaW5lQ291
bnQpKQ0KCQkJYnJlYWs7DQoNCgkJdmFyIGxpbmUxID0gdGV4dDFfbm90RU9GID8gdGV4dDFbbGlu
ZTFfaW5kZXhdIDogIiI7DQoJCXZhciBsaW5lMiA9IHRleHQyX25vdEVPRiA/IHRleHQyW2xpbmUy
X2luZGV4XSA6ICIiOw0KDQoJCXZhciBsaW5lMV9sZW5ndGggPSBsaW5lMS5sZW5ndGg7DQoJCXZh
ciBsaW5lMl9sZW5ndGggPSBsaW5lMi5sZW5ndGg7DQoJCXZhciBlcXVhbCA9IChsaW5lMV9sZW5n
dGggPT0gbGluZTJfbGVuZ3RoICYmIGxpbmUxID09IGxpbmUyICYmIHRleHQxX25vdEVPRiAmJiB0
ZXh0Ml9ub3RFT0YpOw0KDQoJCXZhciBsaW5lMVN0eWxlID0gdGV4dDJfbm90RU9GID8gIiIgOiAi
I0ZGQzdCOSI7DQoJCXZhciBsaW5lMlN0eWxlID0gdGV4dDFfbm90RU9GID8gIiIgOiAiI0I4RDhG
RSI7DQoNCgkJaWYgKGlzVHJ1bmNhdGVkICYmICFmaXJzdERpZmZGb3VuZCkNCgkJew0KCQkJaWYg
KGVxdWFsKQ0KCQkJew0KCQkJCW1heExpbmVDb3VudCsrOw0KCQkJCWNvbnRpbnVlOw0KCQkJfQ0K
CQkJDQoJCQlmaXJzdERpZmZGb3VuZCA9IHRydWU7DQoNCgkJCWlmIChpID4gMCkNCgkJCXsNCgkJ
CQlpZiAobGluZXNCZWZvcmVGaXJzdERpZmYgPCBpICYmIGkgPD0gMTApDQoJCQkJCWxpbmVzQmVm
b3JlRmlyc3REaWZmID0gaTsNCgkJCQkNCgkJCQlpZiAoaSA+IGxpbmVzQmVmb3JlRmlyc3REaWZm
KQ0KCQkJCXsNCgkJCQkJY19GaWxlc0NvbXBhcmVfU2hvd0xpbmVOdW1iZXJzID0gdHJ1ZTsNCgkJ
CQkJZmlyc3RTaG93bkxpbmVJbmRleCA9IChpIC0gbGluZXNCZWZvcmVGaXJzdERpZmYpOw0KCQkJ
CQlhcHBlbmRfbGluZXMoIi4uLiIsICIuLi4iLCAiIiwgIiIsIGZhbHNlLCBmYWxzZSk7DQoJCQkJ
fQ0KDQoJCQkJZm9yICh2YXIgaiA9IGkgLSBsaW5lc0JlZm9yZUZpcnN0RGlmZjsgaiA8IGk7IGor
KykNCgkJCQl7DQoJCQkJCWlmIChqIDwgMCkgY29udGludWU7DQoNCgkJCQkJdmFyIGwxID0gdGV4
dDFbal07IGlmIChsMS5sZW5ndGggIT0gMCkgbDEgPSB0ZXh0X2ZpeF9yYXdfc3RyaW5nKGwxKTsN
CgkJCQkJdmFyIGwyID0gdGV4dDJbal07IGlmIChsMi5sZW5ndGggIT0gMCkgbDIgPSB0ZXh0X2Zp
eF9yYXdfc3RyaW5nKGwyKTsNCgkJCQkJYXBwZW5kX2xpbmVzKGwxLCBsMiwgIiIsICIiLCAoaiA8
IHRleHQxX2xlbmd0aCksIChqIDwgdGV4dDJfbGVuZ3RoKSwgaiwgaik7DQoJCQkJfQ0KCQkJfQ0K
CQl9DQoJCQkNCgkJaWYgKCFlcXVhbCkNCgkJew0KCQkJaWYgKHByZXZpb3VzRGlmZkxpbmUgPT0g
aSkNCgkJCQlwcmV2aW91c0RpZmZMaW5lKys7DQoJCQllbHNlDQoJCQl7DQoJCQkJbV90ZXh0X2Zp
bGVzX2RpZmZfbGluZXNbbV90ZXh0X2ZpbGVzX2RpZmZfbGluZXMubGVuZ3RoXSA9IGkgLSBmaXJz
dFNob3duTGluZUluZGV4Ow0KCQkJCXByZXZpb3VzRGlmZkxpbmUgPSBpICsgMTsNCgkJCX0NCgkJ
fQ0KDQoJCWlmICghZXF1YWwgJiYgdGV4dDFfbm90RU9GICYmIHRleHQyX25vdEVPRikNCgkJew0K
CQkJbGluZTFTdHlsZSA9IHRleHQxX25vdEVPRiA/ICIjQzlFMEM5IiA6ICIiOw0KCQkJbGluZTJT
dHlsZSA9IHRleHQyX25vdEVPRiA/ICIjQzlFMEM5IiA6ICIiOw0KDQoJCQl2YXIgZGlmZnMgPSB0
ZXh0X2ZpbmRfbGluZV9kaWZmcyhsaW5lMSwgbGluZTIpOw0KCQkJdmFyIGRpZmZzX3BlcmNlbnQg
PSB0ZXh0X2dldF9kaWZmc19wZXJjZW50KGRpZmZzLCBsaW5lMV9sZW5ndGgsIGxpbmUyX2xlbmd0
aCk7DQoNCgkJCXZhciBzaW1pbGFyX2xpbmUgPSB0ZXh0X2ZpbmRfc2ltaWxhcl9saW5lKHRleHQx
LCB0ZXh0MiwgbGluZTFfaW5kZXgsIGxpbmUyX2luZGV4KTsNCgkJCWlmIChzaW1pbGFyX2xpbmUg
JiYgc2ltaWxhcl9saW5lLmRpZmZzX3BlcmNlbnQgPCBkaWZmc19wZXJjZW50KQ0KCQkJew0KCQkJ
CXZhciBtYXhEaWZmTGluZUNvdW50ID0gTWF0aC5tYXgoc2ltaWxhcl9saW5lLmxpbmUxX2luZGV4
LCBzaW1pbGFyX2xpbmUubGluZTJfaW5kZXgpOw0KCQkJCWkgKz0gbWF4RGlmZkxpbmVDb3VudDsN
Cg0KCQkJCWZvciAodmFyIHogPSAwOyB6IDwgbWF4RGlmZkxpbmVDb3VudDsgeisrKQ0KCQkJCXsN
CgkJCQkJdmFyIGhhc1RleHQxID0gKHogPCBzaW1pbGFyX2xpbmUubGluZTFfaW5kZXgpOw0KCQkJ
CQl2YXIgaGFzVGV4dDIgPSAoeiA8IHNpbWlsYXJfbGluZS5saW5lMl9pbmRleCk7DQoNCgkJCQkJ
bGluZTEgPSAoaGFzVGV4dDEgPyB0ZXh0MVtsaW5lMV9pbmRleF0gOiAiIik7DQoJCQkJCWxpbmUy
ID0gKGhhc1RleHQyID8gdGV4dDJbbGluZTJfaW5kZXhdIDogIiIpOw0KDQoJCQkJCXZhciBsaW5l
MXpfc3R5bGUgPSBoYXNUZXh0MSA/IChoYXNUZXh0MiA/IGxpbmUxU3R5bGUgOiAiI0ZGQzdCOSIp
IDogIiI7DQoJCQkJCXZhciBsaW5lMnpfc3R5bGUgPSBoYXNUZXh0MiA/IChoYXNUZXh0MSA/IGxp
bmUyU3R5bGUgOiAiI0I4RDhGRSIpIDogIiI7DQoJCQkJCQ0KCQkJCQlpZiAoaGFzVGV4dDEgJiYg
aGFzVGV4dDIpDQoJCQkJCXsNCgkJCQkJCWRpZmZzID0gdGV4dF9maW5kX2xpbmVfZGlmZnMobGlu
ZTEsIGxpbmUyKTsNCgkJCQkJCWRpZmZzX3BlcmNlbnQgPSB0ZXh0X2dldF9kaWZmc19wZXJjZW50
KGRpZmZzLCBsaW5lMS5sZW5ndGgsIGxpbmUyLmxlbmd0aCk7DQoJCQkJCQlpZiAoZGlmZnNfcGVy
Y2VudCA+IGNfRmlsZXNDb21wYXJlX01heExpbmVEaWZmUGVyY2VudCkNCgkJCQkJCXsNCgkJCQkJ
CQlsaW5lMXpfc3R5bGUgPSAiI0ZGQzdCOSI7DQoJCQkJCQkJbGluZTJ6X3N0eWxlID0gIiNCOEQ4
RkUiOw0KCQkJCQkJCWRpZmZzWzBdID0gW2xpbmUxXTsNCgkJCQkJCQlkaWZmc1sxXSA9IFtsaW5l
Ml07DQoJCQkJCQl9DQoJCQkJCQllbHNlIGlmIChkaWZmc19wZXJjZW50ID09IDApDQoJCQkJCQl7
DQoJCQkJCQkJbGluZTF6X3N0eWxlID0gIiI7DQoJCQkJCQkJbGluZTJ6X3N0eWxlID0gIiI7DQoJ
CQkJCQl9DQoJCQkJCQlwcmVwYXJlX2xpbmVzX3VzaW5nX2RpZmZzKGRpZmZzKTsNCgkJCQkJfQ0K
CQkJCQllbHNlDQoJCQkJCXsNCgkJCQkJCWlmIChsaW5lMS5sZW5ndGggIT0gMCkgbGluZTEgPSB0
ZXh0X2ZpeF9yYXdfc3RyaW5nKGxpbmUxKTsNCgkJCQkJCWlmIChsaW5lMi5sZW5ndGggIT0gMCkg
bGluZTIgPSB0ZXh0X2ZpeF9yYXdfc3RyaW5nKGxpbmUyKTsNCgkJCQkJfQ0KCQkJCQkNCgkJCQkJ
YXBwZW5kX2xpbmVzKGxpbmUxLCBsaW5lMiwgbGluZTF6X3N0eWxlLCBsaW5lMnpfc3R5bGUsIGhh
c1RleHQxLCBoYXNUZXh0MiwgbGluZTFfaW5kZXgsIGxpbmUyX2luZGV4KTsNCg0KCQkJCQlpZiAo
aGFzVGV4dDEpIGxpbmUxX2luZGV4Kys7DQoJCQkJCWlmIChoYXNUZXh0MikgbGluZTJfaW5kZXgr
KzsNCgkJCQl9DQoJCQkJDQoJCQkJZGlmZnMgPSBzaW1pbGFyX2xpbmUuZGlmZnM7DQoJCQkJaWYg
KHNpbWlsYXJfbGluZS5hcmVFcXVhbCkNCgkJCQl7DQoJCQkJCWxpbmUxU3R5bGUgPSAiIjsNCgkJ
CQkJbGluZTJTdHlsZSA9ICIiOw0KCQkJCQlsaW5lMSA9IHRleHRfZml4X3Jhd19zdHJpbmcoZGlm
ZnNbMF1bMF0pOw0KCQkJCQlsaW5lMiA9IHRleHRfZml4X3Jhd19zdHJpbmcoZGlmZnNbMV1bMF0p
Ow0KCQkJCX0NCgkJCX0NCgkJCWVsc2UgaWYgKGRpZmZzX3BlcmNlbnQgPiBjX0ZpbGVzQ29tcGFy
ZV9NYXhMaW5lRGlmZlBlcmNlbnQpDQoJCQl7DQoJCQkJbGluZTFTdHlsZSA9ICIjRkZDN0I5IjsN
CgkJCQlsaW5lMlN0eWxlID0gIiNCOEQ4RkUiOw0KCQkJCWRpZmZzWzBdID0gW2xpbmUxXTsNCgkJ
CQlkaWZmc1sxXSA9IFtsaW5lMl07DQoJCQl9DQoJCQkNCgkJCWlmICghZXF1YWwpDQoJCQkJcHJl
cGFyZV9saW5lc191c2luZ19kaWZmcyhkaWZmcyk7DQoJCX0NCgkJZWxzZQ0KCQl7DQoJCQlpZiAo
bGluZTEubGVuZ3RoICE9IDApIGxpbmUxID0gdGV4dF9maXhfcmF3X3N0cmluZyhsaW5lMSk7DQoJ
CQlpZiAobGluZTIubGVuZ3RoICE9IDApIGxpbmUyID0gdGV4dF9maXhfcmF3X3N0cmluZyhsaW5l
Mik7DQoJCX0NCg0KCQlhcHBlbmRfbGluZXMobGluZTEsIGxpbmUyLCBsaW5lMVN0eWxlLCBsaW5l
MlN0eWxlLCB0ZXh0MV9ub3RFT0YsIHRleHQyX25vdEVPRiwgbGluZTFfaW5kZXgsIGxpbmUyX2lu
ZGV4KTsNCgl9DQoJDQoJaWYgKGxpbmUxX2luZGV4ID49IGNfRmlsZXNDb21wYXJlX01heExpbmVD
b3VudCAmJiBsaW5lMV9pbmRleCA8IHRleHQxX2xlbmd0aCkgZmlsZTFMaW5lc1tmaWxlMUxpbmVz
Lmxlbmd0aF0gPSAiPHRyPjx0ZD4uLi4uPC90ZD48L3RyPiI7DQoJaWYgKGxpbmUyX2luZGV4ID49
IGNfRmlsZXNDb21wYXJlX01heExpbmVDb3VudCAmJiBsaW5lMl9pbmRleCA8IHRleHQyX2xlbmd0
aCkgZmlsZTJMaW5lc1tmaWxlMkxpbmVzLmxlbmd0aF0gPSAiPHRyPjx0ZD4uLi4uPC90ZD48L3Ry
PiI7DQoJDQoJdGV4dF9zZXRfZmlsZXNfZGlmZnNfcHJvZ3Jlc3MoODApOw0KDQoJZGl2LmZpbGUx
RGl2LmlubmVySFRNTCA9ICI8dGFibGUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIGJvcmRl
cj0wIHdpZHRoPTEwMCUiICsgKGNfRmlsZXNDb21wYXJlX1VzZU1vbm9Gb250ID8gIiBjbGFzcz0n
bW9ub2ZvbnQnIiA6ICIiKSArICI+IiArIGZpbGUxTGluZXMuam9pbigiIikgKyAiPC90YWJsZT4i
Ow0KCWRpdi5maWxlMkRpdi5pbm5lckhUTUwgPSAiPHRhYmxlIGNlbGxwYWRkaW5nPTAgY2VsbHNw
YWNpbmc9MCBib3JkZXI9MCB3aWR0aD0xMDAlIiArIChjX0ZpbGVzQ29tcGFyZV9Vc2VNb25vRm9u
dCA/ICIgY2xhc3M9J21vbm9mb250JyIgOiAiIikgKyAiPiIgKyBmaWxlMkxpbmVzLmpvaW4oIiIp
ICsgIjwvdGFibGU+IjsNCg0KCXRleHRfc2V0X2ZpbGVzX2RpZmZzX3Byb2dyZXNzKDg1KTsNCg0K
CXZhciBmaWxlMVRhYmxlID0gZGl2LmZpbGUxRGl2LmZpcnN0Q2hpbGQ7DQoJdmFyIGZpbGUyVGFi
bGUgPSBkaXYuZmlsZTJEaXYuZmlyc3RDaGlsZDsNCg0KCWRpdi5hcHBlbmRDaGlsZChyZXN1bHQp
Ow0KDQoJdGV4dF9zZXRfZmlsZXNfZGlmZnNfcHJvZ3Jlc3MoOTApOw0KDQoJdmFyIG1heFdpZHRo
ID0gZmlsZTFUYWJsZS5vZmZzZXRXaWR0aDsNCglpZiAoZmlsZTJUYWJsZS5vZmZzZXRXaWR0aCA+
IG1heFdpZHRoKQ0KCQltYXhXaWR0aCA9IGZpbGUyVGFibGUub2Zmc2V0V2lkdGg7DQoNCglkaXYu
bV9yb3dIZWlnaHQgPSBmaWxlMlRhYmxlLnJvd3NbMF0ub2Zmc2V0SGVpZ2h0Ow0KDQoJZmlsZXND
b21wYXJlX05leHREaWZmKCk7DQoJZmlsZXNDb21wYXJlX1VwZGF0ZVRvb2xiYXIoKTsNCgkNCgl3
aW5kb3cuc3RhdHVzID0gb2xkX3N0YXR1czsNCn0NCg0KZnVuY3Rpb24gdGV4dF9zZXRfZmlsZXNf
ZGlmZnNfcHJvZ3Jlc3ModmFsdWUpDQp7DQoJbV90ZXh0X2ZpbGVzX2RpZmZzX3Byb2dyZXNzID0g
dmFsdWU7DQoJd2luZG93LnN0YXR1cyA9ICJQcm9jZXNzaW5nLi4uICIgKyB2YWx1ZSArICIlIjsN
Cn0NCg0KZnVuY3Rpb24gdGV4dF9jbGVhclNlbGVjdGlvbigpDQp7DQoJaWYgKGRvY3VtZW50LnNl
bGVjdGlvbiAmJiBkb2N1bWVudC5zZWxlY3Rpb24uZW1wdHkpDQoJCWRvY3VtZW50LnNlbGVjdGlv
bi5lbXB0eSgpOw0KCWVsc2UgaWYgKHdpbmRvdy5nZXRTZWxlY3Rpb24pDQoJCXdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKTsNCn0NCg0KZnVuY3Rpb24gZmlsZXNDb21wYXJl
X2J0blRvZ2dsZShidG4sIG1vdXNlb3ZlcikNCnsNCglpZiAoYnRuLmNsYXNzTmFtZSAhPSAiYnRu
X2Rpc2FibGVkIikNCgkJYnRuLmNsYXNzTmFtZSA9IG1vdXNlb3ZlciA/ICJidG5faG92ZXJlZCIg
OiAiYnRuX2VuYWJsZWQiOw0KfQ0KDQpmdW5jdGlvbiBmaWxlc0NvbXBhcmVfVXBkYXRlVG9vbGJh
cigpDQp7DQoJaWYgKG1fdGV4dF9maWxlc19kaWZmX2xpbmVzLmxlbmd0aCA9PSAwKQ0KCQlyZXR1
cm47DQoNCgl2YXIgY2FuU2Nyb2xsID0gbV90ZXh0X2ZpbGVzX3Jvb3REaXYuZmlsZTJEaXYuc2Ny
b2xsVG9wIDwgKG1fdGV4dF9maWxlc19yb290RGl2LmZpbGUyRGl2LnNjcm9sbEhlaWdodCAtIG1f
dGV4dF9maWxlc19yb290RGl2LmZpbGUyRGl2LmNsaWVudEhlaWdodCk7DQoNCgl2YXIgYnRuID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZpbGVzQ29tcGFyZV9idG5OZXh0Iik7DQoJdmFyIGJv
dW5kID0gbV90ZXh0X2ZpbGVzX2RpZmZfbGluZXNbbV90ZXh0X2ZpbGVzX2RpZmZfbGluZXMubGVu
Z3RoIC0gMV0gLSAyOw0KCWlmIChjYW5TY3JvbGwgJiYgYnRuLmNsYXNzTmFtZSA9PSAiYnRuX2Rp
c2FibGVkIikNCgkJeyBpZiAobV90ZXh0X2ZpbGVzX2RpZmZfcG9zIDwgYm91bmQpIGJ0bi5jbGFz
c05hbWUgPSAiYnRuX2VuYWJsZWQiOyB9DQoJZWxzZSBpZiAobV90ZXh0X2ZpbGVzX2RpZmZfcG9z
ID49IGJvdW5kIHx8ICFjYW5TY3JvbGwpDQoJCWJ0bi5jbGFzc05hbWUgPSAiYnRuX2Rpc2FibGVk
IjsNCg0KCWJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmaWxlc0NvbXBhcmVfYnRuUHJl
diIpOw0KCWJvdW5kID0gbV90ZXh0X2ZpbGVzX2RpZmZfbGluZXNbMF0gLSAyOw0KCWlmIChib3Vu
ZCA8IDApIGJvdW5kID0gMDsNCglpZiAoYnRuLmNsYXNzTmFtZSA9PSAiYnRuX2Rpc2FibGVkIikN
CgkJeyBpZiAobV90ZXh0X2ZpbGVzX2RpZmZfcG9zID4gYm91bmQpIGJ0bi5jbGFzc05hbWUgPSAi
YnRuX2VuYWJsZWQiOyB9DQoJZWxzZSBpZiAobV90ZXh0X2ZpbGVzX2RpZmZfcG9zIDw9IGJvdW5k
KQ0KCQlidG4uY2xhc3NOYW1lID0gImJ0bl9kaXNhYmxlZCI7DQp9DQoNCmZ1bmN0aW9uIGZpbGVz
Q29tcGFyZV9OYXZpZ2F0ZShkb3duKQ0Kew0KCXZhciBkaWZmc19sZW5ndGggPSBtX3RleHRfZmls
ZXNfZGlmZl9saW5lcy5sZW5ndGg7DQoJZm9yICh2YXIgaSA9IDA7IGkgPCBkaWZmc19sZW5ndGg7
IGkrKykNCgl7DQoJCXZhciBkaWZmX3BvcyA9IG1fdGV4dF9maWxlc19kaWZmX2xpbmVzW2Rvd24g
PyBpIDogZGlmZnNfbGVuZ3RoIC0gMSAtIGldIC0gMjsNCgkJaWYgKGRpZmZfcG9zIDwgMCkgZGlm
Zl9wb3MgPSAwOw0KCQlpZiAoKGRvd24gJiYgZGlmZl9wb3MgPiBtX3RleHRfZmlsZXNfZGlmZl9w
b3MpIHx8ICghZG93biAmJiBkaWZmX3BvcyA8IG1fdGV4dF9maWxlc19kaWZmX3BvcykpDQoJCXsN
CgkJCW1fdGV4dF9maWxlc19yb290RGl2LmZpbGUyRGl2LnNjcm9sbFRvcCA9IG1fdGV4dF9maWxl
c19yb290RGl2Lm1fcm93SGVpZ2h0ICogZGlmZl9wb3M7DQoJCQlpZiAobV90ZXh0X2ZpbGVzX2Rp
ZmZfcG9zIDwgMCkNCgkJCQltX3RleHRfZmlsZXNfZGlmZl9wb3MgPSBkaWZmX3BvczsNCgkJCWJy
ZWFrOw0KCQl9DQoJfQ0KfQ0KDQpmdW5jdGlvbiBmaWxlc0NvbXBhcmVfTmV4dERpZmYoKQ0Kew0K
CXRleHRfY2xlYXJTZWxlY3Rpb24oKTsNCglmaWxlc0NvbXBhcmVfTmF2aWdhdGUodHJ1ZSk7DQp9
DQoNCmZ1bmN0aW9uIGZpbGVzQ29tcGFyZV9QcmV2RGlmZigpDQp7DQoJdGV4dF9jbGVhclNlbGVj
dGlvbigpOw0KCWZpbGVzQ29tcGFyZV9OYXZpZ2F0ZShmYWxzZSk7DQp9DQoNCnZhciB0ZXh0X2pz
ID0gdHJ1ZTs=

------=30AD9628A3274F06AF82E5991D4657D1
Content-Type: text/plain
Content-Transfer-Encoding: base64
Content-Location: http://localhost/table.js

dmFyIGNfU2hvd1RpbWVEaWZmZXJlbmNlID0gdW5kZWZpbmVkOw0KdmFyIGNfRGltU21hbGxUaW1l
RGlmZmVyZW5jZU1zID0gMDsNCg0KdmFyIGNfTWF4SXRlbXNUb0xvYWRUcmVlQXRPbmNlID0gMTAw
MDsNCnZhciBjX1N0YXR1c1Byb2dyZXNzID0gZmFsc2U7DQoNCnZhciBjX0lubmVyUGFkZGluZyA9
IDU7DQoNCnZhciBjX1Nob3dDb250ZW50Rm9yRXh0ZW5zaW9ucyA9IFsidHh0IiwgImh0bSIsICJo
dG1sIiwgInhtbCIsICJqcGciLCAianBlZyIsICJnaWYiLCAicG5nIl07DQoNCnZhciBjX0V4dGVy
bmFsTGlua1Byb3RvY29scyA9IFsiaHR0cCIsICJodHRwcyIsICJmaWxlIiwgImZ0cCIsICJtYWls
dG8iLCAidGVsIl07DQoNCnZhciBjX1Nob3dTcGxpdHRlcnMgPSB0cnVlOw0KdmFyIGNfc3BsaXR0
ZXJTaXplID0gNDsNCnZhciBjX21pbkhlaWdodCA9IDE1MDsNCnZhciBjX21pbldpZHRoID0gMjIw
Ow0KDQpmdW5jdGlvbiB0YWJsZV9zZXRBY3RpdmUoZWxlbWVudCkNCnsNCgl0YWJsZV9jbGVhcihl
bGVtZW50KTsNCgllbGVtZW50LmlubmVySFRNTCA9ICIiOw0KCWVsZW1lbnQucHJldmVudERlZmF1
bHQgPSBmYWxzZTsNCgllbGVtZW50LmFjdGl2ZURldGFpbHNUYWJOYW1lID0gIiI7DQoNCgllbGVt
ZW50LmNhcHR1cmVLZXlzID0gdHJ1ZTsNCgllbGVtZW50Lm9uQ2FwdHVyZWRLZXlzID0gdGFibGVf
b25DYXB0dXJlZEtleXM7DQoNCglpZiAoIW1fYXJyb3dLZXlzQ2FwdHVyZWRCeSkNCgkJbV9hcnJv
d0tleXNDYXB0dXJlZEJ5ID0gZWxlbWVudDsNCg0KCWVsZW1lbnQudG90YWxSb3dDb3VudCA9IGVs
ZW1lbnQudGFibGUuaXRlbXMubGVuZ3RoOw0KDQoJdmFyIHJvb3RJZCA9IChlbGVtZW50LnRvdGFs
Um93Q291bnQgPiAwID8gZWxlbWVudC50YWJsZS5pdGVtc1swXS5waWQgfHwgLTEgOiAtMSk7DQoJ
Zm9yICh2YXIgaSA9IDA7IHJvb3RJZCA+PSAwICYmIGkgPCBlbGVtZW50LnRvdGFsUm93Q291bnQ7
IGkrKykNCgkJaWYgKGVsZW1lbnQudGFibGUuaXRlbXNbaV0ucGlkIDwgcm9vdElkKQ0KCQkJcm9v
dElkID0gZWxlbWVudC50YWJsZS5pdGVtc1tpXS5waWQ7DQoJDQoJZWxlbWVudC5sb2FkVHJlZUF0
T25jZSA9IGVsZW1lbnQudG90YWxSb3dDb3VudCA8PSBjX01heEl0ZW1zVG9Mb2FkVHJlZUF0T25j
ZTsNCgllbGVtZW50LnRvdGFsUm93Q291bnQgPSAoKGNfU3RhdHVzUHJvZ3Jlc3MgJiYgZWxlbWVu
dC5sb2FkVHJlZUF0T25jZSkgPyB0b3RhbFJvd0NvdW50IDogMCk7DQoJZWxlbWVudC5sb2FkZWRS
b3dDb3VudCA9IDA7DQoNCgl0YWJsZV9DcmVhdGVSb290RnJhbWUoZWxlbWVudCk7DQoJdGFibGVf
Q3JlYXRlVGFibGUoZWxlbWVudCk7DQoJdGFibGVfQ2xlYXJGaWx0ZXIoZWxlbWVudCk7DQoJdGFi
bGVfQ3JlYXRlUm93cyhlbGVtZW50LCBudWxsLCByb290SWQsIDApOw0KDQoJdGFibGVfcmVzaXpl
Q2FwdGlvbnMoZWxlbWVudCk7DQoNCgkvLyBDcmVhdGluZyBjb2x1bW5zIGhlcmUgYmVjYXVzZSB0
aGVpciB3aWR0aHMgYXJlIGNvcnJlY3Qgb25seSBhZnRlciBhcHBlbmRpbmcgdG8gYm9keQ0KDQoJ
dmFyIHRwID0gZWxlbWVudC5yb290RGl2LnRhYmxlUGFuZTsNCgl0cC5tX2RhdGFUYWJsZS5jcmVh
dGluZyA9IHRydWU7DQoJdHAubV9kYXRhVGFibGUudG90YWxXaWR0aCA9IDA7DQoNCglmb3IgKHZh
ciBpID0gMDsgaSA8IGVsZW1lbnQubV9DYXB0aW9ucy5sZW5ndGg7IGkrKykNCgl7DQoJCWlmIChl
bGVtZW50Lm1fQ2FwdGlvbnNbaV0uY29sdW1uICYmIGVsZW1lbnQubV9DYXB0aW9uc1tpXS5jb2x1
bW4uaXNDb21wbGV4KQ0KCQkJY29udGludWU7DQoJCWNhcHRpb25fQ3JlYXRlQ29udHJvbChlbGVt
ZW50Lm1fQ2FwdGlvbnNbaV0sIGZhbHNlKTsNCgl9DQoNCglpZiAodHAubV9kYXRhVGFibGUubW96
aWxsYSkNCgl7DQoJCXRwLm1fZGF0YVRhYmxlLndpZHRoID0gdHAubV9kYXRhVGFibGUudG90YWxX
aWR0aDsNCgkJdHAubGlua2VkRGl2Lm1faGVhZFRhYmxlLndpZHRoID0gdHAubV9kYXRhVGFibGUu
dG90YWxXaWR0aDsNCgl9DQoJdHAubV9kYXRhVGFibGUuY3JlYXRpbmcgPSBmYWxzZTsNCglpZiAo
dHAubV9kYXRhVGFibGUucm93cy5sZW5ndGggPiAxKQ0KCQl0YWJsZV9kb1Nob3dOZXN0ZWREYXRh
LmFwcGx5KHRwLm1fZGF0YVRhYmxlLnJvd3NbMV0pOw0KDQoJdGFibGVfdXBkYXRlRmlsdGVyU3Rh
dGUoZWxlbWVudC50YWJsZS5jb2x1bW5zKTsNCgl0YWJsZV9jaGVja0hlYWRlcldpZHRoKHRwKTsN
Cg0KCXRhYmxlX09wZXJhRm9yY2VSZWRyYXcoZWxlbWVudCwgdHJ1ZSk7DQp9DQoNCmZ1bmN0aW9u
IHRhYmxlX2NsZWFyKGVsZW1lbnQpDQp7DQoJaWYgKGVsZW1lbnQubV9OZXN0ZWRPYmplY3QpDQoJ
ew0KCQl0YWJsZV9jbGVhcihlbGVtZW50Lm1fTmVzdGVkT2JqZWN0KTsNCgkJdGV4dF9jbGVhcihl
bGVtZW50Lm1fTmVzdGVkT2JqZWN0KTsNCgkJZWxlbWVudC5tX05lc3RlZE9iamVjdC5wb3B1cERp
diA9IG51bGw7DQoJCWVsZW1lbnQubV9OZXN0ZWRPYmplY3QucG9wdXBJRnJhbWUgPSBudWxsOw0K
CQllbGVtZW50Lm1fTmVzdGVkT2JqZWN0ID0gbnVsbDsNCgl9DQoJaWYgKGVsZW1lbnQudGFibGUg
JiYgZWxlbWVudC50YWJsZS5jb2x1bW5zKQ0KCQlmb3IgKHZhciBpID0gMDsgaSA8IGVsZW1lbnQu
dGFibGUuY29sdW1ucy5sZW5ndGg7IGkrKykNCgkJew0KCQkJaWYgKGVsZW1lbnQudGFibGUuY29s
dW1uc1tpXS5yZWFsVEQpDQoJCQl7DQoJCQkJZWxlbWVudC50YWJsZS5jb2x1bW5zW2ldLnJlYWxU
RC5jb2x1bW4gPSBudWxsOw0KCQkJCWVsZW1lbnQudGFibGUuY29sdW1uc1tpXS5yZWFsVEQubV9k
YXRhVGFibGUgPSBudWxsOw0KCQkJCWVsZW1lbnQudGFibGUuY29sdW1uc1tpXS5yZWFsVEQgPSBu
dWxsOw0KCQkJfQ0KCQkJaWYgKGVsZW1lbnQudGFibGUuY29sdW1uc1tpXS5tX2NhcHRpb24pDQoJ
CQl7DQoJCQkJY2FwdGlvbl9jbGVhcihlbGVtZW50LnRhYmxlLmNvbHVtbnNbaV0ubV9jYXB0aW9u
KTsNCgkJCQllbGVtZW50LnRhYmxlLmNvbHVtbnNbaV0ubV9jYXB0aW9uLnJlYWxURCA9IG51bGw7
DQoJCQkJZWxlbWVudC50YWJsZS5jb2x1bW5zW2ldLm1fY2FwdGlvbi5jb2x1bW4gPSBudWxsOw0K
CQkJCWVsZW1lbnQudGFibGUuY29sdW1uc1tpXS5tX2NhcHRpb24gPSBudWxsOw0KCQkJfQ0KCQl9
DQoJaWYgKGVsZW1lbnQucm9vdERpdikNCgl7DQoJCWlmIChlbGVtZW50LnJvb3REaXYudGFibGVQ
YW5lKQ0KCQl7DQoJCQllbGVtZW50LnJvb3REaXYudGFibGVQYW5lLnRhYmxlRWxlbWVudCA9IG51
bGw7DQoJCQllbGVtZW50LnJvb3REaXYudGFibGVQYW5lLmxpbmtlZERpdi5wYXJlbnREaXYgPSBu
dWxsOw0KCQkJZWxlbWVudC5yb290RGl2LnRhYmxlUGFuZS5saW5rZWREaXYubV9oZWFkVGFibGUg
PSBudWxsOw0KCQkJZWxlbWVudC5yb290RGl2LnRhYmxlUGFuZS5saW5rZWREaXYgPSBudWxsOw0K
CQkJZWxlbWVudC5yb290RGl2LnRhYmxlUGFuZS5tX2RhdGFUYWJsZSA9IG51bGw7DQoJCQllbGVt
ZW50LnJvb3REaXYudGFibGVQYW5lID0gbnVsbDsNCgkJfQ0KCQllbGVtZW50LnJvb3REaXYgPSBu
dWxsOw0KCX0NCglpZiAoZWxlbWVudC5zcGxpdHRlcikNCgl7DQoJCWVsZW1lbnQuc3BsaXR0ZXIu
dGFibGVFbGVtZW50ID0gbnVsbDsNCgkJZWxlbWVudC5zcGxpdHRlciA9IG51bGw7DQoJfQ0KCWlm
IChlbGVtZW50LmRldGFpbHNIZWFkKQ0KCXsNCgkJZWxlbWVudC5kZXRhaWxzSGVhZC5tX2VsZW1l
bnQgPSBudWxsDQoJCWVsZW1lbnQuZGV0YWlsc0hlYWQgPSBudWxsOw0KCX0NCglpZiAoZWxlbWVu
dC5kZXRhaWxzSGVhZDIpDQoJew0KCQllbGVtZW50LmRldGFpbHNIZWFkMi5tX2VsZW1lbnQgPSBu
dWxsDQoJCWVsZW1lbnQuZGV0YWlsc0hlYWQyID0gbnVsbDsNCgl9DQoJaWYgKGVsZW1lbnQucm93
Qm9keSkNCgl7DQoJCWZvciAodmFyIGkgPSAwOyBpIDwgZWxlbWVudC5yb3dCb2R5LnJvd3MubGVu
Z3RoOyBpKyspDQoJCXsNCgkJCWVsZW1lbnQucm93Qm9keS5yb3dzW2ldLnN1YlJvd3MgPSBudWxs
Ow0KCQkJZWxlbWVudC5yb3dCb2R5LnJvd3NbaV0ucGFyZW50Um93ID0gbnVsbDsNCgkJCWVsZW1l
bnQucm93Qm9keS5yb3dzW2ldLnRhYmxlRWxlbWVudCA9IG51bGw7DQoJCQllbGVtZW50LnJvd0Jv
ZHkucm93c1tpXS5kZWZhdWx0Q29sdW1uID0gbnVsbDsNCgkJCWVsZW1lbnQucm93Qm9keS5yb3dz
W2ldLm1fTGlua1RhYnMgPSBudWxsOw0KCQl9DQoJfQ0KCWlmIChlbGVtZW50LmRldGFpbHNUYWJz
RGl2KQ0KCXsNCgkJaWYgKGVsZW1lbnQuZGV0YWlsc1RhYnNEaXYubV90YWJzT2JqZWN0KQ0KCQl7
DQoJCQllbGVtZW50LmRldGFpbHNUYWJzRGl2Lm1fdGFic09iamVjdC5kaXNwb3NlKCk7DQoJCQll
bGVtZW50LmRldGFpbHNUYWJzRGl2Lm1fdGFic09iamVjdCA9IG51bGw7DQoJCX0NCgkJZWxlbWVu
dC5kZXRhaWxzVGFic0RpdiA9IG51bGw7DQoJfQ0KCWVsZW1lbnQucm9vdFRhYmxlID0gbnVsbDsN
CgllbGVtZW50LmRldGFpbHNEaXYgPSBudWxsOw0KCWVsZW1lbnQuZG9SZXNpemUgPSBudWxsOw0K
CWVsZW1lbnQucm93Qm9keSA9IG51bGw7DQoJZWxlbWVudC5tX2FjdGl2ZVJvdyA9IG51bGw7DQoJ
ZWxlbWVudC5tX0NhcHRpb25zID0gbnVsbDsNCn0NCg0KZnVuY3Rpb24gdGFibGVfYWN0aXZhdGVS
b3coZWxlbWVudCwgcm93SW5kZXgsIHNjcm9sbEludG9WaWV3KQ0Kew0KCWlmICghZWxlbWVudCB8
fCAhZWxlbWVudC5yb3dCb2R5KQ0KCQlyZXR1cm47DQoJDQoJdmFyIG5ld19yb3cgPSBlbGVtZW50
LnJvd0JvZHkucm93c1tyb3dJbmRleF07DQoJdmFyIGFjdGl2ZVJvd0luZGV4ID0gZWxlbWVudC5t
X2FjdGl2ZVJvdyA/IGVsZW1lbnQubV9hY3RpdmVSb3cucm93SW5kZXggLSAxIDogMDsNCgl0YWJs
ZV9zZXRBY3RpdmVSb3coZWxlbWVudCwgbmV3X3JvdywgdHJ1ZSk7DQoJaWYgKHNjcm9sbEludG9W
aWV3KQ0KCXsNCgkJdmFyIHRhYmxlUGFuZSA9IGVsZW1lbnQucm9vdERpdi50YWJsZVBhbmU7DQoJ
CXZhciByb3dIZWlnaHQgPSBuZXdfcm93Lm9mZnNldEhlaWdodDsNCgkJaWYgKHJvd0luZGV4ID49
IGFjdGl2ZVJvd0luZGV4KQ0KCQl7DQoJCQl2YXIgdmlzaWJsZVJvd0NvdW50ID0gTWF0aC5mbG9v
cigoZWxlbWVudC5yb290RGl2LnRhYmxlUGFuZS5jbGllbnRIZWlnaHQgLSA2KSAvIHJvd0hlaWdo
dCkgLSAxOw0KCQkJdmFyIHJvdyA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoZ2V0U2NyZWVu
WChlbGVtZW50LnJvb3REaXYudGFibGVQYW5lKSArIDUsIGdldFNjcmVlblkoZWxlbWVudC5yb290
RGl2LnRhYmxlUGFuZSkgKyBlbGVtZW50LnJvb3REaXYudGFibGVQYW5lLmNsaWVudEhlaWdodCAt
IHJvd0hlaWdodCArIDEpOw0KCQkJd2hpbGUgKHJvdyAmJiByb3cubm9kZU5hbWUudG9Mb3dlckNh
c2UoKSAhPSAidHIiKSByb3cgPSByb3cucGFyZW50Tm9kZTsNCgkJCXZhciBsYXN0VmlzaWJsZVJv
d0luZGV4ID0gcm93ID8gcm93LnJvd0luZGV4IC0gMSA6IE1hdGguZmxvb3IodGFibGVQYW5lLnNj
cm9sbFRvcCAvIHJvd0hlaWdodCkgKyB2aXNpYmxlUm93Q291bnQgLSAxOw0KCQkJaWYgKHJvd0lu
ZGV4ID4gbGFzdFZpc2libGVSb3dJbmRleCkNCgkJCQl0YWJsZVBhbmUuc2Nyb2xsVG9wID0gcm93
ID8gKHRhYmxlUGFuZS5zY3JvbGxUb3AgKyAoZ2V0U2NyZWVuWShuZXdfcm93KSAtIGdldFNjcmVl
blkocm93KSkpIDogKChyb3dJbmRleCAtIHZpc2libGVSb3dDb3VudCArIDEpICogcm93SGVpZ2h0
KTsNCgkJfQ0KCQllbHNlDQoJCXsNCgkJCXZhciByb3cgPSBkb2N1bWVudC5lbGVtZW50RnJvbVBv
aW50KGdldFNjcmVlblgoZWxlbWVudC5yb290RGl2LnRhYmxlUGFuZSkgKyA1LCBnZXRTY3JlZW5Z
KGVsZW1lbnQucm9vdERpdi50YWJsZVBhbmUpICsgKHJvd0hlaWdodCAqIDIpICsgNik7DQoJCQl3
aGlsZSAocm93ICYmIHJvdy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpICE9ICJ0ciIpIHJvdyA9IHJv
dy5wYXJlbnROb2RlOw0KCQkJdmFyIGZpcnN0VmlzaWJsZVJvd0luZGV4ID0gcm93ID8gcm93LnJv
d0luZGV4IC0gMSA6IE1hdGguY2VpbCh0YWJsZVBhbmUuc2Nyb2xsVG9wIC8gcm93SGVpZ2h0KTsN
CgkJCWlmIChyb3dJbmRleCA8IGZpcnN0VmlzaWJsZVJvd0luZGV4KQ0KCQkJCXRhYmxlUGFuZS5z
Y3JvbGxUb3AgPSByb3cgPyAoTWF0aC5jZWlsKCh0YWJsZVBhbmUuc2Nyb2xsVG9wICsgKGdldFNj
cmVlblkobmV3X3JvdykgLSBnZXRTY3JlZW5ZKHJvdykpKSAvIHJvd0hlaWdodCkgKiByb3dIZWln
aHQpIDogKHJvd0luZGV4ICogcm93SGVpZ2h0KTsNCgkJfQ0KCX0NCgl0YWJsZV9kb1Nob3dOZXN0
ZWREYXRhLmFwcGx5KG5ld19yb3cpOw0KfQ0KDQpmdW5jdGlvbiB0YWJsZV9vbkNhcHR1cmVkS2V5
cyhlbGVtZW50LCBrZXlDb2RlKQ0Kew0KCWlmICghZWxlbWVudC5tX2FjdGl2ZVJvdykNCgkJcmV0
dXJuIGZhbHNlOw0KDQoJdmFyIHJvd0luZGV4ID0gZWxlbWVudC5tX2FjdGl2ZVJvdy5yb3dJbmRl
eCAtIDE7DQoJdmFyIGxhc3RJbmRleCA9IGVsZW1lbnQucm93Qm9keS5yb3dzLmxlbmd0aCAtIDE7
DQoJdmFyIG5ld0luZGV4ID0gcm93SW5kZXg7DQoJdmFyIGRpcmVjdGlvbiA9IDA7DQoJdmFyIHJv
dyA9IG51bGw7DQoJDQoJaWYgKGtleUNvZGUgPT0gMzMgfHwga2V5Q29kZSA9PSAzNCB8fCBrZXlD
b2RlID09IDM4IHx8IGtleUNvZGUgPT0gNDApDQoJew0KCQl2YXIgdmlzaWJsZVJvd0NvdW50ID0g
TWF0aC5mbG9vcigoZWxlbWVudC5yb290RGl2LnRhYmxlUGFuZS5jbGllbnRIZWlnaHQgLSA2KSAv
IGVsZW1lbnQubV9hY3RpdmVSb3cub2Zmc2V0SGVpZ2h0KSAtIDI7DQoJCQ0KCQl2YXIgaW5kZXhE
ZWx0YSA9IDA7DQoNCgkJaWYgKGtleUNvZGUgPT0gMzggLyogdXAgYXJyb3cgKi8pIAkJIHsgZGly
ZWN0aW9uID0gLTE7IGluZGV4RGVsdGEgPSAxOyB9DQoJCWVsc2UgaWYgKGtleUNvZGUgPT0gNDAg
LyogZG93biBhcnJvdyAqLykgeyBkaXJlY3Rpb24gPSArMTsgaW5kZXhEZWx0YSA9IDE7IH0NCgkJ
ZWxzZSBpZiAoa2V5Q29kZSA9PSAzMyAvKiBwYWdlIHVwICovKSAgICB7IGRpcmVjdGlvbiA9IC0x
OyBpbmRleERlbHRhID0gdmlzaWJsZVJvd0NvdW50OyB9DQoJCWVsc2UgaWYgKGtleUNvZGUgPT0g
MzQgLyogcGFnZSBkb3duICovKSAgeyBkaXJlY3Rpb24gPSArMTsgaW5kZXhEZWx0YSA9IHZpc2li
bGVSb3dDb3VudDsgfQ0KDQoJCXZhciB0ZXN0SW5kZXggPSBuZXdJbmRleCArIGRpcmVjdGlvbjsN
CgkJd2hpbGUgKGluZGV4RGVsdGEgPiAwICYmIHRlc3RJbmRleCA+PSAwICYmIHRlc3RJbmRleCA8
PSBsYXN0SW5kZXgpDQoJCXsNCgkJCXJvdyA9IGVsZW1lbnQucm93Qm9keS5yb3dzW3Rlc3RJbmRl
eF07DQoJCQlpZiAocm93LnN0eWxlLmRpc3BsYXkgIT0gIm5vbmUiKQ0KCQkJew0KCQkJCW5ld0lu
ZGV4ID0gdGVzdEluZGV4Ow0KCQkJCWluZGV4RGVsdGEtLTsNCgkJCX0NCgkJCXRlc3RJbmRleCAr
PSBkaXJlY3Rpb247DQoJCX0NCgl9DQoJZWxzZSBpZiAoa2V5Q29kZSA9PSAzNSB8fCBrZXlDb2Rl
ID09IDM2KQ0KCXsNCgkJaWYgKGtleUNvZGUgPT0gMzUgLyogZW5kICovKSAgICAgICAgeyBkaXJl
Y3Rpb24gPSAtMTsgbmV3SW5kZXggPSBsYXN0SW5kZXg7IH0NCgkJZWxzZSBpZiAoa2V5Q29kZSA9
PSAzNiAvKiBob21lICovKSAgeyBkaXJlY3Rpb24gPSArMTsgbmV3SW5kZXggPSAwOyB9DQoJCQ0K
CQlmb3IgKDs7KQ0KCQl7DQoJCQlyb3cgPSBlbGVtZW50LnJvd0JvZHkucm93c1tuZXdJbmRleF07
DQoJCQlpZiAoKHJvdy5zdHlsZS5kaXNwbGF5ICE9ICJub25lIikgfHwgKG5ld0luZGV4ICsgZGly
ZWN0aW9uIDwgMCkgfHwgKG5ld0luZGV4ICsgZGlyZWN0aW9uID4gbGFzdEluZGV4KSkNCgkJCQli
cmVhazsNCgkJCW5ld0luZGV4ICs9IGRpcmVjdGlvbjsNCgkJfQ0KCX0NCgllbHNlIGlmIChrZXlD
b2RlID09IDM3IHx8IGtleUNvZGUgPT0gMzkpIC8vIGxlZnQgJiByaWdodCBhcnJvd3MNCgl7DQoJ
CWlmIChlbGVtZW50Lm1fYWN0aXZlUm93LnJvd19uZXR5KSAvLyBleHBhbmQgLyBjb2xsYXBzZSwg
b3IgZ28gdG8gZmlyc3QgY2hpbGQNCgkJew0KCQkJaWYgKGVsZW1lbnQubV9hY3RpdmVSb3cubV90
cmVlSW1hZ2UgJiYgZWxlbWVudC5tX2FjdGl2ZVJvdy5tX3RyZWVJbWFnZS5vcGVuZWQgIT0gKGtl
eUNvZGUgPT0gMzkpKQ0KCQkJew0KCQkJCWVsZW1lbnQubV9hY3RpdmVSb3cubV90cmVlSW1hZ2Uu
Y2xpY2soKTsNCgkJCQlyZXR1cm4gdHJ1ZTsNCgkJCX0NCg0KCQkJaWYgKGtleUNvZGUgPT0gMzkp
DQoJCQl7DQoJCQkJZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtZW50Lm1fYWN0aXZlUm93LnN1YlJv
d3MubGVuZ3RoOyBpKyspDQoJCQkJew0KCQkJCQlpZiAoZWxlbWVudC5tX2FjdGl2ZVJvdy5zdWJS
b3dzW2ldLnN0eWxlLmRpc3BsYXkgIT0gIm5vbmUiKQ0KCQkJCQl7DQoJCQkJCQluZXdJbmRleCA9
IGVsZW1lbnQubV9hY3RpdmVSb3cuc3ViUm93c1tpXS5yb3dJbmRleCAtIDE7DQoJCQkJCQlicmVh
azsNCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCgkJfQ0KDQoJCWlmIChrZXlDb2RlID09IDM3ICYmIGVs
ZW1lbnQubV9hY3RpdmVSb3cucGFyZW50Um93ICYmIGVsZW1lbnQubV9hY3RpdmVSb3cucGFyZW50
Um93LnN0eWxlLmRpc3BsYXkgIT0gIm5vbmUiKSAvLyBnbyB0b3ANCgkJew0KCQkJbmV3SW5kZXgg
PSBlbGVtZW50Lm1fYWN0aXZlUm93LnBhcmVudFJvdy5yb3dJbmRleCAtIDE7DQoJCX0NCgl9DQoJ
ZWxzZSBpZiAoa2V5Q29kZSA9PSAxMDYpIC8vICoNCgl7DQoJCWlmIChlbGVtZW50Lm1fYWN0aXZl
Um93LnJvd19uZXR5KQ0KCQl7DQoJCQl2YXIgZXhwYW5kU3ViUm93cyA9IGZ1bmN0aW9uKHJvd3Mp
DQoJCQl7DQoJCQkJdmFyIGxlbiA9IHJvd3MubGVuZ3RoOw0KCQkJCWZvciAodmFyIGkgPSAwOyBp
IDwgbGVuOyBpKyspDQoJCQkJew0KCQkJCQl2YXIgb1RSID0gcm93c1tpXTsNCgkJCQkJaWYgKCFv
VFIub3BlbmVkICYmIG9UUi5tX3RyZWVJbWFnZSkNCgkJCQkJCW9UUi5tX3RyZWVJbWFnZS5jbGlj
aygpOw0KDQoJCQkJCXZhciBzdWJSb3dzID0gb1RSLnN1YlJvd3M7DQoJCQkJCWlmIChzdWJSb3dz
ICYmIHN1YlJvd3MubGVuZ3RoKQ0KCQkJCQkJZXhwYW5kU3ViUm93cyhzdWJSb3dzKTsNCgkJCQl9
DQoJCQl9DQoJCQ0KCQkJZXhwYW5kU3ViUm93cyhbZWxlbWVudC5tX2FjdGl2ZVJvd10pOw0KCQkJ
DQoJCQl0YWJsZV9hY3RpdmF0ZVJvdyhlbGVtZW50LCBuZXdJbmRleCwgdHJ1ZSk7DQoJCQlyZXR1
cm4gdHJ1ZTsNCgkJfQ0KCX0NCgkNCglpZiAobmV3SW5kZXggIT0gcm93SW5kZXgpDQoJCXRhYmxl
X2FjdGl2YXRlUm93KGVsZW1lbnQsIG5ld0luZGV4LCB0cnVlKTsNCgkNCglyZXR1cm4gdHJ1ZTsN
Cn0NCg0KZnVuY3Rpb24gdGFibGVfQ3JlYXRlVGFibGUoZWxlbWVudCkNCnsNCgllbGVtZW50Lm1f
Q2FwdGlvbnMgPSBuZXcgQXJyYXkoKTsNCg0KCWlmIChlbGVtZW50LnRhYmxlLmNvbHVtbnMgIT0g
bnVsbCkNCgl7DQoJCXZhciBvVGFibGVQYW5lID0gd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoIkRJViIpOw0KCQlvVGFibGVQYW5lLmNsYXNzTmFtZSA9ICJ0YWJsZUJvZHkiOw0KCQllbGVt
ZW50LnJvb3REaXYuYXBwZW5kQ2hpbGQob1RhYmxlUGFuZSk7DQoJCWVsZW1lbnQucm9vdERpdi50
YWJsZVBhbmUgPSBvVGFibGVQYW5lOw0KCQlvVGFibGVQYW5lLnRhYmxlRWxlbWVudCA9IGVsZW1l
bnQ7DQoNCgkJb1RhYmxlUGFuZS5zdHlsZS53aWR0aCA9IGVsZW1lbnQucm9vdERpdi5vZmZzZXRX
aWR0aCAtIChlbGVtZW50Lm5vRnJhbWUgPyAwIDogMiAqIGNfSW5uZXJQYWRkaW5nKSArICJweCI7
DQoJCW9UYWJsZVBhbmUuc3R5bGUuaGVpZ2h0ID0gZWxlbWVudC5yb290RGl2Lm9mZnNldEhlaWdo
dCAtIChlbGVtZW50Lm5vRnJhbWUgPyAwIDogMiAqIGNfSW5uZXJQYWRkaW5nKSArICJweCI7DQoN
CgkJdmFyIG9UYWJsZSA9IHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJUQUJMRSIpOw0K
CQlvVGFibGVQYW5lLmFwcGVuZENoaWxkKG9UYWJsZSk7DQoJCW9UYWJsZS5jZWxsUGFkZGluZyA9
IDA7DQoJCW9UYWJsZS5jZWxsU3BhY2luZyA9IDA7DQoJCW9UYWJsZS5ib3JkZXIgPSAwOw0KCQlv
VGFibGUuc3R5bGUucG9zaXRpb24gPSAicmVsYXRpdmUiOw0KCQlvVGFibGUuc3R5bGUudG9wID0g
IjRweCI7DQoNCgkJb1RhYmxlLm1fc29ydENvbHVtbklkID0gLTE7DQoJCW9UYWJsZS5tX3NvcnRB
c2NlbmRpbmcgPSB0cnVlOw0KCQlvVGFibGUubV9zb3J0Q2FwdGlvbiA9IG51bGw7DQoNCgkJdmFy
IG9IZWFkID0gd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlRIRUFEIik7DQoJCW9UYWJs
ZS5hcHBlbmRDaGlsZChvSGVhZCk7DQoJDQoJCXZhciBvVFIgPSB3aW5kb3cuZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiVFIiKTsNCgkJb0hlYWQuYXBwZW5kQ2hpbGQob1RSKTsNCgkJDQoJCWZvciAo
dmFyIGkgPSAwOyBpIDwgZWxlbWVudC50YWJsZS5jb2x1bW5zLmxlbmd0aDsgaSsrKQ0KCQl7DQoJ
CQl2YXIgb0NvbHVtbiA9IGVsZW1lbnQudGFibGUuY29sdW1uc1tpXTsNCgkJCWlmIChvQ29sdW1u
LmlzQ29tcGxleCkNCgkJCQljb250aW51ZTsNCgkJCQ0KCQkJdmFyIG9URCA9IHdpbmRvdy5kb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdURCcpOw0KCQkJb1RELmNvbHVtbiA9IG9Db2x1bW47DQoJCQlv
VEQubV9kYXRhVGFibGUgPSBvVGFibGU7DQoJCQlvVEQubm9XcmFwID0gdHJ1ZTsNCgkJCW9Db2x1
bW4ucmVhbFREID0gb1REOw0KCQkJb1RELmNsYXNzTmFtZSA9ICJjZWxsVmFsdWUgcHJpbnRPbmx5
IjsgLy8gc2V0IGNhcHRpb24gdG8gbWluaW1pemUgdGFibGUgcmVmbG93DQoJCQlvVEQuc3R5bGUu
Y29sb3IgPSAid2hpdGUiOw0KCQkJb1RELmlubmVyVGV4dCA9IG9Db2x1bW4uY2FwdGlvbjsNCgkJ
CW9UUi5hcHBlbmRDaGlsZChvVEQpOw0KCQkJb1RELnN0eWxlLndpZHRoID0gKG9URC5vZmZzZXRX
aWR0aCArIDMwKSArICJweCI7IC8vIHNhdmUgc2l6ZSBhbmQgcmVtb3ZlIGNhcHRpb24NCgkJCW9U
RC5zdHlsZS5oZWlnaHQgPSBvVEQub2Zmc2V0SGVpZ2h0ICsgInB4IjsNCgkJCW9URC5jbGFzc05h
bWUgPSAiIjsNCgkJCS8vb1RELmlubmVyVGV4dCA9ICIiOyAvLyBsZWF2ZSBjYXB0aW9uIGZvciBw
cmludA0KCQl9DQoNCgkJdmFyIG9Cb2R5ID0gd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
IlRCT0RZIik7DQoJCWVsZW1lbnQucm93Qm9keSA9IG9Cb2R5Ow0KCQlvVGFibGUuYXBwZW5kQ2hp
bGQob0JvZHkpOw0KDQoJCW9UYWJsZVBhbmUubV9kYXRhVGFibGUgPSBvVGFibGU7DQoJCW9UYWJs
ZVBhbmUuZ2V0U2NyZWVuWCA9IEZ1bmN0aW9uKCJyZXR1cm4gZ2V0U2NyZWVuWCh0aGlzKSIpOw0K
CQlvVGFibGVQYW5lLmdldFNjcmVlblkgPSBGdW5jdGlvbigicmV0dXJuIGdldFNjcmVlblkodGhp
cykiKTsNCgkJDQovLyBDcmVhdGluZyBoZWFkZXJzIG9mIGNvbHVtbnMNCg0KCQl2YXIgb0Zsb3dE
aXYgPSB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiRElWIik7DQoJCWVsZW1lbnQucm9v
dERpdi5hcHBlbmRDaGlsZChvRmxvd0Rpdik7DQoNCgkJb0Zsb3dEaXYuaWQgPSAib0Zsb3dEaXYi
Ow0KCQlvRmxvd0Rpdi5jbGFzc05hbWUgPSAibm9wcmludCI7DQoJCW9GbG93RGl2LnBhcmVudERp
diA9IG9UYWJsZVBhbmU7DQoJCW9GbG93RGl2LnN0eWxlLnBhZGRpbmcgPSAiMnB4IjsNCgkJb0Zs
b3dEaXYuc3R5bGUucG9zaXRpb24gPSAiYWJzb2x1dGUiOw0KCQ0KCQlvRmxvd0Rpdi5zdHlsZS5i
YWNrZ3JvdW5kQ29sb3IgPSAid2hpdGUiOw0KLy8JCW9GbG93RGl2LnN0eWxlLndpZHRoID0gb1Rh
YmxlUGFuZS5vZmZzZXRXaWR0aCAtIDIwOw0KCQlvRmxvd0Rpdi5zdHlsZS5oZWlnaHQgPSAyMyAr
ICJweCI7DQoJCW9GbG93RGl2LnN0eWxlLm92ZXJmbG93ID0gImhpZGRlbiI7DQoJDQoJCW9UYWJs
ZVBhbmUubGlua2VkRGl2ID0gb0Zsb3dEaXY7DQoJCW9UYWJsZVBhbmUub25zY3JvbGwgPSB0YWJs
ZV9kb1RhYmxlUGFuZVNjcm9sbDsNCgkNCgkJdmFyIG9GbG93VGFibGUgPSB3aW5kb3cuZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiVEFCTEUiKTsNCgkJb0Zsb3dEaXYuYXBwZW5kQ2hpbGQob0Zsb3dU
YWJsZSk7DQoJCW9GbG93RGl2Lm1faGVhZFRhYmxlID0gb0Zsb3dUYWJsZTsNCg0KCQlvRmxvd1Rh
YmxlLmNlbGxQYWRkaW5nID0gMDsNCgkJb0Zsb3dUYWJsZS5jZWxsU3BhY2luZyA9IDA7DQoJCW9G
bG93VGFibGUuYm9yZGVyID0gMDsNCgkNCgkJdmFyIG9GbG93SGVhZCA9IHdpbmRvdy5kb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJUSEVBRCIpOw0KCQlvRmxvd1RhYmxlLmFwcGVuZENoaWxkKG9GbG93
SGVhZCk7DQoJDQoJCXZhciBvRmxvd1RSID0gd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
IlRSIik7DQoJCW9GbG93SGVhZC5hcHBlbmRDaGlsZChvRmxvd1RSKTsNCgkNCgkJZm9yICh2YXIg
aSA9IDA7IGkgPCBlbGVtZW50LnRhYmxlLmNvbHVtbnMubGVuZ3RoOyBpKyspDQoJCXsNCgkJCXZh
ciBvQ29sdW1uID0gZWxlbWVudC50YWJsZS5jb2x1bW5zW2ldOw0KLy8JCQlpZiAoZ2V0Q29sdW1u
VHlwZUlzU3VwcHJlc3NlZChvQ29sdW1uLnR5cGVOYW1lKSkgLy8gZmFsc2UNCi8vCQkJCWNvbnRp
bnVlOw0KCQkJDQoJCQl2YXIgb0Zsb3dURCA9IHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdURCcpOw0KDQoJCQlvRmxvd1RELmNsYXNzTmFtZSA9ICdhcWRzX2NhcHRpb24nOw0KCQkJb0Zs
b3dURC5yZWFsVEQgPSBvQ29sdW1uLnJlYWxURDsNCgkJCW9GbG93VEQuY29sdW1uID0gb0NvbHVt
bjsNCgkJCW9GbG93VEQubm9XcmFwID0gdHJ1ZTsNCg0KCQkJZWxlbWVudC5tX0NhcHRpb25zLnB1
c2gob0Zsb3dURCk7DQoJCQlvRmxvd1RSLmFwcGVuZENoaWxkKG9GbG93VEQpOw0KDQoJCQlvQ29s
dW1uLm1fY2FwdGlvbiA9IG9GbG93VEQ7DQoJCQkvLyBjYXB0aW9ucyBjcmVhdGlvbiBtb3ZlZCBm
cm9tIGhlcmUNCgkJfQ0KDQoJCXRhYmxlX1VwZGF0ZUNvbHVtbnNQb3NpdGlvbihlbGVtZW50KTsN
Cgl9DQp9DQoNCmZ1bmN0aW9uIHRhYmxlX1VwZGF0ZUNvbHVtbnNQb3NpdGlvbihlbGVtZW50KQ0K
ew0KCXZhciBvVGFibGVQYW5lID0gZWxlbWVudC5yb290RGl2LnRhYmxlUGFuZTsNCglpZiAob1Rh
YmxlUGFuZSA9PSBudWxsKSByZXR1cm47DQoNCgl2YXIgb0Zsb3dEaXYgPSBvVGFibGVQYW5lLmxp
bmtlZERpdjsNCglpZiAob0Zsb3dEaXYgPT0gbnVsbCkgcmV0dXJuOw0KDQoJdmFyIF9kZWx0YSA9
IGNfSW5uZXJQYWRkaW5nIC0gMTsNCglpZiAoKG9UYWJsZVBhbmUuY2xpZW50SGVpZ2h0IC0gNikg
PCBvVGFibGVQYW5lLm1fZGF0YVRhYmxlLm9mZnNldEhlaWdodCkNCgkJX2RlbHRhICs9IDE4Ow0K
DQoJew0KCQlvRmxvd0Rpdi5zdHlsZS5sZWZ0ID0gKGdldFNjcmVlblgob1RhYmxlUGFuZSkgKyAy
KSArICJweCI7DQoJCW9GbG93RGl2LnN0eWxlLnRvcCA9IChnZXRTY3JlZW5ZKG9UYWJsZVBhbmUp
ICsgMSkgKyAicHgiOw0KCQlvRmxvd0Rpdi5zdHlsZS53aWR0aCA9IChvVGFibGVQYW5lLm9mZnNl
dFdpZHRoIC0gX2RlbHRhKSArICJweCI7DQoJfQ0KDQoJdmFyIG5lc3RlZE9iamVjdCA9IGVsZW1l
bnQubV9OZXN0ZWRPYmplY3Q7DQoJaWYgKG5lc3RlZE9iamVjdCAhPSBudWxsICYmIG5lc3RlZE9i
amVjdC5wb3B1cERpdiAhPSBudWxsKQ0KCXsNCgkJbmVzdGVkT2JqZWN0LnBvcHVwRGl2LnN0eWxl
LmxlZnQgPSBnZXRTY3JlZW5YKG5lc3RlZE9iamVjdCkgKyAicHgiOw0KCQluZXN0ZWRPYmplY3Qu
cG9wdXBEaXYuc3R5bGUudG9wICA9IGdldFNjcmVlblkobmVzdGVkT2JqZWN0KSArICJweCI7DQoJ
CWlmIChuZXN0ZWRPYmplY3QucG9wdXBJRnJhbWUgIT0gbnVsbCkNCgkJew0KCQkJbmVzdGVkT2Jq
ZWN0LnBvcHVwSUZyYW1lLnN0eWxlLmxlZnQgPSBuZXN0ZWRPYmplY3QucG9wdXBEaXYuc3R5bGUu
bGVmdDsNCgkJCW5lc3RlZE9iamVjdC5wb3B1cElGcmFtZS5zdHlsZS50b3AgPSBuZXN0ZWRPYmpl
Y3QucG9wdXBEaXYuc3R5bGUudG9wOw0KCQl9DQoJfQ0KfQ0KDQp2YXIgcGFnZU92ZXJsYXkgPSBu
dWxsOw0KdmFyIGhTcGxpdHRlciA9IG51bGw7DQp2YXIgdlNwbGl0dGVyID0gbnVsbDsNCnZhciBj
dXJyZW50U3BsaXR0ZXIgPSBudWxsOw0KdmFyIGRldGFjaGVkU3BsaXR0ZXIgPSBudWxsOw0KdmFy
IHNwbGl0dGVkRWxlbWVudCA9IG51bGw7DQp2YXIgc3BsaXR0ZWRUYWJsZUJvZHkgPSBudWxsOw0K
dmFyIHNwbGl0dGVkRWxlbWVudE9mZnNldCA9IDA7DQp2YXIgc3BsaXR0ZWRFbGVtZW50U2l6ZSA9
IDA7DQp2YXIgc3BsaXR0ZXJQb3NpdGlvbiA9ICIwcHgiOw0KdmFyIGlzSG9yaXpvbnRhbFNwbGl0
dGVyID0gZmFsc2U7DQp2YXIgdGFibGVfc3BsaXR0ZXJzID0gbmV3IEFycmF5KCk7DQoNCmluaXRp
YWxpemVTcGxpdHRlcnMoKTsNCg0KZnVuY3Rpb24gaW5pdGlhbGl6ZVNwbGl0dGVycygpDQp7DQoJ
cGFnZU92ZXJsYXkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJESVYiKTsNCglwYWdlT3Zlcmxh
eS5zdHlsZS5wb3NpdGlvbiA9ICJhYnNvbHV0ZSI7DQoJcGFnZU92ZXJsYXkuc3R5bGUubGVmdCA9
ICIwcHgiOw0KCXBhZ2VPdmVybGF5LnN0eWxlLnRvcCA9ICIwcHgiOw0KCXBhZ2VPdmVybGF5LnN0
eWxlLndpZHRoID0gIjUwMDBweCI7DQoJcGFnZU92ZXJsYXkuc3R5bGUuaGVpZ2h0ID0gIjUwMDBw
eCI7DQoJcGFnZU92ZXJsYXkuc3R5bGUuekluZGV4ID0gMjAwMDsNCglwYWdlT3ZlcmxheS5zdHls
ZS5kaXNwbGF5ID0gIm5vbmUiOw0KCWRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocGFnZU92ZXJs
YXkpOw0KCQ0KCXRyeQ0KCXsNCgkJcGFnZU92ZXJsYXkuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vt
b3ZlIiwgb25QYWdlTW91c2VNb3ZlLCBmYWxzZSk7DQoJCXBhZ2VPdmVybGF5LmFkZEV2ZW50TGlz
dGVuZXIoIm1vdXNldXAiLCBvblBhZ2VNb3VzZVVwLCBmYWxzZSk7DQoJfQ0KCWNhdGNoIChleCkg
e30NCg0KCWRvY3VtZW50LmJvZHkub25tb3VzZW1vdmUgPSBvblBhZ2VNb3VzZU1vdmU7DQoJZG9j
dW1lbnQuYm9keS5vbm1vdXNldXAgPSBvblBhZ2VNb3VzZVVwOw0KDQoJaFNwbGl0dGVyID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiRElWIik7DQoJZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCho
U3BsaXR0ZXIpOw0KCWhTcGxpdHRlci5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOw0KCWhTcGxpdHRl
ci5zdHlsZS5wb3NpdGlvbiA9ICJhYnNvbHV0ZSI7DQoJaFNwbGl0dGVyLnN0eWxlLmhlaWdodCA9
IGNfc3BsaXR0ZXJTaXplICsgInB4IjsNCgloU3BsaXR0ZXIuc3R5bGUuekluZGV4ID0gMjAwMTsN
CgloU3BsaXR0ZXIuaW5uZXJIVE1MID0gIjx0YWJsZSBib3JkZXI9JzAnIGNlbGxwYWRkaW5nPScw
JyBjZWxsc3BhY2luZz0nMCcgd2lkdGg9JzEwMCUnIHN0eWxlPSdoZWlnaHQ6IiArIGNfc3BsaXR0
ZXJTaXplICsgInB4Jz4iICsNCgkJIjx0cj48dGQgc3R5bGU9J2JhY2tncm91bmQtY29sb3I6IzMw
ODBDMDsgaGVpZ2h0OjFweDsnPjwvdGQ+PC90cj4iICsNCgkJIjx0cj48dGQgc3R5bGU9J2JhY2tn
cm91bmQtY29sb3I6IzQwQTBGMDsgaGVpZ2h0OjFweDsnPjwvdGQ+PC90cj4iICsNCgkJIjx0cj48
dGQgc3R5bGU9J2JhY2tncm91bmQtY29sb3I6IzMwODBDMDsgaGVpZ2h0OjFweDsnPjwvdGQ+PC90
cj4iICsNCgkJIjx0cj48dGQgc3R5bGU9J2JhY2tncm91bmQtY29sb3I6IzIwNjA5MDsgaGVpZ2h0
OjFweDsnPjwvdGQ+PC90cj4iICsNCgkJIjwvdGFibGU+IjsNCg0KCXZTcGxpdHRlciA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpOw0KCWRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodlNw
bGl0dGVyKTsNCgl2U3BsaXR0ZXIuc3R5bGUuZGlzcGxheSA9ICJub25lIjsNCgl2U3BsaXR0ZXIu
c3R5bGUucG9zaXRpb24gPSAiYWJzb2x1dGUiOw0KCXZTcGxpdHRlci5zdHlsZS53aWR0aCA9IGNf
c3BsaXR0ZXJTaXplICsgInB4IjsNCgl2U3BsaXR0ZXIuc3R5bGUuekluZGV4ID0gMjAwMTsNCgl2
U3BsaXR0ZXIuaW5uZXJIVE1MID0gIjx0YWJsZSBib3JkZXI9JzAnIGNlbGxwYWRkaW5nPScwJyBj
ZWxsc3BhY2luZz0nMCcgaGVpZ2h0PScxMDAlJyBzdHlsZT0nd2lkdGg6IiArIGNfc3BsaXR0ZXJT
aXplICsgInB4Jz48dHI+IiArDQoJCSI8dGQgc3R5bGU9J2JhY2tncm91bmQtY29sb3I6IzMwODBD
MDsgd2lkdGg6MXB4Oyc+PC90ZD4iICsNCgkJIjx0ZCBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjoj
NDBBMEYwOyB3aWR0aDoxcHg7Jz48L3RkPiIgKw0KCQkiPHRkIHN0eWxlPSdiYWNrZ3JvdW5kLWNv
bG9yOiMzMDgwQzA7IHdpZHRoOjFweDsnPjwvdGQ+IiArDQoJCSI8dGQgc3R5bGU9J2JhY2tncm91
bmQtY29sb3I6IzIwNjA5MDsgd2lkdGg6MXB4Oyc+PC90ZD4iICsNCgkJIjwvdHI+PC90YWJsZT4i
Ow0KfQ0KDQpmdW5jdGlvbiBnZXRUYWJsZVBhdGgodGFibGVPYmopDQp7DQoJdmFyIHBhdGggPSAi
IjsNCgl3aGlsZSAodGFibGVPYmopDQoJew0KCQlwYXRoICs9ICIvIiArIHRhYmxlT2JqLm5hbWU7
DQoJCXRhYmxlT2JqID0gdGFibGVPYmoucGFyZW50Ow0KCX0NCglyZXR1cm4gcGF0aDsNCn0NCg0K
ZnVuY3Rpb24gc2F2ZURldGFpbHNTcGxpdHRlclBvcyhlbGVtZW50LCBob3Jpem9udGFsLCBjdXJy
ZW50UGVyY2VudCkNCnsNCgl2YXIgcGF0aCA9IGdldFRhYmxlUGF0aChlbGVtZW50LnRhYmxlKTsN
Cg0KCWZvciAodmFyIGkgPSAwOyBpIDwgdGFibGVfc3BsaXR0ZXJzLmxlbmd0aDsgaSsrKQ0KCQlp
ZiAodGFibGVfc3BsaXR0ZXJzW2ldLmRhdGFQYXRoID09IHBhdGggJiYNCgkJCQl0YWJsZV9zcGxp
dHRlcnNbaV0uaXNIb3Jpem9udGFsID09IGhvcml6b250YWwpDQoJCXsNCgkJCXRhYmxlX3NwbGl0
dGVyc1tpXS5wZXJjZW50ID0gY3VycmVudFBlcmNlbnQ7DQoJCQlyZXR1cm47DQoJCX0NCg0KDQoJ
dGFibGVfc3BsaXR0ZXJzW3RhYmxlX3NwbGl0dGVycy5sZW5ndGhdID0geyBkYXRhUGF0aDogcGF0
aCwgaXNIb3Jpem9udGFsOiBob3Jpem9udGFsLCBwZXJjZW50OiBjdXJyZW50UGVyY2VudCB9Ow0K
fQ0KDQpmdW5jdGlvbiBnZXRTYXZlZERldGFpbHNTcGxpdHRlclBvcyhlbGVtZW50LCBob3Jpem9u
dGFsLCBjdXJyZW50UGVyY2VudCkNCnsNCgl2YXIgcGF0aCA9IGdldFRhYmxlUGF0aChlbGVtZW50
LnRhYmxlKTsNCg0KCWZvciAodmFyIGkgPSAwOyBpIDwgdGFibGVfc3BsaXR0ZXJzLmxlbmd0aDsg
aSsrKQ0KCQlpZiAodGFibGVfc3BsaXR0ZXJzW2ldLmRhdGFQYXRoID09IHBhdGggJiYNCgkJCQl0
YWJsZV9zcGxpdHRlcnNbaV0uaXNIb3Jpem9udGFsID09IGhvcml6b250YWwpDQoJCQlyZXR1cm4g
dGFibGVfc3BsaXR0ZXJzW2ldLnBlcmNlbnQ7DQoNCglyZXR1cm4gY3VycmVudFBlcmNlbnQ7DQp9
DQoNCmZ1bmN0aW9uIHNwbGl0dGVyTW91c2VEb3duKGUsIHNwbGl0dGVyLCBob3Jpem9udGFsKQ0K
ew0KCWlzSG9yaXpvbnRhbFNwbGl0dGVyID0gaG9yaXpvbnRhbDsNCgljdXJyZW50U3BsaXR0ZXIg
PSBzcGxpdHRlcjsNCglzcGxpdHRlZEVsZW1lbnQgPSBzcGxpdHRlci5wYXJlbnROb2RlLnRhYmxl
RWxlbWVudDsNCglzcGxpdHRlZFRhYmxlQm9keSA9IHNwbGl0dGVkRWxlbWVudC5yb290VGFibGUu
dEJvZGllc1swXTsNCg0KCWlmIChob3Jpem9udGFsKQ0KCXsNCgkJZGV0YWNoZWRTcGxpdHRlciA9
IGhTcGxpdHRlcjsNCgkJZGV0YWNoZWRTcGxpdHRlci5zdHlsZS53aWR0aCA9IHNwbGl0dGVyLm9m
ZnNldFdpZHRoICsgInB4IjsNCgkJc3BsaXR0ZWRFbGVtZW50T2Zmc2V0ID0gZ2V0U2NyZWVuWShz
cGxpdHRlZFRhYmxlQm9keSk7DQoJCXNwbGl0dGVkRWxlbWVudFNpemUgPSBzcGxpdHRlZFRhYmxl
Qm9keS5vZmZzZXRIZWlnaHQ7DQoJfQ0KCWVsc2UNCgl7DQoJCWRldGFjaGVkU3BsaXR0ZXIgPSB2
U3BsaXR0ZXI7DQoJCWRldGFjaGVkU3BsaXR0ZXIuc3R5bGUuaGVpZ2h0ID0gc3BsaXR0ZXIub2Zm
c2V0SGVpZ2h0ICsgInB4IjsNCgkJc3BsaXR0ZWRFbGVtZW50T2Zmc2V0ID0gZ2V0U2NyZWVuWChz
cGxpdHRlZFRhYmxlQm9keSkgLSAxOw0KCQlzcGxpdHRlZEVsZW1lbnRTaXplID0gc3BsaXR0ZWRU
YWJsZUJvZHkub2Zmc2V0V2lkdGg7DQoJfQ0KDQoJc3BsaXR0ZXJNaW5Qb3MgPSBzcGxpdHRlZEVs
ZW1lbnRPZmZzZXQgKyAoaG9yaXpvbnRhbCA/IGNfbWluSGVpZ2h0IDogY19taW5XaWR0aCk7DQoJ
c3BsaXR0ZXJNYXhQb3MgPSBzcGxpdHRlZEVsZW1lbnRPZmZzZXQgKyBzcGxpdHRlZEVsZW1lbnRT
aXplIC0gKGhvcml6b250YWwgPyBjX21pbkhlaWdodCA6IGNfbWluV2lkdGgpIC0gY19zcGxpdHRl
clNpemU7DQoNCglwYWdlT3ZlcmxheS5zdHlsZS5kaXNwbGF5ID0gIiI7DQoNCglkZXRhY2hlZFNw
bGl0dGVyLnN0eWxlLmxlZnQgPSBnZXRTY3JlZW5YKHNwbGl0dGVyKSArICJweCI7DQoJZGV0YWNo
ZWRTcGxpdHRlci5zdHlsZS50b3AgPSBnZXRTY3JlZW5ZKHNwbGl0dGVyKSArICJweCI7DQoJZGV0
YWNoZWRTcGxpdHRlci5zdHlsZS5kaXNwbGF5ID0gIiI7DQoNCglzcGxpdHRlclBvc2l0aW9uID0g
KGhvcml6b250YWwgPyBkZXRhY2hlZFNwbGl0dGVyLnN0eWxlLnRvcCA6IGRldGFjaGVkU3BsaXR0
ZXIuc3R5bGUubGVmdCk7DQoNCgl0cnkgeyBlLnByZXZlbnREZWZhdWx0KCk7IH0gY2F0Y2ggKGV4
KSB7fQ0KfQ0KDQpmdW5jdGlvbiBvblBhZ2VNb3VzZU1vdmUoZSkNCnsNCglpZiAoIWN1cnJlbnRT
cGxpdHRlcikgcmV0dXJuOw0KDQoJaWYgKCFlKSBlID0gd2luZG93LmV2ZW50Ow0KDQoJdmFyIHBv
cyA9IChpc0hvcml6b250YWxTcGxpdHRlciA/IGUuY2xpZW50WSA6IGUuY2xpZW50WCk7DQoJaWYg
KHBvcyA8IHNwbGl0dGVyTWluUG9zKSBwb3MgPSBzcGxpdHRlck1pblBvczsNCgllbHNlIGlmIChw
b3MgPiBzcGxpdHRlck1heFBvcykgcG9zID0gc3BsaXR0ZXJNYXhQb3M7DQoNCglpZiAoaXNIb3Jp
em9udGFsU3BsaXR0ZXIpDQoJCWRldGFjaGVkU3BsaXR0ZXIuc3R5bGUudG9wID0gcG9zIC0gMiAr
ICJweCI7DQoJZWxzZQ0KCQlkZXRhY2hlZFNwbGl0dGVyLnN0eWxlLmxlZnQgPSBwb3MgLSAyICsg
InB4IjsNCg0KCXJldHVybiBmYWxzZTsgLy8gZm9yIElFDQp9DQoNCmZ1bmN0aW9uIG9uUGFnZU1v
dXNlVXAoKQ0Kew0KCWlmICghY3VycmVudFNwbGl0dGVyKSByZXR1cm47DQoNCglwYWdlT3Zlcmxh
eS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOw0KDQoJY3VycmVudFNwbGl0dGVyID0gbnVsbDsNCg0K
CXZhciBuZXdQb3MgPSAoaXNIb3Jpem9udGFsU3BsaXR0ZXIgPyBkZXRhY2hlZFNwbGl0dGVyLnN0
eWxlLnRvcCA6IGRldGFjaGVkU3BsaXR0ZXIuc3R5bGUubGVmdCk7DQoNCglpZiAoc3BsaXR0ZXJQ
b3NpdGlvbiA9PSBuZXdQb3MpDQoJew0KCQlkZXRhY2hlZFNwbGl0dGVyLnN0eWxlLmRpc3BsYXkg
PSAibm9uZSI7DQoJCXJldHVybjsNCgl9DQoNCgluZXdQb3MgPSBwYXJzZUludChuZXdQb3MpOw0K
CXZhciBuZXdQZXJjZW50ID0gKG5ld1BvcyAtIHNwbGl0dGVkRWxlbWVudE9mZnNldCkgLyBzcGxp
dHRlZEVsZW1lbnRTaXplOw0KDQoJaWYgKGlzSG9yaXpvbnRhbFNwbGl0dGVyKQ0KCQlzcGxpdHRl
ZEVsZW1lbnQucm9vdERpdi5tX2hfcGVyY2VudCA9IG5ld1BlcmNlbnQ7DQoJZWxzZQ0KCQlzcGxp
dHRlZEVsZW1lbnQucm9vdERpdi5tX3dfcGVyY2VudCA9IG5ld1BlcmNlbnQ7DQoNCglpZiAoc3Bs
aXR0ZWRFbGVtZW50LmRldGFpbHNEaXYgJiYgc3BsaXR0ZWRFbGVtZW50LmRldGFpbHNIZWFkICYm
IHNwbGl0dGVkRWxlbWVudC5kZXRhaWxzVmlzaWJsZSA9PSBmYWxzZSkNCgkJZGV0YWlsc0hlYWRU
b2dnbGUoc3BsaXR0ZWRFbGVtZW50KTsNCg0KCXNhdmVEZXRhaWxzU3BsaXR0ZXJQb3Moc3BsaXR0
ZWRFbGVtZW50LCBpc0hvcml6b250YWxTcGxpdHRlciwgbmV3UGVyY2VudCk7DQoJZG9XaW5kb3dS
ZXNpemUoKTsNCg0KCWRldGFjaGVkU3BsaXR0ZXIuc3R5bGUuZGlzcGxheSA9ICJub25lIjsNCn0N
Cg0KZnVuY3Rpb24gdGFibGVfQ3JlYXRlUm9vdEZyYW1lKGVsZW1lbnQpDQp7DQoJdmFyIGhhc05l
c3RlZERhdGEgPSBnZXRIYXNOZXN0ZWREYXRhKGVsZW1lbnQpOw0KCXZhciBuZXN0ZWREYXRhSXNQ
bGFpbiA9IGdldE5lc3RlZERhdGFJc1BsYWluKGVsZW1lbnQpOw0KCXZhciBjb2xTcGFuID0gMiAr
IChjX1Nob3dTcGxpdHRlcnMgPyAxIDogMCk7DQoNCgkvLyBDcmVhdGUgYSByb290IHRhYmxlDQoJ
dmFyIG9UYWJsZSA9IHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJUQUJMRSIpOw0KCWVs
ZW1lbnQuYXBwZW5kQ2hpbGQob1RhYmxlKTsNCgllbGVtZW50LnJvb3RUYWJsZSA9IG9UYWJsZTsN
CgllbGVtZW50LmZpbHRlcmVkID0gZmFsc2U7DQoNCglpZiAoZWxlbWVudC5zaG93Q2FwdGlvbiAh
PSBmYWxzZSkNCgl7DQoJCW9UYWJsZS5jbGFzc05hbWUgPSAic2luZ2xlRnJhbWUiOw0KCX0NCg0K
CW9UYWJsZS5jZWxsUGFkZGluZyA9IDA7DQoJb1RhYmxlLmNlbGxTcGFjaW5nID0gMDsNCglvVGFi
bGUuYm9yZGVyID0gMDsNCg0KCW9UYWJsZS5zdHlsZS53aWR0aCA9IGVsZW1lbnQub2Zmc2V0V2lk
dGggKyAicHgiOw0KCW9UYWJsZS5zdHlsZS5oZWlnaHQgPSBlbGVtZW50Lm9mZnNldEhlaWdodCAr
ICJweCI7DQoJDQoJaWYgKGVsZW1lbnQuc2hvd0NhcHRpb24gIT0gZmFsc2UpDQoJew0KCQkvLyBD
cmVhdGUgYSB0YWJsZSBjYXB0aW9uDQoJCXZhciBvSGVhZCA9IHdpbmRvdy5kb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJUSEVBRCIpOw0KCQlvVGFibGUuYXBwZW5kQ2hpbGQob0hlYWQpOw0KCQkNCgkJ
dmFyIG9UUiA9IHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJUUiIpOw0KCQlvSGVhZC5h
cHBlbmRDaGlsZChvVFIpOw0KCQkNCgkJdmFyIG9URCA9IHdpbmRvdy5kb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJURCIpOw0KCQlvVEQuY29sU3BhbiA9IGNvbFNwYW47DQoJCW9UUi5hcHBlbmRDaGls
ZChvVEQpOw0KDQoJCW9URC5jbGFzc05hbWUgPSAiY2VsbENhcHRpb24iOyANCgkJb1RELmlubmVy
VGV4dCA9IGVsZW1lbnQudGFibGUuY2FwdGlvbjsNCgl9DQoNCgkvLyBDcmVhdGUgYSB0YWJsZSBi
b2R5DQoJdmFyIG9Cb2R5ID0gd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlRCT0RZIik7
DQoJb1RhYmxlLmFwcGVuZENoaWxkKG9Cb2R5KTsNCiAgICANCgl2YXIgb1RhYmxlVFIgPSB3aW5k
b3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiVFIiKTsNCglvQm9keS5hcHBlbmRDaGlsZChvVGFi
bGVUUik7DQoJDQoJb1REID0gd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlREIik7DQoJ
b1RELnN0eWxlLnZlcnRpY2FsQWxpZ24gPSAidG9wIjsNCg0KCXZhciBwZXJjZW50ID0gMTsNCg0K
Ly8JaWYgKGhhc05lc3RlZERhdGEgPT0gdHJ1ZSAmJiBuZXN0ZWREYXRhSXNQbGFpbiA9PSBmYWxz
ZSkNCglpZiAoZWxlbWVudC50YWJsZS5uZXN0ZWREYXRhQ291bnQgPiAwKQ0KCXsNCgkJcGVyY2Vu
dCA9IDEgLyAoZWxlbWVudC50YWJsZS5uZXN0ZWREYXRhQ291bnQgKyAxKTsNCgkJb1RELmNvbFNw
YW4gPSBjb2xTcGFuOw0KCX0NCglvVGFibGVUUi5hcHBlbmRDaGlsZChvVEQpOw0KDQoJLy8gQ3Jl
YXRlIGFuIGlubmVyIHBsYWNlaG9sZGVyDQoJdmFyIG9EaXYgPSB3aW5kb3cuZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiRElWIik7DQoJaWYgKCFlbGVtZW50Lm5vRnJhbWUpDQoJCW9EaXYuc3R5bGUu
cGFkZGluZyA9IGNfSW5uZXJQYWRkaW5nICsgInB4IjsNCglvRGl2LnN0eWxlLndpZHRoID0gIjEw
MCUiOw0KCW9EaXYuc3R5bGUuaGVpZ2h0ID0gIjEwMCUiOw0KCW9EaXYuaWQgPSAicm9vdGRpdiIg
KyBlbGVtZW50LnRhYmxlLm5lc3RlZERhdGFDb3VudDsNCglvVEQuYXBwZW5kQ2hpbGQob0Rpdik7
DQoNCgllbGVtZW50LnJvb3REaXYgPSBvRGl2Ow0KDQoJZWxlbWVudC5yb290RGl2Lm1faF9wZXJj
ZW50ID0gcGVyY2VudDsNCgllbGVtZW50LnJvb3REaXYubV93X3BlcmNlbnQgPSAxOw0KDQoJaWYg
KGhhc05lc3RlZERhdGEgPT0gdHJ1ZSkNCgl7DQoJCWlmIChlbGVtZW50LmRldGFpbHNEaXYgPT0g
bnVsbCkNCgkJew0KCQkJLy8gQ3JlYXRlIGRldGFpbHMgcGxhY2Vob2xkZXINCgkJCWlmIChuZXN0
ZWREYXRhSXNQbGFpbiA9PSBmYWxzZSkNCgkJCXsNCgkJCQlpZiAoY19TaG93U3BsaXR0ZXJzKQ0K
CQkJCXsNCgkJCQkJb1RSID0gd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlRSIik7DQoJ
CQkJCW9Cb2R5LmFwcGVuZENoaWxkKG9UUik7DQoJCQkJCW9URCA9IHdpbmRvdy5kb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJURCIpOw0KCQkJCQlvVFIuYXBwZW5kQ2hpbGQob1REKTsNCgkJCQkJb1RE
LmlubmVySFRNTCA9ICI8dGFibGUgY2xhc3M9J25vcHJpbnQnIGJvcmRlcj0nMCcgY2VsbHBhZGRp
bmc9JzAnIGNlbGxzcGFjaW5nPScwJyB3aWR0aD0nMTAwJScgaGVpZ2h0PSciICsgY19zcGxpdHRl
clNpemUgKyAicHgnIG9ubW91c2Vkb3duPSdzcGxpdHRlck1vdXNlRG93bihldmVudCwgdGhpcywg
dHJ1ZSknPiIgKw0KCQkJCQkJIjx0cj48dGQgc3R5bGU9J2JhY2tncm91bmQtY29sb3I6I0JCQkJC
QjsgaGVpZ2h0OjFweDsnPjwvdGQ+PC90cj4iICsNCgkJCQkJCSI8dHI+PHRkIHN0eWxlPSdiYWNr
Z3JvdW5kLWNvbG9yOiNDQ0NDQ0M7IGhlaWdodDoxcHg7Jz48L3RkPjwvdHI+IiArDQoJCQkJCQki
PHRyPjx0ZCBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjojQkJCQkJCOyBoZWlnaHQ6MXB4Oyc+PC90
ZD48L3RyPiIgKw0KCQkJCQkJIjx0cj48dGQgc3R5bGU9J2JhY2tncm91bmQtY29sb3I6I0FBQUFB
QTsgaGVpZ2h0OjFweDsnPjwvdGQ+PC90cj4iICsNCgkJCQkJCSI8L3RhYmxlPiI7DQoJCQkJCW9U
RC5zdHlsZS5jdXJzb3IgPSAibi1yZXNpemUiOw0KCQkJCQlvVEQudGFibGVFbGVtZW50ID0gZWxl
bWVudDsNCgkJCQkJb1RELmNvbFNwYW4gPSBjb2xTcGFuOw0KCQkJCQllbGVtZW50LnNwbGl0dGVy
ID0gb1REOw0KCQkJCX0NCg0KCQkJCW9UUiA9IHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJUUiIpOw0KCQkJCW9UUi5jbGFzc05hbWUgPSAibm9wcmludCI7DQoJCQkJb0JvZHkuYXBwZW5k
Q2hpbGQob1RSKTsNCgkJCX0gZWxzZSB7DQoJCQkJb1RSID0gb1RhYmxlVFI7DQoNCgkJCQlpZiAo
Y19TaG93U3BsaXR0ZXJzKQ0KCQkJCXsNCgkJCQkJb1REID0gd2luZG93LmRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoIlREIik7DQoJCQkJCW9UUi5hcHBlbmRDaGlsZChvVEQpOw0KCQkJCQlvVEQuaW5u
ZXJIVE1MID0gIjx0YWJsZSBjbGFzcz0nbm9wcmludCcgYm9yZGVyPScwJyBjZWxscGFkZGluZz0n
MCcgY2VsbHNwYWNpbmc9JzAnIGhlaWdodD0nMTAwJScgd2lkdGg9JyIgKyBjX3NwbGl0dGVyU2l6
ZSArICJweCcgIG9ubW91c2Vkb3duPSdzcGxpdHRlck1vdXNlRG93bihldmVudCwgdGhpcywgZmFs
c2UpJz48dHI+IiArDQoJCQkJCQkiPHRkIHN0eWxlPSdiYWNrZ3JvdW5kLWNvbG9yOiNCQkJCQkI7
IHdpZHRoOjFweDsnPjwvdGQ+IiArDQoJCQkJCQkiPHRkIHN0eWxlPSdiYWNrZ3JvdW5kLWNvbG9y
OiNDQ0NDQ0M7IHdpZHRoOjFweDsnPjwvdGQ+IiArDQoJCQkJCQkiPHRkIHN0eWxlPSdiYWNrZ3Jv
dW5kLWNvbG9yOiNCQkJCQkI7IHdpZHRoOjFweDsnPjwvdGQ+IiArDQoJCQkJCQkiPHRkIHN0eWxl
PSdiYWNrZ3JvdW5kLWNvbG9yOiNBQUFBQUE7IHdpZHRoOjFweDsnPjwvdGQ+IiArDQoJCQkJCQki
PC90cj48L3RhYmxlPiI7DQoJCQkJCW9URC5zdHlsZS5jdXJzb3IgPSAiZS1yZXNpemUiOw0KCQkJ
CQlvVEQudGFibGVFbGVtZW50ID0gZWxlbWVudDsNCgkJCQkJZWxlbWVudC5zcGxpdHRlciA9IG9U
RDsNCgkJCQl9DQoJCQl9DQoJCQkNCgkJCW9URCA9IHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJURCIpOw0KCQkJaWYgKG5lc3RlZERhdGFJc1BsYWluKSB7IA0KCQkJCW9URC53aWR0aCA9
ICIzMCUiOw0KCQkJCW9URC5zdHlsZS5wYWRkaW5nID0gY19Jbm5lclBhZGRpbmcgKyAicHgiOw0K
CQkJCWVsZW1lbnQucm9vdERpdi5tX3dfcGVyY2VudCA9IGdldFNhdmVkRGV0YWlsc1NwbGl0dGVy
UG9zKGVsZW1lbnQsIGZhbHNlLCAwLjcpOw0KDQoJCQkJdmFyIG9EaXZIZWFkID0gd2luZG93LmRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpOw0KCQkJCW9EaXZIZWFkLmNsYXNzTmFtZSA9ICJz
aW5nbGVGcmFtZSI7DQoJCQkJb0RpdkhlYWQuc3R5bGUud2lkdGggPSAiMTAwJSI7DQoJCQkJb0Rp
dkhlYWQuc3R5bGUuaGVpZ2h0ID0gIHRyZWVIZWFkSGVpZ2h0ICsgInB4IjsNCgkJCQlvRGl2SGVh
ZC5zdHlsZS5ib3JkZXJCb3R0b20gPSAiMHB4IjsNCgkJCQlvRGl2SGVhZC5tX2VsZW1lbnQgPSBl
bGVtZW50Ow0KCQkJCW9EaXZIZWFkLmlubmVySFRNTCA9ICI8ZGl2IGNsYXNzPSdjZWxsQ2FwdGlv
bicgc3R5bGU9J292ZXJmbG93OmhpZGRlbjsnPjxkaXYgc3R5bGU9J2Zsb2F0OmxlZnQ7IHdoaXRl
LXNwYWNlOm5vd3JhcDsnPkV4dGVuZGVkIEluZm9ybWF0aW9uPC9kaXY+IiArIA0KCQkJCQkiPGlt
ZyBzcmM9J251bGwuZ2lmJyBjbGFzcz0naWNvbiBpY29uLXNob3cnIG9ubW91c2Vtb3ZlPSd0aGlz
LmNsYXNzTmFtZT1cImljb24gaWNvbi1zaG93MVwiJyBvbm1vdXNlb3V0PSd0aGlzLmNsYXNzTmFt
ZT1cImljb24gaWNvbi1zaG93XCInICIgKw0KCQkJCQkic3R5bGU9J2Zsb2F0OnJpZ2h0OyBtYXJn
aW46MXB4IDNweCAzcHggMXB4OyBjdXJzb3I6cG9pbnRlcjsnIG9uY2xpY2s9J2RldGFpbHNIZWFk
QnRuQ2xpY2sodGhpcyknIGFsdD0nSGlkZSc+PC9kaXY+IjsNCgkJCQlvVEQuYXBwZW5kQ2hpbGQo
b0RpdkhlYWQpOw0KDQoJCQkJdmFyIG9EaXZIZWFkMiA9IHdpbmRvdy5kb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJESVYiKTsNCgkJCQlvRGl2SGVhZDIuY2xhc3NOYW1lID0gInNpbmdsZUZyYW1lIjsN
CgkJCQlvRGl2SGVhZDIuc3R5bGUuZGlzcGxheSA9ICJub25lIjsNCgkJCQlvRGl2SGVhZDIuc3R5
bGUud2lkdGggPSB0cmVlSGVhZFdpZHRoICsgInB4IjsNCgkJCQlvRGl2SGVhZDIuc3R5bGUuaGVp
Z2h0ID0gICIxMDAlIjsNCgkJCQlvRGl2SGVhZDIubV9lbGVtZW50ID0gZWxlbWVudDsNCgkJCQlv
RGl2SGVhZDIuaW5uZXJIVE1MID0gIjxpbWcgc3JjPSdudWxsLmdpZicgY2xhc3M9J2ljb24gaWNv
bi1oaWRlJyBvbm1vdXNlbW92ZT0ndGhpcy5jbGFzc05hbWU9XCJpY29uIGljb24taGlkZTFcIicg
IiArDQoJCQkJCSJvbm1vdXNlb3V0PSd0aGlzLmNsYXNzTmFtZT1cImljb24gaWNvbi1oaWRlXCIn
IHN0eWxlPSdtYXJnaW46M3B4OyBjdXJzb3I6cG9pbnRlcjsnICIgKw0KCQkJCQkib25jbGljaz0n
ZGV0YWlsc0hlYWRCdG5DbGljayh0aGlzKScgYWx0PSdTaG93Jz48ZGl2IGNsYXNzPSdkZXRhaWxz
X2NhcHRpb25fdmVydGljYWwnPkV4dGVuZGVkIEluZm9ybWF0aW9uPC9kaXY+IjsNCgkJCQlvVEQu
YXBwZW5kQ2hpbGQob0RpdkhlYWQyKTsNCg0KCQkJCWVsZW1lbnQuZGV0YWlsc1Zpc2libGUgPSB0
cnVlOw0KCQkJCWVsZW1lbnQuZGV0YWlsc0hlYWQgPSBvRGl2SGVhZDsNCgkJCQllbGVtZW50LmRl
dGFpbHNIZWFkMiA9IG9EaXZIZWFkMjsNCgkJCX0gZWxzZSB7DQoJCQkJb1RELmNvbFNwYW4gPSBj
b2xTcGFuOw0KCQkJCWVsZW1lbnQuZGV0YWlsc0hlYWQgPSBudWxsOw0KCQkJfQ0KCQkJb1RELmNs
YXNzTmFtZSA9ICJkZXRhaWxzQm9keSBub3ByaW50IjsNCgkJCW9URC5zdHlsZS52ZXJ0aWNhbEFs
aWduID0gInRvcCI7DQoJCQlvVFIuYXBwZW5kQ2hpbGQob1REKTsNCg0KCQkJaWYgKCFuZXN0ZWRE
YXRhSXNQbGFpbikNCgkJCXsNCgkJCQlvRGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiRElW
Iik7DQoJCQkJb0Rpdi5pZCA9ICJkZXRhaWxzVGFic0Rpdl8iICsgb1RSLnVuaXF1ZUlEOw0KCQkJ
CW9EaXYuaW5uZXJUZXh0ID0gX25ic3A7DQoJCQkJLy9vRGl2LnN0eWxlLmhlaWdodCA9ICIyMXB4
IjsNCgkJCQlvVEQuYXBwZW5kQ2hpbGQob0Rpdik7DQoJCQkJZWxlbWVudC5kZXRhaWxzVGFic0Rp
diA9IG9EaXY7DQoJCQl9DQoJCSANCgkJCW9EaXYgPSB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiRElWIik7DQoJCQlpZiAobmVzdGVkRGF0YUlzUGxhaW4pIHsgb0Rpdi5jbGFzc05hbWUg
PSAic2luZ2xlRnJhbWUiOyBvRGl2LnN0eWxlLmJvcmRlclRvcCA9ICIwcHgiOyB9DQoJCQlvRGl2
LnN0eWxlLndpZHRoID0gKG5lc3RlZERhdGFJc1BsYWluID8gIjEwMCUiIDogIjEwMCUiKTsNCgkJ
CW9EaXYuc3R5bGUuaGVpZ2h0ID0gIjEwMCUiOw0KCQkJb0Rpdi5zdHlsZS5wYWRkaW5nID0gKG5l
c3RlZERhdGFJc1BsYWluID8gMCA6IGNfSW5uZXJQYWRkaW5nKSArICJweCI7DQoJCQlvRGl2LnN0
eWxlLm92ZXJmbG93ID0gImhpZGRlbiI7DQoJCQlvRGl2LnN0eWxlLmJhY2tncm91bmRDb2xvciA9
ICJ3aGl0ZSI7DQoJCQlvVEQuYXBwZW5kQ2hpbGQob0Rpdik7DQoNCgkJCWVsZW1lbnQuZGV0YWls
c0RpdiA9IG9EaXY7DQoJCQllbGVtZW50LmRldGFpbHNEaXYuaWQgPSAiZGV0YWlsc0RpdiIgKyBl
bGVtZW50LnRhYmxlLm5lc3RlZERhdGFDb3VudDsNCg0KCQkJdGFibGVfaW5pdGlhbGl6ZURldGFp
bHMoZWxlbWVudCk7DQoJCX0NCgl9IGVsc2Ugew0KDQoJCWVsZW1lbnQuZGV0YWlsc0RpdiA9IG51
bGw7DQoJfQ0KCQ0KCWVsZW1lbnQuZG9SZXNpemUgPSBmdW5jdGlvbihfV2lkdGgsIF9IZWlnaHQs
IGRldGFpbHNfV2lkdGgsIGRldGFpbHNfSGVpZ2h0KQ0KCXsNCgkJdmFyIHBhZDIgPSBjX0lubmVy
UGFkZGluZyAqIDI7DQoJCXZhciBzcGxpdHRlclNpemUgPSAoY19TaG93U3BsaXR0ZXJzID8gY19z
cGxpdHRlclNpemUgOiAwKTsNCg0KCQl2YXIgaDAgPSBfSGVpZ2h0Ow0KCQlpZiAodGhpcy5zaG93
Q2FwdGlvbikgaDAgLT0gMjE7DQoJCXZhciBoID0gaDA7DQoJCWlmICh0aGlzLnNob3dDYXB0aW9u
KSBoID0gTWF0aC5yb3VuZChoMCAqIHRoaXMucm9vdERpdi5tX2hfcGVyY2VudCk7DQoNCgkJdmFy
IGRXaWR0aCA9IDA7DQoJCXZhciBkSGVpZ2h0ID0gMDsNCg0KCQl2YXIgaGF2ZUhlYWQgPSB0aGlz
LmRldGFpbHNEaXYgJiYgdGhpcy5kZXRhaWxzSGVhZDsNCgkJdmFyIGhlYWRWaXNpYmxlID0gaGF2
ZUhlYWQgPyB0aGlzLmRldGFpbHNWaXNpYmxlIDogZmFsc2U7DQoJCXZhciBoZWFkSGVpZ2h0ID0g
aGVhZFZpc2libGUgPyB0aGlzLmRldGFpbHNIZWFkLm9mZnNldEhlaWdodCA6IDA7DQoNCgkJaWYg
KHRoaXMuc2hvd0NhcHRpb24gfHwgdGhpcy50YWJsZS5uZXN0ZWREYXRhQ291bnQgPT0gMCkNCgkJ
ew0KCQkJaWYgKHRoaXMudGFibGUubmVzdGVkRGF0YUNvdW50ID4gMCkNCgkJCXsNCgkJCQlkV2lk
dGggPSBfV2lkdGggLSAyOw0KCQkJCWRIZWlnaHQgPSBoMCAtIGggLSBzcGxpdHRlclNpemU7DQoJ
CQl9DQoNCgkJCWlmICh0aGlzLnRhYmxlLm5lc3RlZERhdGFDb3VudCA9PSAwICYmIHRoaXMuZGV0
YWlsc0RpdiAhPSBudWxsKQ0KCQkJew0KCQkJCWRXaWR0aCA9IE1hdGgucm91bmQoX1dpZHRoICog
KDEgLSBlbGVtZW50LnJvb3REaXYubV93X3BlcmNlbnQpKSAtIChoYXZlSGVhZCA/IHBhZDIgOiAw
KSAtIHNwbGl0dGVyU2l6ZTsNCgkJCQlkSGVpZ2h0ID0gaCAtIChoYXZlSGVhZCA/IHRyZWVIZWFk
SGVpZ2h0IC0gcGFkMiA6IDApOw0KCQkJfQ0KCQl9DQoJCWVsc2UNCgkJew0KCQkJZFdpZHRoID0g
ZGV0YWlsc19XaWR0aDsNCgkJCWRIZWlnaHQgPSBkZXRhaWxzX0hlaWdodDsNCgkJfQ0KDQoJCWRI
ZWlnaHQgLT0gKHRoaXMuZGV0YWlsc1RhYnNEaXYgPyB0aGlzLmRldGFpbHNUYWJzRGl2Lm9mZnNl
dEhlaWdodCA6IDApOw0KCQlpZiAoZEhlaWdodCA8IDIwKSBkSGVpZ2h0ID0gMjA7DQoNCgkJdmFy
IGRldGFpbHNXaWR0aCA9IGRXaWR0aCAtIChoYXZlSGVhZCA/IDIgOiBwYWQyKTsNCgkJdmFyIGRl
dGFpbHNIZWlnaHQgPSBkSGVpZ2h0IC0gKGhhdmVIZWFkID8gaGVhZEhlaWdodCArICh0aGlzLnRh
YmxlLm5lc3RlZERhdGFDb3VudCA/IDIgOiAxKSA6IHBhZDIpOw0KDQoJCWlmICh0aGlzLm1fTmVz
dGVkT2JqZWN0ICE9IG51bGwpDQoJCXsNCgkJCWlmICh0aGlzLm1fTmVzdGVkT2JqZWN0LmRvUmVz
aXplKQ0KCQkJCXRoaXMubV9OZXN0ZWRPYmplY3QuZG9SZXNpemUoZGV0YWlsc1dpZHRoLCBkZXRh
aWxzSGVpZ2h0KTsNCgkJfQ0KDQoJCWlmICh0aGlzLmRldGFpbHNEaXYpDQoJCXsNCgkJCWlmICh0
aGlzLmRldGFpbHNIZWFkKSB0aGlzLmRldGFpbHNIZWFkLnN0eWxlLndpZHRoID0gZFdpZHRoICsg
InB4IjsNCgkJCXRoaXMuZGV0YWlsc0Rpdi5zdHlsZS53aWR0aCA9IGRXaWR0aCArICJweCI7DQoJ
CQl0aGlzLmRldGFpbHNEaXYuc3R5bGUuaGVpZ2h0ID0gKGRIZWlnaHQgLSBoZWFkSGVpZ2h0KSAr
ICJweCI7DQoJCX0NCg0KCQl2YXIgcm9vdFdpZHRoID0gKCFoYXZlSGVhZCB8fCBoZWFkVmlzaWJs
ZSA/IE1hdGgucm91bmQoX1dpZHRoICogZWxlbWVudC5yb290RGl2Lm1fd19wZXJjZW50KSA6IF9X
aWR0aCAtIHRyZWVIZWFkV2lkdGggLSBwYWQyIC0gc3BsaXR0ZXJTaXplKTsNCgkJaWYgKCF0aGlz
Lm5vRnJhbWUpIHJvb3RXaWR0aCAtPSAyOw0KDQoJCWlmICh0aGlzLnJvb3REaXYudGFibGVQYW5l
KQ0KCQl7DQoJCQl0aGlzLnJvb3REaXYudGFibGVQYW5lLnN0eWxlLndpZHRoID0gKHJvb3RXaWR0
aCAtICh0aGlzLm5vRnJhbWUgPyAwIDogcGFkMikpICsgInB4IjsNCgkJCXRoaXMucm9vdERpdi50
YWJsZVBhbmUuc3R5bGUuaGVpZ2h0ID0gKGggLSAodGhpcy5ub0ZyYW1lID8gMCA6IHBhZDIpIC0g
KHRoaXMuZmlsdGVyZWQgPyAyMSA6IDApKSArICJweCI7DQoJCQkNCgkJCWlmICh0aGlzLnJvb3RE
aXYudGFibGVQYW5lLm1fZmlsdGVyRGl2KQ0KCQkJCWNhcHRpb25fc2V0RmlsdGVyUG9zaXRpb24o
dGhpcy5yb290RGl2LnRhYmxlUGFuZS5tX2ZpbHRlckRpdiwgdGhpcy5yb290RGl2LnRhYmxlUGFu
ZSk7DQoJCX0NCgkJdGhpcy5yb290RGl2LnN0eWxlLndpZHRoID0gcm9vdFdpZHRoICsgInB4IjsN
CgkJdGhpcy5yb290RGl2LnN0eWxlLmhlaWdodCA9IGggKyAicHgiOw0KDQoJCXRoaXMucm9vdFRh
YmxlLnN0eWxlLndpZHRoID0gX1dpZHRoICsgInB4IjsNCgkJdGhpcy5yb290VGFibGUuc3R5bGUu
aGVpZ2h0ID0gX0hlaWdodCArICJweCI7DQoNCgkJdGhpcy5zdHlsZS53aWR0aCA9IF9XaWR0aCAr
ICJweCI7DQoJCXRoaXMuc3R5bGUuaGVpZ2h0ID0gX0hlaWdodCArICJweCI7DQoNCgkJaWYgKHRo
aXMubV9OZXN0ZWRPYmplY3QgIT0gbnVsbCkNCgkJew0KCQkJaWYgKHRoaXMubV9OZXN0ZWRPYmpl
Y3QucG9wdXBEaXYgIT0gbnVsbCkNCgkJCXsNCgkJCQl0aGlzLm1fTmVzdGVkT2JqZWN0LnBvcHVw
RGl2LnN0eWxlLndpZHRoID0gZGV0YWlsc1dpZHRoICsgInB4IjsNCgkJCQlpZiAodGhpcy5tX05l
c3RlZE9iamVjdC5wb3B1cElGcmFtZSAhPSBudWxsKQ0KCQkJCQl0aGlzLm1fTmVzdGVkT2JqZWN0
LnBvcHVwSUZyYW1lLnN0eWxlLndpZHRoID0gZGV0YWlsc1dpZHRoICsgInB4IjsNCgkJCX0NCgkJ
fQ0KCX0NCgkNCgllbGVtZW50LmZpbmROZXh0RXJyb3IgPSBmdW5jdGlvbihmcm9tVG9wLCBzdGF0
dXNUZXh0KQ0KCXsNCgkJaWYgKCF0aGlzLnJvd0JvZHkgfHwgIXRoaXMudGFibGUgfHwgIXRoaXMu
dGFibGUudHlwZURlc2NyaXB0aW9uQ29sdW1uSW5kZXgpDQoJCQlyZXR1cm4gZmFsc2U7DQoNCgkJ
dmFyIGluc3BlY3RSb3dzID0gZnVuY3Rpb24ocm93cywgY29sdW1uX2luZGV4LCBmcm9tX3RvcCwg
ZnJvbV9yb3cpDQoJCXsNCgkJCXZhciBsZW4gPSByb3dzLmxlbmd0aDsNCgkJCXZhciByZXN1bHQg
PSAtMTsNCgkJCQ0KCQkJZm9yICh2YXIgaSA9IGZyb21fdG9wID8gMCA6IGZyb21fcm93OyBpIDwg
bGVuOyBpKyspDQoJCQl7DQoJCQkJdmFyIG9UUiA9IHJvd3NbaV07DQoJCQkJaWYgKG9UUi5jZWxs
RGF0YVtjb2x1bW5faW5kZXhdLmNlbGxWYWx1ZSA9PSBzdGF0dXNUZXh0KQ0KCQkJCXsNCgkJCQkJ
aWYgKCFvVFIub3BlbmVkICYmIG9UUi5tX3RyZWVJbWFnZSkNCgkJCQkJCW9UUi5tX3RyZWVJbWFn
ZS5jbGljaygpOw0KDQoJCQkJCXZhciBzdWJSb3dzID0gb1RSLnN1YlJvd3M7DQoJCQkJCWlmIChz
dWJSb3dzICYmIHN1YlJvd3MubGVuZ3RoKQ0KCQkJCQl7DQoJCQkJCQl2YXIgc3ViX3Jlc3VsdCA9
IGluc3BlY3RSb3dzKHN1YlJvd3MsIGNvbHVtbl9pbmRleCwgdHJ1ZSwgMCk7DQoJCQkJCQlpZiAo
c3ViX3Jlc3VsdCA+PSAwKQ0KCQkJCQkJCXJlc3VsdCA9IHN1Yl9yZXN1bHQ7DQoJCQkJCX0NCg0K
CQkJCQlpZiAoZnJvbV90b3AgfHwgaSA+IGZyb21fcm93KQ0KCQkJCQl7DQoJCQkJCQlpZiAocmVz
dWx0IDwgMCkNCgkJCQkJCQlyZXN1bHQgPSBvVFIucm93SW5kZXggLSAxOw0KCQkJCQkJYnJlYWs7
DQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoJCQlyZXR1cm4gcmVzdWx0Ow0KCQl9DQoJCQ0KCQl2YXIg
cm93cyA9IHRoaXMucm93Qm9keS5yb3dzOw0KCQl2YXIgZm91bmRSb3dJbmRleCA9IGluc3BlY3RS
b3dzKHJvd3MsIHRoaXMudGFibGUudHlwZURlc2NyaXB0aW9uQ29sdW1uSW5kZXggLSAxLCBmcm9t
VG9wLCB0aGlzLm1fYWN0aXZlUm93ID8gdGhpcy5tX2FjdGl2ZVJvdy5yb3dJbmRleCAtIDEgOiAw
KTsNCgkJaWYgKGZvdW5kUm93SW5kZXggPCAwKQ0KCQkJcmV0dXJuIGZhbHNlOw0KDQoJCWlmICgh
bV9hcnJvd0tleXNDYXB0dXJlZEJ5KQ0KCQkJbV9hcnJvd0tleXNDYXB0dXJlZEJ5ID0gdGhpczsN
Cg0KCQlyb3dzW2ZvdW5kUm93SW5kZXhdLnN0eWxlLmRpc3BsYXkgPSAiIjsgLy8gdG8gb3ZlcnJp
ZGUgZmlsdGVyDQoJCXRhYmxlX2FjdGl2YXRlUm93KHRoaXMsIGZvdW5kUm93SW5kZXgsIHRydWUp
Ow0KCQl2YXIgZWxlbWVudCA9IHRoaXM7DQoJCXdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uICgp
IHsgdGFibGVfcmVzaXplQ2FwdGlvbnMoZWxlbWVudCk7IH0sIDUpOw0KCQlyZXR1cm4gdHJ1ZTsN
Cgl9DQoNCglpZiAoZWxlbWVudC5kZXRhaWxzRGl2ICE9IG51bGwpDQoJCWVsZW1lbnQuZG9SZXNp
emUoZWxlbWVudC5vZmZzZXRXaWR0aCwgZWxlbWVudC5vZmZzZXRIZWlnaHQsIGVsZW1lbnQuZGV0
YWlsc0Rpdi5vZmZzZXRXaWR0aCwgZWxlbWVudC5kZXRhaWxzRGl2Lm9mZnNldEhlaWdodCk7DQoJ
ZWxzZQ0KCQllbGVtZW50LmRvUmVzaXplKGVsZW1lbnQub2Zmc2V0V2lkdGgsIGVsZW1lbnQub2Zm
c2V0SGVpZ2h0LCAwLCAwKTsNCn0NCg0KZnVuY3Rpb24gZGV0YWlsc0hlYWRCdG5DbGljayhidG4p
DQp7DQoJdmFyIHBhcmVudCA9IGJ0bjsNCgl3aGlsZSAocGFyZW50ICE9IG51bGwgJiYgcGFyZW50
Lm1fZWxlbWVudCA9PSBudWxsKSBwYXJlbnQgPSBwYXJlbnQucGFyZW50Tm9kZTsNCglpZiAocGFy
ZW50ID09IG51bGwpIHJldHVybjsNCgl2YXIgZWxlbWVudCA9IHBhcmVudC5tX2VsZW1lbnQ7DQoJ
ZGV0YWlsc0hlYWRUb2dnbGUoZWxlbWVudCk7DQp9DQoNCmZ1bmN0aW9uIGRldGFpbHNIZWFkVG9n
Z2xlKGVsZW1lbnQpDQp7DQoJdmFyIHdpZHRoID0gZWxlbWVudC5vZmZzZXRXaWR0aDsNCgl2YXIg
aGVpZ2h0ID0gZWxlbWVudC5vZmZzZXRIZWlnaHQ7DQoJZWxlbWVudC5kZXRhaWxzVmlzaWJsZSA9
ICFlbGVtZW50LmRldGFpbHNWaXNpYmxlOw0KCWVsZW1lbnQuZGV0YWlsc0hlYWQuc3R5bGUuZGlz
cGxheSA9IGVsZW1lbnQuZGV0YWlsc1Zpc2libGUgPyAiIiA6ICJub25lIjsNCgllbGVtZW50LmRl
dGFpbHNEaXYuc3R5bGUuZGlzcGxheSA9IGVsZW1lbnQuZGV0YWlsc1Zpc2libGUgPyAiIiA6ICJu
b25lIjsNCgllbGVtZW50LmRldGFpbHNIZWFkMi5zdHlsZS5kaXNwbGF5ID0gZWxlbWVudC5kZXRh
aWxzVmlzaWJsZSA/ICJub25lIiA6ICIiOw0KDQoJZWxlbWVudC5kb1Jlc2l6ZSh3aWR0aCwgaGVp
Z2h0LCAwLCAwKTsNCgl0YWJsZV9VcGRhdGVDb2x1bW5zUG9zaXRpb24oZWxlbWVudCk7DQp9DQoN
CmZ1bmN0aW9uIEZpbHRlck9iamVjdCh2YWx1ZSwgY29tcGFyZV92YWx1ZSkNCnsNCgl0aGlzLnZh
bHVlID0gdmFsdWU7DQoJdGhpcy5fdmFsdWUgPSBjb21wYXJlX3ZhbHVlOw0KCXRoaXMuY2hlY2tl
ZCA9IHRydWU7DQp9DQoNCmZ1bmN0aW9uIHRhYmxlX0NsZWFyRmlsdGVyKGVsZW1lbnQpDQp7DQoJ
Zm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtZW50LnRhYmxlLmNvbHVtbnMubGVuZ3RoOyBpKyspDQoJ
ew0KCQl2YXIgb2MgPSBlbGVtZW50LnRhYmxlLmNvbHVtbnNbaV07DQoJCXdoaWxlIChvYy5maWx0
ZXJMaXN0Lmxlbmd0aCA+IDApDQoJCXsNCgkJCXZhciBmbyA9IG9jLmZpbHRlckxpc3QucG9wKCk7
DQoJCQlmbyA9IG51bGw7DQoJCX0NCgl9DQp9DQoNCnZhciBfbmJzcCA9IFN0cmluZy5mcm9tQ2hh
ckNvZGUoMTYwKTsgLy8gMHgwMTYwIC0gbmJzcA0KZnVuY3Rpb24gdGFibGVfQWRkVG9GaWx0ZXIo
Y29sdW1uLCB2YWx1ZSkNCnsNCglpZiAodmFsdWUgPT0gIiIgfHwgdmFsdWUgPT0gIiZuYnNwOyIg
fHwgdmFsdWUgPT0gX25ic3ApDQoJCXZhbHVlID0gIiZsdDtFbXB0eSZndDsiOw0KDQoJdGFibGVf
RmluZE9ySW5zZXJ0RmlsdGVyT2JqZWN0KGNvbHVtbi5maWx0ZXJMaXN0LCB2YWx1ZSwgY29sdW1u
LmlzTnVtZXJpYywgdHJ1ZSk7DQoJDQoJcmV0dXJuIHZhbHVlOw0KfQ0KDQpmdW5jdGlvbiB0YWJs
ZV9GaW5kT3JJbnNlcnRGaWx0ZXJPYmplY3QoZmlsdGVyTGlzdCwgdmFsdWUsIGlzTnVtZXJpYywg
ZG9JbnNlcnQpDQp7DQoJdmFyIF9sZW4gPSBmaWx0ZXJMaXN0Lmxlbmd0aDsNCgl2YXIgaW5kZXgg
PSAwLCBfY29tcGFyZSA9IDA7DQoNCgl2YXIgX3ZhbHVlID0gdmFsdWU7DQoJaWYgKGlzTnVtZXJp
YykNCgkJX3ZhbHVlID0gcGFyc2VGbG9hdCh2YWx1ZS5yZXBsYWNlKCIsIiwgIi4iKSk7DQoJZWxz
ZQ0KCQlfdmFsdWUgPSB2YWx1ZS50b0xvd2VyQ2FzZSgpOw0KDQoJaWYgKF9sZW4gPiAwKQ0KCXsN
CgkJdmFyIHN0ZXAgPSBNYXRoLnJvdW5kKF9sZW4gLyAyKTsNCgkJaW5kZXggPSBzdGVwIC0gMTsN
CgkJdmFyIHp6ID0gX2xlbiA+IDEgPyAyIDogMTsgdmFyIHp6MiA9IDI7IC8vIE1heCBpdGVyYXRp
b25zDQoJCXdoaWxlICh6ejIgPCBfbGVuKSB7IHp6ICsrOyB6ejIgKj0gMjsgfQ0KCQkNCgkJZm9y
ICg7OykNCgkJew0KCQkJdmFyIF9maWx0ZXIgPSBmaWx0ZXJMaXN0W2luZGV4XS5fdmFsdWU7DQoN
CgkJCV9jb21wYXJlID0gdGFibGVfdGV4dENvbXBhcmUoX3ZhbHVlLCBfZmlsdGVyKTsNCgkJCWlm
IChfY29tcGFyZSA9PSAwKQ0KCQkJCXJldHVybiBmaWx0ZXJMaXN0W2luZGV4XTsNCg0KCQkJenog
LS07IGlmICh6eiA8PSAwKSBicmVhazsNCgkJCXN0ZXAgPSBNYXRoLnJvdW5kKHN0ZXAgLyAyKTsN
CgkJCWluZGV4ICs9IHN0ZXAgKiBfY29tcGFyZTsNCgkJCWlmIChpbmRleCA8IDApIGluZGV4ID0g
MDsNCgkJCWlmIChpbmRleCA+PSBfbGVuKSBpbmRleCA9IF9sZW4gLSAxOw0KCQl9DQoJfQ0KCQ0K
CWlmICghZG9JbnNlcnQpIHJldHVybiBudWxsOw0KCQ0KCXZhciBmbyA9IG5ldyBGaWx0ZXJPYmpl
Y3QodmFsdWUsIF92YWx1ZSk7DQoJaWYgKF9jb21wYXJlID4gMCkgaW5kZXggKz0gX2NvbXBhcmU7
DQoJaWYgKF9sZW4gPT0gMCB8fCBpbmRleCA9PSBfbGVuKQ0KCQlmaWx0ZXJMaXN0LnB1c2goZm8p
Ow0KCWVsc2UNCgkJZmlsdGVyTGlzdC5zcGxpY2UoaW5kZXgsIDAsIGZvKTsNCglyZXR1cm4gZm87
DQp9DQoNCmZ1bmN0aW9uIHRhYmxlX21zZWNUb1N0cmluZyh0KQ0Kew0KICB2YXIgZGltVmFsdWUg
PSAodCA8IGNfRGltU21hbGxUaW1lRGlmZmVyZW5jZU1zKTsNCgl0ID0gTWF0aC5yb3VuZCh0IC8g
MTAwKTsNCgl2YXIgcmVzdWx0ID0gKHQgPj0gODY0MDAwIC8qIG9uZSBkYXkgKi8gPyBNYXRoLmZs
b29yKHQgLyA4NjQwMDApICsgIi4iIDogIiIpOw0KCXZhciBoID0gTWF0aC5mbG9vcih0IC8gMzYw
MDApOw0KCXZhciBtID0gTWF0aC5mbG9vcih0ICUgMzYwMDAgLyA2MDApOw0KCXZhciBzID0gTWF0
aC5mbG9vcih0ICUgNjAwIC8gMTApOw0KCXZhciBtcyA9IE1hdGgucm91bmQodCAlIDEwKTsNCglp
ZiAoaCA+IDAgfHwgcmVzdWx0Lmxlbmd0aCA+IDApIHJlc3VsdCArPSAoKGggPCAxMCAmJiByZXN1
bHQubGVuZ3RoID4gMCkgPyAiMCIgOiAiIikgKyBoICsgIjoiOw0KCWlmIChtID4gMCB8fCByZXN1
bHQubGVuZ3RoID4gMCkgcmVzdWx0ICs9ICgobSA8IDEwICYmIHJlc3VsdC5sZW5ndGggPiAwKSA/
ICIwIiA6ICIiKSArIG0gKyAiOiI7DQogIHJlc3VsdCArPSAoKHMgPCAxMCAmJiByZXN1bHQubGVu
Z3RoID4gMCkgPyAiMCIgOiAiIikgKyBzICsgIi4iICsgbXM7DQoJaWYgKGRpbVZhbHVlKSByZXN1
bHQgPSAiPHNwYW4gc3R5bGU9J2NvbG9yOnNpbHZlcic+KyAiICsgcmVzdWx0ICsgIjwvc3Bhbj4i
OyBlbHNlIHJlc3VsdCA9ICIrICIgKyByZXN1bHQ7DQoJcmV0dXJuIHJlc3VsdDsNCn0NCg0KZnVu
Y3Rpb24gdGFibGVfQ3JlYXRlUm93cyhlbGVtZW50LCBwYXJlbnRSb3csIHBhcmVudGlkLCBsZXZl
bCkNCnsNCgl2YXIgcmVzdWx0Um93cyA9IG5ldyBBcnJheSgpOw0KCXZhciBnbG9iYWxJbmRlbnQg
PSA1ICsgbGV2ZWwgKiAxNjsNCgl2YXIgZGF0YV9pc190cmVlID0gZmFsc2U7IC8vbmV0eV9ub2Rl
cy5sZW5ndGggPiAwOw0KCWZvciAodmFyIGkgPSAwOyBpIDwgZWxlbWVudC50YWJsZS5pdGVtcy5s
ZW5ndGg7IGkrKykNCgkJaWYgKGVsZW1lbnQudGFibGUuaXRlbXNbaV0ubmV0eSkgeyBkYXRhX2lz
X3RyZWUgPSB0cnVlOyBicmVhazsgfQ0KCXZhciBiYXNlUGF0aCA9IGNvcnJlY3RMb2NhdGlvbihl
bGVtZW50LmxvY2F0aW9uLCAiIik7DQoNCgl2YXIgb0NvbHVtbnMgPSBlbGVtZW50LnRhYmxlLmNv
bHVtbnM7DQoJdmFyIGNvbHVtbnNfbGVuZ3RoID0gb0NvbHVtbnMubGVuZ3RoOw0KDQoJdmFyIHJv
d3MgPSBbXTsNCglmb3IgKHZhciBpID0gMDsgaSA8IGVsZW1lbnQudGFibGUuaXRlbXMubGVuZ3Ro
OyBpKyspDQoJCWlmIChlbGVtZW50LnRhYmxlLml0ZW1zW2ldLnBpZCA9PSBwYXJlbnRpZCkNCgkJ
CXJvd3MucHVzaChlbGVtZW50LnRhYmxlLml0ZW1zW2ldKTsNCg0KCXZhciByb3dzX2xlbmd0aCA9
IHJvd3MubGVuZ3RoOw0KCXZhciBzdGF0dXNSb3dDb3VudCA9IGVsZW1lbnQudG90YWxSb3dDb3Vu
dDsNCglpZiAoY19TdGF0dXNQcm9ncmVzcyAmJiBzdGF0dXNSb3dDb3VudCA9PSAwKQ0KCXsNCgkJ
ZWxlbWVudC5sb2FkZWRSb3dDb3VudCA9IDA7DQoJCXN0YXR1c1Jvd0NvdW50ID0gcm93c19sZW5n
dGg7DQoJfQ0KDQoJdmFyIF9zdGF0dXMgPSB3aW5kb3cuc3RhdHVzOw0KCWZvciAodmFyIGkgPSAw
OyBpIDwgcm93c19sZW5ndGg7IGkrKykNCgl7DQoJCWlmIChjX1N0YXR1c1Byb2dyZXNzKQ0KCQl7
DQoJCQllbGVtZW50LmxvYWRlZFJvd0NvdW50Kys7DQoJCQlpZiAoZWxlbWVudC5sb2FkZWRSb3dD
b3VudCAlIDUwID09IDApDQoJCQl7DQoJCQkJdmFyIHBlcmNlbnQgPSBNYXRoLnJvdW5kKGVsZW1l
bnQubG9hZGVkUm93Q291bnQgKiAxMDAgLyBzdGF0dXNSb3dDb3VudCk7DQoJCQkJd2luZG93LnN0
YXR1cyA9ICdMb2FkaW5nIGRhdGEuLi4gKCcgKyBwZXJjZW50ICsgJyUpJzsNCgkJCX0NCgkJfQ0K
DQoJCXZhciBvUm93ID0gcm93c1tpXTsNCgkJaWYgKGVsZW1lbnQubG9hZFRyZWVBdE9uY2UgfHwg
cGFyZW50Um93ID09IG51bGwpDQoJCXsNCgkJCXZhciBvVFIgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJUUiIpOw0KCQkJZWxlbWVudC5yb3dCb2R5LmFwcGVuZENoaWxkKG9UUik7DQoJCX0NCgkJ
ZWxzZQ0KCQl7DQoJCQl2YXIgb1RSID0gZWxlbWVudC5yb3dCb2R5Lmluc2VydFJvdyhwYXJlbnRS
b3cucm93SW5kZXgraSk7DQoJCX0NCg0KCQlyZXN1bHRSb3dzLnB1c2gob1RSKTsNCg0KCQlvVFIu
c3ViUm93cyA9IG51bGw7DQoJCW9UUi5wYXJlbnRSb3cgPSBwYXJlbnRSb3c7DQoJCW9UUi5kZWZh
dWx0Q29sdW1uID0gbnVsbDsNCgkJb1RSLm9uY2xpY2sgPSB0YWJsZV9kb1Nob3dOZXN0ZWREYXRh
Ow0KCQlvVFIudGFibGVFbGVtZW50ID0gZWxlbWVudDsNCgkJb1RSLnN0eWxlLmN1cnNvciA9IG1f
UG9pbnRlckN1cnNvcjsNCgkJb1RSLmZpbHRlcmVkID0gZmFsc2U7DQoJCW9UUi5tdXN0QmVWaXNp
YmxlID0gdHJ1ZTsNCgkJb1RSLmNlbGxEYXRhID0gW107DQoJCW9UUi5tX2xpbmtUYWJzID0gW107
DQoJCQ0KCQl2YXIgcm93Q29sb3IgPSBvUm93LmNvbG9yOw0KCQl2YXIgcm93QmdDb2xvciA9IG9S
b3cuYmNvbG9yOw0KCQl2YXIgcm93Qm9sZCA9IG9Sb3cuYm9sZCB8fCBmYWxzZTsNCgkJdmFyIHJv
d0l0YWxpYyA9IG9Sb3cuaXRhbGljIHx8IGZhbHNlOw0KCQl2YXIgcm93VW5kZXJsaW5lID0gb1Jv
dy51bmRlcmxpbmUgfHwgZmFsc2U7DQoJCXZhciByb3dTdHJpa2VvdXQgPSBvUm93LnN0cmlrZW91
dCB8fCBmYWxzZTsNCg0KCQlpZiAocm93Q29sb3IgIT0gbnVsbCkgb1RSLnN0eWxlLmNvbG9yID0g
cm93Q29sb3I7DQoJCWlmIChyb3dCZ0NvbG9yICE9IG51bGwpIG9UUi5zdHlsZS5iYWNrZ3JvdW5k
Q29sb3IgPSByb3dCZ0NvbG9yOw0KCQlvVFIubV9iZ0NvbG9yID0gcm93QmdDb2xvcjsNCg0KCQlp
ZiAobGV2ZWwgPiAwICYmICFwYXJlbnRSb3cub3BlbmVkKQ0KCQkJb1RSLnN0eWxlLmRpc3BsYXkg
PSAibm9uZSI7DQoJCQ0KCQl2YXIgcm93X25ldHkgPSAob1Jvdy5uZXR5IHx8IGZhbHNlKTsNCgkJ
b1RSLnJvd19uZXR5ID0gcm93X25ldHk7DQoNCgkJdmFyIGN1cnJlbnRSZWNvcmRJZCA9IG9Sb3cu
aWQgfHwgMDsNCg0KCQl2YXIgZmlyc3RDb2x1bW4gPSB0cnVlOw0KCQlmb3IgKHZhciBqID0gMDsg
aiA8IGNvbHVtbnNfbGVuZ3RoOyBqKyspDQoJCXsNCgkJCXZhciBvQ29sdW1uID0gb0NvbHVtbnNb
al07DQoJCQl2YXIgb1Jvd0NlbGwgPSBvUm93W29Db2x1bW4ubmFtZV07DQoJCQkNCgkJCXZhciBu
b2RlVmFsdWUgPSAiIjsNCgkJCWlmICh0eXBlb2Yob1Jvd0NlbGwpICE9ICJ1bmRlZmluZWQiKQ0K
CQkJCW5vZGVWYWx1ZSA9ICIiICsgKHR5cGVvZihvUm93Q2VsbCkgPT0gIm9iamVjdCIgPyBvUm93
Q2VsbC50ZXh0IDogb1Jvd0NlbGwpOw0KCQkJdmFyIGNvbFR5cGVOYW1lID0gb0NvbHVtbi50eXBl
TmFtZTsNCg0KCQkJb1RSLmNlbGxEYXRhW2pdID0geyBjZWxsVmFsdWU6IChvQ29sdW1uLmlzQ29t
cGxleCA/IGJhc2VQYXRoIDogIiIpICsgbm9kZVZhbHVlLCByZWNvcmRJRDogY3VycmVudFJlY29y
ZElkIH07DQoNCgkJCWlmIChvQ29sdW1uLmlzQ29tcGxleCkNCgkJCXsNCgkJCQlpZiAob1RSLmRl
ZmF1bHRDb2x1bW4gPT0gbnVsbCkNCgkJCQkgIG9UUi5kZWZhdWx0Q29sdW1uID0gb0NvbHVtbjsN
Cg0KCQkJCWlmIChjb2xUeXBlTmFtZSA9PSAiYXFkczpwaWN0dXJlcyIpIHsNCg0KCQkJCQl2YXIg
cGljdHVyZUNvdW50ID0gMDsNCgkJCQkJaWYgKHR5cGVvZihvUm93Q2VsbCkgIT0gInVuZGVmaW5l
ZCIgJiYgdHlwZW9mKG9Sb3dDZWxsLmxlbmd0aCkgIT0gInVuZGVmaW5lZCIpDQoJCQkJCXsNCgkJ
CQkJCXBpY3R1cmVDb3VudCA9IG9Sb3dDZWxsLmxlbmd0aCB8fCAwOw0KCQkJCQkJb1RSLmNlbGxE
YXRhW2pdLnBpY3R1cmVDb3VudCA9IHBpY3R1cmVDb3VudDsNCgkJCQkJCW9UUi5jZWxsRGF0YVtq
XS5waWN0dXJlcyA9IG9Sb3dDZWxsOw0KCQkJCQl9DQoJCQkJCWlmIChwaWN0dXJlQ291bnQgPT0g
MSkNCgkJCQkJCW9UUi5jZWxsRGF0YVtqXS5jZWxsVmFsdWUgPSBiYXNlUGF0aCArIG9Sb3dDZWxs
WzBdLmZpbGVuYW1lOw0KCQkJCQllbHNlDQoJCQkJCQlvVFIuY2VsbERhdGFbal0uY2VsbFZhbHVl
ID0gbnVsbDsNCg0KCQkJCQlvVFIuY2VsbERhdGFbal0ubG9jYXRpb24gPSBlbGVtZW50LmxvY2F0
aW9uOw0KDQoJCQkJfSBlbHNlIGlmIChjb2xUeXBlTmFtZSA9PSAiYXFkczp0ZXh0Iikgew0KCQkJ
CQlpZiAobm9kZVZhbHVlICE9ICIiKQ0KCQkJCQkJb1RSLmNlbGxEYXRhW2pdLmlzRmlsZU5hbWUg
PSBvUm93Q2VsbC5pc2ZpbGVuYW1lOw0KDQoJCQkJCW9UUi5jZWxsRGF0YVtqXS5jZWxsVmFsdWUg
PSBub2RlVmFsdWU7DQoNCgkJCQl9IGVsc2UgaWYgKGNvbFR5cGVOYW1lID09ICJhcWRzOnRhYmxl
Iikgew0KCQkJCQlvVFIuY2VsbERhdGFbal0uaXRlbXMgPSBvUm93Q2VsbCA/IG9Sb3dDZWxsLml0
ZW1zIDogb0NvbHVtbi5pdGVtczsNCgkJCQl9DQoNCgkJCQljb250aW51ZTsNCgkJCX0NCg0KCQkJ
dmFyIG9URCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlREIik7DQoNCgkJCW9URC5jbGFzc05h
bWUgPSAiY2VsbFZhbHVlIjsNCgkJCW9URC5ub1dyYXAgPSB0cnVlOyAvLyBJbXBvcnRhbnQgZm9y
IEZpcmVmb3gNCg0KCQkJaWYgKHJvd0JvbGQpIG9URC5zdHlsZS5mb250V2VpZ2h0ID0gImJvbGQi
Ow0KCQkJaWYgKHJvd0l0YWxpYykgb1RELnN0eWxlLmZvbnRTdHlsZSA9ICJpdGFsaWMiOw0KCQkJ
aWYgKHJvd1VuZGVybGluZSkgb1RELnN0eWxlLnRleHREZWNvcmF0aW9uID0gInVuZGVybGluZSI7
DQoJCQlpZiAocm93U3RyaWtlb3V0KSBvVEQuc3R5bGUudGV4dERlY29yYXRpb24gKz0gIiBsaW5l
LXRocm91Z2giOw0KDQoJCQlvVEQucmVjb3JkSUQgPSBjdXJyZW50UmVjb3JkSWQ7DQoJCQlvVFIu
YXBwZW5kQ2hpbGQob1REKTsNCg0KCQkJb1RELmZpbHRlclRleHQgPSAiIjsNCg0KCQkJaWYgKGZp
cnN0Q29sdW1uKQ0KCQkJew0KCQkJCWZpcnN0Q29sdW1uID0gZmFsc2U7CQ0KCQkJCW9URC5wYXJl
bnRSb3cgPSBwYXJlbnRSb3c7DQoJCQkJb1RELmxldmVsID0gbGV2ZWw7DQoNCgkJCQlpZiAoZGF0
YV9pc190cmVlKQ0KCQkJCXsNCgkJCQlpZiAocm93X25ldHkpDQoJCQkJew0KCQkJCQlvVEQuaW1h
Z2UgPSBjcmVhdGVUcmVlSW1hZ2UoZmFsc2UpOw0KCQkJCQlvVEQuaW1hZ2UucGFyZW50VEQgPSBv
VEQ7DQoJCQkJCW9URC5pbWFnZS5vbmNsaWNrID0gdGFibGVfZXhwYW5kUm93Ow0KCQkJCX0gZWxz
ZSB7DQoNCgkJCQkJb1RELmltYWdlID0gY3JlYXRlVHJlZUltYWdlRHVtbXkoKTsNCgkJCQl9DQoJ
CQkJb1RELmltYWdlLnN0eWxlLm1hcmdpbkxlZnQgPSAiMHB4IjsNCgkJCQlvVEQuaW1hZ2Uuc3R5
bGUubWFyZ2luUmlnaHQgPSAiNXB4IjsNCgkJCQlvVEQuaW1hZ2Uuc3R5bGUubWFyZ2luQm90dG9t
ID0gIjJweCI7DQoJCQkJb1RELmFwcGVuZENoaWxkKG9URC5pbWFnZSk7DQoJCQkJb1RELnN0eWxl
LnBhZGRpbmdMZWZ0ID0gZ2xvYmFsSW5kZW50ICsgInB4IjsNCgkJCQlvVFIubV90cmVlSW1hZ2Ug
PSBvVEQuaW1hZ2U7DQoJCQkJfQ0KCQkJfQ0KDQoJCQl7DQoJCQkJdmFyIG9TcGFuID0gb1REOw0K
CQkJCWlmIChmaXJzdENvbHVtbiAmJiBkYXRhX2lzX3RyZWUgfHwgY29sVHlwZU5hbWUgPT0gImFx
ZHM6aW1hZ2UiKQ0KCQkJCXsNCgkJCQkJb1NwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJT
UEFOIik7DQoJCQkJCW9URC5hcHBlbmRDaGlsZChvU3Bhbik7DQoJCQkJfQ0KDQoJCQkJaWYgKGNv
bFR5cGVOYW1lID09ICJhcWRzOmltYWdlIikNCgkJCQl7DQoJCQkJCW9URC52QWxpZ24gPSAidG9w
IjsNCgkJCQkJaWYgKG5vZGVWYWx1ZSAhPSAiIikNCgkJCQkJew0KCQkJCQkJbm9kZVZhbHVlID0g
bm9kZVZhbHVlLnRvTG93ZXJDYXNlKCk7DQoJCQkJCQlpZiAobm9kZVZhbHVlLmluZGV4T2YoIi4i
KSA8IDApDQoJCQkJCQkJb1NwYW4uaW5uZXJIVE1MID0gIjxpbWcgc3JjPVwibnVsbC5naWZcIiBi
b3JkZXI9XCIwXCIgY2xhc3M9XCJpY29uIGljb24tIiArIG5vZGVWYWx1ZSArICJcIiBzdHlsZT1c
InBvc2l0aW9uOiByZWxhdGl2ZTsgdG9wOjFweDtcIi8+IjsNCgkJCQkJCWVsc2UNCgkJCQkJCQlv
U3Bhbi5pbm5lckhUTUwgPSAiPGltZyBzcmM9XCIiICsgKGJhc2VQYXRoICsgbm9kZVZhbHVlKSAr
ICJcIiBib3JkZXI9XCIwXCIgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7IHRvcDoxcHg7XCIv
PiI7DQoJCQkJCX0NCgkJCQkJZWxzZQ0KCQkJCQkJb1NwYW4uaW5uZXJUZXh0ID0gX25ic3A7DQoN
CgkJCQkJb1RELmZpbHRlclRleHQgPSB0YWJsZV9BZGRUb0ZpbHRlcihvQ29sdW1uLCBvU3Bhbi5p
bm5lckhUTUwpOw0KDQoJCQkJfSBlbHNlIGlmIChjb2xUeXBlTmFtZSA9PSAiYXFkczpoeXBlcmxp
bmsiKSB7DQoNCgkJCQkJb1RSLmNlbGxEYXRhW2pdLmNlbGxWYWx1ZSA9IG51bGw7DQoJCQkJCW9U
Ui5jZWxsRGF0YVtqXS5sb2NhdGlvbiA9IGVsZW1lbnQubG9jYXRpb247DQoNCgkJCQkJaWYgKG5v
ZGVWYWx1ZSAhPSAiIikgew0KCQkJCQkNCgkJCQkJCWlmICghdGFibGVfaXNJbnRlcm5hbFVSTChu
b2RlVmFsdWUpKQ0KCQkJCQkJew0KCQkJCQkJCXZhciBpc0V4dGVybmFsTGluayA9IGZhbHNlOw0K
CQkJCQkJCXZhciBwcm90b2NvbERlbGltaXRlclBvcyA9IG5vZGVWYWx1ZS5pbmRleE9mKCI6Ly8i
KTsNCgkJCQkJCQl2YXIgbGlua1Byb3RvY29sID0gKHByb3RvY29sRGVsaW1pdGVyUG9zID4gMCA/
IG5vZGVWYWx1ZS50b0xvd2VyQ2FzZSgpLnN1YnN0cmluZygwLCBwcm90b2NvbERlbGltaXRlclBv
cykgOiAiIik7DQoJCQkJCQkJZm9yICh2YXIgcCA9IDA7IHAgPCBjX0V4dGVybmFsTGlua1Byb3Rv
Y29scy5sZW5ndGg7IHArKykgeyBpZiAobGlua1Byb3RvY29sID09IGNfRXh0ZXJuYWxMaW5rUHJv
dG9jb2xzW3BdKSB7IGlzRXh0ZXJuYWxMaW5rID0gdHJ1ZTsgYnJlYWs7IH0gfQ0KDQoJCQkJCQkJ
b1RSLmNlbGxEYXRhW2pdLmNlbGxWYWx1ZSA9IChpc0V4dGVybmFsTGluayA/ICIiIDogYmFzZVBh
dGgpICsgbm9kZVZhbHVlOw0KCQkJCQkJCW9TcGFuLmlubmVySFRNTCA9ICI8U1BBTiBjbGFzcz0n
bGlua0NlbGwnIG9uY2xpY2s9J3RhYmxlX2RvU2hvd05lc3RlZERhdGEodGhpcyknPiIgKyBub2Rl
VmFsdWUgKyAiPC9TUEFOPiI7DQoJCQkJCQkJaWYgKG9UUi5kZWZhdWx0Q29sdW1uID09IG51bGwp
DQoJCQkJCQkJICBvVFIuZGVmYXVsdENvbHVtbiA9IG9Db2x1bW47DQoJCQkJCQl9DQoJCQkJCQll
bHNlDQoJCQkJCQkJb1NwYW4uaW5uZXJIVE1MID0gbm9kZVZhbHVlOw0KCQkJCQkJCQ0KCQkJCQl9
IGVsc2Ugew0KCQkJCQkNCgkJCQkJCW9TcGFuLmlubmVyVGV4dCA9IF9uYnNwOw0KCQkJCQl9DQoN
CgkJCQkJb1RELmNvbHVtbkluZGV4ID0gajsNCgkJCQkNCgkJCQl9IGVsc2Ugew0KCQkJCQlpZiAo
b0NvbHVtbi5pc0RhdGVUaW1lKQ0KCQkJCQl7DQoJCQkJCQl2YXIgbXNlYyA9IG9Sb3dDZWxsLm1z
ZWM7DQoJCQkJCQlpZiAobXNlYyAhPSB1bmRlZmluZWQgJiYgbXNlYyA+IDMxNTM2MDAwMDAwIC8q
IG9uZSB5ZWFyICovKQ0KCQkJCQkJew0KCQkJCQkJCW9UUi5jZWxsRGF0YVtqXS5tc2VjID0gbXNl
YzsNCgkJCQkJCQlvVFIuY2VsbERhdGFbal0udmFsdWUgPSBub2RlVmFsdWU7DQoJCQkJCQl9DQoJ
CQkJCX0NCg0KCQkJCQlpZiAobm9kZVZhbHVlID09ICIiKQ0KCQkJCQkJb1NwYW4uaW5uZXJUZXh0
ID0gX25ic3A7DQoJCQkJCWVsc2UNCgkJCQkJew0KCQkJCQkJaWYgKG5vZGVWYWx1ZS5pbmRleE9m
KCImIikgPiAwIHx8IG5vZGVWYWx1ZS5pbmRleE9mKCI8IikgPiAwIHx8IG5vZGVWYWx1ZS5pbmRl
eE9mKCI+IikgPiAwKQ0KCQkJCQkJCW5vZGVWYWx1ZSA9IG5vZGVWYWx1ZS5yZXBsYWNlKC9bJl0v
ZywgIiZhbXA7IikucmVwbGFjZSgvWzxdL2csICImbHQ7IikucmVwbGFjZSgvWz5dL2csICImZ3Q7
Iik7DQoNCgkJCQkJCW9TcGFuLmlubmVySFRNTCA9ICI8cHJlIHN0eWxlPSdtYXJnaW46MHB4OyBw
YWRkaW5nLXRvcDoxcHg7IiArIChvQ29sdW1uLmlzRGF0ZVRpbWUgPyAiIHRleHQtYWxpZ246cmln
aHQ7IiA6ICIiKSArICInPiIgKyBub2RlVmFsdWUgKyAiPC9wcmU+IjsNCgkJCQkJfQ0KCQkJCQlv
VEQuZmlsdGVyVGV4dCA9IHRhYmxlX0FkZFRvRmlsdGVyKG9Db2x1bW4sIG5vZGVWYWx1ZSk7DQoN
CgkJCQkJaWYgKG9Db2x1bW4uaXNEYXRlVGltZSkNCgkJCQkJCW9TcGFuLl9tc2VjID0gb1Jvd0Nl
bGwubXNlYzsNCgkJCQl9DQoJCQkJb1RELmNvbHVtbiA9IG9Db2x1bW47DQoJCQl9DQoJCX0NCgkJ
DQoJCWlmIChwYXJlbnRSb3cgJiYgcGFyZW50Um93Lm9wZW5lZCkgdGFibGVfY2hlY2tSb3dJc0Zp
bHRlcmVkKG9UUik7DQoNCgkJLy8gUmVhZGluZyBzdWJyb3dzDQoJCWlmIChyb3dfbmV0eSkNCgkJ
ew0KCQkJZWxlbWVudC5pc1RyZWUgPSB0cnVlOw0KCQkJb1RSLnJlY29yZElkID0gY3VycmVudFJl
Y29yZElkOw0KCQkJb1RSLmxldmVsID0gbGV2ZWw7DQoJCQlpZiAoZWxlbWVudC5sb2FkVHJlZUF0
T25jZSkgdGFibGVfZ2V0U3ViUm93cyhvVFIpOw0KCQl9DQoJfQ0KDQoJaWYgKGNfU3RhdHVzUHJv
Z3Jlc3MgJiYgbGV2ZWwgPT0gMCkgd2luZG93LnN0YXR1cyA9IF9zdGF0dXM7DQoNCglyZXR1cm4g
cmVzdWx0Um93czsNCn0NCg0KZnVuY3Rpb24gdGFibGVfZ2V0U3ViUm93cyhyb3cpDQp7DQoJaWYg
KCFyb3cgfHwgIXJvdy50YWJsZUVsZW1lbnQgfHwgcm93LnN1YlJvd3MgIT0gbnVsbCkgcmV0dXJu
Ow0KDQoJcm93LnN1YlJvd3MgPSB0YWJsZV9DcmVhdGVSb3dzKHJvdy50YWJsZUVsZW1lbnQsIHJv
dywgcm93LnJlY29yZElkLCByb3cubGV2ZWwgKyAxKTsNCglpZiAocm93LnN1YlJvd3MubGVuZ3Ro
ID09IDApDQoJCWhpZGVUcmVlSW1hZ2Uocm93Lm1fdHJlZUltYWdlKTsNCn0NCg0KZnVuY3Rpb24g
dGFibGVfT3BlcmFGb3JjZVJlZHJhdyhlbGVtZW50LCBvcGVyYTl0b28pDQp7DQoJLy8gQnVnIGlu
IE9wZXJhIC0gaW5jb3JyZWN0IHJlZHJhdyBvZiB0YWJsZSByb3dzIGFuZCBpbnZpc2libGUgc2Ny
b2xsZXINCg0KCWlmICghaXNPcGVyYSkgcmV0dXJuOw0KCWlmIChvcGVyYTl0b28pDQoJew0KCQl2
YXIgdGFibGVQYW5lID0gZWxlbWVudC5yb290RGl2LnRhYmxlUGFuZTsNCgkJdmFyIGRlbHRhID0g
MTsNCgkJaWYgKHRhYmxlUGFuZS5zY3JvbGxMZWZ0ID4gMCkgZGVsdGEgPSAtMTsNCgkJdGFibGVQ
YW5lLnNjcm9sbExlZnQgKz0gZGVsdGE7DQoJCWlmICh0YWJsZVBhbmUuc2Nyb2xsTGVmdCA+IDAp
DQoJCXsNCgkJCXRhYmxlUGFuZS5zY3JvbGxMZWZ0IC09IGRlbHRhOw0KCQl9DQoJCWVsc2UNCgkJ
ew0KCQkJdGFibGVQYW5lLm1fZGF0YVRhYmxlLndpZHRoIC09IDE7DQoJCQl0YWJsZVBhbmUubV9k
YXRhVGFibGUud2lkdGggKz0gMTsNCgkJfQ0KCX0NCn0NCg0KZnVuY3Rpb24gdGFibGVfc2V0QWN0
aXZlUm93KGVsZW1lbnQsIG5ld1Jvdywga2VlcE5lc3RlZE9iamVjdCkNCnsNCglpZiAoZWxlbWVu
dC5tX2FjdGl2ZVJvdyAhPSBudWxsKQ0KCXsNCgkJZWxlbWVudC5tX2FjdGl2ZVJvdy5jbGFzc05h
bWUgPSAiIjsNCgkJZWxlbWVudC5tX2FjdGl2ZVJvdy5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBl
bGVtZW50Lm1fYWN0aXZlUm93Lm1fYmdDb2xvcjsNCg0KCQlmb3IgKHZhciBpID0gMDsgaSA8IGVs
ZW1lbnQubV9hY3RpdmVSb3cubV9saW5rVGFicy5sZW5ndGg7IGkrKykNCgkJCWVsZW1lbnQubV9h
Y3RpdmVSb3cubV9saW5rVGFic1tpXS5yZW1vdmUoKTsNCg0KCQllbGVtZW50Lm1fYWN0aXZlUm93
Lm1fbGlua1RhYnMgPSBbXTsNCgl9DQoNCglpZiAoIWtlZXBOZXN0ZWRPYmplY3QgJiYgZWxlbWVu
dC5tX05lc3RlZE9iamVjdCAhPSBudWxsKQ0KCXsNCgkJZWxlbWVudC5kZXRhaWxzRGl2LmlubmVy
SFRNTCA9ICIiOw0KCQl0YWJsZV9jbGVhcihlbGVtZW50Lm1fTmVzdGVkT2JqZWN0KTsNCgkJdGV4
dF9jbGVhcihlbGVtZW50Lm1fTmVzdGVkT2JqZWN0KTsNCgkJZWxlbWVudC5tX05lc3RlZE9iamVj
dCA9IG51bGw7DQoJfQ0KDQoJaWYgKGVsZW1lbnQuZGV0YWlsc0RpdikNCgkJZWxlbWVudC5kZXRh
aWxzRGl2LnN0eWxlLm92ZXJmbG93ID0gIiI7DQoNCgllbGVtZW50Lm1fYWN0aXZlUm93ID0gbmV3
Um93Ow0KDQoJaWYgKGVsZW1lbnQubV9hY3RpdmVSb3cgIT0gbnVsbCkNCgl7DQoJCWVsZW1lbnQu
bV9hY3RpdmVSb3cuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gIiI7DQoJCWVsZW1lbnQubV9hY3Rp
dmVSb3cuY2xhc3NOYW1lID0gInNlbGVjdGVkUm93IjsNCgkJdGFibGVfT3BlcmFGb3JjZVJlZHJh
dyhlbGVtZW50LCBmYWxzZSk7DQoJfQ0KfQ0KDQpmdW5jdGlvbiB0YWJsZV9vbkRldGFpbHNUYWJT
ZWxlY3QodGFiLCBwcmV2VGFiKQ0Kew0KCWlmICghcHJldlRhYikNCgkJcmV0dXJuOw0KDQoJdmFy
IGVsZW1lbnQgPSB0YWIudGFic09iamVjdC5wYXJlbnQ7DQoJZWxlbWVudC5tX05lc3RlZE9iamVj
dCA9IHRhYi50YWJJdGVtOw0KCWVsZW1lbnQuYWN0aXZlRGV0YWlsc1RhYk5hbWUgPSB0YWIudGFi
c09iamVjdC5uYW1lc1t0YWIudGFiSXRlbUluZGV4XTsNCglpZiAoZWxlbWVudC5tX05lc3RlZE9i
amVjdC5pbml0KQ0KCQl0YWJsZV91cGRhdGVOZXN0ZWREYXRhKGVsZW1lbnQsIGVsZW1lbnQubV9h
Y3RpdmVSb3cpOw0KCWRvV2luZG93UmVzaXplKCk7DQp9DQoNCmZ1bmN0aW9uIHRhYmxlX2luaXRp
YWxpemVEZXRhaWxzKGVsZW1lbnQpDQp7DQoJdmFyIHRhYnMgPSBudWxsOw0KCWlmIChlbGVtZW50
LmRldGFpbHNUYWJzRGl2KQ0KCXsNCgkJdGFicyA9IG5ldyBUYWJzT2JqZWN0KGVsZW1lbnQuZGV0
YWlsc1RhYnNEaXYuaWQsIHRhYmxlX29uRGV0YWlsc1RhYlNlbGVjdCwgZWxlbWVudCwgZWxlbWVu
dC5hY3RpdmVEZXRhaWxzVGFiTmFtZSk7DQoJCWVsZW1lbnQuZGV0YWlsc1RhYnNEaXYubV90YWJz
T2JqZWN0ID0gdGFiczsNCgl9DQoNCgl2YXIgZmlyc3RJdGVtID0gbnVsbDsNCglmb3IgKHZhciBp
ID0gMDsgaSA8IGVsZW1lbnQudGFibGUuY29sdW1ucy5sZW5ndGg7IGkrKykNCgl7DQoJCXZhciBj
b2x1bW4gPSBlbGVtZW50LnRhYmxlLmNvbHVtbnNbaV07DQoJCXZhciBuZXN0ZWRPYmplY3QgPSBu
dWxsOw0KDQoJCWlmIChjb2x1bW4udHlwZU5hbWUgPT0gImFxZHM6dGV4dCIpDQoJCXsNCgkJCW5l
c3RlZE9iamVjdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpOw0KCQkJbmVzdGVkT2Jq
ZWN0LmluaXQgPSB0ZXh0X2xvYWQ7DQoJCX0NCgkJZWxzZSBpZiAoY29sdW1uLnR5cGVOYW1lID09
ICJhcWRzOnRhYmxlIikNCgkJew0KCQkJbmVzdGVkT2JqZWN0ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiRElWIik7DQoJCQluZXN0ZWRPYmplY3QuaW5pdCA9IHRhYmxlX3NldEFjdGl2ZTsNCg0K
CQkJbmVzdGVkT2JqZWN0LnRhYmxlID0gY29sdW1uOw0KCQkJbmVzdGVkT2JqZWN0LmxvY2F0aW9u
ID0gZWxlbWVudC5sb2NhdGlvbjsNCgkJCW5lc3RlZE9iamVjdC5zaG93Q2FwdGlvbiA9IGZhbHNl
Ow0KCQkJbmVzdGVkT2JqZWN0Lm5vRnJhbWUgPSB0cnVlOw0KCQl9DQoJCWVsc2UgaWYgKGNvbHVt
bi50eXBlTmFtZSA9PSAiYXFkczpwaWN0dXJlIiB8fCBjb2x1bW4udHlwZU5hbWUgPT0gImFxZHM6
cGljdHVyZXMiKQ0KCQl7DQoJCQluZXN0ZWRPYmplY3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJESVYiKTsNCgkJCW5lc3RlZE9iamVjdC5pbml0ID0gcGljdHVyZV9sb2FkOw0KCQl9DQoNCgkJ
aWYgKG5lc3RlZE9iamVjdCAhPSBudWxsKQ0KCQl7DQoJCQlpZiAoZmlyc3RJdGVtKQ0KCQkJCWZp
cnN0SXRlbS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOw0KDQoJCQluZXN0ZWRPYmplY3QuaWQgPSAi
ZGF0YVRhYl8iICsgY29sdW1uLmNhcHRpb24ucmVwbGFjZShuZXcgUmVnRXhwKCIgIiwgImciKSwg
IiIpICsgIl8iICsgbmVzdGVkT2JqZWN0LnVuaXF1ZUlEOw0KCQkJbmVzdGVkT2JqZWN0LnN0eWxl
LndpZHRoID0gIjEwMCUiOw0KCQkJbmVzdGVkT2JqZWN0LnN0eWxlLmhlaWdodCA9ICIxMDAlIjsN
CgkJCQ0KCQkJbmVzdGVkT2JqZWN0LmNvbHVtbkluZGV4ID0gaTsNCg0KCQkJZWxlbWVudC5kZXRh
aWxzRGl2LmFwcGVuZENoaWxkKG5lc3RlZE9iamVjdCk7DQoNCgkJCWlmIChmaXJzdEl0ZW0pDQoJ
CQkJbmVzdGVkT2JqZWN0LnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7DQoJCQllbHNlDQoJCQkJZmly
c3RJdGVtID0gbmVzdGVkT2JqZWN0Ow0KDQoJCQlpZiAoIWVsZW1lbnQubV9OZXN0ZWRPYmplY3Qp
DQoJCQkJZWxlbWVudC5tX05lc3RlZE9iamVjdCA9IG5lc3RlZE9iamVjdDsNCg0KCQkJaWYgKHRh
YnMpDQoJCQkJdGFicy5hZGRJdGVtKGNvbHVtbi5jYXB0aW9uLCBuZXN0ZWRPYmplY3QuaWQpOw0K
CQl9DQoJfQ0KDQoJaWYgKHRhYnMpDQoJCXRhYnMucmVuZGVyKCk7DQp9DQoNCmZ1bmN0aW9uIHRh
YmxlX3VwZGF0ZU5lc3RlZERhdGEoZWxlbWVudCwgb1RSKQ0Kew0KCWlmICghZWxlbWVudCB8fCAh
b1RSKQ0KCQlyZXR1cm47DQoNCgl2YXIgdGFicyA9IGVsZW1lbnQuZGV0YWlsc1RhYnNEaXYgPyBl
bGVtZW50LmRldGFpbHNUYWJzRGl2Lm1fdGFic09iamVjdCA6IG51bGw7DQoJdmFyIG5lc3RlZE9i
amVjdCA9ICh0YWJzICYmIHRhYnMuYWN0aXZlVGFiKSA/IHRhYnMuYWN0aXZlVGFiLnRhYkl0ZW0g
OiBlbGVtZW50Lm1fTmVzdGVkT2JqZWN0Ow0KCXZhciBjZWxsID0gb1RSLmNlbGxEYXRhW25lc3Rl
ZE9iamVjdC5jb2x1bW5JbmRleF07DQoJdmFyIGNvbHVtbiA9IGVsZW1lbnQudGFibGUuY29sdW1u
c1tuZXN0ZWRPYmplY3QuY29sdW1uSW5kZXhdOw0KCQ0KCW5lc3RlZE9iamVjdC52YWx1ZSA9IGNl
bGwuY2VsbFZhbHVlOw0KDQoJaWYgKGNvbHVtbi50eXBlTmFtZSA9PSAiYXFkczp0ZXh0IikNCgl7
DQoJCWlmIChjZWxsLmNlbGxWYWx1ZSA9PSAiIikNCgkJew0KCQkJbmVzdGVkT2JqZWN0LnRleHRP
YmplY3QgPSBudWxsOw0KCQl9DQoJCWVsc2UgaWYgKGNvbHVtbi50ZXh0T2JqZWN0KQ0KCQl7DQoJ
CQluZXN0ZWRPYmplY3QudGV4dE9iamVjdCA9IGNvbHVtbi50ZXh0T2JqZWN0Ow0KCQkJbmVzdGVk
T2JqZWN0LmxvY2F0aW9uID0gZWxlbWVudC5sb2NhdGlvbjsNCgkJCW5lc3RlZE9iamVjdC5pc0Zp
bGVOYW1lID0gY2VsbC5pc0ZpbGVOYW1lOw0KCQl9DQoJCW5lc3RlZE9iamVjdC5pbml0KG5lc3Rl
ZE9iamVjdCwgZWxlbWVudCk7DQoJfQ0KCWVsc2UgaWYgKGNvbHVtbi50eXBlTmFtZSA9PSAiYXFk
czpwaWN0dXJlIiB8fCBjb2x1bW4udHlwZU5hbWUgPT0gImFxZHM6cGljdHVyZXMiKQ0KCXsNCgkJ
aWYgKGNlbGwucGljdHVyZUNvdW50ID4gMSkNCgkJew0KCQkJbmVzdGVkT2JqZWN0LnRhYmxlID0g
Y29sdW1uOw0KCQkJbmVzdGVkT2JqZWN0LnBpY3R1cmVzID0gY2VsbC5waWN0dXJlczsNCgkJCW5l
c3RlZE9iamVjdC5sb2NhdGlvbiA9IGVsZW1lbnQubG9jYXRpb247DQoJCX0NCgkJZWxzZQ0KCQkJ
bmVzdGVkT2JqZWN0LnRhYmxlID0gbnVsbDsNCgkJbmVzdGVkT2JqZWN0LmluaXQobmVzdGVkT2Jq
ZWN0LCBlbGVtZW50KTsNCgl9DQoJZWxzZSBpZiAoY29sdW1uLnR5cGVOYW1lID09ICJhcWRzOnRh
YmxlIikNCgl7DQoJCWlmICghbmVzdGVkT2JqZWN0LnRhYmxlLnN5bmNSZWNvcmRzIHx8ICFuZXN0
ZWRPYmplY3QubG9hZGVkKQ0KCQl7DQoJCQluZXN0ZWRPYmplY3QudGFibGUuaXRlbXMgPSBjZWxs
Lml0ZW1zOw0KCQkJbmVzdGVkT2JqZWN0LmluaXQobmVzdGVkT2JqZWN0LCBlbGVtZW50KTsNCgkJ
CW5lc3RlZE9iamVjdC5sb2FkZWQgPSB0cnVlOw0KCQl9DQoNCgkJaWYgKG5lc3RlZE9iamVjdC50
YWJsZS5zeW5jUmVjb3JkcykNCgkJCXRhYmxlX2FjdGl2YXRlUm93KG5lc3RlZE9iamVjdCwgb1RS
LnJvd0luZGV4LTEsIHRydWUpOw0KCX0NCn0NCg0KZnVuY3Rpb24gdGFibGVfZG9TaG93TmVzdGVk
RGF0YShsaW5rKQ0Kew0KCXZhciBvVEQsIG9UUiwgZWxlbWVudDsNCg0KCWlmIChsaW5rICYmIGxp
bmsucGFyZW50Tm9kZSkgLy8gbGluayBjbGlja2VkDQoJew0KCQlvVEQgPSBsaW5rLnBhcmVudE5v
ZGU7DQoJCW9UUiA9IG9URC5wYXJlbnROb2RlOw0KCQllbGVtZW50ID0gb1RSLnRhYmxlRWxlbWVu
dDsNCgkJdmFyIGNhcHRpb24gPSBvVEQuY29sdW1uLmNhcHRpb247DQoNCgkJaWYgKCFlbGVtZW50
LmRldGFpbHNEaXYgfHwgIWVsZW1lbnQuZGV0YWlsc1RhYnNEaXYpDQoJCQlyZXR1cm47DQoNCgkJ
ZWxlbWVudC5wcmV2ZW50RGVmYXVsdCA9IHRydWU7DQoJCQ0KCQlpZiAob1RSICE9IGVsZW1lbnQu
bV9hY3RpdmVSb3cpDQoJCQl0YWJsZV9zZXRBY3RpdmVSb3coZWxlbWVudCwgb1RSLCB0cnVlKTsN
CgkJDQoJCXZhciB0YWJzID0gZWxlbWVudC5kZXRhaWxzVGFic0Rpdi5tX3RhYnNPYmplY3Q7DQoJ
CQ0KCQlmb3IgKHZhciBpID0gMDsgaSA8IG9UUi5tX2xpbmtUYWJzLmxlbmd0aDsgaSsrKQ0KCQl7
DQoJCQl2YXIgdGFiSW5kZXggPSBvVFIubV9saW5rVGFic1tpXS50YWJJdGVtSW5kZXg7DQoJCQlp
ZiAodGFicy5uYW1lc1t0YWJJbmRleF0gPT0gY2FwdGlvbikNCgkJCXsNCgkJCQl0YWJzLmFjdGl2
YXRlVGFiQnlJbmRleCh0YWJJbmRleCk7DQoJCQkJcmV0dXJuOw0KCQkJfQ0KCQl9DQoNCgkJdmFy
IGNlbGwgPSBvVFIuY2VsbERhdGFbb1RELmNvbHVtbkluZGV4XTsNCgkJdmFyIHVybCA9IGNlbGwu
Y2VsbFZhbHVlOw0KCQlpZiAodGFibGVfaXNJbnRlcm5hbFVSTCh1cmwpKSByZXR1cm47DQoNCgkJ
dmFyIGxvYyA9IGlzSUUgPyAicHJvYmFibHkubWh0IiA6ICIiOw0KCQl0cnkgeyBsb2MgPSBkb2N1
bWVudC5sb2NhdGlvbi5ocmVmOyB9IGNhdGNoIChlKSB7IH0NCg0KCQl2YXIgc2hvd19jb250ZW50
ID0gZmFsc2U7DQoJCXZhciBkb3QgPSB1cmwubGFzdEluZGV4T2YoIi4iKTsNCgkJdmFyIGV4dCA9
ICIiOw0KCQlpZiAoZG90ID4gMCkNCgkJew0KCQkJZXh0ID0gdXJsLnN1YnN0cmluZyhkb3QgKyAx
KTsNCgkJCWZvciAodmFyIGogPSAwOyBqIDwgY19TaG93Q29udGVudEZvckV4dGVuc2lvbnMubGVu
Z3RoOyBqKyspDQoJCQkJaWYgKGNfU2hvd0NvbnRlbnRGb3JFeHRlbnNpb25zW2pdID09IGV4dCkg
eyBzaG93X2NvbnRlbnQgPSB0cnVlOyBicmVhazsgfQ0KCQl9DQoJCXZhciBNSFRfWE1MID0gKGV4
dCA9PSAieG1sIikgJiYgKGxvYy5pbmRleE9mKCIubWh0IikgPT0gbG9jLmxlbmd0aCAtIDQpOw0K
DQoJCXZhciBpZnJhbWUgPSB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiSUZSQU1FIik7
DQoJCWlmcmFtZS5mcmFtZUJvcmRlciA9IDA7DQoJCWlmcmFtZS53aWR0aCA9ICIxMDAlIjsNCgkJ
aWZyYW1lLmhlaWdodCA9ICIxMDAlIjsNCgkJaWZyYW1lLnN0eWxlLnpJbmRleCA9IDEwMDsNCgkJ
aWZyYW1lLnNyYyA9IChNSFRfWE1MIHx8ICFzaG93X2NvbnRlbnQpID8gImFib3V0OmJsYW5rIiA6
IHVybDsNCg0KCQl2YXIgbmVzdGVkT2JqZWN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiRElW
Iik7DQoJCW5lc3RlZE9iamVjdC5pZCA9ICJsaW5rRGl2XyIgKyBuZXN0ZWRPYmplY3QudW5pcXVl
SUQ7DQoJCW5lc3RlZE9iamVjdC5zdHlsZS5oZWlnaHQgPSAiMTAwJSI7DQoJCW5lc3RlZE9iamVj
dC5hcHBlbmRDaGlsZChpZnJhbWUpOw0KCQllbGVtZW50LmRldGFpbHNEaXYuYXBwZW5kQ2hpbGQo
bmVzdGVkT2JqZWN0KTsNCg0KCQlpZiAodGFicykNCgkJew0KCQkJdGFicy5hZGRJdGVtKGNhcHRp
b24sIG5lc3RlZE9iamVjdC5pZCk7DQoJCQl0YWJzLmluaXRpYWxBY3RpdmVUYWJOYW1lID0gY2Fw
dGlvbjsNCgkJCXRhYnMucmVuZGVyKCk7DQoJCQkNCgkJCW9UUi5tX2xpbmtUYWJzLnB1c2godGFi
cy5nZXRUYWJCeUluZGV4KHRhYnMuaXRlbXMubGVuZ3RoLTEpKTsNCgkJfQ0KDQoJCXRhYmxlX3No
b3dMaW5rUG9wdXAoY2VsbCwgTUhUX1hNTCwgc2hvd19jb250ZW50LCBuZXN0ZWRPYmplY3QpOw0K
CQlyZXR1cm47DQoJfQ0KCWVsc2UgLy8gcm93IGNsaWNrZWQNCgl7DQoJCWlmICghdGhpcy5kZWZh
dWx0Q29sdW1uKQ0KCQl7DQoJCQlpZiAodGhpcy50YWJsZUVsZW1lbnQpDQoJCQl7DQoJCQkJdmFy
IG1fTmVzdGVkT2JqZWN0ID0gdGhpcy50YWJsZUVsZW1lbnQubV9OZXN0ZWRPYmplY3Q7DQoJCQkJ
aWYgKG1fTmVzdGVkT2JqZWN0ICE9IG51bGwpDQoJCQkJew0KCQkJCQlpZiAobV9OZXN0ZWRPYmpl
Y3QucGFyZW50Tm9kZSAmJiBtX05lc3RlZE9iamVjdC5wYXJlbnROb2RlLmlubmVySFRNTCkNCgkJ
CQkJCW1fTmVzdGVkT2JqZWN0LnBhcmVudE5vZGUuaW5uZXJIVE1MID0gIiI7DQoJCQkJCXRoaXMu
dGFibGVFbGVtZW50Lm1fTmVzdGVkT2JqZWN0ID0gbnVsbDsNCgkJCQl9DQoJCQkJdGFibGVfc2V0
QWN0aXZlUm93KHRoaXMudGFibGVFbGVtZW50LCB0aGlzLCB0cnVlKTsNCgkJCX0NCgkJCXJldHVy
bjsNCgkJfQ0KDQoJCW9UUiA9IHRoaXM7DQoJCWVsZW1lbnQgPSB0aGlzLnRhYmxlRWxlbWVudDsN
Cg0KCQlpZiAoZWxlbWVudC5wcmV2ZW50RGVmYXVsdCkNCgkJew0KCQkJZWxlbWVudC5wcmV2ZW50
RGVmYXVsdCA9IGZhbHNlOw0KCQkJcmV0dXJuOw0KCQl9DQoJfQ0KDQoJdGFibGVfc2V0QWN0aXZl
Um93KGVsZW1lbnQsIG9UUiwgdHJ1ZSk7DQoNCgl0YWJsZV91cGRhdGVOZXN0ZWREYXRhKGVsZW1l
bnQsIG9UUik7DQp9DQoNCmZ1bmN0aW9uIHRhYmxlX2RvU2hvd0xpbmsoTUhUX1hNTCwgbG9jYXRp
b24sIHVybCkNCnsNCglpZiAoTUhUX1hNTCkNCgl7DQoJCXZhciBfeG1sID0gX2xvYWRfWE1MKHVy
bCk7DQoJCWlmICghX3htbCkNCgkJew0KCQkJYWxlcnQoJ1VuYWJsZSB0byBsb2FkIFhNTCBmaWxl
Jyk7DQoJCQlyZXR1cm47DQoJCX0NCg0KCQl2YXIgX3hzbCA9IF9sb2FkX1hNTChjaGFuZ2VGaWxl
RXh0KHVybCwgInhzbCIpKTsNCgkJaWYgKCFfeHNsKQ0KCQl7DQoJCQkvLyB0cnkgdG8gZmluZCB4
c2wgbGluayBpbiB0aGUgbG9hZGVkIHhtbCBmaWxlDQoJCQlmb3IgKHZhciBpID0gMDsgaSA8IF94
bWwuY2hpbGROb2Rlcy5sZW5ndGg7IGkrKykNCgkJCXsNCgkJCQlpZiAoX3htbC5jaGlsZE5vZGVz
W2ldLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgIT0gInhtbC1zdHlsZXNoZWV0IikgY29udGludWU7
DQoJCQkJdmFyIHZhbHVlID0gX3htbC5jaGlsZE5vZGVzW2ldLm5vZGVWYWx1ZTsNCgkJCQl2YXIg
cG9zID0gdmFsdWUuaW5kZXhPZigiLnhzbCIpOw0KCQkJCWlmIChwb3MgPCAwKSBjb250aW51ZTsN
CgkJCQl2YWx1ZSA9IHZhbHVlLnN1YnN0cmluZygwLCBwb3MgKyA0KTsNCgkJCQl2YXIgeHNsVXJs
ID0gY29ycmVjdExvY2F0aW9uKGxvY2F0aW9uLCB2YWx1ZS5zdWJzdHJpbmcodmFsdWUubGFzdElu
ZGV4T2YoIlwiIikgKyAxKSk7DQoJCQkJX3hzbCA9IF9sb2FkX1hNTCh4c2xVcmwpOw0KCQkJfQ0K
CQl9DQoNCgkJaWYgKCFfeHNsKSAvLyBzaG93IHhtbCBhcyBwbGFpbiB0ZXh0DQoJCXsNCgkJCXZh
ciB0ZXh0ID0gIiIgKyBfeG1sLnhtbDsNCgkJCXZhciByZSA9IC88L2c7DQoJCQl0ZXh0ID0gdGV4
dC5yZXBsYWNlKHJlLCAiJmx0OyIpOw0KCQkJdmFyIHJlID0gLz4vZzsNCgkJCXRleHQgPSB0ZXh0
LnJlcGxhY2UocmUsICImZ3Q7Iik7DQoJCQlkb2N1bWVudC53cml0ZSgiPGh0bWw+PGJvZHk+PHBy
ZT4iICsgdGV4dCArICI8L3ByZT48L2JvZHk+PC9odG1sPiIpOw0KCQl9DQoJCWVsc2UgLy8gdHJh
bnNmb3JtIHhtbCB1c2luZyB4c2wNCgkJew0KCQkJdmFyIHRleHQgPSBfeG1sLnRyYW5zZm9ybU5v
ZGUoX3hzbCk7DQoJCQlkb2N1bWVudC53cml0ZSh0ZXh0KTsNCgkJCXRleHQgPSAiIiArIGRvY3Vt
ZW50LmJvZHkub25sb2FkOw0KCQkJdmFyIHBvcyA9IHRleHQuaW5kZXhPZigieyIpOw0KCQkJaWYg
KHBvcyA+IDApDQoJCQl7DQoJCQkJdGV4dCA9IHRleHQuc3Vic3RyaW5nKHBvcyArIDEsIHRleHQu
aW5kZXhPZigifSIpKTsNCgkJCQlldmFsKHRleHQpOw0KCQkJfQ0KCQl9DQoJfQ0KCWVsc2UNCgl7
DQoJCXdpbmRvdy5vcGVuKHVybCwgIl9ibGFuayIsICJzdGF0dXM9eWVzLHRvb2xiYXI9bm8sbWVu
dWJhcj1ubyxsb2NhdGlvbj1ubyxzY3JvbGxiYXJzPXllcyIpOw0KCQlyZXR1cm47DQoJfQ0KfQ0K
DQpmdW5jdGlvbiB0YWJsZV9oaWRlTGlua1BvcHVwKGJ0bikNCnsNCgl2YXIgcGFyZW50ID0gYnRu
Lm9mZnNldFBhcmVudC5vZmZzZXRQYXJlbnQub2Zmc2V0UGFyZW50LnBhcmVudE5vZGU7DQoJcGFy
ZW50LnJlbW92ZUNoaWxkKHBhcmVudC5wb3B1cERpdik7DQoJaWYgKGlzSUUpIHBhcmVudC5yZW1v
dmVDaGlsZChwYXJlbnQucG9wdXBJRnJhbWUpOw0KfQ0KDQpmdW5jdGlvbiB0YWJsZV9zaG93TGlu
a1BvcHVwKG9URCwgTUhUX1hNTCwgc2hvd19jb250ZW50LCBuZXN0ZWRPYmplY3QpIC8vIE9wZW4g
bGluayBpbiB0aGUgbmV3IHdpbmRvdw0Kew0KCXZhciBkaXYgPSBuZXN0ZWRPYmplY3QgfHwgb1RE
LnBhcmVudE5vZGUudGFibGVFbGVtZW50Lm1fTmVzdGVkT2JqZWN0Ow0KCWlmICghZGl2KSBkaXYg
PSBvVEQucGFyZW50Tm9kZS50YWJsZUVsZW1lbnQ7DQoJdmFyIGRpdjIgPSB3aW5kb3cuZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiRElWIik7DQoJZGl2Mi5jbGFzc05hbWUgPSAic2luZ2xlRnJhbWUi
Ow0KCWRpdjIuc3R5bGUucG9zaXRpb24gPSAiYWJzb2x1dGUiOw0KCWRpdjIuc3R5bGUubGVmdCA9
IGdldFNjcmVlblgoZGl2KSArICJweCI7DQoJZGl2Mi5zdHlsZS50b3AgID0gZ2V0U2NyZWVuWShk
aXYpICsgInB4IjsNCglkaXYyLnN0eWxlLnpJbmRleCA9IDEwMDA7DQoJZGl2Mi5zdHlsZS5wYWRk
aW5nID0gIjNweCI7DQoJZGl2Mi5zdHlsZS5oZWlnaHQgPSAiMjFweCI7DQoJZGl2Mi5zdHlsZS53
aWR0aCA9IChkaXYub2Zmc2V0V2lkdGggKyAyKSArICJweCI7DQoJZGl2Mi5zdHlsZS5iYWNrZ3Jv
dW5kQ29sb3IgPSAiI0ZGRkZFMCI7DQoNCgl2YXIgbGluayA9IG9URC5jZWxsVmFsdWU7DQoJaWYg
KHNob3dfY29udGVudCkgbGluayA9ICJqYXZhc2NyaXB0OnRhYmxlX2RvU2hvd0xpbmsoIiArIE1I
VF9YTUwgKyAiLCBcIiIgKw0KCQlvVEQubG9jYXRpb24ucmVwbGFjZSgvXFwvZywgIlxcXFwiKSAr
ICJcIiwgXCIiICsgbGluay5yZXBsYWNlKC9cXC9nLCAiXFxcXCIpICsgIlwiKSI7DQoJdmFyIGJs
YW5rID0gKCFNSFRfWE1MICYmICFzaG93X2NvbnRlbnQgPyAidGFyZ2V0PSdfYmxhbmsnIiA6ICIi
KTsNCg0KCXZhciBodG1sID0gIjxUQUJMRSBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTAgd2lk
dGg9JzEwMCUnPjxUUj48VEQ+Jm5ic3A7IiArIA0KCQkiPEEgIiArIGJsYW5rICsgIiBocmVmPSci
ICsgbGluayArICInPk9wZW4gbGluayBpbiAiICsgKE1IVF9YTUwgPyAidGhlIG1haW4iIDogImEg
bmV3IikgKyAiIHdpbmRvdzwvQT48L1REPiIgKw0KCQkoIU1IVF9YTUwgPyAiPFREIHN0eWxlPSd3
aWR0aDoxM3B4Oyc+PElOUFVUIHR5cGU9J2ltYWdlJyB3aWR0aD0xMyBoZWlnaHQ9MTMgc3JjPSdu
dWxsLmdpZicgY2xhc3M9J2ljb24gaWNvbi1jbG9zZScgdGl0bGU9J0hpZGUnIG9uY2xpY2s9J3Rh
YmxlX2hpZGVMaW5rUG9wdXAodGhpcyknICIgKw0KCQkJIm9ubW91c2VvdmVyPSd0aGlzLmNsYXNz
TmFtZT1cImljb24gaWNvbi1jbG9zZTFcIicgb25tb3VzZW91dD0ndGhpcy5jbGFzc05hbWU9XCJp
Y29uIGljb24tY2xvc2VcIic+PC9URD4iIDogIiIpICsgIjwvVFI+PC9UQUJMRT4iOw0KCWRpdjIu
aW5uZXJIVE1MID0gaHRtbDsNCglkaXYuYXBwZW5kQ2hpbGQoZGl2Mik7DQoJZGl2LnBvcHVwRGl2
ID0gZGl2MjsNCg0KCWlmIChpc0lFKQ0KCXsNCgkJdmFyIGlmcmFtZTIgPSB3aW5kb3cuZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiSUZSQU1FIik7DQoJCWlmcmFtZTIuc3R5bGUucG9zaXRpb24gPSAi
YWJzb2x1dGUiOw0KCQlpZnJhbWUyLnN0eWxlLmxlZnQgPSBkaXYyLnN0eWxlLmxlZnQ7DQoJCWlm
cmFtZTIuc3R5bGUudG9wICA9IGRpdjIuc3R5bGUudG9wOw0KCQlpZnJhbWUyLnN0eWxlLmhlaWdo
dCA9ICIyMnB4IjsNCgkJaWZyYW1lMi5zdHlsZS53aWR0aCA9IGRpdjIuc3R5bGUud2lkdGg7DQoJ
CWlmcmFtZTIuc3R5bGUuekluZGV4ID0gOTk5Ow0KCQlpZnJhbWUyLmZyYW1lQm9yZGVyID0gMDsN
CgkJaWZyYW1lMi5zY3JvbGxpbmcgPSAibm8iOw0KCQlkaXYuYXBwZW5kQ2hpbGQoaWZyYW1lMik7
DQoJCWRpdi5wb3B1cElGcmFtZSA9IGlmcmFtZTI7DQoJfQ0KfQ0KDQpmdW5jdGlvbiB0YWJsZV9p
c0ludGVybmFsVVJMKHVybCkNCnsNCglyZXR1cm4gKHVybC5yZXBsYWNlKCIgICIsICIgIikuaW5k
ZXhPZigiPGEgaHJlZj1cIiMiKSA9PSAwKTsNCn0NCg0KZnVuY3Rpb24gdGFibGVfY2hlY2tIZWFk
ZXJXaWR0aChvVGFibGVQYW5lKQ0Kew0KCXZhciBfZGVsdGEgPSBjX0lubmVyUGFkZGluZyAtIDE7
DQoJaWYgKChvVGFibGVQYW5lLmNsaWVudEhlaWdodCAtIDYpIDwgb1RhYmxlUGFuZS5tX2RhdGFU
YWJsZS5vZmZzZXRIZWlnaHQpDQoJCV9kZWx0YSArPSAxODsNCglvVGFibGVQYW5lLmxpbmtlZERp
di5zdHlsZS53aWR0aCA9IChvVGFibGVQYW5lLm9mZnNldFdpZHRoIC0gX2RlbHRhKSArICJweCI7
DQp9DQoNCmZ1bmN0aW9uIHRhYmxlX2RvVGFibGVQYW5lU2Nyb2xsKCkNCnsNCglpZiAodGhpcy5s
aW5rZWREaXYgIT0gbnVsbCkNCgl7DQoJCXRoaXMubGlua2VkRGl2LnNjcm9sbExlZnQgPSB0aGlz
LnNjcm9sbExlZnQ7DQoJfQ0KCWlmICh0aGlzLm1fZmlsdGVyRGl2ICE9IG51bGwpDQoJew0KCQlj
YXB0aW9uX3NldEZpbHRlclBvc2l0aW9uKHRoaXMubV9maWx0ZXJEaXYsIHRoaXMpOw0KCX0NCn0N
Cg0KZnVuY3Rpb24gdGFibGVfZXhwYW5kUm93KCkNCnsNCglyb2xvdmVyVHJlZUltYWdlKHRoaXMp
Ow0KCXZhciByb3cgPSB0aGlzLnBhcmVudFRELnBhcmVudE5vZGU7DQoJdmFyIGVsZW1lbnQgPSBy
b3cudGFibGVFbGVtZW50Ow0KCXJvdy5vcGVuZWQgPSB0aGlzLm9wZW5lZDsNCglpZiAoIWVsZW1l
bnQubG9hZFRyZWVBdE9uY2UpIHRhYmxlX2dldFN1YlJvd3Mocm93KTsNCgl0YWJsZV9zaG93U3Vi
Um93cyhyb3csIHRoaXMub3BlbmVkKTsNCgl0YWJsZV9yZXNpemVDYXB0aW9ucyhlbGVtZW50KTsN
Cgl0YWJsZV9jaGVja0hlYWRlcldpZHRoKGVsZW1lbnQucm9vdERpdi50YWJsZVBhbmUpOw0KCWlm
ICghZWxlbWVudC5sb2FkVHJlZUF0T25jZSkgdGFibGVfdXBkYXRlRmlsdGVyU3RhdGUoZWxlbWVu
dC50YWJsZS5jb2x1bW5zKTsNCn0NCg0KZnVuY3Rpb24gdGFibGVfc2hvd1N1YlJvd3Mocm93LCB2
YWx1ZSkNCnsNCglpZiAocm93LnN1YlJvd3MgIT0gbnVsbCkNCgl7DQoJCXZhciBfdmFsdWUgPSB2
YWx1ZTsNCgkJaWYgKHZhbHVlICYmICFyb3cub3BlbmVkICYmIHJvdy5tdXN0QmVWaXNpYmxlKSBf
dmFsdWUgPSBmYWxzZTsgLy8gZG8gbm90IG9wZW4gY2xvc2VkIHN1YnJvd3MNCgkJZm9yICh2YXIg
aSA9IDA7IGkgPCByb3cuc3ViUm93cy5sZW5ndGg7IGkrKykNCgkJew0KCQkJdmFyIGlzRm9sZGVy
ID0gcm93LnN1YlJvd3NbaV0uc3ViUm93cyAhPSBudWxsICYmIHRhYmxlX2lzU3ViUm93c0ZpbHRl
cmVkKHJvdy5zdWJSb3dzW2ldKSA9PSBmYWxzZTsNCgkJCXZhciBfdmlzaWJsZSA9IChfdmFsdWUg
JiYgcm93LnN1YlJvd3NbaV0ubXVzdEJlVmlzaWJsZSk7DQoJCQlyb3cuc3ViUm93c1tpXS5zdHls
ZS5kaXNwbGF5ID0gX3Zpc2libGUgPyAiIjogIm5vbmUiOw0KCQkJaWYgKF92aXNpYmxlKSB0YWJs
ZV91cGRhdGVEYXRlVGltZUNvbHVtbnMocm93LnN1YlJvd3NbaV0pOw0KCQkJdGFibGVfc2hvd1N1
YlJvd3Mocm93LnN1YlJvd3NbaV0sIF92YWx1ZSk7DQoJCX0NCg0KCQl2YXIgbmV4dFJvdyA9IHRh
YmxlX2dldE5leHRWaXNpYmxlUm93KHJvdy5zdWJSb3dzLmxlbmd0aCA+IDAgPyByb3cuc3ViUm93
c1tyb3cuc3ViUm93cy5sZW5ndGgtMV0gOiByb3cpOw0KCQl0YWJsZV91cGRhdGVEYXRlVGltZUNv
bHVtbnMobmV4dFJvdyk7DQoJfQ0KfQ0KDQpmdW5jdGlvbiB0YWJsZV9yZXNpemVDYXB0aW9ucyhl
bGVtZW50KQ0Kew0KCWZvciAodmFyIGkgPSAwOyBpIDwgZWxlbWVudC5tX0NhcHRpb25zLmxlbmd0
aDsgaSsrKQ0KCXsNCgkJaWYgKCFlbGVtZW50Lm1fQ2FwdGlvbnNbaV0ucmVhbFREKSBjb250aW51
ZTsNCgkJZWxlbWVudC5tX0NhcHRpb25zW2ldLnN0eWxlLndpZHRoID0gZWxlbWVudC5tX0NhcHRp
b25zW2ldLnJlYWxURC5vZmZzZXRXaWR0aCArICJweCI7DQoJCWVsZW1lbnQubV9DYXB0aW9uc1tp
XS5zdHlsZS5taW5XaWR0aCA9IGVsZW1lbnQubV9DYXB0aW9uc1tpXS5yZWFsVEQub2Zmc2V0V2lk
dGggKyAicHgiOw0KCX0NCn0NCg0KZnVuY3Rpb24gdGFibGVfZ2V0UHJldmlvdXNWaXNpYmxlUm93
KHJvdykNCnsNCgl3aGlsZSAocm93KQ0KCXsNCgkJcm93ID0gcm93LnByZXZpb3VzU2libGluZzsN
CgkJaWYgKCFyb3cgfHwgIXJvdy5yb3dJbmRleCkNCgkJCWJyZWFrOw0KCQlpZiAocm93LnN0eWxl
LmRpc3BsYXkgIT0gIm5vbmUiKQ0KCQkJcmV0dXJuIHJvdzsNCgl9DQoJcmV0dXJuIG51bGw7DQp9
DQoNCmZ1bmN0aW9uIHRhYmxlX2dldE5leHRWaXNpYmxlUm93KHJvdykNCnsNCgl3aGlsZSAocm93
KQ0KCXsNCgkJcm93ID0gcm93Lm5leHRTaWJsaW5nOw0KCQlpZiAoIXJvdykNCgkJCWJyZWFrOw0K
CQlpZiAocm93LnN0eWxlLmRpc3BsYXkgIT0gIm5vbmUiKQ0KCQkJcmV0dXJuIHJvdzsNCgl9DQoJ
cmV0dXJuIG51bGw7DQp9DQoNCmZ1bmN0aW9uIHRhYmxlX3VwZGF0ZURhdGVUaW1lQ29sdW1uc0Zv
clRhYmxlKHRhYmxlKQ0Kew0KCWZvciAodmFyIGkgPSAwOyBpIDwgdGFibGUucm93cy5sZW5ndGg7
IGkrKykNCgkJaWYgKHRhYmxlLnJvd3NbaV0uc3R5bGUuZGlzcGxheSAhPSAibm9uZSIpDQoJCQl0
YWJsZV91cGRhdGVEYXRlVGltZUNvbHVtbnModGFibGUucm93c1tpXSk7DQp9DQoNCmZ1bmN0aW9u
IHRhYmxlX3VwZGF0ZURhdGVUaW1lQ29sdW1ucyhyb3cpDQp7DQoJaWYgKGNfU2hvd1RpbWVEaWZm
ZXJlbmNlID09PSB1bmRlZmluZWQpDQoJCXJldHVybjsNCgkNCgl2YXIgcHJldlZpc2libGVSb3cg
PSB0YWJsZV9nZXRQcmV2aW91c1Zpc2libGVSb3cocm93KTsNCglpZiAoIXByZXZWaXNpYmxlUm93
KSByZXR1cm47DQoJDQoJZm9yICh2YXIgaSA9IDA7IGkgPCByb3cuY2VsbERhdGEubGVuZ3RoOyBp
KyspDQoJew0KCQlpZiAocm93LmNlbGxEYXRhW2ldLm1zZWMgPT0gdW5kZWZpbmVkIHx8DQoJCQlw
cmV2VmlzaWJsZVJvdy5jZWxsRGF0YVtpXS5tc2VjID09IHVuZGVmaW5lZCkNCgkJCWNvbnRpbnVl
Ow0KCQkNCgkJaWYgKCFyb3cuY2VsbHNbaV0uZmlyc3RFbGVtZW50Q2hpbGQpDQoJCQlicmVhazsN
CgkJDQoJCWlmIChjX1Nob3dUaW1lRGlmZmVyZW5jZSkNCgkJCXJvdy5jZWxsc1tpXS5maXJzdEVs
ZW1lbnRDaGlsZC5pbm5lckhUTUwgPSB0YWJsZV9tc2VjVG9TdHJpbmcocm93LmNlbGxEYXRhW2ld
Lm1zZWMgLSBwcmV2VmlzaWJsZVJvdy5jZWxsRGF0YVtpXS5tc2VjKTsNCgkJZWxzZQ0KCQkJcm93
LmNlbGxzW2ldLmZpcnN0RWxlbWVudENoaWxkLmlubmVySFRNTCA9IHJvdy5jZWxsRGF0YVtpXS52
YWx1ZTsNCgl9DQp9DQoNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTT1JUSU5H
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQp2YXIgbV9Tb3J0Q29sdW1uSWQ7DQoN
CmZ1bmN0aW9uIHRhYmxlX3NvcnQob1RhYmxlKQ0Kew0KCXZhciBfcHJldkNvbHVtbklkID0gbV9T
b3J0Q29sdW1uSWQ7DQoJbV9Tb3J0Q29sdW1uSWQgPSBvVGFibGUubV9zb3J0Q29sdW1uSWQ7DQoN
CglpZiAob1RhYmxlLnJvd3MubGVuZ3RoIDwgMyB8fCBtX1NvcnRDb2x1bW5JZCA8IDApIHJldHVy
bjsNCg0KCXZhciBfc29ydENvbHVtbiA9IG9UYWJsZS5yb3dzWzBdLmNlbGxzW21fU29ydENvbHVt
bklkXS5jb2x1bW47DQoNCgl2YXIgX3NvcnRGdW5jdGlvbiA9IHRhYmxlX3NvcnRfY2FzZWluc2Vu
c2l0aXZlOw0KCWlmIChfc29ydENvbHVtbi5pc0ltYWdlKSBfc29ydEZ1bmN0aW9uID0gdGFibGVf
c29ydF9pbWFnZTsNCglpZiAoX3NvcnRDb2x1bW4uaXNOdW1lcmljKSBfc29ydEZ1bmN0aW9uID0g
dGFibGVfc29ydF9udW1lcmljOw0KCWlmIChfc29ydENvbHVtbi5pc0RhdGVUaW1lKSBfc29ydEZ1
bmN0aW9uID0gdGFibGVfc29ydF9kYXRldGltZTsNCg0KCXZhciBzb3J0Um93cyA9IG5ldyBBcnJh
eSgpOw0KCWZvciAodmFyIGkgPSAxOyBpIDwgb1RhYmxlLnJvd3MubGVuZ3RoOyBpKyspDQoJCXNv
cnRSb3dzW2kgLSAxXSA9IG9UYWJsZS5yb3dzW2ldOw0KDQoJaWYgKF9zb3J0Q29sdW1uLmZpbHRl
ckxpc3QubGVuZ3RoID4gMSB8fCBfc29ydENvbHVtbi5pc0RhdGVUaW1lKQ0KCXsNCgkJaWYgKG9U
YWJsZS5tX3NvcnRBc2NlbmRpbmcpIHNvcnRSb3dzLnJldmVyc2UoKTsNCgkJc29ydFJvd3Muc29y
dChfc29ydEZ1bmN0aW9uKTsNCgkJaWYgKCFvVGFibGUubV9zb3J0QXNjZW5kaW5nKSBzb3J0Um93
cy5yZXZlcnNlKCk7DQoJfQ0KCWVsc2UNCgl7DQoJCWlmIChfcHJldkNvbHVtbklkID09IG1fU29y
dENvbHVtbklkKSBzb3J0Um93cy5yZXZlcnNlKCk7DQoJfQ0KDQoJZm9yICh2YXIgaSA9IDA7IGkg
PCBzb3J0Um93cy5sZW5ndGg7IGkrKykgDQoJew0KCQlpZiAoIXNvcnRSb3dzW2ldLnBhcmVudFJv
dykNCgkJew0KCQkJb1RhYmxlLnRCb2RpZXNbMF0uYXBwZW5kQ2hpbGQoc29ydFJvd3NbaV0pOw0K
CQkJYWRkX3N1YlJvd3Mob1RhYmxlLCBzb3J0Um93c1tpXSwgc29ydFJvd3MpOw0KCQl9DQoJfQ0K
fQ0KDQpmdW5jdGlvbiBhZGRfc3ViUm93cyhvVGFibGUsIG9Sb3csIHNvcnRSb3dzKQ0Kew0KCWlm
ICghb1Jvdy5zdWJSb3dzKSByZXR1cm47DQoNCglmb3IgKHZhciBpID0gMDsgaSA8IHNvcnRSb3dz
Lmxlbmd0aDsgaSsrKQ0KCXsNCgkJZm9yICh2YXIgaiA9IDA7IGogPCBvUm93LnN1YlJvd3MubGVu
Z3RoOyBqKyspDQoJCQlpZiAob1Jvdy5zdWJSb3dzW2pdID09IHNvcnRSb3dzW2ldKQ0KCQkJew0K
CQkJCW9UYWJsZS50Qm9kaWVzWzBdLmFwcGVuZENoaWxkKG9Sb3cuc3ViUm93c1tqXSk7DQoJCQkJ
YWRkX3N1YlJvd3Mob1RhYmxlLCBvUm93LnN1YlJvd3Nbal0sIHNvcnRSb3dzKTsNCgkJCQlicmVh
azsNCgkJCX0NCgl9DQp9DQoNCmZ1bmN0aW9uIGNoZWNrX2ltYWdlKGNlbGwpDQp7DQoJdmFyIGl0
ZW0gPSBudWxsOw0KCXZhciBjaGlsZCA9IGNlbGwuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIlNQQU4i
KTsNCglpZiAoY2hpbGQubGVuZ3RoID09IDApIHJldHVybiBpdGVtOw0KDQoJY2hpbGQgPSBjaGls
ZFswXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiSU1HIik7DQoJaWYgKGNoaWxkLmxlbmd0aCA9PSAw
KSByZXR1cm4gaXRlbTsNCg0KCWl0ZW0gPSBjaGlsZFswXS5zcmM7DQoJcmV0dXJuIGl0ZW07DQp9
DQoNCmZ1bmN0aW9uIHRhYmxlX3NvcnRfaW1hZ2UoYSwgYikNCnsNCglhYSA9IGNoZWNrX2ltYWdl
KGEuY2VsbHNbbV9Tb3J0Q29sdW1uSWRdKTsgaWYgKCFhYSkgYWEgPSAiIjsNCgliYiA9IGNoZWNr
X2ltYWdlKGIuY2VsbHNbbV9Tb3J0Q29sdW1uSWRdKTsgaWYgKCFiYikgYmIgPSAiIjsNCg0KCWlm
IChhYSA9PSBiYikgcmV0dXJuIDA7DQoJaWYgKGFhIDwgYmIpIHJldHVybiAtMTsNCglyZXR1cm4g
MTsNCn0NCg0KZnVuY3Rpb24gdGFibGVfc29ydF9udW1lcmljKGEsIGIpIA0KeyANCgl2YXIgc3Ry
ID0gYS5jZWxsc1ttX1NvcnRDb2x1bW5JZF0uaW5uZXJUZXh0Ow0KCXZhciBhYSA9IHBhcnNlRmxv
YXQoc3RyLnJlcGxhY2UoIiwiLCAiLiIpKTsNCglpZiAoaXNOYU4oYWEpKSBhYSA9IDA7DQoNCglz
dHIgPSBiLmNlbGxzW21fU29ydENvbHVtbklkXS5pbm5lclRleHQ7DQoJdmFyIGJiID0gcGFyc2VG
bG9hdChzdHIucmVwbGFjZSgiLCIsICIuIikpOw0KCWlmIChpc05hTihiYikpIGJiID0gMDsNCg0K
CXJldHVybiBhYSAtIGJiOw0KfQ0KDQpmdW5jdGlvbiB0YWJsZV9zb3J0X2RhdGV0aW1lKGEsIGIp
DQp7DQoJdmFyIGFfbXNlYyA9IGEuY2VsbHNbbV9Tb3J0Q29sdW1uSWRdLl9tc2VjOw0KCXZhciBi
X21zZWMgPSBiLmNlbGxzW21fU29ydENvbHVtbklkXS5fbXNlYzsNCg0KCXZhciByZXMgPSAwOw0K
CWlmIChhX21zZWMgJiYgYl9tc2VjKQ0KCQlyZXMgPSB0YWJsZV90ZXh0Q29tcGFyZShhX21zZWMs
IGJfbXNlYyk7DQoJZWxzZQ0KCQlyZXMgPSB0YWJsZV9zb3J0X2Nhc2VpbnNlbnNpdGl2ZShhLCBi
KTsNCg0KCWlmIChyZXMgPT0gMCAmJiBhLmNlbGxEYXRhICYmIGIuY2VsbERhdGEpDQoJCXJlcyA9
IHRhYmxlX3RleHRDb21wYXJlKGEuY2VsbERhdGFbMF0ucmVjb3JkSUQsIGIuY2VsbERhdGFbMF0u
cmVjb3JkSUQpOw0KCXJldHVybiByZXM7DQp9DQoNCmZ1bmN0aW9uIHRhYmxlX3RleHRDb21wYXJl
KGEsIGIpDQp7DQoJaWYgKGEgPT0gYikgcmV0dXJuIDA7DQoJaWYgKGEgPCBiKSByZXR1cm4gLTE7
DQoJcmV0dXJuIDE7DQp9DQoNCmZ1bmN0aW9uIHRhYmxlX3NvcnRfY2FzZWluc2Vuc2l0aXZlKGEs
IGIpIA0Kew0KCXZhciBhYSA9IGEuY2VsbHNbbV9Tb3J0Q29sdW1uSWRdLmlubmVyVGV4dC50b0xv
d2VyQ2FzZSgpOw0KCXZhciBiYiA9IGIuY2VsbHNbbV9Tb3J0Q29sdW1uSWRdLmlubmVyVGV4dC50
b0xvd2VyQ2FzZSgpOw0KDQoJcmV0dXJuIHRhYmxlX3RleHRDb21wYXJlKGFhLCBiYik7DQp9DQoN
CmZ1bmN0aW9uIHRhYmxlX3NvcnRfZGVmYXVsdChhLCBiKSANCnsNCglhYSA9IGEuY2VsbHNbbV9T
b3J0Q29sdW1uSWRdLmlubmVyVGV4dDsNCgliYiA9IGIuY2VsbHNbbV9Tb3J0Q29sdW1uSWRdLmlu
bmVyVGV4dDsNCg0KCXJldHVybiB0YWJsZV90ZXh0Q29tcGFyZShhYSwgYmIpOw0KfQ0KDQovLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRklMVEVSSU5HIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQ0KDQpmdW5jdGlvbiB0YWJsZV9pc1N1YlJvd3NGaWx0ZXJlZChvUm93KQ0K
ew0KCXZhciBfZmlsdGVyZWQgPSB0cnVlOw0KCWZvciAodmFyIGkgPSAwOyBpIDwgb1Jvdy5zdWJS
b3dzLmxlbmd0aDsgaSsrKQ0KCXsNCgkJdmFyIG9TdWJSb3cgPSBvUm93LnN1YlJvd3NbaV07DQoJ
CWlmIChvU3ViUm93LnN1YlJvd3MpDQoJCQlfZmlsdGVyZWQgPSB0YWJsZV9pc1N1YlJvd3NGaWx0
ZXJlZChvU3ViUm93KTsNCgkJaWYgKG9TdWJSb3cubXVzdEJlVmlzaWJsZSkgX2ZpbHRlcmVkID0g
ZmFsc2U7DQoJfQ0KCXJldHVybiBfZmlsdGVyZWQ7DQp9DQoNCmZ1bmN0aW9uIG9wdGlvbnNfY2xp
Y2soKQ0Kew0KCXRhYmxlX3VwZGF0ZUZpbHRlcih0aGlzLm1fZGF0YVRhYmxlKTsNCn0NCg0KZnVu
Y3Rpb24gZmlsdGVyX3JlbW92ZSgpDQp7DQoJdmFyIGNvbHVtbnMgPSB0aGlzLmVsZW1lbnQudGFi
bGUuY29sdW1uczsNCglmb3IgKHZhciBpID0gMDsgaSA8IGNvbHVtbnMubGVuZ3RoOyBpKyspDQoJ
ew0KCQl2YXIgb2MgPSBjb2x1bW5zW2ldOw0KCQlpZiAoIW9jLmZpbHRlcmVkKSBjb250aW51ZTsN
Cg0KCQlmb3IgKHZhciBqID0gMDsgaiA8IG9jLmZpbHRlckxpc3QubGVuZ3RoOyBqKyspDQoJCQlv
Yy5maWx0ZXJMaXN0W2pdLmNoZWNrZWQgPSB0cnVlOw0KDQoJCW9jLmZpbHRlcmVkID0gZmFsc2U7
DQoJCW9jLm1fY2FwdGlvbi5tX2NhcHRpb25EaXYuc3R5bGUuZm9udFdlaWdodCA9ICIiOw0KCX0N
Cgl0YWJsZV91cGRhdGVGaWx0ZXIodGhpcy5lbGVtZW50LnJvb3REaXYudGFibGVQYW5lLm1fZGF0
YVRhYmxlKTsNCgljYXB0aW9uX2hpZGVGaWx0ZXIobV9wcm92aWRlcmNlbGwubV9maWx0ZXJlZENv
bHVtbik7DQp9DQoNCmZ1bmN0aW9uIHRhYmxlX3Nob3dGaWx0ZXJPcHRpb25zKGVsZW1lbnQsIHNo
b3cpDQp7DQoJaWYgKGVsZW1lbnQucm9vdERpdi5maWx0ZXJPcHRpb25zRGl2ICE9IG51bGwpDQoJ
ew0KCQlpZiAoIXNob3cpDQoJCXsNCgkJCWVsZW1lbnQuZmlsdGVyX3Nob3dQYXJlbnRzID0gbnVs
bDsNCgkJCWVsZW1lbnQuZmlsdGVyX3Nob3dDaGlsZHJlbiA9IG51bGw7DQoJCQllbGVtZW50LnJv
b3REaXYucmVtb3ZlQ2hpbGQoZWxlbWVudC5yb290RGl2LmZpbHRlck9wdGlvbnNEaXYpOw0KCQkJ
ZWxlbWVudC5yb290RGl2LmZpbHRlck9wdGlvbnNEaXYgPSBudWxsOw0KDQoJCQllbGVtZW50LnJv
b3REaXYudGFibGVQYW5lLnN0eWxlLmhlaWdodCA9IChlbGVtZW50LnJvb3REaXYudGFibGVQYW5l
Lm9mZnNldEhlaWdodCArIDIxKSArICJweCI7DQoJCX0NCgkJcmV0dXJuOw0KCX0NCg0KCWlmIChz
aG93KQ0KCXsNCgkJdmFyIG9UYWJsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlRBQkxFIik7
DQoJCWVsZW1lbnQucm9vdERpdi5hcHBlbmRDaGlsZChvVGFibGUpOw0KCQlvVGFibGUud2lkdGgg
PSAiMTAwJSI7DQoJCW9UYWJsZS5oZWlnaHQgPSAyMDsNCgkJb1RhYmxlLmNlbGxQYWRkaW5nID0g
MDsNCgkJb1RhYmxlLmNlbGxTcGFjaW5nID0gMDsNCgkJb1RhYmxlLmNsYXNzTmFtZSA9ICJzaW5n
bGVGcmFtZSI7DQoJCW9UYWJsZS5zdHlsZS5ib3JkZXJUb3BXaWR0aCA9ICIwcHgiOw0KCQlvVGFi
bGUuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gIiNFRUVFRUUiOw0KDQoJCXZhciBvQm9keSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoIlRCT0RZIik7DQoJCW9UYWJsZS5hcHBlbmRDaGlsZChvQm9k
eSk7DQoJCXZhciBvVFIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJUUiIpOw0KCQlvQm9keS5h
cHBlbmRDaGlsZChvVFIpOw0KDQoJCS8vIGNsb3NlIGJ1dHRvbg0KCQl2YXIgb1REID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiVEQiKTsNCgkJb1RSLmFwcGVuZENoaWxkKG9URCk7DQoJCW9URC53
aWR0aCA9IDIwOw0KCQlvVEQuaGVpZ2h0ID0gMjA7DQoJCW9URC5hbGlnbiA9ICJyaWdodCI7DQoJ
CW9URC5zdHlsZS5wYWRkaW5nVG9wID0gIjRweCI7DQoJCXZhciBvQnRuID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiSU5QVVQiKTsNCgkJb0J0bi50eXBlID0gImltYWdlIjsNCgkJb0J0bi5zcmMg
PSAibnVsbC5naWYiOw0KCQlvQnRuLmNsYXNzTmFtZSA9ICJpY29uIGljb24tY2xvc2UiOw0KCQlv
QnRuLnRpdGxlID0gIlJlbW92ZSBmaWx0ZXIiOw0KCQlvQnRuLm9ubW91c2VvdmVyID0gZnVuY3Rp
b24gKCkgeyB0aGlzLmNsYXNzTmFtZSA9ICdpY29uIGljb24tY2xvc2UxJzsgfQ0KCQlvQnRuLm9u
bW91c2VvdXQgPSBmdW5jdGlvbiAoKSB7IHRoaXMuY2xhc3NOYW1lID0gJ2ljb24gaWNvbi1jbG9z
ZSc7IH0NCgkJb0J0bi5lbGVtZW50ID0gZWxlbWVudDsNCgkJb0J0bi5vbmNsaWNrID0gZmlsdGVy
X3JlbW92ZTsNCgkJb1RELmFwcGVuZENoaWxkKG9CdG4pOw0KDQoJCW9URCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoIlREIik7DQoJCW9URC5zdHlsZS5wYWRkaW5nTGVmdCA9ICI1cHgiOw0KCQlv
VEQuaW5uZXJIVE1MID0gIkZpbHRlciBpcyBhY3RpdmUiOw0KCQlvVFIuYXBwZW5kQ2hpbGQob1RE
KTsNCg0KCQlpZiAoZWxlbWVudC5pc1RyZWUpIC8vICJzaG93IHBhcmVudHMiIGFuZCAic2hvdyBj
aGlsZHJlbiIgY2hlY2tib3hlcw0KCQl7DQoJCQl2YXIgb1REID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiVEQiKTsNCgkJCW9UUi5hcHBlbmRDaGlsZChvVEQpOw0KCQkJb1RELndpZHRoID0gMjA7
DQoJCQl2YXIgb0NCMSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIklOUFVUIik7DQoJCQlvQ0Ix
LnR5cGUgPSAiY2hlY2tib3giOw0KCQkJb0NCMS5tX2RhdGFUYWJsZSA9IGVsZW1lbnQucm9vdERp
di50YWJsZVBhbmUubV9kYXRhVGFibGU7DQoJCQlvQ0IxLm9uY2xpY2sgPSBvcHRpb25zX2NsaWNr
Ow0KCQkJb1RELmFwcGVuZENoaWxkKG9DQjEpOw0KCQkJZWxlbWVudC5maWx0ZXJfc2hvd1BhcmVu
dHMgPSBvQ0IxOw0KDQoJCQlvVEQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJURCIpOw0KCQkJ
b1RELndpZHRoID0gODA7DQoJCQlvVEQuaW5uZXJIVE1MID0gInNob3cgcGFyZW50cyI7DQoJCQlv
VFIuYXBwZW5kQ2hpbGQob1REKTsNCg0KCQkJb1REID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
VEQiKTsNCgkJCW9UUi5hcHBlbmRDaGlsZChvVEQpOw0KCQkJb1RELndpZHRoID0gMjA7DQoJCQl2
YXIgb0NCMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIklOUFVUIik7DQoJCQlvQ0IyLnR5cGUg
PSAiY2hlY2tib3giOw0KCQkJb0NCMi5tX2RhdGFUYWJsZSA9IGVsZW1lbnQucm9vdERpdi50YWJs
ZVBhbmUubV9kYXRhVGFibGU7DQoJCQlvQ0IyLm9uY2xpY2sgPSBvcHRpb25zX2NsaWNrOw0KCQkJ
b1RELmFwcGVuZENoaWxkKG9DQjIpOw0KCQkJZWxlbWVudC5maWx0ZXJfc2hvd0NoaWxkcmVuID0g
b0NCMjsNCg0KCQkJb1REID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiVEQiKTsNCgkJCW9URC53
aWR0aCA9IDgwOw0KCQkJb1RELmlubmVySFRNTCA9ICJzaG93IGNoaWxkcmVuIjsNCgkJCW9UUi5h
cHBlbmRDaGlsZChvVEQpOw0KCQl9DQoJCQ0KCQllbGVtZW50LnJvb3REaXYudGFibGVQYW5lLnN0
eWxlLmhlaWdodCA9IChlbGVtZW50LnJvb3REaXYudGFibGVQYW5lLm9mZnNldEhlaWdodCAtIDIx
KSArICJweCI7DQoNCgkJZWxlbWVudC5yb290RGl2LmZpbHRlck9wdGlvbnNEaXYgPSBvVGFibGU7
DQoJfQ0KfQ0KDQpmdW5jdGlvbiB0YWJsZV9jaGVja1Jvd0lzRmlsdGVyZWQob1JvdykNCnsNCgl2
YXIgX3Zpc2libGUgPSB0cnVlOw0KCWZvciAodmFyIGogPSAwOyBqIDwgb1Jvdy5jZWxscy5sZW5n
dGg7IGorKykNCgl7DQoJCXZhciBvQ2VsbCA9IG9Sb3cuY2VsbHNbal07DQoJCWlmICghb0NlbGwu
Y29sdW1uLmZpbHRlcmVkKSBjb250aW51ZTsNCg0KCQkvLyBTZWFyY2hpbmcgZm9yIHZhbHVlIGlu
IGZpbHRlciBsaXN0DQoNCgkJdmFyIGZvID0gdGFibGVfRmluZE9ySW5zZXJ0RmlsdGVyT2JqZWN0
KG9DZWxsLmNvbHVtbi5maWx0ZXJMaXN0LCBvQ2VsbC5maWx0ZXJUZXh0LCBvQ2VsbC5jb2x1bW4u
aXNOdW1lcmljLCBmYWxzZSk7DQoJCWlmIChmbyAhPSBudWxsKSBfdmlzaWJsZSA9IF92aXNpYmxl
ICYmIGZvLmNoZWNrZWQ7DQoNCgkJaWYgKCFfdmlzaWJsZSkgYnJlYWs7DQoJfQ0KDQoJb1Jvdy5m
aWx0ZXJlZCA9ICFfdmlzaWJsZTsNCglvUm93Lm11c3RCZVZpc2libGUgPSBfdmlzaWJsZTsNCglv
Um93LnN0eWxlLmRpc3BsYXkgPSBfdmlzaWJsZSA/ICIiIDogIm5vbmUiOw0KfQ0KDQpmdW5jdGlv
biB0YWJsZV91cGRhdGVGaWx0ZXIob1RhYmxlKQ0Kew0KCXZhciBfdGFibGVfZmlsdGVyZWQgPSBm
YWxzZTsNCg0KCXZhciBlbGVtZW50ID0gb1RhYmxlLnBhcmVudE5vZGUudGFibGVFbGVtZW50Ow0K
CXZhciBzaG93UGFyZW50cyA9IGVsZW1lbnQuZmlsdGVyX3Nob3dQYXJlbnRzICE9IG51bGwgJiYg
ZWxlbWVudC5maWx0ZXJfc2hvd1BhcmVudHMuY2hlY2tlZDsNCgl2YXIgc2hvd0NoaWxkcmVuID0g
ZWxlbWVudC5maWx0ZXJfc2hvd0NoaWxkcmVuICE9IG51bGwgJiYgZWxlbWVudC5maWx0ZXJfc2hv
d0NoaWxkcmVuLmNoZWNrZWQ7DQoNCgkvLyBGaWx0ZXIgZGF0YQ0KCWZvciAodmFyIGkgPSAxOyBp
IDwgb1RhYmxlLnJvd3MubGVuZ3RoOyBpKyspDQoJew0KCQl2YXIgb1JvdyA9IG9UYWJsZS5yb3dz
W2ldOw0KCQl0YWJsZV9jaGVja1Jvd0lzRmlsdGVyZWQob1Jvdyk7DQoJCWlmICghX3RhYmxlX2Zp
bHRlcmVkKSBfdGFibGVfZmlsdGVyZWQgPSBvUm93LmZpbHRlcmVkOw0KCX0NCg0KCWlmIChzaG93
UGFyZW50cykNCgkJZm9yICh2YXIgaSA9IDE7IGkgPCBvVGFibGUucm93cy5sZW5ndGg7IGkrKykN
CgkJew0KCQkJdmFyIG9Sb3cgPSBvVGFibGUucm93c1tpXTsNCgkJCWlmIChvUm93LnN1YlJvd3Mg
IT0gbnVsbCkNCgkJCXsNCgkJCQl2YXIgc3Vicm93c19maWx0ZXJlZCA9IHRhYmxlX2lzU3ViUm93
c0ZpbHRlcmVkKG9Sb3cpOw0KCQkJCWlmICghc3Vicm93c19maWx0ZXJlZCAmJiBvUm93LmZpbHRl
cmVkKQ0KCQkJCXsNCgkJCQkJb1Jvdy5zdHlsZS5kaXNwbGF5ID0gIiI7DQoJCQkJCW9Sb3cubXVz
dEJlVmlzaWJsZSA9IHRydWU7DQoJCQkJfQ0KCQkJfQ0KCQl9DQoNCglpZiAoc2hvd0NoaWxkcmVu
KQ0KCQlmb3IgKHZhciBpID0gMTsgaSA8IG9UYWJsZS5yb3dzLmxlbmd0aDsgaSsrKQ0KCQl7DQoJ
CQl2YXIgb1JvdyA9IG9UYWJsZS5yb3dzW2ldOw0KCQkJdmFyIG9QYXJlbnQgPSBvUm93LnBhcmVu
dFJvdzsNCgkJCXdoaWxlIChvUGFyZW50KQ0KCQkJew0KCQkJCWlmIChvUGFyZW50ICYmICFvUGFy
ZW50LmZpbHRlcmVkKQ0KCQkJCXsNCgkJCQkJb1Jvdy5zdHlsZS5kaXNwbGF5ID0gIiI7DQoJCQkJ
CW9Sb3cubXVzdEJlVmlzaWJsZSA9IHRydWU7DQoJCQkJCWJyZWFrOw0KCQkJCX0NCgkJCQlvUGFy
ZW50ID0gb1BhcmVudC5wYXJlbnRSb3c7DQoJCQl9DQoJCX0NCg0KCS8vIENoZWNraW5nIHRyZWUg
aW1hZ2VzICYgdXBkYXRpbmcgdGV4dEluZGVudA0KCWZvciAodmFyIGkgPSAwOyBpIDwgb1RhYmxl
LnJvd3MubGVuZ3RoOyBpKyspDQoJew0KCQl2YXIgb1JvdyA9IG9UYWJsZS5yb3dzW2ldOw0KCQlp
ZiAoIW9Sb3cubXVzdEJlVmlzaWJsZSkgY29udGludWU7DQoNCgkJaWYgKG9Sb3cuc3ViUm93cyAh
PSBudWxsKQ0KCQl7DQoJCQl2YXIgc3Vicm93c19maWx0ZXJlZCA9IHRhYmxlX2lzU3ViUm93c0Zp
bHRlcmVkKG9Sb3cpOw0KCQkJaWYgKHN1YnJvd3NfZmlsdGVyZWQpDQoJCQkJaGlkZVRyZWVJbWFn
ZShvUm93Lm1fdHJlZUltYWdlKTsNCgkJCWVsc2UNCgkJCXsNCgkJCQlpZiAob1Jvdy5maWx0ZXJl
ZCkgeyBvUm93Lm9wZW5lZCA9IHRydWU7IG9Sb3cubV90cmVlSW1hZ2Uub3BlbmVkID0gdHJ1ZTsg
fQ0KCQkJCXNob3dUcmVlSW1hZ2Uob1Jvdy5tX3RyZWVJbWFnZSk7DQoJCQl9DQoJCX0NCg0KCQl2
YXIgX3Zpc2libGVMZXZlbHMgPSAwOw0KCQl2YXIgb1BhcmVudFJvdyA9IG9Sb3cucGFyZW50Um93
Ow0KCQl3aGlsZSAob1BhcmVudFJvdyAhPSBudWxsKQ0KCQl7DQoJCQlpZiAob1BhcmVudFJvdy5t
dXN0QmVWaXNpYmxlKQ0KCQkJew0KCQkJCV92aXNpYmxlTGV2ZWxzKys7DQoJCQkJaWYgKCFvUGFy
ZW50Um93Lm9wZW5lZCkgb1Jvdy5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOw0KCQkJfQ0KCQkJb1Bh
cmVudFJvdyA9IG9QYXJlbnRSb3cucGFyZW50Um93Ow0KCQl9DQoJCW9Sb3cuY2hpbGROb2Rlc1sw
XS5zdHlsZS5wYWRkaW5nTGVmdCA9ICg1ICsgX3Zpc2libGVMZXZlbHMgKiAxNikgKyAicHgiOw0K
CX0NCg0KCS8vIENoZWNraW5nIGlmIGFjdGl2ZSByb3cgd2FzIGZpbHRlcmVkDQoJdmFyIGFSb3cg
PSBvVGFibGUucGFyZW50Tm9kZS50YWJsZUVsZW1lbnQubV9hY3RpdmVSb3c7DQoJaWYgKGFSb3cg
PT0gbnVsbCB8fCAhYVJvdy5tdXN0QmVWaXNpYmxlIHx8IGFSb3cuc3R5bGUuZGlzcGxheSA9PSAi
bm9uZSIpDQoJew0KCQl0YWJsZV9zZXRBY3RpdmVSb3cob1Jvdy50YWJsZUVsZW1lbnQsIG51bGws
IHRydWUpOw0KCQlmb3IgKHZhciBqID0gMTsgaiA8IG9UYWJsZS5yb3dzLmxlbmd0aDsgaisrKQ0K
CQl7DQoJCQlpZiAoIW9UYWJsZS5yb3dzW2pdLmZpbHRlcmVkICYmIG9UYWJsZS5yb3dzW2pdLm11
c3RCZVZpc2libGUpDQoJCQl7DQoJCQkJdGFibGVfYWN0aXZhdGVSb3cob1Jvdy50YWJsZUVsZW1l
bnQsIGotMSwgdHJ1ZSk7DQoJCQkJYnJlYWs7DQoJCQl9DQoJCX0NCgl9DQoJZWxzZSBpZiAoYVJv
dyAhPSBudWxsKQ0KCQl0YWJsZV9hY3RpdmF0ZVJvdyhvUm93LnRhYmxlRWxlbWVudCwgYVJvdy5y
b3dJbmRleC0xLCB0cnVlKTsNCg0KCWVsZW1lbnQuZmlsdGVyZWQgPSBfdGFibGVfZmlsdGVyZWQ7
DQoJdGFibGVfc2hvd0ZpbHRlck9wdGlvbnMoZWxlbWVudCwgX3RhYmxlX2ZpbHRlcmVkKTsNCgl0
YWJsZV9yZXNpemVDYXB0aW9ucyhlbGVtZW50KTsNCgl0YWJsZV9jaGVja0hlYWRlcldpZHRoKGVs
ZW1lbnQucm9vdERpdi50YWJsZVBhbmUpOw0KfQ0KDQpmdW5jdGlvbiB0YWJsZV91cGRhdGVGaWx0
ZXJTdGF0ZShjb2x1bW5zKQ0Kew0KCS8vIGVuYWJsaW5nIGZpbHRlciBpZiBuZWNlc3NhcnkNCglm
b3IgKHZhciBpID0gMDsgaSA8IGNvbHVtbnMubGVuZ3RoOyBpKyspDQoJew0KCQlpZiAoY29sdW1u
c1tpXS5maWx0ZXJMaXN0Lmxlbmd0aCA+IDEpDQoJCXsNCgkJCWNhcHRpb25fZW5hYmxlRmlsdGVy
KGNvbHVtbnNbaV0ubV9jYXB0aW9uKTsNCgkJfQ0KCX0NCn0NCg0KdmFyIHRhYmxlX2pzID0gdHJ1
ZTs=

------=30AD9628A3274F06AF82E5991D4657D1
Content-Type: text/plain
Content-Transfer-Encoding: base64
Content-Location: http://localhost/aqds.js

dmFyIG1fanNvbl9sb2FkX2NhbGxiYWNrcyA9IHt9Ow0KdmFyIG1fanNvbl9sb2FkX2VsZW1lbnRz
ID0ge307DQp2YXIgbV9qc29uX2xvYWRfY29tcGxldGVfY2FsbGJhY2tzID0gW107DQp2YXIgbV9q
c29uX2xvYWRfcGVuZGluZ19yZXF1ZXN0X2NvdW50ID0gMDsNCg0KLy8gc2V0Q2FwdHVyZSBmb3Ig
TW96aWxsYSAmIE9wZXJhDQppZiAod2luZG93LkhUTUxFbGVtZW50KQ0Kew0KCXZhciBlbGVtZW50
ID0gSFRNTEVsZW1lbnQucHJvdG90eXBlOw0KDQoJdmFyIGN1c3RvbV9jYXB0dXJlID0gZmFsc2U7
DQoJaWYgKHR5cGVvZiBlbGVtZW50LnNldENhcHR1cmUgPT0gInVuZGVmaW5lZCIpDQoJew0KCQlj
dXN0b21fY2FwdHVyZSA9IHRydWU7DQoNCgkJdmFyIGNhcHR1cmUgPSBbImNsaWNrIiwgIm1vdXNl
ZG93biIsICJtb3VzZXVwIiwgIm1vdXNlbW92ZSIsICJtb3VzZW92ZXIiLCAibW91c2VvdXQiXTsN
Cg0KCQllbGVtZW50LnNldENhcHR1cmUgPSBmdW5jdGlvbigpDQoJCXsNCgkJCXZhciBzZWxmID0g
dGhpczsNCgkJCXZhciBmbGFnID0gZmFsc2U7DQoJCQl0aGlzLl9jYXB0dXJlID0gZnVuY3Rpb24o
ZSkNCgkJCXsNCgkJCQlpZiAoZmxhZykgcmV0dXJuOw0KCQkJCWZsYWcgPSB0cnVlOw0KDQoJCQkJ
dmFyIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoIk1vdXNlRXZlbnRzIik7DQoJCQkJZXZl
bnQuaW5pdE1vdXNlRXZlbnQoZS50eXBlLCBlLmJ1YmJsZXMsIGUuY2FuY2VsYWJsZSwgZS52aWV3
LCBlLmRldGFpbCwNCgkJCQkJZS5zY3JlZW5YLCBlLnNjcmVlblksIGUuY2xpZW50WCwgZS5jbGll
bnRZLCBlLmN0cmxLZXksIGUuYWx0S2V5LA0KCQkJCQllLnNoaWZ0S2V5LCBlLm1ldGFLZXksIGUu
YnV0dG9uLCBlLnJlbGF0ZWRUYXJnZXQpOw0KCQkJCXNlbGYuZGlzcGF0Y2hFdmVudChldmVudCk7
DQoJCQkJZmxhZyA9IGZhbHNlOw0KCQkJfTsNCgkJCWZvciAodmFyIGkgPSAwOyBpIDwgY2FwdHVy
ZS5sZW5ndGg7IGkrKykNCgkJCQl3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihjYXB0dXJlW2ldLCB0
aGlzLl9jYXB0dXJlLCB0cnVlKTsNCgkJfTsNCg0KCQllbGVtZW50LnJlbGVhc2VDYXB0dXJlID0g
ZnVuY3Rpb24oKQ0KCQl7DQoJCQlmb3IgKHZhciBpID0gMDsgaSA8IGNhcHR1cmUubGVuZ3RoOyBp
KyspIA0KCQkJCXdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKGNhcHR1cmVbaV0sIHRoaXMuX2Nh
cHR1cmUsIHRydWUpOw0KCQkJdGhpcy5fY2FwdHVyZSA9IG51bGw7DQoJCX07DQoJfQ0KDQoJZWxl
bWVudC5jbGljayA9IGZ1bmN0aW9uKCkNCgl7DQoJCXZhciBldmVudCA9IGRvY3VtZW50LmNyZWF0
ZUV2ZW50KCJNb3VzZUV2ZW50cyIpOw0KCQlldmVudC5pbml0TW91c2VFdmVudCgiY2xpY2siLCBm
YWxzZSwgdHJ1ZSwgZG9jdW1lbnQuZGVmYXVsdFZpZXcsIA0KCQkJMSwgMCwgMCwgMCwgMCwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIDAsIHRoaXMpOw0KCQl0aGlzLmRpc3BhdGNoRXZlbnQo
ZXZlbnQpOw0KCX0NCg0KCWlmIChlbGVtZW50Ll9fZGVmaW5lR2V0dGVyX18gJiYgdHlwZW9mKGRv
Y3VtZW50LmRvY3VtZW50RWxlbWVudC51bmlxdWVJRCkgPT0gInVuZGVmaW5lZCIpDQoJew0KCQll
bGVtZW50Ll9fZGVmaW5lR2V0dGVyX18oInVuaXF1ZUlEIiwgZnVuY3Rpb24oKQ0KCQl7DQoJCQlp
ZiAoIWFyZ3VtZW50cy5jYWxsZWUuY291bnQpIGFyZ3VtZW50cy5jYWxsZWUuY291bnQgPSAwOw0K
CQkJdmFyIF91bmlxdWVJRCA9ICJtb3pfaWQiICsgYXJndW1lbnRzLmNhbGxlZS5jb3VudCsrOw0K
CQkJdGhpcy5fX2RlZmluZUdldHRlcl9fKCJ1bmlxdWVJRCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4g
X3VuaXF1ZUlEIH0gKTsNCgkJCXJldHVybiBfdW5pcXVlSUQ7DQoJCX0gKTsNCgl9DQoNCglpZiAo
aXNGRiAmJiBlbGVtZW50Ll9fZGVmaW5lR2V0dGVyX18gJiYgdHlwZW9mKGRvY3VtZW50LmRvY3Vt
ZW50RWxlbWVudC5pbm5lclRleHQpID09ICJ1bmRlZmluZWQiKQ0KCXsNCgkJZWxlbWVudC5fX2Rl
ZmluZUdldHRlcl9fKCJpbm5lclRleHQiLCBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMudGV4dENv
bnRlbnQ7IH0gKTsNCgkJZWxlbWVudC5fX2RlZmluZVNldHRlcl9fKCJpbm5lclRleHQiLCBmdW5j
dGlvbih2YWx1ZSkgeyB0aGlzLnRleHRDb250ZW50ID0gdmFsdWU7IH0gKTsNCgl9DQoNCn0NCg0K
DQptX1BvaW50ZXJDdXJzb3IgPSAicG9pbnRlciI7DQoNClN0cmluZy5wcm90b3R5cGUudHJpbSA9
IGZ1bmN0aW9uKCkgDQp7DQoJcmV0dXJuIHRoaXMucmVwbGFjZSgvKF5ccyopfChccyokKS9nLCAi
Iik7DQp9DQoNCmZ1bmN0aW9uIF9leGVjdXRlKGxpbmspDQp7DQoJdmFyIG1zZ191bmFibGVUb1J1
biA9ICJVbmFibGUgdG8gcnVuIHRoZSBEaWZmIHV0aWxpdHk6XG4iICsgbGluazsNCgl2YXIgbXNn
X3Vuc3VwcG9ydGVkID0gbXNnX3VuYWJsZVRvUnVuICsgIlxuXG4iICsNCgkJIlRoaXMgYWN0aW9u
IGlzIG9ubHkgYXZhaWxhYmxlIGZyb20gSW50ZXJuZXQgRXhwbG9yZXIgdGhhdCBkaXNwbGF5cyB1
bnBhY2tlZCAobm9uLU1IVCkgbG9nLlxuIiArDQoJCSJZb3UgbWF5IG5lZWQgdG8gZW5hYmxlIHRo
ZSBcIkluaXRpYWxpemUgYW5kIHNjcmlwdCBBY3RpdmVYIGNvbnRyb2xzIG5vdCBtYXJrZWQgYXMg
c2FmZSBmb3Igc2NyaXB0aW5nXCIgb3B0aW9uLiI7DQoNCglpZiAodHlwZW9mIHdpbmRvdy5BY3Rp
dmVYT2JqZWN0ID09ICJ1bmRlZmluZWQiKQ0KCXsNCgkJYWxlcnQobXNnX3Vuc3VwcG9ydGVkKTsN
CgkJcmV0dXJuIGZhbHNlOw0KCX0NCg0KCWNtZCA9IGxpbmsucmVwbGFjZShuZXcgUmVnRXhwKCIm
cXVvdDsiLCAiZyIpLCAiXCIiKTsNCg0KCXZhciBsb2MgPSBpc0lFID8gInByb2JhYmx5Lm1odCIg
OiAiIjsNCgl0cnkgeyBsb2MgPSB3aW5kb3cuZG9jdW1lbnQubG9jYXRpb24uaHJlZjsgfSBjYXRj
aCAoZSkgeyB9DQoJdmFyIGlzTUhUID0gKGxvYy5pbmRleE9mKCIubWh0IikgPT0gbG9jLmxlbmd0
aCAtIDQpOw0KCWxvYyA9IHVuZXNjYXBlKGNvcnJlY3RMb2NhdGlvbihsb2MsICIiKS5yZXBsYWNl
KCJmaWxlOi8vLyIsICIiKSk7DQoJaWYgKGxvYy5pbmRleE9mKCJmaWxlOiIpID09IDApIHsgbG9j
ID0gbG9jLnN1YnN0cmluZyg1KS5yZXBsYWNlKG5ldyBSZWdFeHAoIi8iLCAiZyIpLCAiXFwiKTsg
fQ0KDQoJdmFyIGluZGV4ID0gMDsNCgl2YXIgcDEgPSAtMTsNCgl2YXIgcDIgPSAtMTsNCgl3aGls
ZSAoaW5kZXggPCAxMCkNCgl7DQoJCXAxID0gY21kLmluZGV4T2YoIlwiIiwgcDIgKyAxKTsgaWYg
KHAxIDwgMCkgYnJlYWs7DQoJCXAyID0gY21kLmluZGV4T2YoIlwiIiwgcDEgKyAxKTsgaWYgKHAy
IDwgMCkgYnJlYWs7DQoJCXZhciBwYXRoID0gY21kLnN1YnN0cmluZyhwMSArIDEsIHAyKTsNCg0K
CQl2YXIgY29ycmVjdFBhdGggPSAoaW5kZXggPiAwICYmIHBhdGguaW5kZXhPZigiXFwiKSA8IDAp
Ow0KDQoJCWlmIChpbmRleCA9PSAwIHx8ICFpc01IVCkNCgkJew0KCQkJdHJ5DQoJCQl7DQoJCQkJ
dmFyIGZzbyA9IG5ldyBBY3RpdmVYT2JqZWN0KCJTY3JpcHRpbmcuRmlsZVN5c3RlbU9iamVjdCIp
Ow0KCQkJCXZhciBleGlzdHMgPSBmc28uRmlsZUV4aXN0cyhjb3JyZWN0UGF0aCA/IGxvYyArIHBh
dGggOiBwYXRoKTsNCgkJCQlmc28gPSBudWxsOw0KCQkJfQ0KCQkJY2F0Y2ggKGV4KQ0KCQkJew0K
CQkJCWFsZXJ0KG1zZ191bnN1cHBvcnRlZCk7DQoJCQkJcmV0dXJuIGZhbHNlOw0KCQkJfQ0KDQoJ
CQlpZiAoIWV4aXN0cykNCgkJCXsNCgkJCQlhbGVydChtc2dfdW5hYmxlVG9SdW4gKyAiXG5cbkZp
bGUgIiArIHBhdGggKyAiIGRvZXMgbm90IGV4aXN0cy4iKTsNCgkJCQlyZXR1cm4gZmFsc2U7DQoJ
CQl9DQoJCX0NCg0KCQlpZiAoY29ycmVjdFBhdGgpDQoJCXsNCgkJCWlmIChpc01IVCkNCgkJCXsN
CgkJCQlhbGVydChtc2dfdW5zdXBwb3J0ZWQpOw0KCQkJCXJldHVybiBmYWxzZTsNCgkJCX0NCg0K
CQkJY21kID0gY21kLnN1YnN0cmluZygwLCBwMSArIDEpICsgbG9jICsgY21kLnN1YnN0cmluZyhw
MSArIDEpOw0KCQkJcDIgKz0gbG9jLmxlbmd0aDsNCgkJfQ0KCQkNCgkJaW5kZXgrKzsNCgl9DQoN
Cgl2YXIgc2hlbGwgPSBuZXcgQWN0aXZlWE9iamVjdCgiV1NjcmlwdC5TaGVsbCIpOw0KCXNoZWxs
LlJ1bihjbWQpOw0KCXNoZWxsID0gbnVsbDsNCglyZXR1cm4gZmFsc2U7DQp9DQoNCmZ1bmN0aW9u
IF9sb2FkX0pTT04odXJsLCBlbGVtZW50LCBjYWxsYmFjaywgY29tcGxldGVfY2FsbGJhY2spDQp7
DQoJdmFyIG1vbmlrZXIgPSB1cmw7DQoJdmFyIHAgPSB1cmwubGFzdEluZGV4T2YoIlxcIik7DQoJ
aWYgKHAgPCAwKSBwID0gdXJsLmxhc3RJbmRleE9mKCIvIik7DQoJaWYgKHAgPiAwKSBtb25pa2Vy
ID0gdXJsLnN1YnN0cmluZyhwICsgMSk7DQoNCgltX2pzb25fbG9hZF9wZW5kaW5nX3JlcXVlc3Rf
Y291bnQrKzsNCgltX2pzb25fbG9hZF9jYWxsYmFja3NbbW9uaWtlcl0gPSBjYWxsYmFjazsNCglt
X2pzb25fbG9hZF9lbGVtZW50c1ttb25pa2VyXSA9IGVsZW1lbnQ7DQoJaWYgKGNvbXBsZXRlX2Nh
bGxiYWNrKQ0KCQltX2pzb25fbG9hZF9jb21wbGV0ZV9jYWxsYmFja3MucHVzaChjb21wbGV0ZV9j
YWxsYmFjayk7DQoNCgl2YXIgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiU0NSSVBU
Iik7DQoJc2NyaXB0LnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JzsNCglzY3JpcHQuaWQgPSBtb25p
a2VyOw0KCXNjcmlwdC5zcmMgPSB1cmw7DQoJZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzY3Jp
cHQpOw0KfQ0KDQpmdW5jdGlvbiBfanNvbl9sb2FkZWQobW9uaWtlciwgZGF0YSkNCnsNCgl2YXIg
Y2FsbGJhY2sgPSBtX2pzb25fbG9hZF9jYWxsYmFja3NbbW9uaWtlcl07DQoJaWYgKGNhbGxiYWNr
KQ0KCQljYWxsYmFjayhtX2pzb25fbG9hZF9lbGVtZW50c1ttb25pa2VyXSwgZGF0YSk7DQoNCglk
b2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG1vbmlrZXIp
KTsNCglkZWxldGUgbV9qc29uX2xvYWRfY2FsbGJhY2tzW21vbmlrZXJdOw0KCWRlbGV0ZSBtX2pz
b25fbG9hZF9lbGVtZW50c1ttb25pa2VyXTsNCg0KCW1fanNvbl9sb2FkX3BlbmRpbmdfcmVxdWVz
dF9jb3VudC0tOw0KCWlmIChtX2pzb25fbG9hZF9wZW5kaW5nX3JlcXVlc3RfY291bnQgPT0gMCkN
Cgl7DQoJCWRvV2luZG93UmVzaXplKCk7DQoJCWZvciAodmFyIGkgPSAwOyBpIDwgbV9qc29uX2xv
YWRfY29tcGxldGVfY2FsbGJhY2tzLmxlbmd0aDsgaSsrKQ0KCQkJbV9qc29uX2xvYWRfY29tcGxl
dGVfY2FsbGJhY2tzW2ldKCk7DQoJCW1fanNvbl9sb2FkX2NvbXBsZXRlX2NhbGxiYWNrcyA9IFtd
Ow0KCX0NCn0NCg0KZnVuY3Rpb24gX2xvYWRfWE1MKHVybCkNCnsNCgl2YXIgb1htbDsNCg0KCWlm
ICh3aW5kb3cuQWN0aXZlWE9iamVjdCB8fCBpc0lFMTEpIHsNCgkJb1htbCA9IG5ldyBBY3RpdmVY
T2JqZWN0KCJNaWNyb3NvZnQuWE1MRE9NIik7DQoJCW9YbWwuYXN5bmMgPSBmYWxzZTsNCgkJb1ht
bC5sb2FkKHVybCk7DQoJfQ0KCWVsc2UgaWYgKHdpbmRvdy5YTUxIdHRwUmVxdWVzdCkNCgl7DQoJ
CWlmIChpc09wZXJhKSB1cmwgPSB1cmwudG9Mb3dlckNhc2UoKTsNCg0KCQl2YXIgbG9hZGVyID0g
bmV3IFhNTEh0dHBSZXF1ZXN0KCk7DQoJCXRyeQ0KCQl7DQoJCQlsb2FkZXIub3BlbigiR0VUIiwg
dXJsLCBmYWxzZSk7DQoJCX0NCgkJY2F0Y2goZSkNCgkJew0KCQkJdHJ5IHsgbmV0c2NhcGUuc2Vj
dXJpdHkuUHJpdmlsZWdlTWFuYWdlci5lbmFibGVQcml2aWxlZ2UgKCJVbml2ZXJzYWxCcm93c2Vy
UmVhZCIpfSBjYXRjaCAoZSkge30NCgkJCWxvYWRlci5vcGVuKCJHRVQiLCB1cmwsIGZhbHNlKTsN
CgkJfQ0KCQlpZiAodXJsLnN1YnN0cmluZyh1cmwubGVuZ3RoIC0gMykgPT0gInhzZCIgJiYgdHlw
ZW9mKGxvYWRlci5vdmVycmlkZU1pbWVUeXBlKSAhPSAndW5kZWZpbmVkJykNCgkJCWxvYWRlci5v
dmVycmlkZU1pbWVUeXBlKCJ0ZXh0L3htbCIpOw0KCQl0cnkNCgkJew0KCQkJbG9hZGVyLnNlbmQo
bnVsbCk7DQoJCX0NCgkJY2F0Y2goZSkNCgkJew0KCQkJcmV0dXJuIG51bGw7DQoJCX0NCgkJb1ht
bCA9IGxvYWRlci5yZXNwb25zZVhNTDsNCgl9DQoNCglpZiAob1htbCA9PSBudWxsIHx8IG9YbWwu
ZG9jdW1lbnRFbGVtZW50ID09IG51bGwpDQoJCXJldHVybiBudWxsOw0KDQoJcmV0dXJuIG9YbWw7
DQp9DQoNCmZ1bmN0aW9uIF9sb2FkX1RleHQodXJsKQ0Kew0KCWlmICh3aW5kb3cuQWN0aXZlWE9i
amVjdCB8fCBpc0lFMTEpDQoJew0KCQl2YXIgbG9hZGVyID0gbmV3IEFjdGl2ZVhPYmplY3QoIk1T
WE1MMi5YTUxIVFRQIik7DQoJCWxvYWRlci5vcGVuKCJHRVQiLCB1cmwsIGZhbHNlKTsNCgkJbG9h
ZGVyLnNlbmQobnVsbCk7DQoJCXJldHVybiBsb2FkZXIucmVzcG9uc2VUZXh0Ow0KCX0NCgllbHNl
IGlmICh3aW5kb3cuWE1MSHR0cFJlcXVlc3QpDQoJew0KCQlpZiAoaXNPcGVyYSkgdXJsID0gdXJs
LnRvTG93ZXJDYXNlKCk7DQoNCgkJdmFyIGxvYWRlciA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOw0K
CQl0cnkNCgkJew0KCQkJbG9hZGVyLm9wZW4oIkdFVCIsIHVybCwgZmFsc2UpOw0KCQl9DQoJCWNh
dGNoKGUpDQoJCXsNCgkJCXRyeSB7IG5ldHNjYXBlLnNlY3VyaXR5LlByaXZpbGVnZU1hbmFnZXIu
ZW5hYmxlUHJpdmlsZWdlICgiVW5pdmVyc2FsQnJvd3NlclJlYWQiKX0gY2F0Y2ggKGUpIHt9DQoJ
CQlsb2FkZXIub3BlbigiR0VUIiwgdXJsLCBmYWxzZSk7DQoJCX0NCgkJdHJ5DQoJCXsNCgkJCWxv
YWRlci5zZW5kKG51bGwpOw0KCQl9DQoJCWNhdGNoKGUpDQoJCXsNCgkJCXJldHVybiBudWxsOw0K
CQl9DQoNCgkJcmV0dXJuIGxvYWRlci5yZXNwb25zZVRleHQ7DQoJfQ0KCWVsc2UNCgkJcmV0dXJu
ICJDYW5ub3QgcmVhZCBmaWxlICIgKyB1cmw7DQp9DQoNCmZ1bmN0aW9uIGdldFNjcmVlblgob2Jq
KQ0Kew0KCWlmIChvYmouZ2V0Qm91bmRpbmdDbGllbnRSZWN0KQ0KCQlyZXR1cm4gb2JqLmdldEJv
dW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQ7DQoNCgl2YXIgbGVmdCA9IDA7DQoJaWYgKG9iaikgZG8N
Cgl7DQoJCWxlZnQgKz0gb2JqLm9mZnNldExlZnQ7DQoJCWlmICghb2JqLm9mZnNldFBhcmVudCkg
YnJlYWs7DQoJCW9iaiA9IG9iai5vZmZzZXRQYXJlbnQ7DQoJfSB3aGlsZSAodHJ1ZSk7DQoNCgly
ZXR1cm4gbGVmdDsNCn0NCg0KZnVuY3Rpb24gZ2V0U2NyZWVuWShvYmopDQp7DQoJaWYgKG9iai5n
ZXRCb3VuZGluZ0NsaWVudFJlY3QpDQoJCXJldHVybiBvYmouZ2V0Qm91bmRpbmdDbGllbnRSZWN0
KCkudG9wOw0KDQoJdmFyIHRvcCA9IDA7DQoJaWYgKG9iaikgZG8NCgl7DQoJCXRvcCArPSBvYmou
b2Zmc2V0VG9wOw0KCQlpZiAoIW9iai5vZmZzZXRQYXJlbnQpIGJyZWFrOw0KCQlvYmogPSBvYmou
b2Zmc2V0UGFyZW50Ow0KCX0gd2hpbGUgKHRydWUpOw0KDQoJcmV0dXJuIHRvcDsNCn0NCg0KDQpm
dW5jdGlvbiBnZXRJc0NvbXBsZXhUeXBlKHR5cGVOYW1lKQ0Kew0KCXJldHVybiAodHlwZU5hbWUg
PT0gImFxZHM6dGFibGUiKSB8fCAodHlwZU5hbWUgPT0gImFxZHM6ZGlhZ3JhbSIpIHx8ICh0eXBl
TmFtZSA9PSAiYXFkczp0ZXh0IikNCgkJfHwgKHR5cGVOYW1lID09ICJhcWRzOmdyYXBoIikgfHwg
KHR5cGVOYW1lID09ICJhcWRzOnBpY3R1cmUiKSB8fCAodHlwZU5hbWUgPT0gImFxZHM6cGljdHVy
ZXMiKTsNCn0NCg0KZnVuY3Rpb24gZ2V0SXNUYWJsZVR5cGUodHlwZU5hbWUpDQp7DQoJcmV0dXJu
ICh0eXBlTmFtZSA9PSBudWxsIHx8IHR5cGVOYW1lID09ICJhcWRzOnRhYmxlIiB8fCB0eXBlTmFt
ZSA9PSAiYXFkczpncmFwaCIgfHwgdHlwZU5hbWUgPT0gImFxZHM6ZGlhZ3JhbSIgfHwgdHlwZU5h
bWUgPT0gImFxZHM6cGljdHVyZXMiKTsNCn0NCg0KZnVuY3Rpb24gZ2V0Q29sdW1uRGF0YUlzUGxh
aW4odHlwZU5hbWUpDQp7DQoJcmV0dXJuICh0eXBlTmFtZSAhPSAiYXFkczp0YWJsZSIgJiYgdHlw
ZU5hbWUgIT0gImFxZHM6Z3JhcGgiICYmIHR5cGVOYW1lICE9ICJhcWRzOmRpYWdyYW0iKTsNCn0N
Cg0KZnVuY3Rpb24gSW5pdGlhbGl6ZVRhYmxlT2JqZWN0KG9iaiwgcGFyZW50KQ0Kew0KCW9iai5w
YXJlbnQgPSBwYXJlbnQ7DQoJb2JqLm5lc3RlZERhdGFDb3VudCA9IDA7DQoNCglvYmouY29sdW1u
cyA9IG9iai5jb2x1bW5zIHx8IFtdOw0KCW9iai5pdGVtcyA9IG9iai5pdGVtcyB8fCBbXTsNCglv
YmoudHlwZU5hbWUgPSBvYmoudHlwZU5hbWUgfHwgImFxZHM6dGFibGUiOw0KCW9iai5pc1BsYWlu
RGF0YSA9IGdldENvbHVtbkRhdGFJc1BsYWluKG9iai50eXBlTmFtZSk7DQoJDQoJdmFyIHRleHRf
Y291bnQgPSAwOw0KCWZvciAodmFyIGkgPSAwOyBpIDwgb2JqLmNvbHVtbnMubGVuZ3RoOyBpKysp
DQoJew0KCQkvLyB0cmVhdCBzZXZlcmFsIHRleHQgY29sdW1ucyBhcyBjb21wbGV4IHR5cGUNCgkJ
dmFyIHR5cGVOYW1lID0gb2JqLmNvbHVtbnNbaV0udHlwZU5hbWU7DQoJCWlmICh0eXBlTmFtZSA9
PSAiYXFkczp0ZXh0IikNCgkJCXRleHRfY291bnQrKzsNCg0KCQlpZiAoZ2V0SXNUYWJsZVR5cGUo
dHlwZU5hbWUpKQ0KCQl7DQoJCQkvLyBDb21wbGV4IHR5cGUNCgkJCWlmICh0eXBlTmFtZSAhPSAi
YXFkczpwaWN0dXJlcyIpIHsgdmFyIF9vYmogPSBvYmo7IHdoaWxlIChfb2JqKSB7IF9vYmoubmVz
dGVkRGF0YUNvdW50ICsrOyBfb2JqID0gX29iai5wYXJlbnQ7IH0gfQ0KDQoJCQlJbml0aWFsaXpl
VGFibGVPYmplY3Qob2JqLmNvbHVtbnNbaV0sIG9iaik7DQoJCX0gZWxzZSB7DQoNCgkJCS8vIFNp
bXBsZSB0eXBlDQoJCQlvYmouY29sdW1uc1tpXS5wYXJlbnQgPSBvYmo7DQoJCQlvYmouY29sdW1u
c1tpXS5pc0ltYWdlID0gKHR5cGVOYW1lID09ICJhcWRzOmltYWdlIik7DQoJCQlvYmouY29sdW1u
c1tpXS5pc051bWVyaWMgPSAodHlwZU5hbWUgPT0gImFxZHM6ZmxvYXQiIHx8IHR5cGVOYW1lID09
ICJhcWRzOmludCIpOw0KCQkJb2JqLmNvbHVtbnNbaV0uaXNEYXRlVGltZSA9ICh0eXBlTmFtZSA9
PSAiYXFkczpkYXRldGltZSIpOw0KCQkJb2JqLmNvbHVtbnNbaV0uaXNQbGFpbkRhdGEgPSBnZXRD
b2x1bW5EYXRhSXNQbGFpbih0eXBlTmFtZSk7DQoJCQkNCgkJCWlmICh0eXBlTmFtZSA9PSAiYXFk
czp0ZXh0IikNCgkJCXsNCgkJCQkvL2lmICh0ZXh0X2NvdW50ID4gMSkNCgkJCQkvLwlvYmouY29s
dW1uc1tpXSA9IG5ldyBUYWJsZU9iamVjdChvYmosIG9Db2x1bW5FbGVtZW50KTsNCgkJCQlvYmou
Y29sdW1uc1tpXS50ZXh0T2JqZWN0ID0gbmV3IFRleHRPYmplY3Qob2JqLmNvbHVtbnNbaV0sIG9i
aik7DQoJCQl9DQoJCQlpZiAob2JqLmNvbHVtbnNbaV0ubmFtZSA9PSAiVHlwZURlc2NyaXB0aW9u
IikNCgkJCQlvYmoudHlwZURlc2NyaXB0aW9uQ29sdW1uSW5kZXggPSAoaSArIDEpOw0KCQl9DQoJ
CW9iai5jb2x1bW5zW2ldLmZpbHRlckxpc3QgPSBbXTsNCgkJb2JqLmNvbHVtbnNbaV0uZmlsdGVy
ZWQgPSBmYWxzZTsNCgkJb2JqLmNvbHVtbnNbaV0uaXNDb21wbGV4ID0gZ2V0SXNDb21wbGV4VHlw
ZSh0eXBlTmFtZSk7DQoJfQ0KDQoJaWYgKHRleHRfY291bnQgPiAxKSB7IHZhciBfb2JqID0gb2Jq
OyB3aGlsZSAoX29iaikgeyBfb2JqLm5lc3RlZERhdGFDb3VudCArKzsgX29iaiA9IF9vYmoucGFy
ZW50OyB9IH0NCn0NCg0KZnVuY3Rpb24gZG9XaW5kb3dSZXNpemUoKQ0Kew0KCXZhciBvTG9nUm9v
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2dyb290Iik7DQoJaWYgKG9Mb2dSb290ICYm
IG9Mb2dSb290LmRvUmVzaXplKSBvTG9nUm9vdC5kb1Jlc2l6ZSgpOw0KfQ0KDQpmdW5jdGlvbiBj
b3JyZWN0TG9jYXRpb24oYmFzZVBhdGgsIG5hbWUpDQp7DQoJZm9yICh2YXIgaSA9IGJhc2VQYXRo
Lmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKQ0KCXsNCgkJdmFyIF9jaGFyID0gYmFzZVBhdGguY2hh
ckF0KGkpOw0KCQlpZiAoKF9jaGFyID09ICJcXCIpIHx8IChfY2hhciA9PSAiLyIpKQ0KCQl7DQoJ
CQluYW1lID0gYmFzZVBhdGguc3Vic3RyaW5nKDAsIGkgKyAxKSArIG5hbWU7DQoJCQlicmVhazsN
CgkJfQ0KCX0NCglpZiAoaXNPcGVyYSkgbmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKTsNCglyZXR1
cm4gbmFtZTsNCn0NCg0KZnVuY3Rpb24gY2hhbmdlRmlsZUV4dChmaWxlTmFtZSwgbmV3RXh0KQ0K
ew0KCWZvciAodmFyIGkgPSBmaWxlTmFtZS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkNCgl7DQoJ
CXZhciBfY2hhciA9IGZpbGVOYW1lLmNoYXJBdChpKTsNCgkJaWYgKF9jaGFyID09ICIuIikgDQoJ
CXsNCgkJCXJldHVybiBmaWxlTmFtZS5zdWJzdHJpbmcoMCwgaSArIDEpICsgbmV3RXh0Ow0KCQl9
DQoJfQ0KCXJldHVybiBmaWxlTmFtZTsNCn0NCg0KDQpmdW5jdGlvbiBjcmVhdGVUcmVlSW1hZ2Uo
b3BlbmVkKQ0Kew0KCXZhciBvSW1hZ2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsN
CglvSW1hZ2Uuc3JjID0gIm51bGwuZ2lmIjsNCglvSW1hZ2UuY2xhc3NOYW1lID0gb3BlbmVkID8g
Imljb24gaWNvbi1taW51cyI6ICJpY29uIGljb24tcGx1cyI7DQoJb0ltYWdlLndpZHRoID0gOTsN
CglvSW1hZ2UuaGVpZ2h0ID0gOTsNCglvSW1hZ2UuYm9yZGVyID0gMDsNCglvSW1hZ2Uuc3R5bGUu
bWFyZ2luUmlnaHQgPSAiM3B4IjsNCglvSW1hZ2Uuc3R5bGUubWFyZ2luTGVmdCA9ICI1cHgiOyAN
CglvSW1hZ2Uuc3R5bGUuY3Vyc29yID0gbV9Qb2ludGVyQ3Vyc29yOw0KCW9JbWFnZS5vcGVuZWQg
PSBvcGVuZWQ7DQoJb0ltYWdlLmFjdGl2ZSA9IHRydWU7DQoJcmV0dXJuIG9JbWFnZTsNCn0NCg0K
ZnVuY3Rpb24gY3JlYXRlVHJlZUltYWdlRHVtbXkoKQ0Kew0KCXZhciBvSW1hZ2UgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJpbWciKTsNCglvSW1hZ2Uuc3JjID0gIm51bGwuZ2lmIjsNCglvSW1h
Z2Uud2lkdGggPSA5Ow0KCW9JbWFnZS5oZWlnaHQgPSA5Ow0KCW9JbWFnZS5ib3JkZXIgPSAwOw0K
CW9JbWFnZS5zdHlsZS5tYXJnaW5SaWdodCA9ICIzcHgiOw0KCW9JbWFnZS5zdHlsZS5tYXJnaW5M
ZWZ0ID0gIjVweCI7DQoJb0ltYWdlLnN0eWxlLm1hcmdpbkJvdHRvbSA9ICIxcHgiOw0KCW9JbWFn
ZS5vcGVuZWQgPSBmYWxzZTsNCglvSW1hZ2UuYWN0aXZlID0gZmFsc2U7DQoJcmV0dXJuIG9JbWFn
ZTsNCn0NCg0KZnVuY3Rpb24gcm9sb3ZlclRyZWVJbWFnZShpbWcpDQp7DQoJaW1nLm9wZW5lZCA9
ICFpbWcub3BlbmVkOw0KCWlmIChpbWcuYWN0aXZlID09IHRydWUpDQoJCXNob3dUcmVlSW1hZ2Uo
aW1nKTsNCn0NCg0KZnVuY3Rpb24gaGlkZVRyZWVJbWFnZShpbWcpDQp7DQoJaW1nLmFjdGl2ZSA9
IGZhbHNlOw0KCWltZy5jbGFzc05hbWUgPSAiIjsNCn0NCg0KZnVuY3Rpb24gc2hvd1RyZWVJbWFn
ZShpbWcpDQp7DQoJaW1nLmFjdGl2ZSA9IHRydWU7DQoJaW1nLmNsYXNzTmFtZSA9IGltZy5vcGVu
ZWQgPyAiaWNvbiBpY29uLW1pbnVzIiA6ICJpY29uIGljb24tcGx1cyI7DQp9DQoNCmZ1bmN0aW9u
IGNyZWF0ZVRyZWVTdGF0ZUltYWdlKHN0YXRlKQ0Kew0KCXZhciBvSW1hZ2UgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJpbWciKTsNCglvSW1hZ2Uuc3JjID0gIm51bGwuZ2lmIjsNCglpZiAoc3Rh
dGUgPT0gMSkgew0KCQlvSW1hZ2UuY2xhc3NOYW1lID0gImljb24gaWNvbi13YXJuaW5nIjsNCgl9
IGVsc2UgaWYgKHN0YXRlID09IDIpIHsNCgkJb0ltYWdlLmNsYXNzTmFtZSA9ICJpY29uIGljb24t
ZXJyb3IiOw0KCX0gZWxzZSB7DQoJCW9JbWFnZS5jbGFzc05hbWUgPSAiaWNvbiBpY29uLW9rIjsN
Cgl9DQoJb0ltYWdlLndpZHRoID0gMTY7DQoJb0ltYWdlLmhlaWdodCA9IDE2Ow0KCW9JbWFnZS5i
b3JkZXIgPSAwOw0KCW9JbWFnZS5zdHlsZS5wb3NpdGlvbiA9ICJyZWxhdGl2ZSI7DQoJb0ltYWdl
LnN0eWxlLnRvcCA9ICI0cHgiOw0KCXJldHVybiBvSW1hZ2U7DQp9DQoNCmZ1bmN0aW9uIGdldE9i
amVjdFdpZHRoKG9iaikNCnsNCglyZXR1cm4gKG9iaiA9PSBudWxsKSA/IDA6IG9iai5vZmZzZXRX
aWR0aDsNCn0NCg0KZnVuY3Rpb24gZ2V0Q29sdW1uVHlwZUlzU3VwcHJlc3NlZCh0eXBlTmFtZSkN
CnsNCglyZXR1cm4gZmFsc2U7DQp9DQoNCmZ1bmN0aW9uIGdldEhhc05lc3RlZERhdGEoZWxlbWVu
dCkNCnsNCglpZiAoZWxlbWVudC50YWJsZSAhPSBudWxsKQ0KCXsNCgkJZm9yICh2YXIgaSA9IDA7
IGkgPCBlbGVtZW50LnRhYmxlLmNvbHVtbnMubGVuZ3RoOyBpKyspDQoJCXsNCgkJCXZhciBvQ29s
dW1uID0gZWxlbWVudC50YWJsZS5jb2x1bW5zW2ldOw0KCQkJLy9pZiAoZ2V0Q29sdW1uVHlwZUlz
U3VwcHJlc3NlZChvQ29sdW1uLnR5cGVOYW1lKSkNCgkJCS8vICBjb250aW51ZTsNCgkJCSAgDQoJ
CQlpZiAob0NvbHVtbi5pc0NvbXBsZXgpDQoJCQkJcmV0dXJuIHRydWU7DQoJCX0NCgl9DQoJcmV0
dXJuIGZhbHNlOw0KfQ0KDQpmdW5jdGlvbiBnZXROZXN0ZWREYXRhSXNQbGFpbihlbGVtZW50KQ0K
ew0KCWlmIChlbGVtZW50LnRhYmxlICE9IG51bGwpDQoJew0KCQl2YXIgdGV4dF9jb3VudCA9IDA7
DQoJCWZvciAodmFyIGkgPSAwOyBpIDwgZWxlbWVudC50YWJsZS5jb2x1bW5zLmxlbmd0aDsgaSsr
KQ0KCQl7DQoJCQl2YXIgb0NvbHVtbiA9IGVsZW1lbnQudGFibGUuY29sdW1uc1tpXTsNCgkJCS8v
aWYgKGdldENvbHVtblR5cGVJc1N1cHByZXNzZWQob0NvbHVtbi50eXBlTmFtZSkpDQoJCQkvLyAg
Y29udGludWU7DQoNCgkJCWlmICghb0NvbHVtbi5pc1BsYWluRGF0YSkNCgkJCQlyZXR1cm4gZmFs
c2U7DQoNCgkJCWlmIChvQ29sdW1uLnR5cGVOYW1lID09ICJhcWRzOnRleHQiKQ0KCQkJew0KCQkJ
CXRleHRfY291bnQrKzsNCgkJCQlpZiAodGV4dF9jb3VudCA+IDEpDQoJCQkJCXJldHVybiBmYWxz
ZTsNCgkJCX0NCgkJfQ0KCX0NCglyZXR1cm4gdHJ1ZTsNCn0NCg0KZnVuY3Rpb24gVGV4dE9iamVj
dChlbGVtZW50LCBwYXJlbnQpDQp7DQoJdGhpcy5wYXJlbnQgPSBwYXJlbnQ7DQoJdGhpcy5uZXN0
ZWREYXRhQ291bnQgPSAwOw0KCXRoaXMuY2FwdGlvbiA9IGVsZW1lbnQuY2FwdGlvbjsNCgl0aGlz
Lm5hbWUgPSBlbGVtZW50Lm5hbWU7DQoJdGhpcy50eXBlTmFtZSA9IGVsZW1lbnQudHlwZU5hbWUg
fHwgImFxZHM6dGV4dCI7DQoJdGhpcy50ZXh0Rm9ybWF0ID0gZWxlbWVudC50ZXh0Zm9ybWF0IHx8
ICIiOw0KCXRoaXNbZWxlbWVudC5uYW1lXSA9IGVsZW1lbnRbZWxlbWVudC5uYW1lXTsNCn0NCg0K
ZnVuY3Rpb24gRmlsZXNDb21wYXJlT2JqZWN0KGVsZW1lbnQsIHBhcmVudCkNCnsNCgl0aGlzLnBh
cmVudCA9IHBhcmVudDsNCgl0aGlzLm5lc3RlZERhdGFDb3VudCA9IDA7DQoJdGhpcy5jYXB0aW9u
ID0gZWxlbWVudC5jYXB0aW9uOw0KCXRoaXMubmFtZSA9IGVsZW1lbnQubmFtZTsNCgl0aGlzLnR5
cGVOYW1lID0gZWxlbWVudC50eXBlTmFtZSB8fCAiYXFkczpmaWxlc2NvbXBhcmUiOw0KCXRoaXMu
ZmlsZXMgPSBlbGVtZW50W2VsZW1lbnQubmFtZV0gfHwgW107DQp9DQoNCmZ1bmN0aW9uIFRhYnNP
YmplY3QoZWxlbWVudElkLCBvbnNlbGVjdCwgcGFyZW50LCBpbml0aWFsQWN0aXZlVGFiTmFtZSwg
YXRCb3R0b20sIHNob3dCb3JkZXIpDQp7DQoJdGhpcy5lbGVtZW50SWQgPSBlbGVtZW50SWQ7DQoJ
dGhpcy5pdGVtcyA9IFtdOw0KCXRoaXMubmFtZXMgPSBbXTsNCgl0aGlzLmFjdGl2ZVRhYiA9IG51
bGw7DQoJdGhpcy5wYXJlbnQgPSBwYXJlbnQ7DQoJdGhpcy5vbnNlbGVjdCA9IG9uc2VsZWN0Ow0K
CXRoaXMuaW5pdGlhbEFjdGl2ZVRhYk5hbWUgPSBpbml0aWFsQWN0aXZlVGFiTmFtZTsNCgl0aGlz
LmF0Qm90dG9tID0gYXRCb3R0b207DQoJdGhpcy5zaG93Qm9yZGVyID0gc2hvd0JvcmRlcjsNCgkN
Cgl0aGlzLmRpc3Bvc2UgPSBmdW5jdGlvbigpDQoJew0KCQl0aGlzLnBhcmVudCA9IG51bGw7DQoJ
CXRoaXMuYWN0aXZlVGFiID0gbnVsbDsNCgkJZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLml0ZW1z
Lmxlbmd0aDsgaSsrKQ0KCQl7DQoJCQl2YXIgdGFiID0gdGhpcy5nZXRUYWJCeUluZGV4KGkpOw0K
CQkJdGFiLnRhYnNPYmplY3QgPSBudWxsOw0KCQkJdGFiLnRhYkl0ZW0gPSBudWxsOw0KCQl9DQoJ
fQ0KDQoJdGhpcy5hZGRJdGVtID0gZnVuY3Rpb24obmFtZSwgaXRlbUlkKQ0KCXsNCgkJdGhpcy5u
YW1lcy5wdXNoKG5hbWUpOw0KCQl0aGlzLml0ZW1zLnB1c2goaXRlbUlkKTsNCgl9DQoNCgl0aGlz
LnJlbmRlciA9IGZ1bmN0aW9uKCkNCgl7DQoJCXZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGhpcy5lbGVtZW50SWQpOw0KCQl2YXIgaXRlbUNvdW50ID0gdGhpcy5pdGVtcy5s
ZW5ndGg7DQoJCWlmICghZWxlbWVudCB8fCBpdGVtQ291bnQgPT0gMCkgcmV0dXJuOw0KDQoJCXZh
ciBwb3NNYWluID0gKHRoaXMuYXRCb3R0b20gPyAiYm90dG9tIiA6ICJ0b3AiKTsNCgkJdmFyIHBv
c090aGVyID0gKHRoaXMuYXRCb3R0b20gPyAidG9wIiA6ICJib3R0b20iKTsNCg0KCQl2YXIgaHRt
bCA9ICI8dGFibGUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIGJvcmRlcj0wICIgKyAodGhp
cy5zaG93Qm9yZGVyID8gIiBjbGFzcz0nc2luZ2xlRnJhbWUnIiA6ICIiKSArIA0KCQkJIiBzdHls
ZT0nd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IG1pbi1oZWlnaHQ6MjJweDsgYmFja2dyb3VuZC1j
b2xvcjojQ0NDQ0NDOyBwYWRkaW5nLSIgKyBwb3NNYWluICsgIjoxcHg7IiArICh0aGlzLnNob3dC
b3JkZXIgPyAiIGJvcmRlci0iICsgcG9zT3RoZXIgKyAiOiAwcHg7IiA6ICIiKSArICInPjx0cj4i
Ow0KDQoJCWZvciAodmFyIGkgPSAwOyBpIDwgaXRlbUNvdW50OyBpKyspDQoJCXsNCgkJCWlmIChp
dGVtQ291bnQgPiAxKQ0KCQkJCWh0bWwgKz0gIjx0ZCBzdHlsZT0nd2lkdGg6NHB4OyB0ZXh0LWlu
ZGVudDowcHg7Jz48aW1nIHNyYz0nbnVsbC5naWYnIHN0eWxlPSd3aWR0aDo0cHg7IGhlaWdodDox
cHg7Jz48L3RkPiI7DQoNCgkJCWh0bWwgKz0gIjx0ZD48ZGl2IGlkPSciICsgdGhpcy5lbGVtZW50
SWQgKyAiX3RhYiIgKyBpICsgIicgIiArDQoJCQkJInN0eWxlPSd0ZXh0LWluZGVudDowcHg7IHBh
ZGRpbmctbGVmdDo4cHg7IHBhZGRpbmctcmlnaHQ6OHB4OyBwYWRkaW5nLSIgKyBwb3NNYWluICsg
IjoiICsgKGl0ZW1Db3VudCA+IDEgPyAiMyIgOiAiMSIpICsgInB4OyBwYWRkaW5nLSIgKyBwb3NP
dGhlciArICI6IiArIChpdGVtQ291bnQgPiAxID8gIjIiIDogIjMiKSArICJweDsgIiArDQoJCQkJ
IndoaXRlLXNwYWNlOm5vd3JhcDsgY29sb3I6IzQ0NDQ0NDsgbWFyZ2luLSIgKyBwb3NNYWluICsg
IjoxcHg7ICIgKw0KCQkJCShpdGVtQ291bnQgPiAxID8gIiBjdXJzb3I6cG9pbnRlcjsgYmFja2dy
b3VuZC1jb2xvcjojREREREREOyBib3JkZXItIiArIHBvc01haW4gKyAiOjFweCBzb2xpZCAjQ0ND
Q0NDOyIgOiAiIikgKyAiJyI7DQoNCgkJCWlmIChpdGVtQ291bnQgPiAxKQ0KCQkJew0KCQkJCWh0
bWwgKz0gIiBvbm1vdXNlbW92ZT1cInRoaXMudGFic09iamVjdC5ob3ZlclRhYih0aGlzLCB0cnVl
KVwiIG9ubW91c2VvdXQ9XCJ0aGlzLnRhYnNPYmplY3QuaG92ZXJUYWIodGhpcywgZmFsc2UpXCIi
Ow0KCQkJCWh0bWwgKz0gIiBvbmNsaWNrPVwidGhpcy50YWJzT2JqZWN0LmFjdGl2YXRlVGFiKHRo
aXMpOyBpZiAod2luZG93LmV2ZW50KSB3aW5kb3cuZXZlbnQuY2FuY2VsQnViYmxlID0gdHJ1ZTtc
IiI7DQoJCQl9DQoJCQlodG1sICs9ICI+IiArIHRoaXMubmFtZXNbaV0gKyAiPC9kaXY+PC90ZD4i
Ow0KCQl9DQoJCWh0bWwgKz0gIjx0ZCBzdHlsZT0nd2lkdGg6MTAwJSc+PC90ZD48L3RyPjwvdGFi
bGU+IjsNCgkJZWxlbWVudC5pbm5lckhUTUwgPSBodG1sOw0KDQoJCXZhciB0YWJUb0FjdGl2YXRl
ID0gbnVsbDsNCgkJZm9yICh2YXIgaSA9IDA7IGkgPCBpdGVtQ291bnQ7IGkrKykNCgkJew0KCQkJ
dmFyIHRhYiA9IHRoaXMuZ2V0VGFiQnlJbmRleChpKTsNCgkJCWlmICghdGFiKSBjb250aW51ZTsN
Cg0KCQkJdGFiLnRhYnNPYmplY3QgPSB0aGlzOw0KCQkJdGFiLnRhYkl0ZW0gPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0aGlzLml0ZW1zW2ldKTsNCgkJCXRhYi50YWJJdGVtSW5kZXggPSBpOw0K
DQoJCQl0YWIucmVtb3ZlID0gZnVuY3Rpb24oKQ0KCQkJew0KCQkJCXRoaXMudGFiSXRlbS5wYXJl
bnROb2RlLnJlbW92ZUNoaWxkKHRoaXMudGFiSXRlbSk7DQoJCQkJdGhpcy50YWJzT2JqZWN0Lml0
ZW1zLnNwbGljZSh0aGlzLnRhYkl0ZW1JbmRleCwgMSk7DQoJCQkJdGhpcy50YWJzT2JqZWN0Lm5h
bWVzLnNwbGljZSh0aGlzLnRhYkl0ZW1JbmRleCwgMSk7DQoJCQkJdGhpcy50YWJzT2JqZWN0LnJl
bmRlcigpOw0KCQkJfQ0KDQoJCQlpZiAoaXRlbUNvdW50ID4gMSAmJiBpID4gMCkNCgkJCQl0YWIu
dGFiSXRlbS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOw0KDQoJCQlpZiAoaSA9PSAwIHx8IHRoaXMu
bmFtZXNbaV0gPT0gdGhpcy5pbml0aWFsQWN0aXZlVGFiTmFtZSkNCgkJCQl0YWJUb0FjdGl2YXRl
ID0gdGFiOw0KCQl9DQoNCgkJaWYgKGl0ZW1Db3VudCA+IDEgJiYgdGFiVG9BY3RpdmF0ZSkNCgkJ
CXRoaXMuYWN0aXZhdGVUYWIodGFiVG9BY3RpdmF0ZSk7DQoJfQ0KDQoJdGhpcy5nZXRUYWJCeUlu
ZGV4ID0gZnVuY3Rpb24oaW5kZXgpDQoJew0KCQlyZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGhpcy5lbGVtZW50SWQgKyAiX3RhYiIgKyBpbmRleCk7DQoJfQ0KDQoJdGhpcy5ob3ZlclRh
YiA9IGZ1bmN0aW9uKHRhYiwgYWN0aXZlKQ0KCXsNCgkJaWYgKHRhYi50YWJzT2JqZWN0LmFjdGl2
ZVRhYiA9PSB0YWIpIHJldHVybjsNCgkJdGFiLnN0eWxlLmNvbG9yID0gKGFjdGl2ZSA/ICJibGFj
ayIgOiAiIzQ0NDQ0NCIpOw0KCX0NCg0KCXRoaXMuYWN0aXZhdGVUYWJCeU5hbWUgPSBmdW5jdGlv
bih0YWJOYW1lKQ0KCXsNCgkJaWYgKCF0aGlzIHx8ICF0aGlzLml0ZW1zIHx8ICF0aGlzLml0ZW1z
Lmxlbmd0aCkgcmV0dXJuOw0KDQoJCWZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5uYW1lcy5sZW5n
dGg7IGkrKykNCgkJCWlmICh0aGlzLm5hbWVzW2ldID09IHRhYk5hbWUpDQoJCQkJcmV0dXJuIHRo
aXMuYWN0aXZhdGVUYWJCeUluZGV4KGkpOw0KCX0NCg0KCXRoaXMuYWN0aXZhdGVUYWJCeUluZGV4
ID0gZnVuY3Rpb24oaW5kZXgpDQoJew0KCQlpZiAoIXRoaXMgfHwgIXRoaXMuaXRlbXMgfHwgIXRo
aXMuaXRlbXMubGVuZ3RoIHx8IHRoaXMuaXRlbXMubGVuZ3RoIDw9IGluZGV4KSByZXR1cm47DQoN
CgkJdmFyIHRhYiA9IHRoaXMuZ2V0VGFiQnlJbmRleChpbmRleCk7DQoJCXJldHVybiB0aGlzLmFj
dGl2YXRlVGFiKHRhYik7DQoJfQ0KDQoJdGhpcy5hY3RpdmF0ZVRhYiA9IGZ1bmN0aW9uKHRhYikN
Cgl7DQoJCWlmICh0aGlzLmFjdGl2ZVRhYiA9PSB0YWIpIHJldHVybjsNCg0KCQl2YXIgcHJldlRh
YiA9IHRoaXMuYWN0aXZlVGFiOw0KCQlpZiAocHJldlRhYikNCgkJew0KCQkJcHJldlRhYi5zdHls
ZS5iYWNrZ3JvdW5kQ29sb3IgPSAiI0RERERERCI7DQoJCQlwcmV2VGFiLnN0eWxlLmNvbG9yID0g
IiM0NDQ0NDQiOw0KCQkJcHJldlRhYi5zdHlsZS5jdXJzb3IgPSAicG9pbnRlciI7DQoJCQlpZiAo
dGhpcy5hdEJvdHRvbSkNCgkJCXsNCgkJCQlwcmV2VGFiLnN0eWxlLnBhZGRpbmdUb3AgPSAiMnB4
IjsNCgkJCQlwcmV2VGFiLnN0eWxlLmJvcmRlckJvdHRvbSA9ICIxcHggc29saWQgI0NDQ0NDQyI7
DQoJCQl9DQoJCQllbHNlDQoJCQl7DQoJCQkJcHJldlRhYi5zdHlsZS5wYWRkaW5nQm90dG9tID0g
IjJweCI7DQoJCQkJcHJldlRhYi5zdHlsZS5ib3JkZXJUb3AgPSAiMXB4IHNvbGlkICNDQ0NDQ0Mi
Ow0KCQkJfQ0KCQkJcHJldlRhYi50YWJJdGVtLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7DQoJCX0N
Cg0KCQl0aGlzLmFjdGl2ZVRhYiA9IHRhYjsNCgkJdGFiLnN0eWxlLmJhY2tncm91bmRDb2xvciA9
ICJ3aGl0ZSI7DQoJCXRhYi5zdHlsZS5jb2xvciA9ICJibGFjayI7DQoJCXRhYi5zdHlsZS5jdXJz
b3IgPSAiZGVmYXVsdCI7DQoJCWlmICh0aGlzLmF0Qm90dG9tKQ0KCQl7DQoJCQl0YWIuc3R5bGUu
cGFkZGluZ1RvcCA9ICIzcHgiOw0KCQkJdGFiLnN0eWxlLmJvcmRlckJvdHRvbSA9ICIwcHggc29s
aWQgI0NDQ0NDQyI7DQoJCX0NCgkJZWxzZQ0KCQl7DQoJCQl0YWIuc3R5bGUucGFkZGluZ0JvdHRv
bSA9ICIzcHgiOw0KCQkJdGFiLnN0eWxlLmJvcmRlclRvcCA9ICIwcHggc29saWQgI0NDQ0NDQyI7
DQoJCX0NCgkJdGFiLnRhYkl0ZW0uc3R5bGUuZGlzcGxheSA9ICIiOw0KDQoJCWlmICh0aGlzLm9u
c2VsZWN0KQ0KCQkJdGhpcy5vbnNlbGVjdCh0YWIsIHByZXZUYWIpOw0KCX0NCn0NCg0KdmFyIGFx
ZHNfanMgPSB0cnVlOw==

------=30AD9628A3274F06AF82E5991D4657D1
Content-Type: text/plain
Content-Transfer-Encoding: base64
Content-Location: http://localhost/caption.js

dmFyIGNfTWF4RmlsdGVyV2lkdGggPSAyMDA7DQoNCmZ1bmN0aW9uIGNhcHRpb25fc2V0U3RhdGlj
KHZhbHVlKQ0Kew0KCW1fc3RhdGljID0gdmFsdWU7DQoJaWYgKGVsZW1lbnQucmVzaXplRWxlbWVu
dCAhPSBudWxsKQ0KCXsNCgkJZWxlbWVudC5yZXNpemVFbGVtZW50LnN0eWxlLmN1cnNvciA9IG1f
c3RhdGljID8gIiI6ICJlLXJlc2l6ZSI7DQoJfQ0KfQ0KDQpmdW5jdGlvbiBjYXB0aW9uX0NyZWF0
ZUNvbnRyb2woZWxlbWVudCwgbV9zdGF0aWMpDQp7DQoJdmFyIG9UYWJsZSA9IHdpbmRvdy5kb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJUQUJMRSIpOw0KCWVsZW1lbnQuYXBwZW5kQ2hpbGQob1RhYmxl
KTsNCglvVGFibGUuY2VsbFNwYWNpbmcgPSAwOw0KCW9UYWJsZS5jZWxsUGFkZGluZyA9IDA7DQoJ
Ly9vVGFibGUuYm9yZGVyID0gMDsNCg0KCW9UYWJsZS5zdHlsZS53aWR0aCA9ICIxMDAlIjsNCgl2
YXIgb0JvZHkgPSB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiVEJPRFkiKTsNCglvVGFi
bGUuYXBwZW5kQ2hpbGQob0JvZHkpOw0KCXZhciBvVFIgPSB3aW5kb3cuZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiVFIiKTsNCglvQm9keS5hcHBlbmRDaGlsZChvVFIpOw0KDQoJdmFyIG9URCA9IHdp
bmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJURCIpOw0KCW9URC5ub1dyYXAgPSB0cnVlOw0K
CW9URC5jbGFzc05hbWUgPSAidGFibGVIZWFkZXJDZWxsIjsNCgllbGVtZW50LmNhcHRpb25FbGVt
ZW50ID0gb1REOw0KCW9UUi5hcHBlbmRDaGlsZChvVEQpOw0KDQoNCgkvLyBDb250ZW50czogY2Fw
dGlvbiBhbmQgZmlsdGVyIGJ1dHRvbg0KCXZhciBvVGFibGUyID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiVEFCTEUiKTsNCglvVEQuYXBwZW5kQ2hpbGQob1RhYmxlMik7DQoJb1RhYmxlMi5jZWxs
U3BhY2luZyA9IDA7DQoJb1RhYmxlMi5jZWxsUGFkZGluZyA9IDA7DQoJb1RhYmxlMi5zdHlsZS53
aWR0aCA9ICIxMDAlIjsNCg0KCXZhciBvQm9keTIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJU
Qk9EWSIpOw0KCW9UYWJsZTIuYXBwZW5kQ2hpbGQob0JvZHkyKTsNCg0KCXZhciBvVFIyID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiVFIiKTsNCglvQm9keTIuYXBwZW5kQ2hpbGQob1RSMik7DQoN
CgllbGVtZW50Lm1fY2FwdGlvbkRpdiA9IHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJT
UEFOIik7DQoJaWYgKGVsZW1lbnQuY29sdW1uICE9IG51bGwpDQoJCWVsZW1lbnQubV9jYXB0aW9u
RGl2LmlubmVySFRNTCA9IGVsZW1lbnQuY29sdW1uLmNhcHRpb24NCgllbHNlDQoJCWVsZW1lbnQu
bV9jYXB0aW9uRGl2LmlubmVySFRNTCA9ICImbmJzcDsiOw0KCQ0KCXZhciBvVEQyID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiVEQiKTsNCglvVFIyLmFwcGVuZENoaWxkKG9URDIpOw0KCW9URDIu
bm9XcmFwID0gdHJ1ZTsNCglvVEQyLnN0eWxlLnBhZGRpbmdMZWZ0ID0gIjhweCI7DQoJb1REMi5v
d25lckNlbGwgPSBlbGVtZW50Ow0KCW9URDIub25jbGljayA9IGNhcHRpb25fY2xpY2s7DQoJb1RE
Mi5vbm1vdXNlZG93biA9IGNhcHRpb25fbW91c2Vkb3duOw0KCW9URDIuYXBwZW5kQ2hpbGQoZWxl
bWVudC5tX2NhcHRpb25EaXYpOw0KDQoJdmFyIG9JbWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJJTUciKTsNCglvSW1nLm93bmVyQ2VsbCA9IGVsZW1lbnQ7DQoJb0ltZy5zcmMgPSAibnVsbC5n
aWYiOw0KCW9JbWcud2lkdGggPSAxMDsNCglvSW1nLmhlaWdodCA9IDk7DQoJZWxlbWVudC5zb3J0
SW1hZ2UgPSBvSW1nOw0KDQoJb1REMiA9IHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJU
RCIpOw0KCW9UUjIuYXBwZW5kQ2hpbGQob1REMik7DQoJb1REMi5zdHlsZS53aWR0aCA9ICIxMnB4
IjsNCglvVEQyLnZBbGlnbiA9ICJtaWRkbGUiOw0KCW9URDIuc3R5bGUucGFkZGluZ1RvcCA9ICIy
cHgiOw0KCW9URDIub3duZXJDZWxsID0gZWxlbWVudDsNCglvVEQyLm9uY2xpY2sgPSBjYXB0aW9u
X2NsaWNrOw0KCW9URDIub25tb3VzZWRvd24gPSBjYXB0aW9uX21vdXNlZG93bjsNCglvVEQyLmFw
cGVuZENoaWxkKG9JbWcpOw0KDQoJdmFyIGZpbHRlckVuYWJsZWQgPSBlbGVtZW50LmNvbHVtbi5m
aWx0ZXJMaXN0Lmxlbmd0aCA+IDE7DQoJdmFyIG9JbWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJJTUciKTsNCglvSW1nLm93bmVyQ2VsbCA9IGVsZW1lbnQ7DQoJb0ltZy5zcmMgPSAibnVsbC5n
aWYiOw0KCW9JbWcuY2xhc3NOYW1lID0gImljb24gaWNvbi1maWx0ZXIwIjsNCglvSW1nLndpZHRo
ID0gMTM7DQoJb0ltZy5oZWlnaHQgPSAxMzsNCglvSW1nLmNsaWNrZWQgPSBmYWxzZTsNCgllbGVt
ZW50LmZpbHRlckltYWdlID0gb0ltZzsNCg0KCWlmIChmaWx0ZXJFbmFibGVkKQ0KCQljYXB0aW9u
X2VuYWJsZUZpbHRlcihlbGVtZW50KTsNCgllbHNlDQoJCW9JbWcuc3R5bGUuY3Vyc29yID0gImRl
ZmF1bHQiOw0KDQoJb1REMiA9IHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJURCIpOw0K
CW9UUjIuYXBwZW5kQ2hpbGQob1REMik7DQoJb1REMi5zdHlsZS53aWR0aCA9ICIxNXB4IjsNCglv
VEQyLnZBbGlnbiA9ICJtaWRkbGUiOw0KCW9URDIuc3R5bGUuY3Vyc29yID0gImRlZmF1bHQiOw0K
CW9URDIuc3R5bGUubGluZUhlaWdodCA9ICJub3JtYWwiOw0KCW9URDIuc3R5bGUucGFkZGluZ1Rv
cCA9ICIycHgiOw0KCW9URDIuYXBwZW5kQ2hpbGQob0ltZyk7DQoNCgkvLyBSZXNpemUgY2VsbA0K
CW9URCA9IHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJURCIpOw0KCW9URC5zdHlsZS53
aWR0aCA9ICIycHgiOw0KCW9URC5zdHlsZS5jdXJzb3IgPSBtX3N0YXRpYyA/ICIiOiAiZS1yZXNp
emUiOw0KDQoJb1RELm1fY2FwdHVyZWQgPSBmYWxzZTsNCglvVEQub25tb3VzZWRvd24gPSBjYXB0
aW9uX3N0YXJ0RHJhZzsNCglvVEQub25tb3VzZXVwID0gY2FwdGlvbl9lbmREcmFnOw0KCW9URC5v
bm1vdXNlbW92ZSA9IGNhcHRpb25fbW91c2VNb3ZlOw0KDQoJb1RELm93bmVyQ2VsbCA9IGVsZW1l
bnQ7DQoJb1RELm5vV3JhcCA9IHRydWU7DQoJZWxlbWVudC5yZXNpemVFbGVtZW50ID0gb1REOw0K
CW9UUi5hcHBlbmRDaGlsZChvVEQpOw0KCQ0KCWVsZW1lbnQubV9zdGF0aWMgPSBtX3N0YXRpYzsN
Cg0KCWVsZW1lbnQubV9taW5XaWR0aCA9IE1hdGgubWF4KGVsZW1lbnQuY2FwdGlvbkVsZW1lbnQu
b2Zmc2V0V2lkdGggKyAyLCBlbGVtZW50Lm1fY2FwdGlvbkRpdi5vZmZzZXRXaWR0aCArIDQwKTsN
CgljYXB0aW9uX2RvUmVzaXplKGVsZW1lbnQsIGVsZW1lbnQubV9taW5XaWR0aCk7DQp9DQoNCmZ1
bmN0aW9uIGNhcHRpb25fY2xlYXIoZWxlbWVudCkNCnsNCglpZiAoZWxlbWVudC5maWx0ZXJJbWFn
ZSkNCgl7DQoJCWVsZW1lbnQuZmlsdGVySW1hZ2Uub3duZXJDZWxsID0gbnVsbDsNCgkJZWxlbWVu
dC5maWx0ZXJJbWFnZS5vbm1vdXNlb3ZlciA9IG51bGw7DQoJCWVsZW1lbnQuZmlsdGVySW1hZ2Uu
b25tb3VzZW91dCA9IG51bGw7DQoJfQ0KCWlmIChlbGVtZW50Lm1fY2FwdGlvbkRpdiAmJiBlbGVt
ZW50Lm1fY2FwdGlvbkRpdi5wYXJlbnROb2RlKSBlbGVtZW50Lm1fY2FwdGlvbkRpdi5wYXJlbnRO
b2RlLm93bmVyQ2VsbCA9IG51bGw7DQoJaWYgKGVsZW1lbnQucmVzaXplRWxlbWVudCkgZWxlbWVu
dC5yZXNpemVFbGVtZW50Lm93bmVyQ2VsbCA9IG51bGw7DQoNCgllbGVtZW50LmNhcHRpb25FbGVt
ZW50ID0gbnVsbDsNCgllbGVtZW50Lm1fY2FwdGlvbkRpdiA9IG51bGw7DQoJZWxlbWVudC5maWx0
ZXJJbWFnZSA9IG51bGw7DQoJZWxlbWVudC5yZXNpemVFbGVtZW50ID0gbnVsbDsNCgllbGVtZW50
LnJlYWxURCA9IG51bGw7DQp9DQoNCmZ1bmN0aW9uIGNhcHRpb25fZW5hYmxlRmlsdGVyKGVsZW1l
bnQpDQp7DQoJaWYgKGVsZW1lbnQuZmlsdGVySW1hZ2UuY2xhc3NOYW1lLmluZGV4T2YoImZpbHRl
cjAiKSA8IDAgfHwgZWxlbWVudC5maWx0ZXJJbWFnZS5jbGlja2VkID09IHRydWUpIHJldHVybjsN
Cg0KCWVsZW1lbnQuZmlsdGVySW1hZ2UuY2xhc3NOYW1lID0gImljb24gaWNvbi1maWx0ZXIiOw0K
CWVsZW1lbnQuZmlsdGVySW1hZ2Uub25jbGljayA9IGNhcHRpb25fZmlsdGVyQ2xpY2s7DQoJZWxl
bWVudC5maWx0ZXJJbWFnZS5vbm1vdXNlb3ZlciA9IGZ1bmN0aW9uKCkgeyB0aGlzLmNsYXNzTmFt
ZSA9ICJpY29uIGljb24tZmlsdGVyMSI7IH07DQoJZWxlbWVudC5maWx0ZXJJbWFnZS5vbm1vdXNl
b3V0ID0gZnVuY3Rpb24oKSB7IGlmICghdGhpcy5jbGlja2VkKSB0aGlzLmNsYXNzTmFtZSA9ICJp
Y29uIGljb24tZmlsdGVyIjsgfTsNCgllbGVtZW50LmZpbHRlckltYWdlLnN0eWxlLmN1cnNvciA9
IG1fUG9pbnRlckN1cnNvcjsNCn0NCg0KZnVuY3Rpb24gY2FwdGlvbl9zdGFydERyYWcoZSkNCnsN
Cgl2YXIgZWxlbWVudCA9IHRoaXMub3duZXJDZWxsOw0KCWlmICghZWxlbWVudCkgcmV0dXJuOw0K
DQoJaWYgKGVsZW1lbnQubV9zdGF0aWMgPT0gZmFsc2UpDQoJew0KCQlpZiAoY3VzdG9tX2NhcHR1
cmUgJiYgdGhpcy5fY2FwdHVyZSAhPSBudWxsKSB7IHRoaXMucmVsZWFzZUNhcHR1cmUoKTsgdGhp
cy5tX2NhcHR1cmVkID0gZmFsc2U7IH0NCg0KCQlpZiAoIWUpIGUgPSB3aW5kb3cuZXZlbnQ7DQoJ
CWlmIChlLmJ1dHRvbiAhPSAwKSByZXR1cm47DQoJCXRoaXMuc2V0Q2FwdHVyZSgpOw0KCQl0aGlz
Lm1fY2FwdHVyZWQgPSB0cnVlOw0KCQl0aGlzLmJlZ2luRHJhZyA9IGUuc2NyZWVuWDsNCgkJZWxl
bWVudC5pbml0X3dpZHRoID0gZWxlbWVudC5vZmZzZXRXaWR0aDsNCgl9DQoJaWYgKHR5cGVvZiBl
LnByZXZlbnREZWZhdWx0ID09ICJmdW5jdGlvbiIpDQoJCWUucHJldmVudERlZmF1bHQoKTsNCn0N
Cg0KZnVuY3Rpb24gY2FwdGlvbl9tb3VzZU1vdmUoZSkNCnsNCglpZiAoIXRoaXMubV9jYXB0dXJl
ZCkgcmV0dXJuOw0KDQoJdmFyIGVsZW1lbnQgPSB0aGlzLm93bmVyQ2VsbDsNCglpZiAoIWVsZW1l
bnQpIHJldHVybjsNCg0KCWlmIChlbGVtZW50Lm1fc3RhdGljID09IGZhbHNlKQ0KCXsNCgkJaWYg
KCFlKSBlID0gd2luZG93LmV2ZW50Ow0KCQl2YXIgZGVsdGEgPSBlLnNjcmVlblggLSB0aGlzLmJl
Z2luRHJhZzsNCgkJaWYgKGVsZW1lbnQuaW5pdF93aWR0aCArIGRlbHRhIDwgZWxlbWVudC5tX21p
bldpZHRoKSBkZWx0YSA9IGVsZW1lbnQubV9taW5XaWR0aCAtIGVsZW1lbnQuaW5pdF93aWR0aDsN
CgkJZWxlbWVudC5zdHlsZS53aWR0aCA9IChlbGVtZW50LmluaXRfd2lkdGggKyBkZWx0YSkgKyAi
cHgiOw0KCQllbGVtZW50LnN0eWxlLm1pbldpZHRoID0gKGVsZW1lbnQuaW5pdF93aWR0aCArIGRl
bHRhKSArICJweCI7DQoJfQ0KfQ0KDQpmdW5jdGlvbiBjYXB0aW9uX2VuZERyYWcoZSkNCnsNCgl2
YXIgZWxlbWVudCA9IHRoaXMub3duZXJDZWxsOw0KCWlmICghZWxlbWVudCkgcmV0dXJuOw0KDQoJ
aWYgKGVsZW1lbnQubV9zdGF0aWMgPT0gZmFsc2UpDQoJew0KCQlpZiAoY3VzdG9tX2NhcHR1cmUg
JiYgdGhpcy5fY2FwdHVyZSA9PSBudWxsKSByZXR1cm47DQoNCgkJaWYgKCFlKSBlID0gd2luZG93
LmV2ZW50Ow0KCQl0aGlzLnJlbGVhc2VDYXB0dXJlKCk7DQoJCXRoaXMubV9jYXB0dXJlZCA9IGZh
bHNlOw0KCQljYXB0aW9uX2RvUmVzaXplKGVsZW1lbnQsIGVsZW1lbnQub2Zmc2V0V2lkdGgpOw0K
CX0NCn0NCg0KZnVuY3Rpb24gY2FwdGlvbl9kb1Jlc2l6ZShvYmosIHdpZHRoKQ0Kew0KCXdpZHRo
ID0gTWF0aC5yb3VuZChNYXRoLm1heChvYmoubV9taW5XaWR0aCwgd2lkdGgpKTsNCg0KCW9iai5y
ZWFsVEQuc3R5bGUud2lkdGggPSB3aWR0aCArICJweCI7DQoJb2JqLnJlYWxURC5zdHlsZS5taW5X
aWR0aCA9IHdpZHRoICsgInB4IjsNCglvYmoucmVhbFRELnN0eWxlLmhlaWdodCA9IG9iai5vZmZz
ZXRIZWlnaHQgKyAicHgiOw0KDQoJaWYgKG9iai5yZWFsVEQubV9kYXRhVGFibGUuY3JlYXRpbmcp
DQoJew0KCQlvYmoucmVhbFRELm1fZGF0YVRhYmxlLnRvdGFsV2lkdGggKz0gd2lkdGg7DQoJCWlm
IChvYmoucmVhbFRELm9mZnNldFdpZHRoICE9IHdpZHRoKQ0KCQkJb2JqLnJlYWxURC5tX2RhdGFU
YWJsZS5tb3ppbGxhID0gdHJ1ZTsNCgl9DQoNCgl3aWR0aCA9IE1hdGgubWF4KHdpZHRoLCBvYmou
cmVhbFRELm9mZnNldFdpZHRoKTsNCglvYmouc3R5bGUud2lkdGggPSB3aWR0aCArICJweCI7DQoJ
b2JqLnN0eWxlLm1pbldpZHRoID0gd2lkdGggKyAicHgiOw0KfQ0KDQpmdW5jdGlvbiBjYXB0aW9u
X2NyZWF0ZUZpbHRlckJ1dHRvbihlbGVtZW50LCBvVGFibGUsIHRleHQsIGltYWdlLCBwb3NYLCBw
b3NZLCBidG5XaWR0aCwgYnRuSGVpZ2h0LCBvbkNsaWNrSGFuZGxlcikNCnsNCgl2YXIgb0J0biA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIklOUFVUIik7DQoJaWYgKGltYWdlICE9ICIiKQ0KCXsN
CgkJb0J0bi50eXBlID0gImltYWdlIjsNCgkJb0J0bi5zcmMgPSAibnVsbC5naWYiOw0KCQlvQnRu
LmNsYXNzTmFtZSA9ICJpY29uIGljb24tIiArIGltYWdlOw0KCQlvQnRuLmFsdCA9IHRleHQ7DQoJ
fQ0KCWVsc2UNCgl7DQoJCW9CdG4udHlwZSA9ICJidXR0b24iOw0KCQlvQnRuLnZhbHVlID0gdGV4
dDsNCgl9DQoJb0J0bi5vbmNsaWNrID0gb25DbGlja0hhbmRsZXI7DQoJb0J0bi5tX2NhcHRpb24g
PSBlbGVtZW50Ow0KCW9CdG4ubV90YWJsZSA9IG9UYWJsZTsNCglvQnRuLm9ubW91c2VvdmVyID0g
ZnVuY3Rpb24oKSB7IHRoaXMuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gIiNDMEQwRjAiOyB9Ow0K
CW9CdG4ub25tb3VzZW91dCA9IGZ1bmN0aW9uKCkgeyB0aGlzLnN0eWxlLmJhY2tncm91bmRDb2xv
ciA9ICIjRUVFRUVFIjsgfTsNCg0KCW9CdG4uc3R5bGUuYm9yZGVyV2lkdGggPSAiMXB4IjsNCglv
QnRuLnN0eWxlLmJvcmRlclN0eWxlID0gInNvbGlkIjsNCglvQnRuLnN0eWxlLmJvcmRlckNvbG9y
ID0gIiMzMzMzMzMiOw0KCW9CdG4uc3R5bGUuYmFja2dyb3VuZENvbG9yID0gIiNFRUVFRUUiOw0K
CW9CdG4uc3R5bGUuZm9udFNpemUgPSAiMTBweCI7DQoJb0J0bi5zdHlsZS5jdXJzb3IgPSBtX1Bv
aW50ZXJDdXJzb3I7DQoNCglvQnRuLnN0eWxlLmhlaWdodCA9IChidG5IZWlnaHQgLSA0KSArICJw
eCI7DQoJb0J0bi5zdHlsZS53aWR0aCA9IGJ0bldpZHRoICsgInB4IjsNCglvQnRuLnN0eWxlLnBv
c2l0aW9uID0gInJlbGF0aXZlIjsNCglvQnRuLnN0eWxlLmxlZnQgPSBwb3NYICsgInB4IjsNCglp
ZiAoIWlzT3BlcmEpIHBvc1kgLT0gMjsNCglpZiAoaW1hZ2UgPT0gIiIpIHsgaWYgKGlzT3BlcmEp
IHBvc1kgKz0gMTsgZWxzZSBwb3NZIC09IDE7IH0NCglvQnRuLnN0eWxlLnRvcCA9IHBvc1kgKyAi
cHgiOw0KCXJldHVybiBvQnRuOw0KfQ0KDQpmdW5jdGlvbiBjYXB0aW9uX2hpZGVGaWx0ZXIoZmls
dGVyZWRDb2x1bW4sIGVsZW1lbnQpDQp7DQoJaWYgKGZpbHRlcmVkQ29sdW1uID09IG51bGwpDQoJ
CXJldHVybiB0cnVlOw0KDQoJdmFyIF90YWJsZVBhbmUgPSBmaWx0ZXJlZENvbHVtbi5yZWFsVEQu
bV9kYXRhVGFibGUucGFyZW50Tm9kZTsNCglpZiAoX3RhYmxlUGFuZS5tX2ZpbHRlckRpdiAhPSBu
dWxsKQ0KCXsNCgkJZm9yICh2YXIgaSA9IDE7IGkgPCBfdGFibGVQYW5lLm1fZmlsdGVyRGl2LmNo
aWxkTm9kZXMubGVuZ3RoOyBpKyspDQoJCXsNCgkJCXZhciBpdGVtID0gX3RhYmxlUGFuZS5tX2Zp
bHRlckRpdi5jaGlsZE5vZGVzW2ldOw0KCQkJaXRlbS5tX2NhcHRpb24gPSBudWxsOw0KCQkJaXRl
bS5tX3RhYmxlID0gbnVsbDsNCgkJCWl0ZW0ub25tb3VzZW92ZXIgPSBudWxsOw0KCQkJaXRlbS5v
bm1vdXNlb3V0ID0gbnVsbDsNCgkJCWl0ZW0ub25jbGljayA9IG51bGw7DQoJCX0NCg0KCQlfdGFi
bGVQYW5lLnJlbW92ZUNoaWxkKF90YWJsZVBhbmUubV9maWx0ZXJEaXYpOw0KCQlfdGFibGVQYW5l
Lm1fZmlsdGVyRGl2ID0gbnVsbDsNCg0KCQltX3Byb3ZpZGVyY2VsbC5tX2ZpbHRlcmVkQ29sdW1u
ID0gbnVsbDsNCg0KCQlmaWx0ZXJlZENvbHVtbi5maWx0ZXJJbWFnZS5jbGlja2VkID0gZmFsc2U7
DQoJCWZpbHRlcmVkQ29sdW1uLmZpbHRlckltYWdlLmNsYXNzTmFtZSA9ICJpY29uIGljb24tZmls
dGVyIjsNCg0KCQlpZiAoZmlsdGVyZWRDb2x1bW4gPT0gZWxlbWVudCkgcmV0dXJuIGZhbHNlOw0K
CX0NCglyZXR1cm4gdHJ1ZTsNCn0NCg0KZnVuY3Rpb24gY2FwdGlvbl9zaG93RmlsdGVyKGVsZW1l
bnQpDQp7DQoJaWYgKGNhcHRpb25faGlkZUZpbHRlcihtX3Byb3ZpZGVyY2VsbC5tX2ZpbHRlcmVk
Q29sdW1uLCBlbGVtZW50KSA9PSBmYWxzZSkgcmV0dXJuOw0KDQoJdmFyIF90YWJsZVBhbmUgPSBl
bGVtZW50LnJlYWxURC5tX2RhdGFUYWJsZS5wYXJlbnROb2RlOw0KDQoJdmFyIF9jb3VudCA9IGVs
ZW1lbnQuY29sdW1uLmZpbHRlckxpc3QubGVuZ3RoOw0KCWlmIChfY291bnQgPCAyKSByZXR1cm47
DQoNCgl2YXIgX3BhZGRpbmcgPSA0OyB2YXIgX2J0bkhlaWdodCA9IDI1OyAgdmFyIF9saW5lSGVp
Z2h0ID0gMTk7DQoNCgl2YXIgb0RpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpOw0K
CV90YWJsZVBhbmUuYXBwZW5kQ2hpbGQob0Rpdik7DQoJX3RhYmxlUGFuZS5tX2ZpbHRlckRpdiA9
IG9EaXY7DQoNCglvRGl2LmNhcHRpb25FbGVtZW50ID0gZWxlbWVudDsNCg0KCXZhciBfd2lkdGgg
PSBlbGVtZW50Lm9mZnNldFdpZHRoIC0gMjsNCgkJaWYgKF93aWR0aCA8IDEwMCkgX3dpZHRoID0g
MTAwOyBpZiAoX3dpZHRoID4gY19NYXhGaWx0ZXJXaWR0aCkgX3dpZHRoID0gY19NYXhGaWx0ZXJX
aWR0aDsNCgl2YXIgX2hlaWdodCA9IF9jb3VudCAqIF9saW5lSGVpZ2h0ICsgX2J0bkhlaWdodCAr
IDIgKiBfcGFkZGluZzsNCgkJaWYoX2hlaWdodCA+IChfdGFibGVQYW5lLmNsaWVudEhlaWdodCAt
IDIyKSkgX2hlaWdodCA9IF90YWJsZVBhbmUuY2xpZW50SGVpZ2h0IC0gMjI7DQoNCglvRGl2LnN0
eWxlLndpZHRoID0gX3dpZHRoICsgInB4IjsNCglvRGl2LnN0eWxlLmhlaWdodCA9IF9oZWlnaHQg
KyAicHgiOw0KDQoJb0Rpdi5zdHlsZS5ib3JkZXJXaWR0aCA9ICIxcHgiOw0KCW9EaXYuc3R5bGUu
Ym9yZGVyQ29sb3IgPSAiIzg4ODg4OCI7DQoJb0Rpdi5zdHlsZS5ib3JkZXJTdHlsZSA9ICJzb2xp
ZCI7DQoJb0Rpdi5zdHlsZS5wYWRkaW5nID0gKF9wYWRkaW5nIC0gMSkgKyAicHgiOw0KCW9EaXYu
c3R5bGUuYmFja2dyb3VuZENvbG9yID0gIiNFRUVFRUUiOw0KCW9EaXYuc3R5bGUuekluZGV4ID0g
NTA7DQoNCgl2YXIgX2xlZnQgPSAwOyB2YXIgX3RvcCA9IDA7DQoJb0Rpdi5zdHlsZS5wb3NpdGlv
biA9ICJhYnNvbHV0ZSI7DQoJew0KCQlfbGVmdCA9IGdldFNjcmVlblgoZWxlbWVudCk7DQoJCV90
b3AgPSBnZXRTY3JlZW5ZKGVsZW1lbnQpICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLSAxOw0KDQoJ
CWlmIChlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCkgX2xlZnQgKz0gX3RhYmxlUGFuZS5z
Y3JvbGxMZWZ0Ow0KDQoJCW9EaXYubV9pbml0V2lkdGggPSBfd2lkdGg7DQoJCW9EaXYubV9pbml0
SGVpZ2h0ID0gX2hlaWdodDsNCgkJb0Rpdi5zdHlsZS50b3AgPSBfdG9wICsgInB4IjsNCgl9DQoJ
aWYgKGVsZW1lbnQub2Zmc2V0V2lkdGggPiBfd2lkdGgpIF9sZWZ0ICs9IGVsZW1lbnQub2Zmc2V0
V2lkdGggLSBfd2lkdGggLSAyOw0KCW9EaXYubV9pbml0TGVmdCA9IF9sZWZ0Ow0KCW9EaXYubV9p
bml0VG9wID0gX3RvcDsNCgljYXB0aW9uX3NldEZpbHRlclBvc2l0aW9uKG9EaXYsIF90YWJsZVBh
bmUpOw0KDQoJdmFyIG9UYWJsZURpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpOw0K
CW9UYWJsZURpdi5zdHlsZS53aWR0aCA9IChfd2lkdGggLSAoMiAqIF9wYWRkaW5nKSkgKyAicHgi
Ow0KCW9UYWJsZURpdi5zdHlsZS5oZWlnaHQgPSAoX2hlaWdodCAtIChfYnRuSGVpZ2h0ICsgKDIg
KiBfcGFkZGluZykpICsgMikgKyAicHgiOw0KCW9UYWJsZURpdi5zdHlsZS5vdmVyZmxvdyA9ICJh
dXRvIjsNCglvVGFibGVEaXYuc3R5bGUuYm9yZGVyQm90dG9tU3R5bGUgPSAic29saWQiOw0KCW9U
YWJsZURpdi5zdHlsZS5ib3JkZXJCb3R0b21XaWR0aCA9ICIxcHgiOw0KCW9UYWJsZURpdi5zdHls
ZS5ib3JkZXJCb3R0b21Db2xvciA9ICIjODg4ODg4IjsNCglvVGFibGVEaXYuc3R5bGUuYm9yZGVy
Q29sbGFwc2UgPSAiY29sbGFwc2UiOw0KCW9EaXYuYXBwZW5kQ2hpbGQob1RhYmxlRGl2KTsNCg0K
CXZhciBvVGFibGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJUQUJMRSIpOw0KCW9UYWJsZURp
di5hcHBlbmRDaGlsZChvVGFibGUpOw0KCW9UYWJsZS5jZWxsUGFkZGluZyA9IDA7DQoJb1RhYmxl
LmNlbGxTcGFjaW5nID0gMDsNCglvVGFibGUuc3R5bGUucGFkZGluZ1JpZ2h0ID0gIjJweCI7DQoN
Cgl2YXIgb0JvZHkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJUQk9EWSIpOw0KCW9UYWJsZS5h
cHBlbmRDaGlsZChvQm9keSk7DQoNCglmb3IgKHZhciBpID0gMDsgaSA8IF9jb3VudDsgaSsrKQ0K
CXsNCgkJdmFyIHZhbHVlID0gZWxlbWVudC5jb2x1bW4uZmlsdGVyTGlzdFtpXS52YWx1ZTsNCgkJ
dmFyIG9UUiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlRSIik7DQoJCW9Cb2R5LmFwcGVuZENo
aWxkKG9UUik7DQoNCgkJdmFyIG9URCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlREIik7DQoJ
CW9UUi5hcHBlbmRDaGlsZChvVEQpOw0KCQl2YXIgb0NCID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiSU5QVVQiKTsNCgkJb0NCLnR5cGUgPSAiY2hlY2tib3giOw0KCQlvQ0IudmFsdWUgPSAiY2Jf
IiArIGk7DQoJCWlmIChpc09wZXJhKQ0KCQl7DQoJCQlvQ0Iuc3R5bGUuaGVpZ2h0ID0gX2xpbmVI
ZWlnaHQgKyAicHgiOw0KCQkJb0NCLnN0eWxlLndpZHRoID0gX2xpbmVIZWlnaHQgKyAicHgiOw0K
CQl9DQoJCW9DQi5jaGVja2VkID0gZWxlbWVudC5jb2x1bW4uZmlsdGVyTGlzdFtpXS5jaGVja2Vk
Ow0KCQlvQ0IuZGVmYXVsdENoZWNrZWQgPSBlbGVtZW50LmNvbHVtbi5maWx0ZXJMaXN0W2ldLmNo
ZWNrZWQ7DQoJCW9URC5hcHBlbmRDaGlsZChvQ0IpOw0KDQoJCW9URCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoIlREIik7DQoJCWlmIChlbGVtZW50LmNvbHVtbi50eXBlTmFtZSA9PSAiYXFkczpp
bWFnZSIgfHwgdmFsdWUgPT0gIiZsdDtFbXB0eSZndDsiKQ0KCQkJb1RELmlubmVySFRNTCA9IHZh
bHVlOw0KCQllbHNlDQoJCQlvVEQuaW5uZXJUZXh0ID0gdmFsdWUucmVwbGFjZSgvW1xuXHJcZlx0
XHZdL2csICIgIik7DQoJCW9URC5ub1dyYXAgPSB0cnVlOw0KCQlvVEQuaGVpZ2h0ID0gX2xpbmVI
ZWlnaHQ7DQoNCgkJb1RSLmFwcGVuZENoaWxkKG9URCk7DQoJfQ0KDQoJdmFyIG9CdG4gPSBjYXB0
aW9uX2NyZWF0ZUZpbHRlckJ1dHRvbihlbGVtZW50LCBvVGFibGUsICJTZWxlY3QgQWxsIiwgInNl
bGVjdCIsIDAsIDQsIDE5LCBfYnRuSGVpZ2h0IC0gMiwgY2FwdGlvbl9TZWxlY3RBbGwpOw0KCW9E
aXYuYXBwZW5kQ2hpbGQob0J0bik7DQoNCglvQnRuID0gY2FwdGlvbl9jcmVhdGVGaWx0ZXJCdXR0
b24oZWxlbWVudCwgb1RhYmxlLCAiVW5zZWxlY3QgQWxsIiwgInVuc2VsZWN0IiwgNSwgNCwgMTks
IF9idG5IZWlnaHQgLSAyLCBjYXB0aW9uX1Vuc2VsZWN0QWxsKTsNCglvRGl2LmFwcGVuZENoaWxk
KG9CdG4pOw0KDQoJdmFyIHBvc1kgPSAtMjsgaWYgKGlzT3BlcmEpIHBvc1kgPSAtNDsNCglvQnRu
ID0gY2FwdGlvbl9jcmVhdGVGaWx0ZXJCdXR0b24oZWxlbWVudCwgb1RhYmxlLCAiQXBwbHkiLCAi
IiwgMTAsIHBvc1ksIDQwLCBfYnRuSGVpZ2h0LCBjYXB0aW9uX2FwcGx5RmlsdGVyKTsNCglvQnRu
LnN0eWxlLmxlZnQgPSAoX3dpZHRoIC0gcGFyc2VJbnQob0J0bi5zdHlsZS53aWR0aCkgLSA0MiAt
ICgyICogX3BhZGRpbmcpKSArICJweCI7DQoJb0Rpdi5hcHBlbmRDaGlsZChvQnRuKTsNCg0KCW1f
cHJvdmlkZXJjZWxsLm1fZmlsdGVyZWRDb2x1bW4gPSBlbGVtZW50Ow0KDQoJZWxlbWVudC5maWx0
ZXJJbWFnZS5jbGFzc05hbWUgPSAiaWNvbiBpY29uLWZpbHRlcjEiOw0KDQoJLy8gY2hlY2tpbmcg
Zm9yIHBvc3NpYmlsaWx5IG9mIHNpemUgZW5oYW5jZW1lbnQgaWYgY29udGVudCBpcyBzY3JvbGxh
YmxlDQoJdmFyIF9tYXhWaXNpYmxlV2lkdGggPSBjX01heEZpbHRlcldpZHRoIC0gMiAqIF9wYWRk
aW5nOw0KCV93aWR0aCA9IG9UYWJsZS5vZmZzZXRXaWR0aDsNCglpZiAoX3dpZHRoID4gb1RhYmxl
RGl2LmNsaWVudFdpZHRoKQ0KCXsNCgkJaWYgKF93aWR0aCA+IF9tYXhWaXNpYmxlV2lkdGgpDQoJ
CXsNCgkJCV93aWR0aCA9IF9tYXhWaXNpYmxlV2lkdGg7DQoJCQlfaGVpZ2h0ID0gcGFyc2VJbnQo
b0Rpdi5zdHlsZS5oZWlnaHQpICsgX2xpbmVIZWlnaHQ7DQoNCgkJCWlmKF9oZWlnaHQgPD0gKF90
YWJsZVBhbmUuY2xpZW50SGVpZ2h0IC0gMjIpKQ0KCQkJew0KCQkJCW9UYWJsZURpdi5zdHlsZS5o
ZWlnaHQgPSBwYXJzZUludChvVGFibGVEaXYuc3R5bGUuaGVpZ2h0KSArIF9saW5lSGVpZ2h0ICsg
InB4IjsNCgkJCQlvRGl2LnN0eWxlLmhlaWdodCA9IF9oZWlnaHQgKyAicHgiOw0KCQkJCW9EaXYu
bV9pbml0SGVpZ2h0ID0gX2hlaWdodDsNCgkJCX0NCgkJfQ0KDQoJCWlmIChfd2lkdGggPD0gX21h
eFZpc2libGVXaWR0aCkNCgkJew0KCQkJaWYgKGVsZW1lbnQucmVhbFRELm1fZGF0YVRhYmxlLm1v
emlsbGEpDQoJCQkJb1RhYmxlRGl2LnN0eWxlLm92ZXJmbG93ID0gIiI7IA0KDQoJCQlvRGl2LnN0
eWxlLndpZHRoID0gKHBhcnNlSW50KG9EaXYuc3R5bGUud2lkdGgpICsgKF93aWR0aCAtIG9UYWJs
ZURpdi5vZmZzZXRXaWR0aCkpICsgInB4IjsNCgkJCW9UYWJsZURpdi5zdHlsZS53aWR0aCA9IChv
RGl2Lm9mZnNldFdpZHRoIC0gMiAqIF9wYWRkaW5nKSArICJweCI7DQoJCQlvQnRuLnN0eWxlLmxl
ZnQgPSAoX3dpZHRoIC0gcGFyc2VJbnQob0J0bi5zdHlsZS53aWR0aCkgLSA0MikgKyAicHgiOw0K
CQkJb0Rpdi5tX2luaXRXaWR0aCA9IG9EaXYub2Zmc2V0V2lkdGg7DQoNCgkJCWlmIChlbGVtZW50
LnJlYWxURC5tX2RhdGFUYWJsZS5tb3ppbGxhKQ0KCQkJCW9UYWJsZURpdi5zdHlsZS5vdmVyZmxv
dyA9ICJhdXRvIjsgDQoJCX0NCg0KCQlpZigob1RhYmxlRGl2Lm9mZnNldEhlaWdodCAtIG9UYWJs
ZURpdi5jbGllbnRIZWlnaHQpID4gMTUgJiYgb1RhYmxlLm9mZnNldFdpZHRoIDwgX21heFZpc2li
bGVXaWR0aCkNCgkJew0KCQkJdmFyIGRlbHRhID0gTWF0aC5taW4ob1RhYmxlRGl2Lm9mZnNldEhl
aWdodCAtIG9UYWJsZURpdi5jbGllbnRIZWlnaHQsIF9tYXhWaXNpYmxlV2lkdGggLSBvVGFibGUu
b2Zmc2V0V2lkdGgpOw0KCQkJb0Rpdi5zdHlsZS53aWR0aCA9IChvRGl2Lm9mZnNldFdpZHRoICsg
ZGVsdGEpICsgInB4IjsNCgkJCW9UYWJsZURpdi5zdHlsZS53aWR0aCA9IChvVGFibGUub2Zmc2V0
V2lkdGggKyBkZWx0YSkgKyAicHgiOw0KCQkJb0J0bi5zdHlsZS5sZWZ0ID0gKG9EaXYub2Zmc2V0
V2lkdGggLSBvQnRuLm9mZnNldFdpZHRoIC0gNDIgLSAoMiAqIF9wYWRkaW5nKSkgKyAicHgiOw0K
CQl9DQoJfQ0KDQoJdGFibGVfT3BlcmFGb3JjZVJlZHJhdyhfdGFibGVQYW5lLnRhYmxlRWxlbWVu
dCwgdHJ1ZSk7DQp9DQoNCmZ1bmN0aW9uIGNhcHRpb25fc2V0RmlsdGVyUG9zaXRpb24oZmlsdGVy
RGl2LCB0YWJsZVBhbmUpDQp7DQoJaWYgKGlzT3BlcmEpDQoJew0KCQlmaWx0ZXJEaXYuc3R5bGUu
bGVmdCA9IGZpbHRlckRpdi5tX2luaXRMZWZ0ICsgInB4IjsNCgkJZmlsdGVyRGl2LnN0eWxlLnRv
cCA9IGZpbHRlckRpdi5tX2luaXRUb3AgKyB0YWJsZVBhbmUuc2Nyb2xsVG9wICsgInB4IjsNCgl9
DQoJZWxzZQ0KCXsNCgkJdmFyIF9sZWZ0ID0gZmlsdGVyRGl2Lm1faW5pdExlZnQ7DQoJCV9sZWZ0
IC09IHRhYmxlUGFuZS5zY3JvbGxMZWZ0Ow0KCQl2YXIgX3JpZ2h0ID0gX2xlZnQgKyBmaWx0ZXJE
aXYubV9pbml0V2lkdGg7DQoJCWZpbHRlckRpdi5zdHlsZS5sZWZ0ID0gX2xlZnQgKyAicHgiOw0K
DQoJCXZhciBfeCA9IGdldFNjcmVlblgodGFibGVQYW5lKTsgdmFyIF94MiA9IF94ICsgdGFibGVQ
YW5lLmNsaWVudFdpZHRoOw0KDQoJCWlmICggKF9yaWdodCA8IF94KSB8fCAoX2xlZnQgPiBfeDIp
ICkNCgkJew0KCQkJZmlsdGVyRGl2LnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7DQoJCQlmaWx0ZXJE
aXYuc3R5bGUuY2xpcCA9ICIiOw0KCQl9DQoJCWVsc2UgaWYgKCAoX2xlZnQgPCBfeCkgfHwgKF9y
aWdodCA+IF94MikgKQ0KCQl7DQoJCQlmaWx0ZXJEaXYuc3R5bGUuZGlzcGxheSA9ICIiOw0KCQkJ
ZmlsdGVyRGl2LnN0eWxlLmNsaXAgPSAicmVjdCgwLCAiICsgZXZhbChfeDIgLSBfbGVmdCArIDEp
ICsgIiwgIiArIA0KCQkJICAgIGZpbHRlckRpdi5tX2luaXRIZWlnaHQgKyAiLCAiICsgZXZhbChf
eCAtIF9sZWZ0ICsgMSkgKyAiKSI7DQoJCX0NCgkJZWxzZQ0KCQl7DQoJCQlmaWx0ZXJEaXYuc3R5
bGUuZGlzcGxheSA9ICIiOw0KCQkJZmlsdGVyRGl2LnN0eWxlLmNsaXAgPSAiIjsNCgkJfQ0KCX0N
Cn0NCg0KZnVuY3Rpb24gY2FwdGlvbl9TZWxlY3RBbGwoKQ0Kew0KCXZhciBvQ29sdW1uID0gdGhp
cy5tX2NhcHRpb24uY29sdW1uOw0KCXZhciBjYnMgPSB0aGlzLm1fdGFibGUuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoIklOUFVUIik7DQoJZm9yICh2YXIgaSA9IDA7IGkgPCBjYnMubGVuZ3RoOyBpKysp
DQoJCWNic1tpXS5jaGVja2VkID0gdHJ1ZTsNCn0NCg0KZnVuY3Rpb24gY2FwdGlvbl9VbnNlbGVj
dEFsbCgpDQp7DQoJdmFyIG9Db2x1bW4gPSB0aGlzLm1fY2FwdGlvbi5jb2x1bW47DQoJdmFyIGNi
cyA9IHRoaXMubV90YWJsZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiSU5QVVQiKTsNCglmb3IgKHZh
ciBpID0gMDsgaSA8IGNicy5sZW5ndGg7IGkrKykNCgkJY2JzW2ldLmNoZWNrZWQgPSBmYWxzZTsN
Cn0NCg0KZnVuY3Rpb24gY2FwdGlvbl9hcHBseUZpbHRlcigpDQp7DQoJdmFyIG9Db2x1bW4gPSB0
aGlzLm1fY2FwdGlvbi5jb2x1bW47DQoJdmFyIGNicyA9IHRoaXMubV90YWJsZS5nZXRFbGVtZW50
c0J5VGFnTmFtZSgiSU5QVVQiKTsNCgl2YXIgX2NoZWNrZWRDb3VudCA9IDA7DQoJZm9yICh2YXIg
aSA9IDA7IGkgPCBjYnMubGVuZ3RoOyBpKyspDQoJew0KCQl2YXIgaWQgPSBjYnNbaV0udmFsdWUu
c3Vic3RyaW5nKDMpOw0KCQlvQ29sdW1uLmZpbHRlckxpc3RbaWRdLmNoZWNrZWQgPSBjYnNbaV0u
Y2hlY2tlZDsNCgkJaWYgKGNic1tpXS5jaGVja2VkKSBfY2hlY2tlZENvdW50Kys7DQoJfQ0KCW9D
b2x1bW4uZmlsdGVyZWQgPSAoX2NoZWNrZWRDb3VudCAhPSBjYnMubGVuZ3RoKTsNCg0KCXRoaXMu
bV9jYXB0aW9uLm1fY2FwdGlvbkRpdi5zdHlsZS5mb250V2VpZ2h0ID0gb0NvbHVtbi5maWx0ZXJl
ZCA/ICJib2xkIiA6ICIiOw0KDQoJdmFyIF90YWJsZVBhbmUgPSB0aGlzLm1fY2FwdGlvbi5yZWFs
VEQubV9kYXRhVGFibGUucGFyZW50Tm9kZTsNCgljYXB0aW9uX2hpZGVGaWx0ZXIodGhpcy5tX2Nh
cHRpb24pOw0KDQoJdGFibGVfdXBkYXRlRmlsdGVyKF90YWJsZVBhbmUubV9kYXRhVGFibGUpOw0K
fQ0KDQpmdW5jdGlvbiBjYXB0aW9uX2ZpbHRlckNsaWNrKCkNCnsNCgl0aGlzLmNsaWNrZWQgPSB0
cnVlOw0KCWNhcHRpb25fc2hvd0ZpbHRlcih0aGlzLm93bmVyQ2VsbCk7DQp9DQoNCmZ1bmN0aW9u
IGNhcHRpb25fc2V0U29ydERpcmVjdGlvbih0YWJsZUNlbGwsIGFzY2VuZGluZywgdmlzaWJsZSkN
CnsNCgl2YXIgaW1nID0gdGFibGVDZWxsLm93bmVyQ2VsbC5zb3J0SW1hZ2U7DQoJaWYgKHZpc2li
bGUpDQoJew0KCQlpZiAoYXNjZW5kaW5nKSBpbWcuY2xhc3NOYW1lID0gImljb24gaWNvbi1zb3J0
LWEiOw0KCQllbHNlIGltZy5jbGFzc05hbWUgPSAiaWNvbiBpY29uLXNvcnQtZCI7DQoJfQ0KCWVs
c2UNCgkJaW1nLmNsYXNzTmFtZSA9ICIiOw0KfQ0KDQp2YXIgbV9wcmV2ZW50Q2xpY2sgPSBmYWxz
ZTsNCg0KZnVuY3Rpb24gY2FwdGlvbl9jbGljayhlKQ0Kew0KCWlmIChtX3ByZXZlbnRDbGljaykN
CgkJcmV0dXJuOw0KDQoJdmFyIGNvbHVtbklkID0gdGhpcy5vd25lckNlbGwucmVhbFRELmNlbGxJ
bmRleDsNCgl2YXIgdGFibGUgPSB0aGlzLm93bmVyQ2VsbC5yZWFsVEQubV9kYXRhVGFibGU7DQoN
CglpZiAodGFibGUubV9zb3J0Q2FwdGlvbikNCgkJY2FwdGlvbl9zZXRTb3J0RGlyZWN0aW9uKHRh
YmxlLm1fc29ydENhcHRpb24sIGZhbHNlLCBmYWxzZSk7DQoNCgl0YWJsZS5tX3NvcnRBc2NlbmRp
bmcgPSB0YWJsZS5tX3NvcnRDb2x1bW5JZCAhPSBjb2x1bW5JZCB8fCAhdGFibGUubV9zb3J0QXNj
ZW5kaW5nOw0KCXRhYmxlLm1fc29ydENvbHVtbklkID0gY29sdW1uSWQ7DQoJdGFibGUubV9zb3J0
Q2FwdGlvbiA9IHRoaXM7DQoNCgl0YWJsZV9zb3J0KHRhYmxlKTsNCg0KCWNhcHRpb25fc2V0U29y
dERpcmVjdGlvbih0aGlzLCB0YWJsZS5tX3NvcnRBc2NlbmRpbmcsIHRydWUpOw0KDQoJdGFibGVf
T3BlcmFGb3JjZVJlZHJhdyh0YWJsZS5wYXJlbnROb2RlLnRhYmxlRWxlbWVudCwgZmFsc2UpOw0K
fQ0KDQpmdW5jdGlvbiBjYXB0aW9uX21vdXNlZG93bihlKQ0Kew0KCW1fcHJldmVudENsaWNrID0g
ZmFsc2U7DQoJZSA9IGUgfHwgd2luZG93LmV2ZW50Ow0KCXZhciBpc19taWRkbGUgPSAoZS53aGlj
aCA9PSBudWxsKSA/IChlLmJ1dHRvbiA9PSA0KSA6IChlLndoaWNoID09IDIpOw0KCWlmIChpc19t
aWRkbGUgJiYgdGhpcy5vd25lckNlbGwucmVhbFRELmNvbHVtbi5pc0RhdGVUaW1lKQ0KCXsNCgkJ
bV9wcmV2ZW50Q2xpY2sgPSB0cnVlOw0KCQlpZiAoZS5wcmV2ZW50RGVmYXVsdCkgZS5wcmV2ZW50
RGVmYXVsdCgpOw0KCQlpZiAoZS5jYW5jZWxCdWJibGUgIT09IHVuZGVmaW5lZCkgZS5jYW5jZWxC
dWJibGUgPSB0cnVlOw0KCQkNCgkJY19TaG93VGltZURpZmZlcmVuY2UgPSAhY19TaG93VGltZURp
ZmZlcmVuY2U7DQoJCXZhciB0YWJsZSA9IHRoaXMub3duZXJDZWxsLnJlYWxURC5tX2RhdGFUYWJs
ZTsNCgkJdGFibGVfdXBkYXRlRGF0ZVRpbWVDb2x1bW5zRm9yVGFibGUodGFibGUpOw0KCX0NCn0N
Cg0KdmFyIGNhcHRpb25fanMgPSB0cnVlOw==

------=30AD9628A3274F06AF82E5991D4657D1
Content-Type: text/plain
Content-Transfer-Encoding: base64
Content-Location: http://localhost/logtree.js

dmFyIG1fcHJvdmlkZXJzID0gW107DQp2YXIgbV9wcm92aWRlclRhYnNEaXYgPSBudWxsOw0KdmFy
IG1fdHJlZWNlbGwgPSBudWxsOw0KdmFyIG1fcHJvdmlkZXJjZWxsID0gbnVsbDsNCnZhciBtX1Jv
b3RMb2dEYXRhID0gbnVsbDsNCnZhciBtX3Jvb3Rub2RlID0gbnVsbDsNCnZhciBtX3RyZWVkaXYg
PSBudWxsOw0KdmFyIG1fYWN0aXZlbm9kZSA9IG51bGw7DQp2YXIgbV9zZWxlY3RlZG5vZGUgPSBu
dWxsOw0KdmFyIG1fdHJlZWhlYWQgPSBudWxsOw0KdmFyIG1fdHJlZWhlYWQyID0gbnVsbDsNCnZh
ciBtX3RyZWVoaWRkZW4gPSBmYWxzZTsNCnZhciBtX3RyZWV0b29sYmFyID0gbnVsbDsNCnZhciB0
cmVlSGVhZEhlaWdodCA9IDIwOw0KdmFyIHRyZWVIZWFkV2lkdGggPSAyMTsNCnZhciB0cmVlVG9v
bGJhckhlaWdodCA9IDI4Ow0KdmFyIHRyZWVUb29sYmFyQXRUb3AgPSBmYWxzZTsNCnZhciB0cmVl
VG9vbGJhckNhcHRpb25zID0gdHJ1ZTsNCnZhciBtX0ZpbmROZXh0RXJyb3JNc2dBZnRlckxvYWRp
bmcgPSBmYWxzZTsNCg0KZnVuY3Rpb24gbG9ndHJlZV9sb2FkQ29tcG9uZW50KGVsZW1lbnQsIHNy
YykNCnsNCgl2YXIgY1dpZHRoID0gZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aDsNCgl2YXIgY0hl
aWdodCA9IGRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0IC0gY19Jbm5lclBhZGRpbmcgKiAyOw0K
CXZhciBjVHJlZVdpZHRoID0gTWF0aC5yb3VuZChjV2lkdGggKiAwLjI1KSAtIDE7DQoNCglpZiAo
Y0hlaWdodCA8IDMwMCkgY0hlaWdodCA9IDMwMDsNCg0KCWVsZW1lbnQuc3R5bGUud2lkdGggPSBj
V2lkdGggKyAicHgiOw0KCWVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gY0hlaWdodCArICJweCI7DQoN
Cgl2YXIgb1RhYmxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiVEFCTEUiKTsNCgllbGVtZW50
LmFwcGVuZENoaWxkKG9UYWJsZSk7DQoJZWxlbWVudC5yb290VGFibGUgPSBvVGFibGU7DQoNCglv
VGFibGUuY2VsbFBhZGRpbmcgPSAwOw0KCW9UYWJsZS5jZWxsU3BhY2luZyA9IDA7DQoJb1RhYmxl
LmJvcmRlciA9IDA7DQoJb1RhYmxlLnN0eWxlLndpZHRoID0gY1dpZHRoICsgInB4IjsNCglvVGFi
bGUuc3R5bGUuaGVpZ2h0ID0gY0hlaWdodCArICJweCI7DQoNCgl2YXIgb0JvZHkgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJUQk9EWSIpOw0KCW9UYWJsZS5hcHBlbmRDaGlsZChvQm9keSk7DQoJ
DQoJdmFyIG9UUiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlRSIik7DQoJb0JvZHkuYXBwZW5k
Q2hpbGQob1RSKTsNCg0KCW1fdHJlZWNlbGwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJURCIp
Ow0KCW1fdHJlZWNlbGwuc3R5bGUud2lkdGggPSBjVHJlZVdpZHRoICsgInB4IjsNCgltX3RyZWVj
ZWxsLnZBbGlnbiA9ICJ0b3AiOw0KCW1fdHJlZWNlbGwubm9XcmFwID0gdHJ1ZTsNCgltX3RyZWVj
ZWxsLmNsYXNzTmFtZSA9ICJub3ByaW50IjsNCglvVFIuYXBwZW5kQ2hpbGQobV90cmVlY2VsbCk7
DQoJDQoJbV90cmVlaGVhZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpOw0KCW1fdHJl
ZWhlYWQuY2xhc3NOYW1lID0gInNpbmdsZUZyYW1lIjsNCgltX3RyZWVoZWFkLnN0eWxlLndpZHRo
ID0gY1RyZWVXaWR0aCArICJweCI7DQoJbV90cmVlaGVhZC5zdHlsZS5oZWlnaHQgPSB0cmVlSGVh
ZEhlaWdodCArICJweCI7DQoJbV90cmVlaGVhZC5zdHlsZS5ib3JkZXJCb3R0b20gPSAiMHB4IjsN
CgltX3RyZWVoZWFkLmlkID0gInRyZWVoZWFkIjsNCgltX3RyZWVjZWxsLmFwcGVuZENoaWxkKG1f
dHJlZWhlYWQpOw0KCQ0KCW1fdHJlZWhlYWQuaW5uZXJIVE1MID0gIjxkaXYgY2xhc3M9J2NlbGxD
YXB0aW9uJz48ZGl2IHN0eWxlPSdmbG9hdDpsZWZ0Jz5Mb2cgVHJlZTwvZGl2PiIgKw0KCSAgIjxp
bWcgc3JjPSdudWxsLmdpZicgY2xhc3M9J2ljb24gaWNvbi1oaWRlJyBvbm1vdXNlbW92ZT0ndGhp
cy5jbGFzc05hbWU9XCJpY29uIGljb24taGlkZTFcIicgb25tb3VzZW91dD0ndGhpcy5jbGFzc05h
bWU9XCJpY29uIGljb24taGlkZVwiJyAiICsNCgkgICJzdHlsZT0nZmxvYXQ6cmlnaHQ7IG1hcmdp
bjoxcHggM3B4IDNweCAxcHg7IGN1cnNvcjpwb2ludGVyOycgIiArDQoJICAib25jbGljaz0ndHJl
ZUhlYWRCdG5DbGljaygpJyBhbHQ9J0hpZGUnPjwvZGl2PiI7DQoJDQoJbV90cmVlaGVhZDIgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJESVYiKTsNCgltX3RyZWVoZWFkMi5jbGFzc05hbWUgPSAi
c2luZ2xlRnJhbWUiOw0KCW1fdHJlZWhlYWQyLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7DQoJbV90
cmVlaGVhZDIuc3R5bGUud2lkdGggPSB0cmVlSGVhZFdpZHRoICsgInB4IjsNCgltX3RyZWVoZWFk
Mi5zdHlsZS5oZWlnaHQgPSBlbGVtZW50Lm9mZnNldEhlaWdodCArICJweCI7DQoJbV90cmVlaGVh
ZDIuaWQgPSAidHJlZWhlYWQyIjsNCgltX3RyZWVjZWxsLmFwcGVuZENoaWxkKG1fdHJlZWhlYWQy
KTsNCgkNCgltX3RyZWVoZWFkMi5pbm5lckhUTUwgPSAiPGltZyBzcmM9J251bGwuZ2lmJyBjbGFz
cz0naWNvbiBpY29uLXNob3cnIG9ubW91c2Vtb3ZlPSd0aGlzLmNsYXNzTmFtZT1cImljb24gaWNv
bi1zaG93MVwiJyAiICsNCgkgICJvbm1vdXNlb3V0PSd0aGlzLmNsYXNzTmFtZT1cImljb24gaWNv
bi1zaG93XCInIHN0eWxlPSdtYXJnaW46M3B4OyBjdXJzb3I6cG9pbnRlcjsnICIgKw0KCSAgIm9u
Y2xpY2s9J3RyZWVIZWFkQnRuQ2xpY2soKScgYWx0PSdTaG93Jz4iICsNCgkgICI8ZGl2IGNsYXNz
PSdsb2d0cmVlX2NhcHRpb25fdmVydGljYWwnPkxvZyBUcmVlPC9kaXY+IjsNCgkNCgltX3RyZWVk
aXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJESVYiKTsNCgltX3RyZWVkaXYuY2xhc3NOYW1l
ID0gInNpbmdsZUZyYW1lIjsNCgltX3RyZWVkaXYuc3R5bGUud2lkdGggPSBjVHJlZVdpZHRoICsg
InB4IjsNCgltX3RyZWVkaXYuc3R5bGUuaGVpZ2h0ID0gZWxlbWVudC5vZmZzZXRIZWlnaHQgLSB0
cmVlSGVhZEhlaWdodCAtIHRyZWVUb29sYmFySGVpZ2h0ICsgKHRyZWVUb29sYmFyQXRUb3AgPyAw
IDogMSkgKyAicHgiOw0KCW1fdHJlZWRpdi5zdHlsZS5ib3JkZXJUb3AgPSAiMHB4IjsNCgltX3Ry
ZWVkaXYuaWQgPSAibG9ndHJlZSI7DQoNCgltX3RyZWVkaXYuc3R5bGUucGFkZGluZyA9ICIzcHgi
Ow0KCW1fdHJlZWRpdi5zdHlsZS5vdmVyZmxvdyA9ICJhdXRvIjsNCgltX3RyZWVjZWxsLmFwcGVu
ZENoaWxkKG1fdHJlZWRpdik7DQoNCgltX3RyZWV0b29sYmFyID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiRElWIik7DQoJbV90cmVldG9vbGJhci5jbGFzc05hbWUgPSAic2luZ2xlRnJhbWUiOw0K
CW1fdHJlZXRvb2xiYXIuc3R5bGUud2lkdGggPSBjVHJlZVdpZHRoICsgInB4IjsNCgltX3RyZWV0
b29sYmFyLnN0eWxlLmhlaWdodCA9IHRyZWVUb29sYmFySGVpZ2h0ICsgInB4IjsNCgltX3RyZWV0
b29sYmFyLnN0eWxlLnBvc2l0aW9uID0gImFic29sdXRlIjsNCgltX3RyZWV0b29sYmFyLnN0eWxl
LmxlZnQgPSAiNXB4IjsNCgltX3RyZWV0b29sYmFyLnN0eWxlLm92ZXJmbG93ID0gImhpZGRlbiI7
DQoJbV90cmVldG9vbGJhci5zdHlsZS50b3AgPSAodHJlZVRvb2xiYXJBdFRvcCA/IHRyZWVIZWFk
SGVpZ2h0IDogKGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC0gdHJlZVRvb2xiYXJIZWlnaHQpKSArIDUg
KyAicHgiOw0KCW1fdHJlZXRvb2xiYXIuaWQgPSAibG9ndHJlZV90b29sYmFyIjsNCgltX3RyZWVj
ZWxsLmFwcGVuZENoaWxkKG1fdHJlZXRvb2xiYXIpOw0KDQoJdmFyIGJ0bl90ZCA9ICI8dGQgc3R5
bGU9J2JvcmRlcjoxcHggc29saWQgI0FDQTg5OTsgY3Vyc29yOnBvaW50ZXI7IHdoaXRlLXNwYWNl
OiBub3dyYXA7JyBvbm1vdXNlb3Zlcj0ndGhpcy5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9XCIjQzBE
MEYwXCInIG9ubW91c2VvdXQ9J3RoaXMuc3R5bGUuYmFja2dyb3VuZENvbG9yPVwid2hpdGVcIicg
b25tb3VzZWRvd249J3JldHVybiBmYWxzZScgIjsNCgltX3RyZWV0b29sYmFyLmlubmVySFRNTCA9
ICI8dGFibGUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0yIGJvcmRlcj0wPjx0cj4iICsNCgkJ
YnRuX3RkICsgIm9uY2xpY2s9J2xvZ3RyZWVfRXhwYW5kQWxsKHRydWUpJz4gPGltZyBzcmM9J251
bGwuZ2lmJyBjbGFzcz0naWNvbiBpY29uLWV4cGFuZCcgc3R5bGU9J3ZlcnRpY2FsLWFsaWduOm1p
ZGRsZSciICsgKHRyZWVUb29sYmFyQ2FwdGlvbnMgPyAiPiAiIDogIiB0aXRsZT0nIikgKyJFeHBh
bmQgQWxsIiArICh0cmVlVG9vbGJhckNhcHRpb25zID8gIiZuYnNwOyZuYnNwOyIgOiAiJz4iKSAr
ICI8L3RkPiIgKw0KCQlidG5fdGQgKyAib25jbGljaz0nbG9ndHJlZV9FeHBhbmRBbGwoZmFsc2Up
Jz4gPGltZyBzcmM9J251bGwuZ2lmJyBjbGFzcz0naWNvbiBpY29uLWNvbGxhcHNlJyBzdHlsZT0n
dmVydGljYWwtYWxpZ246bWlkZGxlJyIgKyAodHJlZVRvb2xiYXJDYXB0aW9ucyA/ICI+ICIgOiAi
IHRpdGxlPSciKSArIkNvbGxhcHNlIEFsbCIgKyAodHJlZVRvb2xiYXJDYXB0aW9ucyA/ICImbmJz
cDsmbmJzcDsiIDogIic+IikgKyAiPC90ZD4iICsNCgkJYnRuX3RkICsgIm9uY2xpY2s9J2xvZ3Ry
ZWVfR29Ub0Vycm9yKCk7IGlmICh3aW5kb3cuZXZlbnQpIHdpbmRvdy5ldmVudC5jYW5jZWxCdWJi
bGUgPSB0cnVlOyc+IDxpbWcgc3JjPSdudWxsLmdpZicgY2xhc3M9J2ljb24gaWNvbi1lcnJvcicg
c3R5bGU9J21hcmdpbjoycHg7IHZlcnRpY2FsLWFsaWduOm1pZGRsZSciICsgKHRyZWVUb29sYmFy
Q2FwdGlvbnMgPyAiPiA8c3Bhbj4iIDogIiB0aXRsZT0nIikgKyJHbyB0byBOZXh0IEVycm9yIiAr
ICh0cmVlVG9vbGJhckNhcHRpb25zID8gIjwvc3Bhbj4mbmJzcDsmbmJzcDsiIDogIic+IikgKyAi
PC90ZD4iICsNCgkJIjwvdHI+PC90YWJsZT4iOw0KDQoJdmFyIG9URCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoIlREIik7DQoJb1RELnN0eWxlLndpZHRoID0gIjVweCI7DQoJb1RELm5vV3JhcCA9
IHRydWU7DQoJb1RELmNsYXNzTmFtZSA9ICJub3ByaW50IjsNCglvVFIuYXBwZW5kQ2hpbGQob1RE
KTsNCgkNCgltX3Byb3ZpZGVyY2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlREIik7DQoJ
bV9wcm92aWRlcmNlbGwudkFsaWduID0gInRvcCI7DQoJbV9wcm92aWRlcmNlbGwuc3R5bGUud2lk
dGggPSBjV2lkdGggLSBjVHJlZVdpZHRoIC0gNSArICJweCI7DQoJbV9wcm92aWRlcmNlbGwuaWQg
PSBtX3Byb3ZpZGVyY2VsbC51bmlxdWVJRDsNCglvVFIuYXBwZW5kQ2hpbGQobV9wcm92aWRlcmNl
bGwpOw0KDQoJZWxlbWVudC5kb1Jlc2l6ZSA9IGZ1bmN0aW9uKCkNCgl7DQoJCXZhciBjV2lkdGgg
PSBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoOw0KCQl2YXIgY0hlaWdodCA9IGRvY3VtZW50LmJv
ZHkuY2xpZW50SGVpZ2h0IC0gY19Jbm5lclBhZGRpbmcgKiAyOw0KCQl2YXIgY1RyZWVXaWR0aCA9
IE1hdGgucm91bmQoY1dpZHRoICogMC4yNSkgLSAxOw0KDQoJCWlmIChjSGVpZ2h0IDwgMzAwKSBj
SGVpZ2h0ID0gMzAwOw0KCQlpZiAoY1dpZHRoIDwgNTAwKSBjV2lkdGggPSA1MDA7DQoNCgkJdmFy
IHRyZWVfV2lkdGggPSBtX3RyZWVoaWRkZW4gPyB0cmVlSGVhZFdpZHRoIDogY1RyZWVXaWR0aDsN
CgkJdmFyIHByb3ZfV2lkdGggPSBjV2lkdGggLSB0cmVlX1dpZHRoIC0gNTsNCgkJdmFyIHByb3Zf
SGVpZ2h0ID0gY0hlaWdodCAtIChtX3Byb3ZpZGVyVGFic0RpdiA/IChtX3Byb3ZpZGVyVGFic0Rp
di5vZmZzZXRIZWlnaHQgLSAxKSA6IDApOw0KCQkNCgkJZm9yICh2YXIgaSA9IDA7IGkgPCBtX3By
b3ZpZGVycy5sZW5ndGg7IGkrKykNCgkJew0KCQkJaWYgKG1fcHJvdmlkZXJzW2ldLm1fcm9vdEVs
ZW1lbnQgJiYgbV9wcm92aWRlcnNbaV0ubV9yb290RWxlbWVudC5kb1Jlc2l6ZSkNCgkJCQltX3By
b3ZpZGVyc1tpXS5tX3Jvb3RFbGVtZW50LmRvUmVzaXplKHByb3ZfV2lkdGgsIHByb3ZfSGVpZ2h0
KTsNCgkJfQ0KDQoJCW1fcHJvdmlkZXJjZWxsLnN0eWxlLndpZHRoID0gcHJvdl9XaWR0aCArICJw
eCI7DQoJCWlmIChtX3Byb3ZpZGVyVGFic0RpdikgbV9wcm92aWRlclRhYnNEaXYuc3R5bGUud2lk
dGggPSBwcm92X1dpZHRoICsgInB4IjsNCg0KCQltX3RyZWVjZWxsLnN0eWxlLndpZHRoID0gdHJl
ZV9XaWR0aCArICJweCI7DQoNCgkJaWYgKCFtX3RyZWVoaWRkZW4pDQoJCXsNCgkJCW1fdHJlZWhl
YWQuc3R5bGUud2lkdGggPSB0cmVlX1dpZHRoICsgInB4IjsNCgkJCW1fdHJlZWRpdi5zdHlsZS53
aWR0aCA9IHRyZWVfV2lkdGggKyAicHgiOw0KCQkJbV90cmVlZGl2LnN0eWxlLmhlaWdodCA9IGNI
ZWlnaHQgLSB0cmVlSGVhZEhlaWdodCAtIChtX3RyZWV0b29sYmFyID8gdHJlZVRvb2xiYXJIZWln
aHQgLSAodHJlZVRvb2xiYXJBdFRvcCA/IDAgOiAxKSA6IDApICsgInB4IjsNCgkJCWlmIChtX3Ry
ZWV0b29sYmFyKQ0KCQkJew0KCQkJCW1fdHJlZXRvb2xiYXIuc3R5bGUud2lkdGggPSB0cmVlX1dp
ZHRoICsgInB4IjsNCgkJCQlpZiAoIXRyZWVUb29sYmFyQXRUb3ApIG1fdHJlZXRvb2xiYXIuc3R5
bGUudG9wID0gKGNIZWlnaHQgLSB0cmVlVG9vbGJhckhlaWdodCArIDUpICsgInB4IjsNCgkJCX0N
CgkJfQ0KCQllbHNlDQoJCQltX3RyZWVoZWFkMi5zdHlsZS5oZWlnaHQgPSBjSGVpZ2h0ICsgInB4
IjsNCg0KCQl0aGlzLnN0eWxlLndpZHRoID0gY1dpZHRoICsgInB4IjsNCgkJdGhpcy5zdHlsZS5o
ZWlnaHQgPSBjSGVpZ2h0ICsgInB4IjsNCg0KCQl0aGlzLnJvb3RUYWJsZS5zdHlsZS53aWR0aCA9
IGNXaWR0aCArICJweCI7DQoJCXRoaXMucm9vdFRhYmxlLnN0eWxlLmhlaWdodCA9IGNIZWlnaHQg
KyAicHgiOw0KDQoJCXZhciBtX3Byb3ZpZGVyID0gbnVsbDsNCgkJZm9yICh2YXIgaSA9IDA7IGkg
PCBtX3Byb3ZpZGVycy5sZW5ndGg7IGkrKykNCgkJew0KCQkJaWYgKG1fcHJvdmlkZXJzW2ldLnN0
eWxlLmRpc3BsYXkgPT0gIm5vbmUiKQ0KCQkJCWNvbnRpbnVlOw0KCQkJCQ0KCQkJbV9wcm92aWRl
ciA9IG1fcHJvdmlkZXJzW2ldOw0KCQkJYnJlYWs7DQoJCX0NCg0KCQl2YXIgX29iaiA9IG1fcHJv
dmlkZXIgPyBtX3Byb3ZpZGVyLm1fcm9vdEVsZW1lbnQgOiBudWxsOw0KCQl3aGlsZSAoX29iaiAh
PSBudWxsKQ0KCQl7DQoJCQlpZiAoX29iai5tX2RhdGFUYWJsZSkgLy8gR3JhcGgNCgkJCQlfb2Jq
ID0gX29iai5tX2RhdGFUYWJsZTsNCg0KCQkJaWYgKF9vYmoucm9vdERpdikNCgkJCQl0YWJsZV9V
cGRhdGVDb2x1bW5zUG9zaXRpb24oX29iaik7DQoNCgkJCV9vYmogPSBfb2JqLm1fTmVzdGVkT2Jq
ZWN0Ow0KCQl9DQoNCgl9DQoNCglfbG9hZF9KU09OKHNyYywgZWxlbWVudCwgbG9ndHJlZV9UcmVl
TG9hZCwgbG9ndHJlZV9Mb2FkQ29tcGxldGUpOw0KDQoJKHdpbmRvdy5hZGRFdmVudExpc3RlbmVy
IHx8IHdpbmRvdy5hdHRhY2hFdmVudCkod2luZG93LmFkZEV2ZW50TGlzdGVuZXIgPyAibWVzc2Fn
ZSIgOiAib25tZXNzYWdlIiwNCglmdW5jdGlvbiAoZXZlbnQpIHsNCgkJdmFyIGRhdGEgPSBldmVu
dC5kYXRhOw0KCQlpZiAodHlwZW9mKGRhdGEpID09ICJzdHJpbmciKSAvLyBJRTwxMA0KCQkJZGF0
YSA9IGRhdGEuc3BsaXQoIiwiKTsNCgkJaWYgKCFkYXRhLmxlbmd0aCkNCgkJCXJldHVybjsNCgkJ
dmFyIG1ldGhvZCA9IGRhdGEuc2hpZnQoKTsNCgkJaWYgKHR5cGVvZih3aW5kb3dbbWV0aG9kXSkg
PT0gImZ1bmN0aW9uIikNCgkJCXdpbmRvd1ttZXRob2RdLmFwcGx5KHdpbmRvdywgZGF0YSk7DQoJ
fSk7DQp9DQoNCmZ1bmN0aW9uIGxvZ3RyZWVfQ2hlY2tUb29sYmFyKGVsZW1lbnQpDQp7DQoJdmFy
IGhhc0Vycm9yID0gKG1fUm9vdExvZ0RhdGEuc3RhdHVzID09IDIpOw0KCXZhciBoYXNXYXJuaW5n
ID0gKG1fUm9vdExvZ0RhdGEuc3RhdHVzID09IDEpOw0KCXZhciBpc1RyZWUgPSBmYWxzZTsNCglm
b3IgKHZhciBpID0gMDsgaSA8IG1fUm9vdExvZ0RhdGEuY2hpbGRyZW4ubGVuZ3RoOyBpKyspDQoJ
CWlmIChtX1Jvb3RMb2dEYXRhLmNoaWxkcmVuW2ldLmNoaWxkcmVuLmxlbmd0aCA+IDApIHsgaXNU
cmVlID0gdHJ1ZTsgYnJlYWsgfQ0KDQoJaWYgKCFoYXNFcnJvciAmJiAhaGFzV2FybmluZyAmJiAh
aXNUcmVlKQ0KCXsNCgkJbV90cmVlY2VsbC5yZW1vdmVDaGlsZChtX3RyZWV0b29sYmFyKTsNCgkJ
bV90cmVldG9vbGJhciA9IG51bGw7DQoJCW1fdHJlZWRpdi5zdHlsZS5oZWlnaHQgPSAoZWxlbWVu
dC5vZmZzZXRIZWlnaHQgLSB0cmVlSGVhZEhlaWdodCkgKyAicHgiOw0KCQlyZXR1cm47DQoJfQ0K
DQoJdmFyIHRibCA9IG1fdHJlZXRvb2xiYXIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIlRBQkxFIilb
MF07DQoJaWYgKCFoYXNFcnJvciAmJiAhaGFzV2FybmluZykNCgkJdGJsLnJvd3NbMF0uZGVsZXRl
Q2VsbCgyKTsNCglpZiAoaGFzV2FybmluZykNCgl7DQoJCXZhciBpbWcgPSB0Ymwucm93c1swXS5j
ZWxsc1syXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiSU1HIik7DQoJCWlmIChpbWcgJiYgaW1nLmxl
bmd0aCkgaW1nID0gaW1nWzBdOw0KCQlpZiAoaW1nKSBpbWcuY2xhc3NOYW1lID0gImljb24gaWNv
bi13YXJuaW5nIjsNCg0KCQl2YXIgdHh0ID0gdGJsLnJvd3NbMF0uY2VsbHNbMl0uZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoIlNQQU4iKTsNCgkJaWYgKHR4dCAmJiB0eHQubGVuZ3RoKSB0eHQgPSB0eHRb
MF07DQoJCWlmICh0eHQpIHR4dC5pbm5lckhUTUwgPSAiR28gVG8gTmV4dCBXYXJuaW5nIjsNCgl9
DQoNCglpZiAoIWlzVHJlZSkNCgl7DQoJCXRibC5yb3dzWzBdLmRlbGV0ZUNlbGwoMSk7DQoJCXRi
bC5yb3dzWzBdLmRlbGV0ZUNlbGwoMCk7DQoJfQ0KfQ0KDQpmdW5jdGlvbiBsb2d0cmVlX0V4cGFu
ZE5vZGVDaGlsZHJlbihub2RlLCBleHBhbmQsIGxldmVsKQ0Kew0KCXZhciBhY3RpdmF0ZV9yb290
ID0gZmFsc2U7DQoJZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlLmNoaWxkcmVuLmxlbmd0aDsgaSsr
KQ0KCXsNCgkJdmFyIGRpdiA9IG5vZGUuY2hpbGRyZW5baV0udHJlZU5vZGU7DQoNCgkJaWYgKCFl
eHBhbmQgJiYgbGV2ZWwgPiAwICYmIChtX3NlbGVjdGVkbm9kZSA/IG1fc2VsZWN0ZWRub2RlID09
IGRpdiA6IG1fYWN0aXZlbm9kZSA9PSBkaXYpKQ0KCQkJYWN0aXZhdGVfcm9vdCA9IHRydWU7DQoN
CgkJaWYgKCFkaXYuY2hpbGRyZW5QcmVwYXJlZCkNCgkJew0KCQkJaWYgKGV4cGFuZCkNCgkJCQls
b2d0cmVlX2V4cGFuZE5vZGUoZGl2LCBmYWxzZSk7DQoJCQllbHNlDQoJCQkJY29udGludWU7DQoJ
CX0NCg0KCQlpZiAoZGl2LmV4cGFuZGVkICE9IGV4cGFuZCkNCgkJCWxvZ3RyZWVfZXhwYW5kTG9n
RGF0YU5vZGUuYXBwbHkoZGl2LmltYWdlKTsNCg0KCQlhY3RpdmF0ZV9yb290ID0gYWN0aXZhdGVf
cm9vdCB8fCBsb2d0cmVlX0V4cGFuZE5vZGVDaGlsZHJlbihub2RlLmNoaWxkcmVuW2ldLCBleHBh
bmQsIGxldmVsICsgMSk7DQoJfQ0KCXJldHVybiBhY3RpdmF0ZV9yb290Ow0KfQ0KDQpmdW5jdGlv
biBsb2d0cmVlX0V4cGFuZEFsbChleHBhbmQpDQp7DQoJaWYgKGV4cGFuZCkgbG9ndHJlZV9leHBh
bmROb2RlKG1fcm9vdG5vZGUsIGZhbHNlKTsNCglpZiAobG9ndHJlZV9FeHBhbmROb2RlQ2hpbGRy
ZW4obV9Sb290TG9nRGF0YSwgZXhwYW5kLCAwKSkNCgkJbG9ndHJlZV9zZXRBY3RpdmVOb2RlKG1f
cm9vdG5vZGUpOw0KfQ0KDQpmdW5jdGlvbiBsb2d0cmVlX0ZpbmROZXh0RXJyb3JMb2coc2VhcmNo
RGF0YSkNCnsNCgl2YXIgbm9kZSA9IHNlYXJjaERhdGEubG9nRGF0YTsNCg0KCWZvciAodmFyIGkg
PSAwOyBpIDwgbm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkrKykNCgl7DQoJCXZhciBjaGlsZF9ub2Rl
ID0gbm9kZS5jaGlsZHJlbltpXTsNCgkJdmFyIGRpdiA9IGNoaWxkX25vZGUudHJlZU5vZGU7DQoN
CgkJc2VhcmNoRGF0YS5sb2dEYXRhID0gY2hpbGRfbm9kZTsNCg0KCQlpZiAoc2VhcmNoRGF0YS5z
a2lwKQ0KCQl7DQoJCQlpZiAoY2hpbGRfbm9kZSA9PSBtX2FjdGl2ZW5vZGUubG9nRGF0YSkNCgkJ
CQlzZWFyY2hEYXRhLnNraXAgPSBmYWxzZTsNCgkJCQ0KCQkJaWYgKGxvZ3RyZWVfRmluZE5leHRF
cnJvckxvZyhzZWFyY2hEYXRhKSkNCgkJCQlyZXR1cm4gdHJ1ZTsNCgkJCQ0KCQkJY29udGludWU7
DQoJCX0NCg0KCQlzZWFyY2hEYXRhLnNraXAgPSBmYWxzZTsNCg0KCQlpZiAoY2hpbGRfbm9kZS5z
dGF0dXMgPT0gbV9Sb290TG9nRGF0YS5zdGF0dXMpDQoJCXsNCgkJCWlmIChjaGlsZF9ub2RlLnBy
b3ZpZGVycy5sZW5ndGggPT0gMSkNCgkJCXsNCgkJCQl2YXIgaGFzUmVkQ2hpbGRyZW4gPSBmYWxz
ZTsNCgkJCQlmb3IgKHZhciBqID0gMDsgaiA8IGNoaWxkX25vZGUuY2hpbGRyZW4ubGVuZ3RoOyBq
KyspDQoJCQkJCWlmIChjaGlsZF9ub2RlLmNoaWxkcmVuW2pdLnN0YXR1cyA9PSBtX1Jvb3RMb2dE
YXRhLnN0YXR1cykgeyBoYXNSZWRDaGlsZHJlbiA9IHRydWU7IGJyZWFrIH0NCg0KCQkJCWlmICgh
aGFzUmVkQ2hpbGRyZW4pDQoJCQkJew0KCQkJCQltX0ZpbmROZXh0RXJyb3JNc2dBZnRlckxvYWRp
bmcgPSB0cnVlOw0KCQkJCQlsb2d0cmVlX3NldEFjdGl2ZU5vZGUoZGl2KTsNCgkJCQkJbG9ndHJl
ZV9GaW5kTmV4dEVycm9yTXNnKHRydWUpOw0KCQkJCQlyZXR1cm4gdHJ1ZTsNCgkJCQl9DQoJCQl9
DQoNCgkJCWlmICghZGl2LmNoaWxkcmVuUHJlcGFyZWQpDQoJCQkJbG9ndHJlZV9leHBhbmROb2Rl
KGRpdiwgZmFsc2UpOw0KCQl9DQoNCgkJaWYgKGxvZ3RyZWVfRmluZE5leHRFcnJvckxvZyhzZWFy
Y2hEYXRhKSkNCgkJCXJldHVybiB0cnVlOw0KCX0NCg0KCXJldHVybiBmYWxzZTsNCn0NCg0KZnVu
Y3Rpb24gbG9ndHJlZV9GaW5kTmV4dEVycm9yTXNnKGZyb21Ub3ApDQp7DQoJaWYgKG1fYWN0aXZl
bm9kZSAmJiBtX2FjdGl2ZW5vZGUubG9nRGF0YS5wcm92aWRlcnMubGVuZ3RoID09IDEpDQoJew0K
CQl2YXIgdGFibGUgPSBtX3Byb3ZpZGVyc1swXS5tX3Jvb3RFbGVtZW50Ow0KCQlpZiAodGFibGUg
JiYgdGFibGUuZmluZE5leHRFcnJvciAmJiB0YWJsZS50YWJsZSAmJiB0YWJsZS50YWJsZS50eXBl
RGVzY3JpcHRpb25Db2x1bW5JbmRleCkNCgkJew0KCQkJbV9GaW5kTmV4dEVycm9yTXNnQWZ0ZXJM
b2FkaW5nID0gZmFsc2U7DQoJCQlyZXR1cm4gdGFibGUuZmluZE5leHRFcnJvcihmcm9tVG9wLCBt
X1Jvb3RMb2dEYXRhLnN0YXR1cyA9PSAyID8gIkVycm9yIiA6ICJXYXJuaW5nIik7DQoJCX0NCgl9
DQoJDQoJcmV0dXJuIGZhbHNlOw0KfQ0KDQpmdW5jdGlvbiBsb2d0cmVlX0dvVG9FcnJvcihmcm9t
VG9wKQ0Kew0KCXRleHRfY2xlYXJTZWxlY3Rpb24oKTsNCglpZiAoIWxvZ3RyZWVfRmluZE5leHRF
cnJvck1zZyhmcm9tVG9wKSkNCgl7DQoJCXZhciBzZWFyY2hEYXRhID0geyBsb2dEYXRhOiBtX1Jv
b3RMb2dEYXRhLCBza2lwOiBtX2FjdGl2ZW5vZGUubG9nRGF0YSAhPSBtX1Jvb3RMb2dEYXRhIH07
DQoJCWxvZ3RyZWVfRmluZE5leHRFcnJvckxvZyhzZWFyY2hEYXRhKTsNCgl9DQp9DQoNCmZ1bmN0
aW9uIHRyZWVIZWFkQnRuQ2xpY2soKQ0Kew0KCW1fdHJlZWhpZGRlbiA9ICFtX3RyZWVoaWRkZW47
DQoJbV90cmVlaGVhZC5zdHlsZS5kaXNwbGF5ID0gbV90cmVlaGlkZGVuID8gIm5vbmUiIDogIiI7
DQoJbV90cmVlZGl2LnN0eWxlLmRpc3BsYXkgPSBtX3RyZWVoaWRkZW4gPyAibm9uZSIgOiAiIjsN
CgltX3RyZWVoZWFkMi5zdHlsZS5kaXNwbGF5ID0gbV90cmVlaGlkZGVuID8gIiIgOiAibm9uZSI7
DQoJaWYgKG1fdHJlZXRvb2xiYXIpIG1fdHJlZXRvb2xiYXIuc3R5bGUuZGlzcGxheSA9IG1fdHJl
ZWhpZGRlbiA/ICJub25lIiA6ICIiOw0KCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2dyb290
IikuZG9SZXNpemUoKTsNCn0NCg0KZnVuY3Rpb24gSW5pdGlhbGl6ZUxvZ05vZGVEYXRhKG9iaikN
CnsNCglvYmoubmFtZSA9IG9iai5uYW1lIHx8ICIiOw0KCW9iai5zdGF0dXMgPSBvYmouc3RhdHVz
IHx8IDA7DQoJb2JqLmhyZWYgPSBvYmouaHJlZiB8fCAiIjsNCglvYmouaWQgPSBvYmouaWQgfHwg
IiI7DQoJb2JqLnNjaGVtYVR5cGUgPSBvYmouc2NoZW1hVHlwZSB8fCAiYXFkczpub25lIjsNCglv
YmouY2hpbGRyZW4gPSBvYmouY2hpbGRyZW4gfHwgW107DQoJb2JqLnByb3ZpZGVycyA9IG9iai5w
cm92aWRlcnMgfHwgW107DQoJb2JqLmFjdGl2ZVByb3ZpZGVyTmFtZSA9ICIiOw0KDQoJdmFyIHN1
bW1hcnlfaW5kZXggPSAtMTsNCgl2YXIgcGVyZmNvdW50ZXJzX2luZGV4ID0gLTE7DQoJDQoJZm9y
ICh2YXIgaSA9IDA7IGkgPCBvYmoucHJvdmlkZXJzLmxlbmd0aDsgaSsrKQ0KCXsNCgkJb2JqLnBy
b3ZpZGVyc1tpXS5jaGlsZHJlbiA9IG9iai5wcm92aWRlcnNbaV0uY2hpbGRyZW4gfHwgW107DQoJ
CQ0KCQl2YXIgcHJvdmlkZXJfbmFtZSA9IG9iai5wcm92aWRlcnNbaV0ubmFtZS50b0xvd2VyQ2Fz
ZSgpOw0KCQlpZiAocHJvdmlkZXJfbmFtZS5pbmRleE9mKCJzdW1tYXJ5IikgPj0gMCkNCgkJCXN1
bW1hcnlfaW5kZXggPSBpOw0KCQkNCgkJaWYgKG9iai5wcm92aWRlcnNbaV0uc2NoZW1hVHlwZSA9
PSAiYXFkczp0YWJsZSIgJiYgcHJvdmlkZXJfbmFtZS5pbmRleE9mKCJwZXJmb3JtYW5jZSBjb3Vu
dGVycyIpID49IDApDQoJCQlwZXJmY291bnRlcnNfaW5kZXggPSBpOw0KCX0NCgkNCglpZiAoc3Vt
bWFyeV9pbmRleCA+IDApIC8vIHB1dCBzdW1tYXJ5IGZpcnN0DQoJCW9iai5wcm92aWRlcnMuc3Bs
aWNlKDAsIDAsIG9iai5wcm92aWRlcnMuc3BsaWNlKHN1bW1hcnlfaW5kZXgsIDEpWzBdKTsNCg0K
CWlmIChwZXJmY291bnRlcnNfaW5kZXggPT0gMSAmJiBvYmoucHJvdmlkZXJzWzBdLnNjaGVtYVR5
cGUgPT0gImFxZHM6dHJlZSIpIC8vIG1vdmUgcGVyZiBjb3VudGVycyB0byBjaGlsZHJlbiBvZiBm
aXJzdCBwcm92aWRlcg0KCQlvYmoucHJvdmlkZXJzWzBdLmNoaWxkcmVuLnB1c2gob2JqLnByb3Zp
ZGVycy5zcGxpY2UocGVyZmNvdW50ZXJzX2luZGV4LCAxKVswXSk7DQoNCglmb3IgKHZhciBpID0g
MDsgaSA8IG9iai5jaGlsZHJlbi5sZW5ndGg7IGkrKykNCgkJSW5pdGlhbGl6ZUxvZ05vZGVEYXRh
KG9iai5jaGlsZHJlbltpXSk7DQoNCglvYmouZW1wdHkgPSBvYmouY2hpbGRyZW4ubGVuZ3RoID09
IDA7DQp9DQoNCmZ1bmN0aW9uIGxvZ3RyZWVfVHJlZUxvYWQoZWxlbWVudCwgZGF0YSkNCnsNCglt
X1Jvb3RMb2dEYXRhID0gZGF0YTsNCglJbml0aWFsaXplTG9nTm9kZURhdGEoZGF0YSk7DQoNCglt
X3Jvb3Rub2RlID0gbG9ndHJlZV9jcmVhdGVMb2dEYXRhTm9kZShtX3RyZWVkaXYsIG1fUm9vdExv
Z0RhdGEpOw0KCWxvZ3RyZWVfc2V0QWN0aXZlTm9kZShtX3Jvb3Rub2RlKTsNCglsb2d0cmVlX2V4
cGFuZE5vZGUobV9yb290bm9kZSwgdHJ1ZSk7DQoNCglsb2d0cmVlX0NoZWNrVG9vbGJhcihlbGVt
ZW50KTsNCn0NCg0KZnVuY3Rpb24gbG9ndHJlZV9Mb2FkQ29tcGxldGUoKQ0Kew0KCWlmICghbV9S
b290TG9nRGF0YSkNCgkJcmV0dXJuOw0KCQ0KCWlmIChtX1Jvb3RMb2dEYXRhLnN0YXR1cyA9PSAy
IHx8IG1fUm9vdExvZ0RhdGEuc3RhdHVzID09IDEpIC8vIGhhcyBlcnJvciBvciB3YXJuaW5nDQoJ
CWxvZ3RyZWVfR29Ub0Vycm9yKHRydWUpOw0KfQ0KDQpmdW5jdGlvbiBsb2d0cmVlX3NldFNlbGVj
dGVkTm9kZShub2RlKQ0Kew0KCWlmIChtX3NlbGVjdGVkbm9kZSAhPSBudWxsKQ0KCXsNCgkJbV9z
ZWxlY3RlZG5vZGUuY2FwdGlvbi5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAiIjsNCgkJbV9zZWxl
Y3RlZG5vZGUuY2FwdGlvbi5zdHlsZS5ib3JkZXJDb2xvciA9ICJ3aGl0ZSI7DQoJfQ0KCQ0KCW1f
c2VsZWN0ZWRub2RlID0gbm9kZTsNCglpZiAobV9zZWxlY3RlZG5vZGUgIT0gbnVsbCkNCgl7DQoJ
CW1fc2VsZWN0ZWRub2RlLmNhcHRpb24uc3R5bGUuYmFja2dyb3VuZENvbG9yID0gIiI7DQoJCW1f
c2VsZWN0ZWRub2RlLmNhcHRpb24uc3R5bGUuYm9yZGVyQ29sb3IgPSAiIzk5OTk5OSI7DQoJfQ0K
CQ0KCWlmIChtX2FjdGl2ZW5vZGUgIT0gbnVsbCkNCgl7DQoJCW1fYWN0aXZlbm9kZS5jYXB0aW9u
LnN0eWxlLmJvcmRlckNvbG9yID0gIiNDQ0NDQ0MiOw0KCX0NCgkNCn0NCg0KZnVuY3Rpb24gbG9n
dHJlZV9zZXRBY3RpdmVOb2RlKG5vZGUpDQp7DQoJaWYgKG1fYWN0aXZlbm9kZSAhPSBudWxsKQ0K
CXsNCgkJbV9hY3RpdmVub2RlLmNhcHRpb24uc3R5bGUuYmFja2dyb3VuZENvbG9yID0gIiI7DQoJ
CW1fYWN0aXZlbm9kZS5jYXB0aW9uLnN0eWxlLmJvcmRlckNvbG9yID0gIndoaXRlIjsNCgl9DQoJ
DQoJaWYgKG1fc2VsZWN0ZWRub2RlICE9IG51bGwpDQoJew0KCQltX3NlbGVjdGVkbm9kZS5jYXB0
aW9uLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICIiOw0KCQltX3NlbGVjdGVkbm9kZS5jYXB0aW9u
LnN0eWxlLmJvcmRlckNvbG9yID0gIndoaXRlIjsNCgl9DQoJbV9zZWxlY3RlZG5vZGUgPSBudWxs
Ow0KCQ0KCW1fYWN0aXZlbm9kZSA9IG5vZGU7DQoJaWYgKG1fYWN0aXZlbm9kZSAhPSBudWxsKQ0K
CXsNCgkJbV9hY3RpdmVub2RlLmNhcHRpb24uc3R5bGUuYmFja2dyb3VuZENvbG9yID0gIiNDQ0ND
Q0MiOw0KCQltX2FjdGl2ZW5vZGUuY2FwdGlvbi5zdHlsZS5ib3JkZXJDb2xvciA9ICIjOTk5OTk5
IjsNCgkJDQoJCWxvZ3RyZWVfZXhwYW5kUGFyZW50KG5vZGUpOw0KCQltX2FjdGl2ZW5vZGUuZG9B
Y3RpdmF0ZSgpOw0KCQlsb2d0cmVlX3ByZXBhcmVDaGlsZHJlbihub2RlKTsNCgl9DQp9DQoNCmZ1
bmN0aW9uIGxvZ3RyZWVfZXhwYW5kUGFyZW50KG5vZGUpDQp7DQoJaWYgKCFub2RlIHx8ICFub2Rl
LnBhcmVudE5vZGUpDQoJCXJldHVybjsNCg0KCXZhciBwYXJlbnQgPSBub2RlLnBhcmVudE5vZGUu
cGFyZW50Tm9kZTsNCglpZiAocGFyZW50ICYmIHBhcmVudC5sb2dEYXRhICYmICFwYXJlbnQuZXhw
YW5kZWQpDQoJew0KCQlsb2d0cmVlX2V4cGFuZFBhcmVudChwYXJlbnQpOw0KCQlsb2d0cmVlX2V4
cGFuZE5vZGUocGFyZW50KTsNCgl9DQp9DQoNCmZ1bmN0aW9uIGxvZ3RyZWVfZXhwYW5kTm9kZShv
RGl2LCByZWN1cnNpdmUpDQp7DQoJaWYgKCFvRGl2LmV4cGFuZGVkICYmIG9EaXYuaW1hZ2UpDQoJ
CWxvZ3RyZWVfZXhwYW5kTG9nRGF0YU5vZGUuYXBwbHkob0Rpdi5pbWFnZSk7DQp9DQoNCmZ1bmN0
aW9uIGxvZ3RyZWVfcHJlcGFyZUNoaWxkcmVuKG9EaXYpDQp7DQoJaWYgKG9EaXYuY2hpbGREaXYg
PT0gbnVsbCkNCgl7DQoJCXZhciBvQ2hpbGREaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJE
SVYiKTsNCgkJb0NoaWxkRGl2LnN0eWxlLm1hcmdpbkxlZnQgPSAoZ2V0U2NyZWVuWChvRGl2LmNh
cHRpb24pIC0gZ2V0U2NyZWVuWChvRGl2LnN0YXR1c0ltYWdlKSkgKyAicHgiOw0KCQlvQ2hpbGRE
aXYuc3R5bGUuZGlzcGxheSA9ICJub25lIjsNCgkJb0Rpdi5hcHBlbmRDaGlsZChvQ2hpbGREaXYp
Ow0KCQlvRGl2LmNoaWxkRGl2ID0gb0NoaWxkRGl2Ow0KCX0NCg0KCWlmIChvRGl2LmNoaWxkcmVu
UHJlcGFyZWQgPT0gZmFsc2UpDQoJew0KCQlpZiAoIW9EaXYubG9nRGF0YS5lbXB0eSkNCgkJCWxv
Z3RyZWVfY3JlYXRlTG9nRGF0YVRyZWUob0Rpdi5jaGlsZERpdiwgb0Rpdi5sb2dEYXRhLCBmYWxz
ZSk7DQoJCW9EaXYuY2hpbGRyZW5QcmVwYXJlZCA9IHRydWU7DQoJfQ0KfQ0KDQpmdW5jdGlvbiBs
b2d0cmVlX2V4cGFuZExvZ0RhdGFOb2RlKCkNCnsNCgl2YXIgb0RpdiA9IHRoaXMub3duZXJEaXY7
IC8vIHRoaXMgLSBub2RlIGV4cGFuZCBpbWFnZQ0KCQ0KCXJvbG92ZXJUcmVlSW1hZ2Uob0Rpdi5p
bWFnZSk7DQoNCglsb2d0cmVlX3ByZXBhcmVDaGlsZHJlbihvRGl2KTsNCg0KCWlmIChvRGl2LmV4
cGFuZGVkID09IGZhbHNlKQ0KCXsNCgkJaWYgKCFvRGl2LmxvZ0RhdGEuZW1wdHkpIA0KCQl7DQoJ
CQlvRGl2LmNoaWxkRGl2LnN0eWxlLmRpc3BsYXkgPSAiIjsNCgkJCW9EaXYuY2hpbGREaXYuc3R5
bGUud2lkdGggPSAiMTAwJSI7DQoJCX0NCgkJZWxzZQ0KCQl7DQoJCQloaWRlVHJlZUltYWdlKG9E
aXYuaW1hZ2UpOw0KCQkJb0Rpdi5pbWFnZS5vbmNsaWNrID0gbnVsbDsNCgkJfQ0KDQoJfSBlbHNl
IA0KCXsNCgkJb0Rpdi5jaGlsZERpdi5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOw0KCX0NCglvRGl2
LmV4cGFuZGVkID0gIW9EaXYuZXhwYW5kZWQ7DQp9DQoNCmZ1bmN0aW9uIGxvZ3RyZWVfYWN0aXZh
dGVMb2dEYXRhTm9kZSgpDQp7DQoJdmFyIG9EaXYgPSB0aGlzLm93bmVyRGl2OyAvLyB0aGlzIC0g
bm9kZSBjYXB0aW9uIHNwYW4NCglsb2d0cmVlX3NldEFjdGl2ZU5vZGUob0Rpdik7DQp9DQoNCmZ1
bmN0aW9uIGxvZ3RyZWVfY3JlYXRlTG9nRGF0YU5vZGUocGFyZW50LCBsb2dEYXRhKQ0Kew0KCXZh
ciBvRGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiRElWIik7DQoJcGFyZW50LmFwcGVuZENo
aWxkKG9EaXYpOw0KDQoJb0Rpdi5jaGlsZERpdiA9IG51bGw7DQoJb0Rpdi5sb2dEYXRhID0gbG9n
RGF0YTsNCglvRGl2LmV4cGFuZGVkID0gZmFsc2U7DQoJb0Rpdi5jaGlsZHJlblByZXBhcmVkID0g
ZmFsc2U7DQoJaWYgKGxvZ0RhdGEuaWQpIG9EaXYuaWQgPSBsb2dEYXRhLmlkOw0KDQoJdmFyIG9O
b0JyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiTk9CUiIpOw0KCW9EaXYuYXBwZW5kQ2hpbGQo
b05vQnIpOw0KDQoJdmFyIG9DYXB0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiU1BBTiIp
Ow0KCW9DYXB0aW9uLmNsYXNzTmFtZSA9ICJ0cmVlTm9kZUNhcHRpb24iOw0KCW9DYXB0aW9uLmlu
bmVyVGV4dCA9IGxvZ0RhdGEubmFtZTsNCglvQ2FwdGlvbi5vd25lckRpdiA9IG9EaXY7DQoJb0Nh
cHRpb24uc3R5bGUubWFyZ2luTGVmdCA9ICIxcHgiOw0KCW9EaXYuY2FwdGlvbiA9IG9DYXB0aW9u
Ow0KCW9EaXYuY2FwdGlvbi5vbmNsaWNrID0gbG9ndHJlZV9hY3RpdmF0ZUxvZ0RhdGFOb2RlOw0K
CQ0KCW9Ob0JyLmFwcGVuZENoaWxkKG9DYXB0aW9uKTsNCg0KCS8vb0NhcHRpb24uc3R5bGUud2lk
dGggPSBvQ2FwdGlvbi5vZmZzZXRXaWR0aDsNCg0KCWlmICghbG9nRGF0YS5lbXB0eSkNCgl7DQoJ
CW9EaXYuaW1hZ2UgPSBjcmVhdGVUcmVlSW1hZ2UoZmFsc2UpOw0KCQlvRGl2LmltYWdlLm9uY2xp
Y2sgPSBsb2d0cmVlX2V4cGFuZExvZ0RhdGFOb2RlOw0KCX0gZWxzZSB7DQoJCW9EaXYuaW1hZ2Ug
PSBjcmVhdGVUcmVlSW1hZ2VEdW1teSgpOw0KCX0NCglvRGl2LmltYWdlLm93bmVyRGl2ID0gb0Rp
djsNCglvTm9Cci5pbnNlcnRCZWZvcmUob0Rpdi5pbWFnZSwgb0Rpdi5jYXB0aW9uKTsNCg0KCW9E
aXYuc3RhdHVzSW1hZ2UgPSBjcmVhdGVUcmVlU3RhdGVJbWFnZShsb2dEYXRhLnN0YXR1cyk7DQoJ
b05vQnIuaW5zZXJ0QmVmb3JlKG9EaXYuc3RhdHVzSW1hZ2UsIG9EaXYuY2FwdGlvbik7DQoNCglv
RGl2LmRvQWN0aXZhdGUgPSBsb2d0cmVlX21fTG9nRGF0YU5vZGVfQWN0aXZhdGU7DQoJDQoJcmV0
dXJuIG9EaXY7DQp9DQoNCmZ1bmN0aW9uIGxvZ3RyZWVfbV9Mb2dEYXRhTm9kZV9BY3RpdmF0ZSgp
DQp7DQoJd2luZG93LnN0YXR1cyA9ICJMb2FkaW5nLi4uIjsNCgl2YXIgbG9nRGF0YSA9IHRoaXMu
bG9nRGF0YTsgLy8gdGhpcyAtIG5vZGUgZGl2DQoJaWYgKGxvZ0RhdGEgIT0gbnVsbCkNCgl7DQoJ
CWlmICgobG9nRGF0YS5zY2hlbWFUeXBlID09IG51bGwgfHwgbG9nRGF0YS5zY2hlbWFUeXBlID09
ICIiIHx8IGxvZ0RhdGEuc2NoZW1hVHlwZSA9PSAiYXFkczpub25lIikgJiYgKGxvZ0RhdGEucHJv
dmlkZXJzLmxlbmd0aCA9PSAwKSkNCgkJew0KCQkJbG9ndHJlZV9leHBhbmROb2RlKHRoaXMsIGZh
bHNlKTsNCgkJCWlmIChsb2dEYXRhLmNoaWxkcmVuLmxlbmd0aCA+IDApIA0KCQkJew0KCQkJCXZh
ciBuZXh0RGl2ID0gbG9nRGF0YS5jaGlsZHJlblswXS50cmVlTm9kZTsNCgkJCQlpZiAobmV4dERp
diAhPSBudWxsKQ0KCQkJCXsNCgkJCQkJbmV4dERpdi5jYXB0aW9uLmNsaWNrKCk7DQoJCQkJCWxv
Z3RyZWVfc2V0U2VsZWN0ZWROb2RlKHRoaXMpOw0KCQkJCQlyZXR1cm47DQoJCQkJfQ0KCQkJfQ0K
CQkJDQoJCX0NCgkJbG9ndHJlZV9hY3RpdmF0ZVByb3ZpZGVyKGxvZ0RhdGEpOw0KCX0NCgl3aW5k
b3cuc3RhdHVzID0gIkRvbmUiOw0KfQ0KDQpmdW5jdGlvbiBsb2d0cmVlX2NyZWF0ZUxvZ0RhdGFU
cmVlKHBhcmVudERpdiwgbG9nRGF0YSwgY3JlYXRlRXhwYW5kZWQpDQp7DQoJZm9yICh2YXIgaSA9
IDA7IGkgPCBsb2dEYXRhLmNoaWxkcmVuLmxlbmd0aDsgaSsrKQ0KCXsNCgkJdmFyIG9DaGlsZERp
diA9IGxvZ3RyZWVfY3JlYXRlTG9nRGF0YU5vZGUocGFyZW50RGl2LCBsb2dEYXRhLmNoaWxkcmVu
W2ldKTsNCgkJbG9nRGF0YS5jaGlsZHJlbltpXS50cmVlTm9kZSA9IG9DaGlsZERpdjsNCgkJDQoJ
CWlmIChjcmVhdGVFeHBhbmRlZCkNCgkJew0KCQkJbG9ndHJlZV9leHBhbmROb2RlKG9DaGlsZERp
diwgY3JlYXRlRXhwYW5kZWQpOw0KCQl9DQoJfQ0KDQp9ICAgDQoNCmZ1bmN0aW9uIGxvZ3RyZWVf
bG9hZFByb3ZpZGVyKG5vZGUsIHVwZGF0ZSwgcHJvdmlkZXJEaXYpDQp7DQoJdmFyIG1fcHJvdmlk
ZXIgPSBwcm92aWRlckRpdjsgLy9tX3Byb3ZpZGVyc1ttX3Byb3ZpZGVycy5sZW5ndGggLSAxXTsN
CgltX3Byb3ZpZGVyLnJlYWxTY2hlbWFUeXBlID0gbm9kZS5zY2hlbWFUeXBlOw0KCW1fcHJvdmlk
ZXIuc3JjID0gbm9kZS5ocmVmOw0KCW1fcHJvdmlkZXIuY2hpbGRQcm92aWRlcnMgPSBub2RlLmNo
aWxkcmVuOw0KDQoJaWYgKG5vZGUuc2NoZW1hVHlwZSA9PSAiYXFkczp0YWJsZSIgfHwgbm9kZS5z
Y2hlbWFUeXBlID09ICJhcWRzOnRyZWUiDQoJICB8fCBub2RlLnNjaGVtYVR5cGUgPT0gImFxZHM6
Z3JhcGgiIHx8IG5vZGUuc2NoZW1hVHlwZSA9PSAiYXFkczpkaWFncmFtIg0KCSAgfHwgbm9kZS5z
Y2hlbWFUeXBlID09ICJhcWRzOnRleHQiIHx8IG5vZGUuc2NoZW1hVHlwZSA9PSAiYXFkczpmaWxl
c2NvbXBhcmUiKQ0KCXsNCgkJbV9wcm92aWRlci5jbGFzc05hbWUgPSAiYXFkc19wcm92aWRlciI7
DQoJCVByb3ZpZGVyTG9hZChtX3Byb3ZpZGVyKTsNCgl9DQoJZWxzZSBpZiAobm9kZS5zY2hlbWFU
eXBlID09ICJhcWRzOnBpY3R1cmUiKQ0KCXsNCgkJbV9wcm92aWRlci5jbGFzc05hbWUgPSAiYXFk
c19waWN0dXJlIjsNCgl9DQoJZWxzZSBpZiAobm9kZS5zY2hlbWFUeXBlID09ICJhcWRzOnBpY3R1
cmVzIikNCgl7DQoJCW1fcHJvdmlkZXIuY2xhc3NOYW1lID0gImFxZHNfcGljdHVyZXMiOw0KCX0N
CgllbHNlIHsNCgkJbV9wcm92aWRlci5jbGFzc05hbWUgPSAiYXFkc190ZXh0IjsNCgkJaWYgKHVw
ZGF0ZSkNCgkJCXRleHRfTG9hZChtX3Byb3ZpZGVyKTsNCgkJZWxzZQ0KCQkJdGV4dF9sb2FkKG1f
cHJvdmlkZXIpOw0KCX0NCn0NCg0KZnVuY3Rpb24gbG9ndHJlZV9hY3RpdmF0ZVByb3ZpZGVyKG5v
ZGUpDQp7DQoJdmFyIG1fcHJvdmlkZXIgPSBudWxsOw0KCWlmIChub2RlLnByb3ZpZGVycy5sZW5n
dGggPT0gMSAmJiBtX3Byb3ZpZGVycy5sZW5ndGggPT0gMSkNCgkJbV9wcm92aWRlciA9IG1fcHJv
dmlkZXJzWzBdOw0KDQoJaWYgKG1fcHJvdmlkZXIgIT0gbnVsbCkNCgl7DQoJCWZvciAodmFyIGkg
PSAwOyBpIDwgbV9wcm92aWRlci5zY2hlbWFzLmxlbmd0aDsgaSsrKQ0KCQl7DQoJCQlpZiAobm9k
ZS5zY2hlbWFUeXBlID09IG1fcHJvdmlkZXIuc2NoZW1hc1tpXSkNCgkJCXsNCgkJCQlsb2d0cmVl
X2xvYWRQcm92aWRlcihub2RlLCB0cnVlLCBtX3Byb3ZpZGVyKTsNCgkJCQlyZXR1cm47DQoJCQl9
DQoJCX0NCgl9DQoNCglpZiAobV9wcm92aWRlclRhYnNEaXYpDQoJew0KCQltX3Byb3ZpZGVyVGFi
c0Rpdi50YWJzT2JqZWN0LmRpc3Bvc2UoKTsNCgkJbV9wcm92aWRlclRhYnNEaXYudGFic09iamVj
dCA9IG51bGw7DQoJCW1fcHJvdmlkZXJjZWxsLnJlbW92ZUNoaWxkKG1fcHJvdmlkZXJUYWJzRGl2
KTsNCgkJbV9wcm92aWRlclRhYnNEaXYgPSBudWxsOw0KCX0NCgkNCglmb3IgKHZhciBpID0gMDsg
aSA8IG1fcHJvdmlkZXJzLmxlbmd0aDsgaSsrKQ0KCXsNCgkJcHJvdmlkZXJfY2xlYXIobV9wcm92
aWRlcnNbaV0pOw0KCQltX3Byb3ZpZGVyY2VsbC5yZW1vdmVDaGlsZChtX3Byb3ZpZGVyc1tpXSk7
DQoJfQ0KCQ0KCW1fcHJvdmlkZXJzID0gW107DQoNCgl2YXIgdGFic0lkID0gInByb3ZpZGVyVGFi
c0RpdiI7DQoJaWYgKG5vZGUucHJvdmlkZXJzLmxlbmd0aCA+IDEpDQoJew0KCQl2YXIgb0RpdiA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpOw0KCQlvRGl2LmlkID0gdGFic0lkOw0KCQlv
RGl2LmlubmVyVGV4dCA9IF9uYnNwOw0KCQlvRGl2LnN0eWxlLmhlaWdodCA9ICIyNHB4IjsNCgkJ
b0Rpdi5zdHlsZS5wb3NpdGlvbiA9ICJmaXhlZCI7DQoJCW9EaXYuc3R5bGUuYm90dG9tID0gY19J
bm5lclBhZGRpbmcgKyAicHgiOw0KCQlvRGl2LnpJbmRleCA9IDEwMDsNCgkJbV9wcm92aWRlcmNl
bGwuYXBwZW5kQ2hpbGQob0Rpdik7DQoJCW1fcHJvdmlkZXJUYWJzRGl2ID0gb0RpdjsNCg0KCQl2
YXIgdGFicyA9IG5ldyBUYWJzT2JqZWN0KHRhYnNJZCwgbG9ndHJlZV9vblByb3ZpZGVyVGFiU2Vs
ZWN0LCBub2RlLCBub2RlLmFjdGl2ZVByb3ZpZGVyTmFtZSwgdHJ1ZSwgdHJ1ZSk7DQoNCgkJbV9w
cm92aWRlclRhYnNEaXYudGFic09iamVjdCA9IHRhYnM7DQoJfQ0KDQoJdmFyIGZpcnN0SXRlbSA9
IG51bGw7DQoJZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlLnByb3ZpZGVycy5sZW5ndGg7IGkrKykN
Cgl7DQoJCWlmIChmaXJzdEl0ZW0pDQoJCQlmaXJzdEl0ZW0uc3R5bGUuZGlzcGxheSA9ICJub25l
IjsNCgkNCgkJbV9wcm92aWRlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpOw0KCQlt
X3Byb3ZpZGVyLmlkID0gInByb3ZpZGVyX2Rpdl8iICsgbV9wcm92aWRlci51bmlxdWVJRDsNCg0K
CQltX3Byb3ZpZGVyLnN0eWxlLndpZHRoID0gIjEwMCUiOw0KCQltX3Byb3ZpZGVyLnN0eWxlLmhl
aWdodCA9ICIxMDAlIjsNCg0KCQltX3Byb3ZpZGVyY2VsbC5pbnNlcnRCZWZvcmUobV9wcm92aWRl
ciwgbV9wcm92aWRlclRhYnNEaXYpOw0KDQoJCW1fcHJvdmlkZXJzW2ldID0gbV9wcm92aWRlcjsN
Cg0KCQlpZiAodGFicykNCgkJCW1fcHJvdmlkZXIubV9wcm92aWRlckRhdGEgPSBub2RlLnByb3Zp
ZGVyc1tpXTsNCgkJZWxzZQ0KCQkJbG9ndHJlZV9sb2FkUHJvdmlkZXIobm9kZS5wcm92aWRlcnNb
aV0sIGZhbHNlLCBtX3Byb3ZpZGVyKTsNCg0KCQlpZiAoZmlyc3RJdGVtKQ0KCQkJbV9wcm92aWRl
ci5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOw0KCQllbHNlDQoJCQlmaXJzdEl0ZW0gPSBtX3Byb3Zp
ZGVyOw0KDQoJCWlmICh0YWJzKQ0KCQkJdGFicy5hZGRJdGVtKG5vZGUucHJvdmlkZXJzW2ldLm5h
bWUsIG1fcHJvdmlkZXIuaWQpOw0KCX0NCg0KCWlmICh0YWJzKQ0KCQl0YWJzLnJlbmRlcigpOw0K
CS8vZWxzZSAvLyByZXNpemUgdG8gZW5zdXJlIGNvcnJlY3QgbG9nIHZpZXcNCgkvLwlkb1dpbmRv
d1Jlc2l6ZSgpOw0KfQ0KDQpmdW5jdGlvbiBsb2d0cmVlX29uUHJvdmlkZXJUYWJTZWxlY3QodGFi
LCBwcmV2VGFiKQ0Kew0KCWlmICghdGFiLmNvbnRlbnRMb2FkZWQpDQoJew0KCQlsb2d0cmVlX2xv
YWRQcm92aWRlcih0YWIudGFiSXRlbS5tX3Byb3ZpZGVyRGF0YSwgZmFsc2UsIG1fcHJvdmlkZXJz
W3RhYi50YWJJdGVtSW5kZXhdKTsNCgkJdGFiLmNvbnRlbnRMb2FkZWQgPSB0cnVlOw0KCX0NCg0K
CWRvV2luZG93UmVzaXplKCk7DQoNCgl0YWIudGFic09iamVjdC5wYXJlbnQuYWN0aXZlUHJvdmlk
ZXJOYW1lID0gdGFiLnRhYnNPYmplY3QubmFtZXNbdGFiLnRhYkl0ZW1JbmRleF07DQoJbV9hcnJv
d0tleXNDYXB0dXJlZEJ5ID0gKHRhYi50YWJJdGVtLm1fcm9vdEVsZW1lbnQgJiYgdGFiLnRhYkl0
ZW0ubV9yb290RWxlbWVudC5jYXB0dXJlS2V5cyA/IHRhYi50YWJJdGVtLm1fcm9vdEVsZW1lbnQg
OiBudWxsKTsNCn0NCg0KZnVuY3Rpb24gbG9ndHJlZV9vcGVuTm9kZShpZCkNCnsNCgl2YXIgbm9k
ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsNCglpZiAobm9kZSA9PSBudWxsKQ0KCQly
ZXR1cm4gZmFsc2U7DQoNCglsb2d0cmVlX3NldEFjdGl2ZU5vZGUobm9kZSk7DQoNCglyZXR1cm4g
ZmFsc2U7DQp9DQoNCmZ1bmN0aW9uIGxvZ3RyZWVfb3BlblNpYmxpbmcoaWQpDQp7DQoJaWYgKG1f
cHJvdmlkZXJUYWJzRGl2ICYmIG1fcHJvdmlkZXJUYWJzRGl2LnRhYnNPYmplY3QpDQoJCW1fcHJv
dmlkZXJUYWJzRGl2LnRhYnNPYmplY3QuYWN0aXZhdGVUYWJCeU5hbWUoaWQpOw0KDQoJcmV0dXJu
IGZhbHNlOw0KfQ0KDQpmdW5jdGlvbiBsb2d0cmVlX29wZW5DaGlsZChpbmRleCkNCnsNCglpZiAo
IW1fYWN0aXZlbm9kZSB8fCAhbV9hY3RpdmVub2RlLmxvZ0RhdGEgfHwgbV9hY3RpdmVub2RlLmxv
Z0RhdGEuZW1wdHkpIHJldHVybjsNCglpZiAobV9hY3RpdmVub2RlLmxvZ0RhdGEuY2hpbGRyZW4u
bGVuZ3RoIDw9IGluZGV4KSByZXR1cm47DQoJbG9ndHJlZV9wcmVwYXJlQ2hpbGRyZW4obV9hY3Rp
dmVub2RlKTsNCglsb2d0cmVlX3NldEFjdGl2ZU5vZGUobV9hY3RpdmVub2RlLmxvZ0RhdGEuY2hp
bGRyZW5baW5kZXhdLnRyZWVOb2RlKTsNCg0KCXJldHVybiBmYWxzZTsNCn0NCg0KZnVuY3Rpb24g
b25Eb2N1bWVudENsaWNrKGUpDQp7DQoJaWYgKGUgPT0gbnVsbCkgZSA9IHdpbmRvdy5ldmVudDsN
Cg0KCXZhciBjb2x1bW4gPSBtX3Byb3ZpZGVyY2VsbC5tX2ZpbHRlcmVkQ29sdW1uOw0KCWlmIChj
b2x1bW4gIT0gbnVsbCkNCgl7DQoJCXZhciB0YXJnZXQgPSBlLnRhcmdldDsNCgkJaWYgKHRhcmdl
dCA9PSBudWxsKQ0KCQkJdGFyZ2V0ID0gZS5zcmNFbGVtZW50Ow0KDQoJCWlmICh0YXJnZXQgPT0g
Y29sdW1uLmZpbHRlckltYWdlKSByZXR1cm47DQoNCgkJdmFyIGZpbHRlciA9IGNvbHVtbi5yZWFs
VEQubV9kYXRhVGFibGUucGFyZW50Tm9kZS5tX2ZpbHRlckRpdjsNCgkJdmFyIHBhcmVudCA9IHRh
cmdldDsNCgkJd2hpbGUgKHBhcmVudCAhPSBudWxsKQ0KCQl7DQoJCQlpZiAocGFyZW50ID09IGZp
bHRlcikNCgkJCQlyZXR1cm47DQoJCQlwYXJlbnQgPSBwYXJlbnQub2Zmc2V0UGFyZW50Ow0KCQl9
DQoJCWNhcHRpb25faGlkZUZpbHRlcihjb2x1bW4pOw0KCX0NCgkNCgltX2Fycm93S2V5c0NhcHR1
cmVkQnkgPSBudWxsOw0KCQ0KCXZhciBvYmogPSBlLnRhcmdldCB8fCBlLnNyY0VsZW1lbnQ7DQoJ
d2hpbGUgKG9iaikNCgl7DQoJCWlmIChvYmouY2FwdHVyZUtleXMpDQoJCXsNCgkJCW1fYXJyb3dL
ZXlzQ2FwdHVyZWRCeSA9IG9iajsNCgkJCWJyZWFrOw0KCQl9DQoJCW9iaiA9IG9iai5wYXJlbnRF
bGVtZW50IHx8IG9iai5wYXJlbnROb2RlOw0KCX0NCn0NCg0KdmFyIG1fYXJyb3dLZXlzQ2FwdHVy
ZWRCeSA9IG51bGw7DQoNCmZ1bmN0aW9uIG9uRG9jdW1lbnRLZXlEb3duKGUpDQp7DQoJaWYgKCFt
X2Fycm93S2V5c0NhcHR1cmVkQnkpIHJldHVybjsNCg0KCWlmICghZSkgZSA9IHdpbmRvdy5ldmVu
dDsNCglpZiAoKGUua2V5Q29kZSA+PSAzMyAmJiBlLmtleUNvZGUgPD0gNDApIHx8IChlLmtleUNv
ZGUgPT0gMTA2IC8qICcqJyAqLykpDQoJew0KCQl2YXIgZWxlbWVudCA9IG1fYXJyb3dLZXlzQ2Fw
dHVyZWRCeTsNCgkJaWYgKGVsZW1lbnQgJiYgZWxlbWVudC5vbkNhcHR1cmVkS2V5cyAmJiBlbGVt
ZW50Lm9uQ2FwdHVyZWRLZXlzKGVsZW1lbnQsIGUua2V5Q29kZSkpDQoJCXsNCgkJCWlmIChlLnBy
ZXZlbnREZWZhdWx0KSBlLnByZXZlbnREZWZhdWx0KCk7DQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0N
Cgl9DQoJDQoJcmV0dXJuIHRydWU7DQp9DQoNCmlmIChkb2N1bWVudC5hZGRFdmVudExpc3RlbmVy
KQ0Kew0KCWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgb25Eb2N1bWVudENsaWNr
LCB0cnVlKTsNCglkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgb25Eb2N1bWVu
dEtleURvd24sIHRydWUpOw0KfQ0KZWxzZQ0Kew0KCWRvY3VtZW50LmF0dGFjaEV2ZW50KCJvbmNs
aWNrIiwgb25Eb2N1bWVudENsaWNrKTsNCglkb2N1bWVudC5hdHRhY2hFdmVudCgib25rZXlkb3du
Iiwgb25Eb2N1bWVudEtleURvd24pOw0KfQ0KDQpmdW5jdGlvbiBQcm92aWRlckxvYWQoZWxlbWVu
dCkNCnsNCglpZiAoZWxlbWVudC5tX3Jvb3RFbGVtZW50ICE9IG51bGwpDQoJCXByb3ZpZGVyX2Ns
ZWFyKGVsZW1lbnQpOw0KDQoJZWxlbWVudC5tX3Jvb3RFbGVtZW50ID0gd2luZG93LmRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoIlRBQkxFIik7DQoJZWxlbWVudC5tX3Jvb3RFbGVtZW50LmNsYXNzTmFt
ZSA9ICJzaW5nbGVGcmFtZSI7DQoJZWxlbWVudC5tX3Jvb3RFbGVtZW50LmNlbGxTcGFjaW5nID0g
MDsNCgllbGVtZW50Lm1fcm9vdEVsZW1lbnQuY2VsbFBhZGRpbmcgPSAwOw0KCWVsZW1lbnQubV9y
b290RWxlbWVudC5ib3JkZXIgPSAwOw0KCWVsZW1lbnQubV9yb290RWxlbWVudC5zdHlsZS53aWR0
aCA9IGVsZW1lbnQuc3R5bGUud2lkdGg7DQoJZWxlbWVudC5tX3Jvb3RFbGVtZW50LnN0eWxlLmhl
aWdodCA9IGVsZW1lbnQuc3R5bGUuaGVpZ2h0Ow0KCQ0KCXZhciBvQm9keSA9IHdpbmRvdy5kb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJUQk9EWSIpOw0KCWVsZW1lbnQubV9yb290RWxlbWVudC5hcHBl
bmRDaGlsZChvQm9keSk7DQoJDQoJdmFyIG9UUiA9IHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJUUiIpOw0KCW9Cb2R5LmFwcGVuZENoaWxkKG9UUik7DQoJDQoJdmFyIG9URCA9IHdpbmRv
dy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJURCIpOw0KCW9URC52QWxpZ24gPSAidG9wIjsNCglv
VFIuYXBwZW5kQ2hpbGQob1REKTsNCgkNCgl2YXIgb0RpdiA9IHdpbmRvdy5kb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJESVYiKTsNCglvRGl2LnN0eWxlLnBhZGRpbmcgPSAiM3B4IjsNCglvVEQuYXBw
ZW5kQ2hpbGQob0Rpdik7DQoJDQoJdmFyIG9JID0gd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoIkkiKTsNCglvSS5pbm5lclRleHQgPSAiTG9hZGluZy4uLiI7DQoJb0Rpdi5hcHBlbmRDaGls
ZChvSSk7DQoNCgllbGVtZW50LmFwcGVuZENoaWxkKGVsZW1lbnQubV9yb290RWxlbWVudCk7DQoN
CglfbG9hZF9KU09OKGVsZW1lbnQuc3JjLCBlbGVtZW50LCBQcm92aWRlckxvYWRlZCk7DQoNCglp
ZiAoZWxlbWVudC5yZWFsU2NoZW1hVHlwZSA9PSAiYXFkczp0ZXh0IikNCgkJZWxlbWVudC5zY2hl
bWFzID0gbmV3IEFycmF5KCJhcWRzOnRleHQiKTsNCgllbHNlDQoJCWVsZW1lbnQuc2NoZW1hcyA9
IG5ldyBBcnJheSgiYXFkczp0cmVlIiwgImFxZHM6dGFibGUiKTsNCn0NCg0KZnVuY3Rpb24gcHJv
dmlkZXJfY2xlYXIoZWxlbWVudCkNCnsNCglpZiAoZWxlbWVudC5tX3Jvb3RFbGVtZW50ID09IG51
bGwpDQoJCXJldHVybjsNCg0KCXRhYmxlX2NsZWFyKGVsZW1lbnQubV9yb290RWxlbWVudCk7DQoJ
dGV4dF9jbGVhcihlbGVtZW50Lm1fcm9vdEVsZW1lbnQpOw0KDQoJZWxlbWVudC5yZW1vdmVDaGls
ZChlbGVtZW50Lm1fcm9vdEVsZW1lbnQpOw0KCWVsZW1lbnQubV9yb290RWxlbWVudCA9IG51bGw7
DQp9DQoNCmZ1bmN0aW9uIHByb3ZpZGVyX0dldElubmVyT2JqZWN0Q2xhc3MoZWxlbWVudCwgb2Jq
KQ0Kew0KCWlmIChlbGVtZW50LnJlYWxTY2hlbWFUeXBlID09ICJhcWRzOnRhYmxlIiB8fCBlbGVt
ZW50LnJlYWxTY2hlbWFUeXBlID09ICJhcWRzOnRyZWUiKSANCgl7DQoJCW9iai5zaG93Q2FwdGlv
biA9IHRydWU7DQoJCXRhYmxlX3NldEFjdGl2ZShvYmopOw0KCQlyZXR1cm4gImFxZHNfdGFibGUi
Ow0KCX0gDQoJZWxzZSBpZiAoZWxlbWVudC5yZWFsU2NoZW1hVHlwZSA9PSAiYXFkczp0ZXh0Iikg
DQoJew0KCQl0ZXh0X2xvYWQob2JqKTsNCgkJcmV0dXJuICJhcWRzX3RleHQiOw0KCX0gDQoJZWxz
ZSBpZiAoZWxlbWVudC5yZWFsU2NoZW1hVHlwZSA9PSAiYXFkczpmaWxlc2NvbXBhcmUiKSANCgl7
DQoJCXRleHRfZmlsZXNfY29tcGFyZShvYmopOw0KCQlyZXR1cm4gImFxZHNfZmlsZXNfY29tcGFy
ZSI7DQoJfSANCgllbHNlIA0KCXsNCgkJcmV0dXJuICIiOw0KCX0NCn0NCg0KZnVuY3Rpb24gUHJv
dmlkZXJMb2FkZWQoZWxlbWVudCwgZGF0YSkNCnsNCgkJcHJvdmlkZXJfY2xlYXIoZWxlbWVudCk7
DQoNCgkJZWxlbWVudC5tX3Jvb3RFbGVtZW50ID0gd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoIkRJViIpOw0KCQllbGVtZW50LmFwcGVuZENoaWxkKGVsZW1lbnQubV9yb290RWxlbWVudCk7
DQoNCgkJZWxlbWVudC5tX3Jvb3RFbGVtZW50LmxvY2F0aW9uID0gZWxlbWVudC5zcmM7DQoJCWVs
ZW1lbnQubV9yb290RWxlbWVudC5pZCA9ICJwcm92aWRlcl9kaXYyXyIgKyBlbGVtZW50Lm1fcm9v
dEVsZW1lbnQudW5pcXVlSUQ7DQoNCgkJZWxlbWVudC5tX3Jvb3RFbGVtZW50LnN0eWxlLndpZHRo
ID0gZWxlbWVudC5zdHlsZS53aWR0aDsNCgkJZWxlbWVudC5tX3Jvb3RFbGVtZW50LnN0eWxlLmhl
aWdodCA9IGVsZW1lbnQuc3R5bGUuaGVpZ2h0Ow0KDQoJCWlmIChlbGVtZW50LnJlYWxTY2hlbWFU
eXBlID09ICJhcWRzOnRleHQiKQ0KCQl7DQoJCQllbGVtZW50Lm1fcm9vdEVsZW1lbnQudGV4dE9i
amVjdCA9IG5ldyBUZXh0T2JqZWN0KGRhdGEpOw0KCQl9DQoJCWVsc2UgaWYgKGVsZW1lbnQucmVh
bFNjaGVtYVR5cGUgPT0gImFxZHM6ZmlsZXNjb21wYXJlIikNCgkJew0KCQkJZWxlbWVudC5tX3Jv
b3RFbGVtZW50LmZpbGVzQ29tcGFyZSA9IG5ldyBGaWxlc0NvbXBhcmVPYmplY3QoZGF0YSk7DQoJ
CX0NCgkJZWxzZQ0KCQl7DQoJCQlJbml0aWFsaXplVGFibGVPYmplY3QoZGF0YSk7DQoJCQlpZiAo
ZWxlbWVudC5jaGlsZFByb3ZpZGVycy5sZW5ndGgpDQoJCQl7DQoJCQkJdmFyIGNoaWxkU3JjID0g
ZWxlbWVudC5jaGlsZFByb3ZpZGVyc1swXS5ocmVmOw0KCQkJCV9sb2FkX0pTT04oY2hpbGRTcmMs
IGVsZW1lbnQsIENoaWxkUHJvdmlkZXJMb2FkZWQpOw0KCQkJfQ0KCQkJZWxlbWVudC5tX3Jvb3RF
bGVtZW50LnRhYmxlID0gZGF0YTsNCgkJfQ0KDQoJCWlmIChlbGVtZW50LmNoaWxkUHJvdmlkZXJz
Lmxlbmd0aCA9PSAwKQ0KCQkJcHJvdmlkZXJfR2V0SW5uZXJPYmplY3RDbGFzcyhlbGVtZW50LCBl
bGVtZW50Lm1fcm9vdEVsZW1lbnQpOw0KDQoJCWlmIChtX0ZpbmROZXh0RXJyb3JNc2dBZnRlckxv
YWRpbmcpDQoJCQlsb2d0cmVlX0ZpbmROZXh0RXJyb3JNc2codHJ1ZSk7DQp9DQoNCmZ1bmN0aW9u
IENoaWxkUHJvdmlkZXJMb2FkZWQoZWxlbWVudCwgZGF0YSkNCnsNCgl2YXIgY29sdW1ucyA9IGVs
ZW1lbnQubV9yb290RWxlbWVudC50YWJsZS5jb2x1bW5zOw0KCWNvbHVtbnNbY29sdW1ucy5sZW5n
dGhdID0gZGF0YTsNCgl2YXIgY29sdW1uID0gY29sdW1uc1tjb2x1bW5zLmxlbmd0aCAtIDFdOw0K
CUluaXRpYWxpemVUYWJsZU9iamVjdChjb2x1bW4pOw0KCWNvbHVtbi5wYXJlbnQgPSBudWxsOw0K
CWNvbHVtbi5zeW5jUmVjb3JkcyA9IHRydWU7DQoJY29sdW1uLmZpbHRlckxpc3QgPSBbXTsNCglj
b2x1bW4uZmlsdGVyZWQgPSBmYWxzZTsNCgljb2x1bW4uaXNDb21wbGV4ID0gdHJ1ZTsNCg0KCXBy
b3ZpZGVyX0dldElubmVyT2JqZWN0Q2xhc3MoZWxlbWVudCwgZWxlbWVudC5tX3Jvb3RFbGVtZW50
KTsNCn0NCg0KZnVuY3Rpb24gc2hvd0xvZygpDQp7DQoJdmFyIGNsaWVudFdpZHRoID0gZG9jdW1l
bnQuYm9keS5jbGllbnRXaWR0aDsNCglpZiAoY2xpZW50V2lkdGggPiAwICYmIHR5cGVvZihhcWRz
X2pzKSAhPSAndW5kZWZpbmVkJyAmJiB0eXBlb2YoY2FwdGlvbl9qcykgIT0gJ3VuZGVmaW5lZCcg
JiYNCgkJdHlwZW9mKHBpY3R1cmVfanMpICE9ICd1bmRlZmluZWQnICYmIHR5cGVvZih0YWJsZV9q
cykgIT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mKHRleHRfanMpICE9ICd1bmRlZmluZWQnKQ0KCQls
b2d0cmVlX2xvYWRDb21wb25lbnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZ3Jvb3QiKSwg
Il9yb290LmpzIik7DQoJZWxzZQ0KCQl3aW5kb3cuc2V0VGltZW91dChzaG93TG9nLCA1MCk7DQp9
DQoNCmlmIChpc1N1cHBvcnRlZCkNCgl3aW5kb3cuc2V0VGltZW91dChzaG93TG9nLCAxMDApOw0K

------=30AD9628A3274F06AF82E5991D4657D1
Content-Type: text/plain
Content-Transfer-Encoding: base64
Content-Location: http://localhost/_testlog.js

77u/X2pzb25fbG9hZGVkKCJfVGVzdExvZy5qcyIseyJjYXB0aW9uIjoiVGVzdCBMb2ciLCJuYW1l
IjoiVGVzdExvZyIsInR5cGVOYW1lIjoiYXFkczp0cmVlIiwiY29sdW1ucyI6W3siY2FwdGlvbiI6
IlR5cGUiLCJuYW1lIjoiVHlwZSIsInR5cGVOYW1lIjoiYXFkczppbWFnZSJ9LHsiY2FwdGlvbiI6
Ik1lc3NhZ2UiLCJuYW1lIjoiTWVzc2FnZSIsInR5cGVOYW1lIjoiYXFkczpzdHJpbmcifSx7ImNh
cHRpb24iOiJUaW1lIiwibmFtZSI6IlRpbWUiLCJ0eXBlTmFtZSI6ImFxZHM6ZGF0ZXRpbWUifSx7
ImNhcHRpb24iOiJQcmlvcml0eSIsIm5hbWUiOiJQcmlvcml0eSIsInR5cGVOYW1lIjoiYXFkczpz
dHJpbmcifSx7ImNhcHRpb24iOiJMaW5rIiwibmFtZSI6IkxpbmsiLCJ0eXBlTmFtZSI6ImFxZHM6
aHlwZXJsaW5rIn0seyJjYXB0aW9uIjoiSGFzIFBpY3R1cmUiLCJuYW1lIjoiSGFzUGljdHVyZSIs
InR5cGVOYW1lIjoiYXFkczppbWFnZSJ9LHsiY2FwdGlvbiI6IlR5cGUgRGVzY3JpcHRpb24iLCJu
YW1lIjoiVHlwZURlc2NyaXB0aW9uIiwidHlwZU5hbWUiOiJhcWRzOnN0cmluZyJ9LHsiY2FwdGlv
biI6IlBpY3R1cmUiLCJuYW1lIjoiUGljdHVyZSIsInR5cGVOYW1lIjoiYXFkczpwaWN0dXJlcyIs
ImNvbHVtbnMiOlt7ImNhcHRpb24iOiJDYXB0aW9uIiwibmFtZSI6Ik5hbWUiLCJ0eXBlTmFtZSI6
ImFxZHM6c3RyaW5nIn0seyJjYXB0aW9uIjoiUGljdHVyZSIsIm5hbWUiOiJQaWN0dXJlIiwidHlw
ZU5hbWUiOiJhcWRzOnBpY3R1cmUifV19LHsiY2FwdGlvbiI6IkFkZGl0aW9uYWwgSW5mbyIsIm5h
bWUiOiJBZGRpdGlvbmFsSW5mbyIsInR5cGVOYW1lIjoiYXFkczp0ZXh0IiwidGV4dGZvcm1hdCI6
MX0seyJjYXB0aW9uIjoiQ2FsbCBTdGFjayIsIm5hbWUiOiJDYWxsU3RhY2siLCJ0eXBlTmFtZSI6
ImFxZHM6dGFibGUiLCJjb2x1bW5zIjpbeyJjYXB0aW9uIjoiVHlwZSIsIm5hbWUiOiJUeXBlIiwi
dHlwZU5hbWUiOiJhcWRzOmltYWdlIn0seyJjYXB0aW9uIjoiVGVzdCIsIm5hbWUiOiJUZXN0Iiwi
dHlwZU5hbWUiOiJhcWRzOnN0cmluZyJ9LHsiY2FwdGlvbiI6IlVuaXQgTmFtZSIsIm5hbWUiOiJV
bml0TmFtZSIsInR5cGVOYW1lIjoiYXFkczpzdHJpbmcifSx7ImNhcHRpb24iOiJMaW5lIE5vIiwi
bmFtZSI6IkxpbmVObyIsInR5cGVOYW1lIjoiYXFkczppbnQifV19XSwiaXRlbXMiOlt7ImlkIjow
LCJwaWQiOi0xLCJuZXR5IjpmYWxzZSwiY29sb3IiOiIjMDAwMDAwIiwiYmNvbG9yIjoiI0ZGRkZG
RiIsIlR5cGUiOiJNZXNzYWdlIiwiTWVzc2FnZSI6IlRoZSBmb2xsb3dpbmcgZmlsZSBpcyByZWFk
IHVzaW5nIHRoZSBDU1YgRHJpdmVyOiBEOlxcdGVzdDQudHh0LiBTZWUgdGhlICdBZGRpdGlvbmFs
IEluZm8nIHRhYiBmb3IgZmlsZSBjb250ZW50IiwiVGltZSI6eyJtc2VjIjoxNTMwNjM2MzU2MjYw
LCJ0ZXh0IjoiMDMvMDcvMjAxOCAxNjo0NTo1NiJ9LCJQcmlvcml0eSI6Ik5vcm1hbCIsIlR5cGVE
ZXNjcmlwdGlvbiI6Ik1lc3NhZ2UiLCJQaWN0dXJlIjpbXSwiQWRkaXRpb25hbEluZm8iOnsidGV4
dCI6IlRpbWVTdGFtcCwgVW5pdHNVc2VkIFtWXVxuMjAxOC0wNS0wNSAwOTowMDowMSwgMy43XG4y
MDE4LTA3LTAzIDE2OjQ1OjAxLCAzLjciLCJpc2ZpbGVuYW1lIjpmYWxzZX0sIkNhbGxTdGFjayI6
eyJpdGVtcyI6W119fSx7ImlkIjoxLCJwaWQiOi0xLCJuZXR5Ijp0cnVlLCJjb2xvciI6IiMwMDAw
MDAiLCJiY29sb3IiOiIjRkZGRkZGIiwiVHlwZSI6Ik1lc3NhZ2UiLCJNZXNzYWdlIjoiVmVyaWZ5
IHRoZSBjb2x1bW4gbmFtZXMuIiwiVGltZSI6eyJtc2VjIjoxNTMwNjM2MzU2MjgwLCJ0ZXh0Ijoi
MDMvMDcvMjAxOCAxNjo0NTo1NiJ9LCJQcmlvcml0eSI6Ik5vcm1hbCIsIlR5cGVEZXNjcmlwdGlv
biI6Ik1lc3NhZ2UiLCJQaWN0dXJlIjpbXSwiQWRkaXRpb25hbEluZm8iOnsidGV4dCI6IiIsImlz
ZmlsZW5hbWUiOmZhbHNlfSwiQ2FsbFN0YWNrIjp7Iml0ZW1zIjpbXX19LHsiaWQiOjIsInBpZCI6
MSwibmV0eSI6ZmFsc2UsImNvbG9yIjoiIzAwMDAwMCIsImJjb2xvciI6IiNGRkZGRkYiLCJUeXBl
IjoiTWVzc2FnZSIsIk1lc3NhZ2UiOiJUaGUgY29sdW1uIDAgaXMgXCJUaW1lU3RhbXBcIi4iLCJU
aW1lIjp7Im1zZWMiOjE1MzA2MzYzNTYzMjAsInRleHQiOiIwMy8wNy8yMDE4IDE2OjQ1OjU2In0s
IlByaW9yaXR5IjoiTm9ybWFsIiwiVHlwZURlc2NyaXB0aW9uIjoiTWVzc2FnZSIsIlBpY3R1cmUi
OltdLCJBZGRpdGlvbmFsSW5mbyI6eyJ0ZXh0IjoiIiwiaXNmaWxlbmFtZSI6ZmFsc2V9LCJDYWxs
U3RhY2siOnsiaXRlbXMiOltdfX0seyJpZCI6MywicGlkIjoxLCJuZXR5IjpmYWxzZSwiY29sb3Ii
OiIjMDAwMDAwIiwiYmNvbG9yIjoiI0ZGRkZGRiIsIlR5cGUiOiJNZXNzYWdlIiwiTWVzc2FnZSI6
IlRoZSBjb2x1bW4gMSBpcyBcIlVuaXRzVXNlZCAoVilcIi4iLCJUaW1lIjp7Im1zZWMiOjE1MzA2
MzYzNTYzMjAsInRleHQiOiIwMy8wNy8yMDE4IDE2OjQ1OjU2In0sIlByaW9yaXR5IjoiTm9ybWFs
IiwiVHlwZURlc2NyaXB0aW9uIjoiTWVzc2FnZSIsIlBpY3R1cmUiOltdLCJBZGRpdGlvbmFsSW5m
byI6eyJ0ZXh0IjoiIiwiaXNmaWxlbmFtZSI6ZmFsc2V9LCJDYWxsU3RhY2siOnsiaXRlbXMiOltd
fX0seyJpZCI6NCwicGlkIjotMSwibmV0eSI6dHJ1ZSwiY29sb3IiOiIjMDAwMDAwIiwiYmNvbG9y
IjoiI0ZGRkZGRiIsIlR5cGUiOiJNZXNzYWdlIiwiTWVzc2FnZSI6IlZlcmlmeSB0aGUgcm93IDEu
IiwiVGltZSI6eyJtc2VjIjoxNTMwNjM2MzU2MzMwLCJ0ZXh0IjoiMDMvMDcvMjAxOCAxNjo0NTo1
NiJ9LCJQcmlvcml0eSI6Ik5vcm1hbCIsIlR5cGVEZXNjcmlwdGlvbiI6Ik1lc3NhZ2UiLCJQaWN0
dXJlIjpbXSwiQWRkaXRpb25hbEluZm8iOnsidGV4dCI6IiIsImlzZmlsZW5hbWUiOmZhbHNlfSwi
Q2FsbFN0YWNrIjp7Iml0ZW1zIjpbXX19LHsiaWQiOjUsInBpZCI6NCwibmV0eSI6ZmFsc2UsImNv
bG9yIjoiIzAwMDAwMCIsImJjb2xvciI6IiNGRkZGRkYiLCJUeXBlIjoiTWVzc2FnZSIsIk1lc3Nh
Z2UiOiJUaGUgY29sdW1uIFswXSA9IFwiU2F0IE1heSAwNSAyMDE4IDA5OjAwOjAxIEdNVCswMzAw
IChHVEIgRGF5bGlnaHQgVGltZSlcIi4iLCJUaW1lIjp7Im1zZWMiOjE1MzA2MzYzNTYzMzAsInRl
eHQiOiIwMy8wNy8yMDE4IDE2OjQ1OjU2In0sIlByaW9yaXR5IjoiTm9ybWFsIiwiVHlwZURlc2Ny
aXB0aW9uIjoiTWVzc2FnZSIsIlBpY3R1cmUiOltdLCJBZGRpdGlvbmFsSW5mbyI6eyJ0ZXh0Ijoi
IiwiaXNmaWxlbmFtZSI6ZmFsc2V9LCJDYWxsU3RhY2siOnsiaXRlbXMiOltdfX0seyJpZCI6Niwi
cGlkIjo0LCJuZXR5IjpmYWxzZSwiY29sb3IiOiIjMDAwMDAwIiwiYmNvbG9yIjoiI0ZGRkZGRiIs
IlR5cGUiOiJNZXNzYWdlIiwiTWVzc2FnZSI6IlRoZSBjb2x1bW4gWzFdID0gXCIzLjdcIi4iLCJU
aW1lIjp7Im1zZWMiOjE1MzA2MzYzNTYzMzAsInRleHQiOiIwMy8wNy8yMDE4IDE2OjQ1OjU2In0s
IlByaW9yaXR5IjoiTm9ybWFsIiwiVHlwZURlc2NyaXB0aW9uIjoiTWVzc2FnZSIsIlBpY3R1cmUi
OltdLCJBZGRpdGlvbmFsSW5mbyI6eyJ0ZXh0IjoiIiwiaXNmaWxlbmFtZSI6ZmFsc2V9LCJDYWxs
U3RhY2siOnsiaXRlbXMiOltdfX0seyJpZCI6NywicGlkIjotMSwibmV0eSI6dHJ1ZSwiY29sb3Ii
OiIjMDAwMDAwIiwiYmNvbG9yIjoiI0ZGRkZGRiIsIlR5cGUiOiJNZXNzYWdlIiwiTWVzc2FnZSI6
IlZlcmlmeSB0aGUgcm93IDIuIiwiVGltZSI6eyJtc2VjIjoxNTMwNjM2MzU2MzQwLCJ0ZXh0Ijoi
MDMvMDcvMjAxOCAxNjo0NTo1NiJ9LCJQcmlvcml0eSI6Ik5vcm1hbCIsIlR5cGVEZXNjcmlwdGlv
biI6Ik1lc3NhZ2UiLCJQaWN0dXJlIjpbXSwiQWRkaXRpb25hbEluZm8iOnsidGV4dCI6IiIsImlz
ZmlsZW5hbWUiOmZhbHNlfSwiQ2FsbFN0YWNrIjp7Iml0ZW1zIjpbXX19LHsiaWQiOjgsInBpZCI6
NywibmV0eSI6ZmFsc2UsImNvbG9yIjoiIzAwMDAwMCIsImJjb2xvciI6IiNGRkZGRkYiLCJUeXBl
IjoiTWVzc2FnZSIsIk1lc3NhZ2UiOiJUaGUgY29sdW1uIFswXSA9IFwiVHVlIEp1bCAwMyAyMDE4
IDE2OjQ1OjAxIEdNVCswMzAwIChHVEIgRGF5bGlnaHQgVGltZSlcIi4iLCJUaW1lIjp7Im1zZWMi
OjE1MzA2MzYzNTYzNDAsInRleHQiOiIwMy8wNy8yMDE4IDE2OjQ1OjU2In0sIlByaW9yaXR5Ijoi
Tm9ybWFsIiwiVHlwZURlc2NyaXB0aW9uIjoiTWVzc2FnZSIsIlBpY3R1cmUiOltdLCJBZGRpdGlv
bmFsSW5mbyI6eyJ0ZXh0IjoiIiwiaXNmaWxlbmFtZSI6ZmFsc2V9LCJDYWxsU3RhY2siOnsiaXRl
bXMiOltdfX0seyJpZCI6OSwicGlkIjo3LCJuZXR5IjpmYWxzZSwiY29sb3IiOiIjMDAwMDAwIiwi
YmNvbG9yIjoiI0ZGRkZGRiIsIlR5cGUiOiJNZXNzYWdlIiwiTWVzc2FnZSI6IlRoZSBjb2x1bW4g
WzFdID0gXCIzLjdcIi4iLCJUaW1lIjp7Im1zZWMiOjE1MzA2MzYzNTYzNDAsInRleHQiOiIwMy8w
Ny8yMDE4IDE2OjQ1OjU2In0sIlByaW9yaXR5IjoiTm9ybWFsIiwiVHlwZURlc2NyaXB0aW9uIjoi
TWVzc2FnZSIsIlBpY3R1cmUiOltdLCJBZGRpdGlvbmFsSW5mbyI6eyJ0ZXh0IjoiIiwiaXNmaWxl
bmFtZSI6ZmFsc2V9LCJDYWxsU3RhY2siOnsiaXRlbXMiOltdfX0seyJpZCI6MTAsInBpZCI6LTEs
Im5ldHkiOmZhbHNlLCJjb2xvciI6IiMwMDAwMDAiLCJiY29sb3IiOiIjRkZGRkZGIiwiVHlwZSI6
Ik1lc3NhZ2UiLCJNZXNzYWdlIjoiVGhlcmUgYXJlIDIgbGluZXMgKHdpdGggZGF0YSkgd2l0aGlu
IHRoaXMgY3N2IGZpbGUiLCJUaW1lIjp7Im1zZWMiOjE1MzA2MzYzNTYzODAsInRleHQiOiIwMy8w
Ny8yMDE4IDE2OjQ1OjU2In0sIlByaW9yaXR5IjoiTm9ybWFsIiwiVHlwZURlc2NyaXB0aW9uIjoi
TWVzc2FnZSIsIlBpY3R1cmUiOltdLCJBZGRpdGlvbmFsSW5mbyI6eyJ0ZXh0IjoiIiwiaXNmaWxl
bmFtZSI6ZmFsc2V9LCJDYWxsU3RhY2siOnsiaXRlbXMiOltdfX1dfSk=

------=30AD9628A3274F06AF82E5991D4657D1--