Content-Location: http://ca.wikipedia.org/wiki/Cardenal_Richelieu
Content-Transfer-Encoding: Base64
PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJh
bnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQv
eGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgo8aHRtbCB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94aHRtbCIgbGFuZz0iY2EiIGRpcj0ibHRyIj4KPGhlYWQ+
Cjx0aXRsZT5DYXJkZW5hbCBSaWNoZWxpZXUgLSBWaXF1aXDDqGRpYTwvdGl0bGU+
CjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9o
dG1sOyBjaGFyc2V0PVVURi04IiAvPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50
LVN0eWxlLVR5cGUiIGNvbnRlbnQ9InRleHQvY3NzIiAvPgo8bWV0YSBuYW1lPSJn
ZW5lcmF0b3IiIGNvbnRlbnQ9Ik1lZGlhV2lraSAxLjE2d21mNCIgLz4KPGxpbmsg
cmVsPSJhbHRlcm5hdGUiIHR5cGU9ImFwcGxpY2F0aW9uL3gtd2lraSIgdGl0bGU9
Ik1vZGlmaWNhIiBocmVmPSIvdy9pbmRleC5waHA/dGl0bGU9Q2FyZGVuYWxfUmlj
aGVsaWV1JmFtcDthY3Rpb249ZWRpdCIgLz4KPGxpbmsgcmVsPSJlZGl0IiB0aXRs
ZT0iTW9kaWZpY2EiIGhyZWY9Ii93L2luZGV4LnBocD90aXRsZT1DYXJkZW5hbF9S
aWNoZWxpZXUmYW1wO2FjdGlvbj1lZGl0IiAvPgo8bGluayByZWw9ImFwcGxlLXRv
dWNoLWljb24iIGhyZWY9Imh0dHA6Ly9jYS53aWtpcGVkaWEub3JnL2FwcGxlLXRv
dWNoLWljb24ucG5nIiAvPgo8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9
Ii9mYXZpY29uLmljbyIgLz4KPGxpbmsgcmVsPSJzZWFyY2giIHR5cGU9ImFwcGxp
Y2F0aW9uL29wZW5zZWFyY2hkZXNjcmlwdGlvbit4bWwiIGhyZWY9Ii93L29wZW5z
ZWFyY2hfZGVzYy5waHAiIHRpdGxlPSJWaXF1aXDDqGRpYSAoY2EpIiAvPgo8bGlu
ayByZWw9ImNvcHlyaWdodCIgaHJlZj0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvbGljZW5zZXMvYnktc2EvMy4wLyIgLz4KPGxpbmsgcmVsPSJhbHRlcm5hdGUi
IHR5cGU9ImFwcGxpY2F0aW9uL2F0b20reG1sIiB0aXRsZT0iQ2FuYWwgQXRvbSBW
aXF1aXDDqGRpYSIgaHJlZj0iL3cvaW5kZXgucGhwP3RpdGxlPUVzcGVjaWFsOkNh
bnZpc19yZWNlbnRzJmFtcDtmZWVkPWF0b20iIC8+CjxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iaHR0cDovL2JpdHMud2lraW1lZGlhLm9yZy9za2lucy0xLjUv
dmVjdG9yL21haW4tbHRyLmNzcz8yODMtMTkiIHR5cGU9InRleHQvY3NzIiBtZWRp
YT0ic2NyZWVuIiAvPgo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHA6
Ly9iaXRzLndpa2ltZWRpYS5vcmcvc2tpbnMtMS41L2NvbW1vbi9zaGFyZWQuY3Nz
PzI4My0xOSIgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iIC8+CjxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cDovL2JpdHMud2lraW1lZGlhLm9y
Zy9za2lucy0xLjUvY29tbW9uL2NvbW1vblByaW50LmNzcz8yODMtMTkiIHR5cGU9
InRleHQvY3NzIiBtZWRpYT0icHJpbnQiIC8+CjxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iaHR0cDovL2JpdHMud2lraW1lZGlhLm9yZy93L2V4dGVuc2lvbnMv
VXNhYmlsaXR5SW5pdGlhdGl2ZS9jc3MvY29tYmluZWQubWluLmNzcz8xMTciIHR5
cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIiAvPgo8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Imh0dHA6Ly9iaXRzLndpa2ltZWRpYS5vcmcvdy9leHRlbnNpb25z
L1VzYWJpbGl0eUluaXRpYXRpdmUvY3NzL3ZlY3Rvci9qcXVlcnktdWktMS43LjIu
Y3NzPzEuNy4yeSIgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJhbGwiIC8+CjxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL3cvaW5kZXgucGhwP3RpdGxlPU1lZGlh
V2lraTpDb21tb24uY3NzJmFtcDt1c2Vtc2djYWNoZT15ZXMmYW1wO2N0eXBlPXRl
eHQlMkZjc3MmYW1wO3NtYXhhZ2U9MjY3ODQwMCZhbXA7YWN0aW9uPXJhdyZhbXA7
bWF4YWdlPTI2Nzg0MDAiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIiAvPgo8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii93L2luZGV4LnBocD90aXRsZT1N
ZWRpYVdpa2k6UHJpbnQuY3NzJmFtcDt1c2Vtc2djYWNoZT15ZXMmYW1wO2N0eXBl
PXRleHQlMkZjc3MmYW1wO3NtYXhhZ2U9MjY3ODQwMCZhbXA7YWN0aW9uPXJhdyZh
bXA7bWF4YWdlPTI2Nzg0MDAiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0icHJpbnQi
IC8+CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL3cvaW5kZXgucGhwP3Rp
dGxlPU1lZGlhV2lraTpIYW5kaGVsZC5jc3MmYW1wO3VzZW1zZ2NhY2hlPXllcyZh
bXA7Y3R5cGU9dGV4dCUyRmNzcyZhbXA7c21heGFnZT0yNjc4NDAwJmFtcDthY3Rp
b249cmF3JmFtcDttYXhhZ2U9MjY3ODQwMCIgdHlwZT0idGV4dC9jc3MiIG1lZGlh
PSJoYW5kaGVsZCIgLz4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvdy9p
bmRleC5waHA/dGl0bGU9TWVkaWFXaWtpOlZlY3Rvci5jc3MmYW1wO3VzZW1zZ2Nh
Y2hlPXllcyZhbXA7Y3R5cGU9dGV4dCUyRmNzcyZhbXA7c21heGFnZT0yNjc4NDAw
JmFtcDthY3Rpb249cmF3JmFtcDttYXhhZ2U9MjY3ODQwMCIgdHlwZT0idGV4dC9j
c3MiIG1lZGlhPSJhbGwiIC8+CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
L3cvaW5kZXgucGhwP3RpdGxlPS0mYW1wO2FjdGlvbj1yYXcmYW1wO21heGFnZT0y
Njc4NDAwJmFtcDtnZW49Y3NzIiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCIg
Lz4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgp2YXIgc2tpbj0idmVj
dG9yIiwKc3R5bGVwYXRoPSJodHRwOi8vYml0cy53aWtpbWVkaWEub3JnL3NraW5z
LTEuNSIsCndnVXJsUHJvdG9jb2xzPSJodHRwXFw6XFwvXFwvfGh0dHBzXFw6XFwv
XFwvfGZ0cFxcOlxcL1xcL3xpcmNcXDpcXC9cXC98Z29waGVyXFw6XFwvXFwvfHRl
bG5ldFxcOlxcL1xcL3xubnRwXFw6XFwvXFwvfHdvcmxkd2luZFxcOlxcL1xcL3xt
YWlsdG9cXDp8bmV3c1xcOnxzdm5cXDpcXC9cXC8iLAp3Z0FydGljbGVQYXRoPSIv
d2lraS8kMSIsCndnU2NyaXB0UGF0aD0iL3ciLAp3Z1NjcmlwdEV4dGVuc2lvbj0i
LnBocCIsCndnU2NyaXB0PSIvdy9pbmRleC5waHAiLAp3Z1ZhcmlhbnRBcnRpY2xl
UGF0aD1mYWxzZSwKd2dBY3Rpb25QYXRocz17fSwKd2dTZXJ2ZXI9Imh0dHA6Ly9j
YS53aWtpcGVkaWEub3JnIiwKd2dDYW5vbmljYWxOYW1lc3BhY2U9IiIsCndnQ2Fu
b25pY2FsU3BlY2lhbFBhZ2VOYW1lPWZhbHNlLAp3Z05hbWVzcGFjZU51bWJlcj0w
LAp3Z1BhZ2VOYW1lPSJDYXJkZW5hbF9SaWNoZWxpZXUiLAp3Z1RpdGxlPSJDYXJk
ZW5hbCBSaWNoZWxpZXUiLAp3Z0FjdGlvbj0idmlldyIsCndnQXJ0aWNsZUlkPTQ2
NjgyLAp3Z0lzQXJ0aWNsZT10cnVlLAp3Z1VzZXJOYW1lPW51bGwsCndnVXNlckdy
b3Vwcz1udWxsLAp3Z1VzZXJMYW5ndWFnZT0iY2EiLAp3Z0NvbnRlbnRMYW5ndWFn
ZT0iY2EiLAp3Z0JyZWFrRnJhbWVzPWZhbHNlLAp3Z0N1clJldmlzaW9uSWQ9Njg0
NjcwOSwKd2dWZXJzaW9uPSIxLjE2d21mNCIsCndnRW5hYmxlQVBJPXRydWUsCndn
RW5hYmxlV3JpdGVBUEk9dHJ1ZSwKd2dTZXBhcmF0b3JUcmFuc2Zvcm1UYWJsZT1b
IiwJLiIsICIuCSwiXSwKd2dEaWdpdFRyYW5zZm9ybVRhYmxlPVsiIiwgIiJdLAp3
Z01haW5QYWdlVGl0bGU9IlBvcnRhZGEiLAp3Z0Zvcm1hdHRlZE5hbWVzcGFjZXM9
eyItMiI6ICJNZWRpYSIsICItMSI6ICJFc3BlY2lhbCIsICIwIjogIiIsICIxIjog
IkRpc2N1c3Npw7MiLCAiMiI6ICJVc3VhcmkiLCAiMyI6ICJVc3VhcmkgRGlzY3Vz
c2nDsyIsICI0IjogIlZpcXVpcMOoZGlhIiwgIjUiOiAiVmlxdWlww6hkaWEgRGlz
Y3Vzc2nDsyIsICI2IjogIkZpdHhlciIsICI3IjogIkZpdHhlciBEaXNjdXNzacOz
IiwgIjgiOiAiTWVkaWFXaWtpIiwgIjkiOiAiTWVkaWFXaWtpIERpc2N1c3Npw7Mi
LCAiMTAiOiAiUGxhbnRpbGxhIiwgIjExIjogIlBsYW50aWxsYSBEaXNjdXNzacOz
IiwgIjEyIjogIkFqdWRhIiwgIjEzIjogIkFqdWRhIERpc2N1c3Npw7MiLCAiMTQi
OiAiQ2F0ZWdvcmlhIiwgIjE1IjogIkNhdGVnb3JpYSBEaXNjdXNzacOzIiwgIjEw
MCI6ICJQb3J0YWwiLCAiMTAxIjogIlBvcnRhbCBEaXNjdXNzacOzIiwgIjEwMiI6
ICJWaXF1aXByb2plY3RlIiwgIjEwMyI6ICJWaXF1aXByb2plY3RlIERpc2N1c3Np
w7MifSwKd2dOYW1lc3BhY2VJZHM9eyJtZWRpYSI6IC0yLCAiZXNwZWNpYWwiOiAt
MSwgIiI6IDAsICJkaXNjdXNzacOzIjogMSwgInVzdWFyaSI6IDIsICJ1c3Vhcmlf
ZGlzY3Vzc2nDsyI6IDMsICJ2aXF1aXDDqGRpYSI6IDQsICJ2aXF1aXDDqGRpYV9k
aXNjdXNzacOzIjogNSwgImZpdHhlciI6IDYsICJmaXR4ZXJfZGlzY3Vzc2nDsyI6
IDcsICJtZWRpYXdpa2kiOiA4LCAibWVkaWF3aWtpX2Rpc2N1c3Npw7MiOiA5LCAi
cGxhbnRpbGxhIjogMTAsICJwbGFudGlsbGFfZGlzY3Vzc2nDsyI6IDExLCAiYWp1
ZGEiOiAxMiwgImFqdWRhX2Rpc2N1c3Npw7MiOiAxMywgImNhdGVnb3JpYSI6IDE0
LCAiY2F0ZWdvcmlhX2Rpc2N1c3Npw7MiOiAxNSwgInBvcnRhbCI6IDEwMCwgInBv
cnRhbF9kaXNjdXNzacOzIjogMTAxLCAidmlxdWlwcm9qZWN0ZSI6IDEwMiwgInZp
cXVpcHJvamVjdGVfZGlzY3Vzc2nDsyI6IDEwMywgImltYXRnZSI6IDYsICJpbWF0
Z2VfZGlzY3Vzc2nDsyI6IDcsICJ1c3XDoHJpYSI6IDIsICJ1c3XDoHJpYV9kaXNj
dXNzacOzIjogMywgImltYWdlIjogNiwgImltYWdlX3RhbGsiOiA3fSwKd2dTaXRl
TmFtZT0iVmlxdWlww6hkaWEiLAp3Z0NhdGVnb3JpZXM9WyJBcnRpY2xlcyBib25z
IGVuIGFsZW1hbnkiLCAiQ2FyZGVuYWxzIiwgIkhpc3TDsnJpYSBkZSBGcmFuw6dh
IiwgIlBvbMOtdGljcyBmcmFuY2Vzb3MiLCAiUHJpbWVycyBtaW5pc3RyZXMgZGUg
RnJhbsOnYSIsICJSZWxpZ2lvc29zIGZyYW5jZXNvcyJdLAp3Z0RCbmFtZT0iY2F3
aWtpIiwKd2dNV1N1Z2dlc3RUZW1wbGF0ZT0iaHR0cDovL2NhLndpa2lwZWRpYS5v
cmcvdy9hcGkucGhwP2FjdGlvbj1vcGVuc2VhcmNoXHgyNnNlYXJjaD17c2VhcmNo
VGVybXN9XHgyNm5hbWVzcGFjZT17bmFtZXNwYWNlc31ceDI2c3VnZ2VzdCIsCndn
U2VhcmNoTmFtZXNwYWNlcz1bMF0sCndnTVdTdWdnZXN0TWVzc2FnZXM9WyJhbWIg
c3VnZ2VyaW1lbnRzIiwgImNhcCBzdWdnZXJpbWVudCJdLAp3Z1Jlc3RyaWN0aW9u
RWRpdD1bXSwKd2dSZXN0cmljdGlvbk1vdmU9W10sCndnV2lraW1lZGlhTW9iaWxl
VXJsPSJodHRwOi8vY2EubS53aWtpcGVkaWEub3JnL3dpa2kiLAp3Z0NvbGxhcHNp
YmxlTmF2QnVja2V0VGVzdD1mYWxzZSwKd2dDb2xsYXBzaWJsZU5hdkZvcmNlTmV3
VmVyc2lvbj1mYWxzZSwKd2dWZWN0b3JQcmVmZXJlbmNlcz17ImNvbGxhcHNpYmxl
bmF2IjogeyJlbmFibGUiOiAxfSwgImVkaXR3YXJuaW5nIjogeyJlbmFibGUiOiAx
fSwgInNpbXBsZXNlYXJjaCI6IHsiZW5hYmxlIjogMSwgImRpc2FibGVzdWdnZXN0
IjogMH19LAp3Z1ZlY3RvckVuYWJsZWRNb2R1bGVzPXsiY29sbGFwc2libGVuYXYi
OiB0cnVlLCAiY29sbGFwc2libGV0YWJzIjogdHJ1ZSwgImVkaXR3YXJuaW5nIjog
dHJ1ZSwgImV4cGFuZGFibGVzZWFyY2giOiBmYWxzZSwgImZvb3RlcmNsZWFudXAi
OiBmYWxzZSwgInNpbXBsZXNlYXJjaCI6IHRydWV9LApHZW89eyJjaXR5IjogIiIs
ICJjb3VudHJ5IjogIiJ9LAp3Z05vdGljZVByb2plY3Q9Indpa2lwZWRpYSI7Cjwv
c2NyaXB0PjxzY3JpcHQgc3JjPSJodHRwOi8vYml0cy53aWtpbWVkaWEub3JnL3Nr
aW5zLTEuNS9jb21tb24vd2lraWJpdHMuanM/MjgzLTE5IiB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCIgc3JjPSJodHRwOi8vYml0cy53aWtpbWVkaWEub3JnL3NraW5zLTEuNS9jb21t
b24vanF1ZXJ5Lm1pbi5qcz8yODMtMTkiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0i
aHR0cDovL2JpdHMud2lraW1lZGlhLm9yZy9za2lucy0xLjUvY29tbW9uL2FqYXgu
anM/MjgzLTE5IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0Pgo8c2Ny
aXB0IHNyYz0iaHR0cDovL2JpdHMud2lraW1lZGlhLm9yZy9za2lucy0xLjUvY29t
bW9uL213c3VnZ2VzdC5qcz8yODMtMTkiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+
PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSJodHRwOi8vYml0cy53aWtpbWVkaWEub3Jn
L3cvZXh0ZW5zaW9ucy9XaWtpbWVkaWFNb2JpbGUvTW9iaWxlUmVkaXJlY3QuanM/
Mi4yIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0Pgo8c2NyaXB0IHNy
Yz0iaHR0cDovL2JpdHMud2lraW1lZGlhLm9yZy93L2V4dGVuc2lvbnMvVXNhYmls
aXR5SW5pdGlhdGl2ZS9qcy9wbHVnaW5zLmNvbWJpbmVkLm1pbi5qcz8yODMtMTki
IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSJo
dHRwOi8vYml0cy53aWtpbWVkaWEub3JnL3cvZXh0ZW5zaW9ucy9Vc2FiaWxpdHlJ
bml0aWF0aXZlL1ZlY3Rvci9WZWN0b3IuY29tYmluZWQubWluLmpzPzI4My0xOSIg
dHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiPm13LnVzYWJpbGl0eS5hZGRNZXNzYWdlcyh7J3ZlY3Rv
ci1jb2xsYXBzaWJsZW5hdi1tb3JlJzonTcOpcyBsbGVuZ8O8ZXMnLCd2ZWN0b3It
ZWRpdHdhcm5pbmctd2FybmluZyc6J1NpIHNvcnRpdSBkXCdhcXVlc3RhIHDDoGdp
bmEgcGVyZHJldSB0b3RzIGVscyBjYW52aXMgcXVlIGjDoGdpdSBmZXQuXG5TaSB0
ZW5pdSB1biBjb21wdGUgZFwndXN1YXJpLCBwb2RldSBlbGltaW5hciBhcXVlc3Qg
YXbDrXMgYSBsYSBzZWNjacOzIMKrQ2FpeGEgZFwnZWRpY2nDs8K7IGRlIGxlcyB2
b3N0cmVzIHByZWZlcsOobmNpZXMuJywndmVjdG9yLXNpbXBsZXNlYXJjaC1zZWFy
Y2gnOidDZXJjYScsJ3ZlY3Rvci1zaW1wbGVzZWFyY2gtY29udGFpbmluZyc6J3F1
ZSBjb250w6kgLi4uJ30pOzwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iL3cvaW5kZXgu
cGhwP3RpdGxlPUVzcGVjaWFsOkJhbm5lckNvbnRyb2xsZXImYW1wO2NhY2hlPS9j
bi5qcyZhbXA7MjgzLTE5IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0
Pgo8IS0tW2lmIGx0IElFIDddPjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Ym9keXti
ZWhhdmlvcjp1cmwoIi93L3NraW5zLTEuNS92ZWN0b3IvY3NzaG92ZXIuaHRjIil9
PC9zdHlsZT48IVtlbmRpZl0tLT4KPHNjcmlwdCBzcmM9Ii93L2luZGV4LnBocD90
aXRsZT0tJmFtcDthY3Rpb249cmF3JmFtcDtnZW49anMmYW1wO3VzZXNraW49dmVj
dG9yJmFtcDsyODMtMTkiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+
Cgo8L2hlYWQ+Cjxib2R5IGNsYXNzPSJtZWRpYXdpa2kgbHRyIG5zLTAgbnMtc3Vi
amVjdCBwYWdlLUNhcmRlbmFsX1JpY2hlbGlldSBza2luLXZlY3RvciI+CgkJPGRp
diBpZD0ibXctcGFnZS1iYXNlIiBjbGFzcz0ibm9wcmludCI+PC9kaXY+CgkJPGRp
diBpZD0ibXctaGVhZC1iYXNlIiBjbGFzcz0ibm9wcmludCI+PC9kaXY+CgkJPCEt
LSBjb250ZW50IC0tPgoJCTxkaXYgaWQ9ImNvbnRlbnQiPgoJCQk8YSBpZD0idG9w
Ij48L2E+CgkJCTxkaXYgaWQ9Im13LWpzLW1lc3NhZ2UiIHN0eWxlPSJkaXNwbGF5
Om5vbmU7Ij48L2Rpdj4KCQkJCQkJPCEtLSBzaXRlbm90aWNlIC0tPgoJCQk8ZGl2
IGlkPSJzaXRlTm90aWNlIj48IS0tIGNlbnRyYWxOb3RpY2UgbG9hZHMgaGVyZSAt
LT48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgbGFuZ3VhZ2U9IkphdmFT
Y3JpcHQiPgovKiA8IVtDREFUQVsgKi8KZG9jdW1lbnQud3JpdGVsbigiXHgzY2Rp
diBpZD1cImxvY2FsTm90aWNlXCJceDNlXHgzY3RhYmxlIGJvcmRlcj1cIjBcIiBh
bGlnbj1cImNlbnRlclwiIHdpZHRoPVwiMTAwJVwiIHN0eWxlPVwiYmFja2dyb3Vu
ZDp0cmFuc3BhcmVudDtcIlx4M2Vcblx4M2N0clx4M2Vcblx4M2N0ZCBhbGlnbj1c
ImxlZnRcIlx4M2Vcblx4M2MvdGRceDNlXHgzY3RkIGFsaWduPVwicmlnaHRcIlx4
M2Vcblx4M2MvdGRceDNlXHgzYy90clx4M2VceDNjL3RhYmxlXHgzZVxuXHgzYy9k
aXZceDNlIik7Ci8qIF1dPiAqLwo8L3NjcmlwdD48L2Rpdj4KCQkJPCEtLSAvc2l0
ZW5vdGljZSAtLT4KCQkJCQkJPCEtLSBmaXJzdEhlYWRpbmcgLS0+CgkJCTxoMSBp
ZD0iZmlyc3RIZWFkaW5nIiBjbGFzcz0iZmlyc3RIZWFkaW5nIj5DYXJkZW5hbCBS
aWNoZWxpZXU8L2gxPgoJCQk8IS0tIC9maXJzdEhlYWRpbmcgLS0+CgkJCTwhLS0g
Ym9keUNvbnRlbnQgLS0+CgkJCTxkaXYgaWQ9ImJvZHlDb250ZW50Ij4KCQkJCTwh
LS0gdGFnbGluZSAtLT4KCQkJCTxkaXYgaWQ9InNpdGVTdWIiPkRlIFZpcXVpcMOo
ZGlhPC9kaXY+CgkJCQk8IS0tIC90YWdsaW5lIC0tPgoJCQkJPCEtLSBzdWJ0aXRs
ZSAtLT4KCQkJCTxkaXYgaWQ9ImNvbnRlbnRTdWIiPjwvZGl2PgoJCQkJPCEtLSAv
c3VidGl0bGUgLS0+CgkJCQkJCQkJCQkJCQkJCQk8IS0tIGp1bXB0byAtLT4KCQkJ
CTxkaXYgaWQ9Imp1bXAtdG8tbmF2Ij4KCQkJCQlEcmVjZXJlcyByw6BwaWRlczog
PGEgaHJlZj0iI213LWhlYWQiPm5hdmVnYWNpw7M8L2E+LAoJCQkJCTxhIGhyZWY9
IiNwLXNlYXJjaCI+Y2VyY2E8L2E+CgkJCQk8L2Rpdj4KCQkJCTwhLS0gL2p1bXB0
byAtLT4KCQkJCQkJCQk8IS0tIGJvZHl0ZXh0IC0tPgoJCQkJPHRhYmxlIGNsYXNz
PSJpbmZvYm94IGJpb2dyYXBoeSB2Y2FyZCIgY2VsbHNwYWNpbmc9IjUiIHN0eWxl
PSJ3aWR0aDoyNWVtOyB0ZXh0LWFsaWduOmxlZnQ7IGZvbnQtc2l6ZTo4OCU7IGxp
bmUtaGVpZ2h0OjEuNWVtOyI+Cjx0cj4KPHRoIGNvbHNwYW49IjIiIGNsYXNzPSJm
biIgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyOyBmb250LXNpemU6MTI1JTsgZm9u
dC13ZWlnaHQ6Ym9sZDsiPkFybWFuZCBSaWNoZWxpZXU8L3RoPgo8L3RyPgo8dHI+
Cjx0ZCBjb2xzcGFuPSIyIiBjbGFzcz0iIiBzdHlsZT0idGV4dC1hbGlnbjpjZW50
ZXI7Ij48YSBocmVmPSIvd2lraS9GaXR4ZXI6Q2FyZGluYWxfUmljaGVsaWV1XyhD
aGFtcGFpZ25lKS5qcGciIGNsYXNzPSJpbWFnZSI+PGltZyBhbHQ9IiIgc3JjPSJo
dHRwOi8vdXBsb2FkLndpa2ltZWRpYS5vcmcvd2lraXBlZGlhL2NvbW1vbnMvdGh1
bWIvMS8xYS9DYXJkaW5hbF9SaWNoZWxpZXVfJTI4Q2hhbXBhaWduZSUyOS5qcGcv
MjI1cHgtQ2FyZGluYWxfUmljaGVsaWV1XyUyOENoYW1wYWlnbmUlMjkuanBnIiB3
aWR0aD0iMjI1IiBoZWlnaHQ9IjMyNiIgLz48L2E+PGJyIC8+CjxzcGFuIHN0eWxl
PSIiPjxiPlJpY2hlbGlldTwvYj4sIHBpbnR1cmEgZGUgPGEgaHJlZj0iL3dpa2kv
UGhpbGlwcGVfZGVfQ2hhbXBhaWduZSIgdGl0bGU9IlBoaWxpcHBlIGRlIENoYW1w
YWlnbmUiPlBoaWxpcHBlIGRlIENoYW1wYWlnbmU8L2E+PC9zcGFuPjwvdGQ+Cjwv
dHI+Cjx0ciBjbGFzcz0iIj4KPHRoIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQ7Ij5O
YWl4ZW1lbnQ8L3RoPgo8dGQgY2xhc3M9IiIgc3R5bGU9IiI+SmVhbiBBcm1hbmQg
ZHUgUGxlc3NpczxiciAvPgo5IGRlIHNldGVtYnJlIDxhIGhyZWY9Ii93aWtpLzE1
ODUiIHRpdGxlPSIxNTg1Ij4xNTg1PC9hPjxiciAvPgo8YSBocmVmPSIvd2lraS9Q
YXIlQzMlQURzIiB0aXRsZT0iUGFyw61zIj5QYXLDrXM8L2E+PC90ZD4KPC90cj4K
PHRyIGNsYXNzPSIiPgo8dGggc3R5bGU9InRleHQtYWxpZ246bGVmdDsiPkRlZnVu
Y2nDszwvdGg+Cjx0ZCBjbGFzcz0iIiBzdHlsZT0iIj40IGRlIGRlc2VtYnJlIGRl
IDxhIGhyZWY9Ii93aWtpLzE2NDIiIHRpdGxlPSIxNjQyIj4xNjQyPC9hPjxiciAv
Pgo8YSBocmVmPSIvd2lraS9QYXIlQzMlQURzIiB0aXRsZT0iUGFyw61zIj5QYXLD
rXM8L2E+PC90ZD4KPC90cj4KPHRyIGNsYXNzPSIiPgo8dGggc3R5bGU9InRleHQt
YWxpZ246bGVmdDsiPk5hY2lvbmFsaXRhdDwvdGg+Cjx0ZCBjbGFzcz0iY2F0ZWdv
cnkiIHN0eWxlPSIiPjxpbWcgYWx0PSJGcmFuw6dhIiBzcmM9Imh0dHA6Ly91cGxv
YWQud2lraW1lZGlhLm9yZy93aWtpcGVkaWEvY29tbW9ucy90aHVtYi9jL2MzL0Zs
YWdfb2ZfRnJhbmNlLnN2Zy8yMHB4LUZsYWdfb2ZfRnJhbmNlLnN2Zy5wbmciIHdp
ZHRoPSIyMCIgaGVpZ2h0PSIxMyIgY2xhc3M9InRodW1iYm9yZGVyIiAvPiA8YSBo
cmVmPSIvd2lraS9GcmFuJUMzJUE3YSIgdGl0bGU9IkZyYW7Dp2EiPkZyYW7Dp2E8
L2E+PC90ZD4KPC90cj4KPHRyIGNsYXNzPSIiPgo8dGggc3R5bGU9InRleHQtYWxp
Z246bGVmdDsiPk9jdXBhY2nDszwvdGg+Cjx0ZCBjbGFzcz0icm9sZSIgc3R5bGU9
IiI+TWluaXN0cmUgZGUgRnJhbsOnYTwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0iIj4K
PHRoIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQ7Ij5Db25lZ3V0JiMxNjA7cGVyPC90
aD4KPHRkIGNsYXNzPSIiIHN0eWxlPSIiPkNhcmRlbmFsIFJpY2hlbGlldTwvdGQ+
CjwvdHI+Cjx0ciBjbGFzcz0iIj4KPHRoIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQ7
Ij5QYXJlczwvdGg+Cjx0ZCBjbGFzcz0iIiBzdHlsZT0iIj5KZWFuIGR1IFBsZXNz
aXM8L3RkPgo8L3RyPgo8L3RhYmxlPgo8ZGl2IGNsYXNzPSJub3ByaW50IiBzdHls
ZT0id2lkdGg6IDEwMCU7IGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7IG1hcmdp
bi1ib3R0b206IDFlbTsgcG9zaXRpb246cmVsYXRpdmU7Ij4KPHRhYmxlIHN0eWxl
PSJiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1IiBjZWxsc3BhY2luZz0iNSI+Cjx0
cj4KPHRkIHN0eWxlPSJ3aWR0aDogMjVweDsgdmVydGljYWwtYWxpZ246IHRvcCI+
PGltZyBhbHQ9IiIgc3JjPSJodHRwOi8vdXBsb2FkLndpa2ltZWRpYS5vcmcvd2lr
aXBlZGlhL2NvbW1vbnMvdGh1bWIvNC80YS9EaXNhbWJpZ19ncmV5LnN2Zy8yMnB4
LURpc2FtYmlnX2dyZXkuc3ZnLnBuZyIgd2lkdGg9IjIyIiBoZWlnaHQ9IjE3IiAv
PjwvdGQ+Cjx0ZCBzdHlsZT0iZm9udC1zdHlsZTogaXRhbGljOyI+UGVyIGEgYWx0
cmVzIHNpZ25pZmljYXRzIHZlZ2V1IMKrPGEgaHJlZj0iL3dpa2kvUmljaGVsaWV1
IiB0aXRsZT0iUmljaGVsaWV1Ij5SaWNoZWxpZXU8L2E+wrsuPC90ZD4KPC90cj4K
PC90YWJsZT4KPC9kaXY+CjxwPjxiPkFybWFuZC1KZWFuIGR1IFBsZXNzaXM8L2I+
IG3DqXMgY29uZWd1dCBjb20gZWwgPGI+Q2FyZGVuYWwtRHVjIGRlIFJpY2hlbGll
dTwvYj4gKDxhIGhyZWY9Ii93aWtpLzlfZGVfc2V0ZW1icmUiIHRpdGxlPSI5IGRl
IHNldGVtYnJlIj45IGRlIHNldGVtYnJlPC9hPiBkZSA8YSBocmVmPSIvd2lraS8x
NTg1IiB0aXRsZT0iMTU4NSI+MTU4NTwvYT4g4oCTIDxhIGhyZWY9Ii93aWtpLzRf
ZGVfZGVzZW1icmUiIHRpdGxlPSI0IGRlIGRlc2VtYnJlIj40IGRlIGRlc2VtYnJl
PC9hPiBkZSA8YSBocmVmPSIvd2lraS8xNjQyIiB0aXRsZT0iMTY0MiI+MTY0Mjwv
YT4pIGZvdSB1biBwcmVsYXQsIG5vYmxlIGkgcHJpbWVyIG1pbmlzdHJlIDxhIGhy
ZWY9Ii93aWtpL0ZyYW4lQzMlQTdhIiB0aXRsZT0iRnJhbsOnYSI+ZnJhbmPDqHM8
L2E+LjwvcD4KPHRhYmxlIGlkPSJ0b2MiIGNsYXNzPSJ0b2MiPgo8dHI+Cjx0ZD4K
PGRpdiBpZD0idG9jdGl0bGUiPgo8aDI+VGF1bGEgZGUgY29udGluZ3V0czwvaDI+
CjwvZGl2Pgo8dWw+CjxsaSBjbGFzcz0idG9jbGV2ZWwtMSB0b2NzZWN0aW9uLTEi
PjxhIGhyZWY9IiNCaXNiZV9hbHNfMjJfYW55cyI+PHNwYW4gY2xhc3M9InRvY251
bWJlciI+MTwvc3Bhbj4gPHNwYW4gY2xhc3M9InRvY3RleHQiPkJpc2JlIGFscyAy
MiBhbnlzPC9zcGFuPjwvYT48L2xpPgo8bGkgY2xhc3M9InRvY2xldmVsLTEgdG9j
c2VjdGlvbi0yIj48YSBocmVmPSIjTWluaXN0cmVfZGVfRnJhbi5DMy5BN2EiPjxz
cGFuIGNsYXNzPSJ0b2NudW1iZXIiPjI8L3NwYW4+IDxzcGFuIGNsYXNzPSJ0b2N0
ZXh0Ij5NaW5pc3RyZSBkZSBGcmFuw6dhPC9zcGFuPjwvYT48L2xpPgo8bGkgY2xh
c3M9InRvY2xldmVsLTEgdG9jc2VjdGlvbi0zIj48YSBocmVmPSIjQ2F1X2VuX2Rl
c2dyLkMzLkEwY2lhIj48c3BhbiBjbGFzcz0idG9jbnVtYmVyIj4zPC9zcGFuPiA8
c3BhbiBjbGFzcz0idG9jdGV4dCI+Q2F1IGVuIGRlc2dyw6BjaWE8L3NwYW4+PC9h
PjwvbGk+CjxsaSBjbGFzcz0idG9jbGV2ZWwtMSB0b2NzZWN0aW9uLTQiPjxhIGhy
ZWY9IiNILkMzLkEwYmlsX3BvbC5DMy5BRHRpYyI+PHNwYW4gY2xhc3M9InRvY251
bWJlciI+NDwvc3Bhbj4gPHNwYW4gY2xhc3M9InRvY3RleHQiPkjDoGJpbCBwb2zD
rXRpYzwvc3Bhbj48L2E+PC9saT4KPGxpIGNsYXNzPSJ0b2NsZXZlbC0xIHRvY3Nl
Y3Rpb24tNSI+PGEgaHJlZj0iI05vX2VyYV9lc3RpbWF0Ij48c3BhbiBjbGFzcz0i
dG9jbnVtYmVyIj41PC9zcGFuPiA8c3BhbiBjbGFzcz0idG9jdGV4dCI+Tm8gZXJh
IGVzdGltYXQ8L3NwYW4+PC9hPjwvbGk+CjxsaSBjbGFzcz0idG9jbGV2ZWwtMSB0
b2NzZWN0aW9uLTYiPjxhIGhyZWY9IiNCaWJsaW9ncmFmaWEiPjxzcGFuIGNsYXNz
PSJ0b2NudW1iZXIiPjY8L3NwYW4+IDxzcGFuIGNsYXNzPSJ0b2N0ZXh0Ij5CaWJs
aW9ncmFmaWE8L3NwYW4+PC9hPjwvbGk+CjxsaSBjbGFzcz0idG9jbGV2ZWwtMSB0
b2NzZWN0aW9uLTciPjxhIGhyZWY9IiNWZWdldV90YW1iLkMzLkE5Ij48c3BhbiBj
bGFzcz0idG9jbnVtYmVyIj43PC9zcGFuPiA8c3BhbiBjbGFzcz0idG9jdGV4dCI+
VmVnZXUgdGFtYsOpPC9zcGFuPjwvYT48L2xpPgo8L3VsPgo8L3RkPgo8L3RyPgo8
L3RhYmxlPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci8vPCFbQ0RB
VEFbCmlmICh3aW5kb3cuc2hvd1RvY1RvZ2dsZSkgeyB2YXIgdG9jU2hvd1RleHQg
PSAibW9zdHJhIjsgdmFyIHRvY0hpZGVUZXh0ID0gImFtYWdhIjsgc2hvd1RvY1Rv
Z2dsZSgpOyB9IAovL11dPgo8L3NjcmlwdD4KPGgyPjxzcGFuIGNsYXNzPSJlZGl0
c2VjdGlvbiI+WzxhIGhyZWY9Ii93L2luZGV4LnBocD90aXRsZT1DYXJkZW5hbF9S
aWNoZWxpZXUmYW1wO2FjdGlvbj1lZGl0JmFtcDtzZWN0aW9uPTEiIHRpdGxlPSJN
b2RpZmljYSBsYSBzZWNjacOzOiBCaXNiZSBhbHMgMjIgYW55cyI+bW9kaWZpY2E8
L2E+XTwvc3Bhbj4gPHNwYW4gY2xhc3M9Im13LWhlYWRsaW5lIiBpZD0iQmlzYmVf
YWxzXzIyX2FueXMiPkJpc2JlIGFscyAyMiBhbnlzPC9zcGFuPjwvaDI+CjxwPkVs
IHNldSBwYXJlLCBKZWFuIGR1IFBsZXNzaXMgUmljaGVsaWV1IHNlcnbDrSBjb20g
Y2FwIGRlIGxhIGNhc2EgcmVpYWwgYWxzIHJlaXMgPGEgaHJlZj0iL3dpa2kvRW5y
aWNfSUlJIiB0aXRsZT0iRW5yaWMgSUlJIj5FbnJpYyBJSUk8L2E+IGkgPGEgaHJl
Zj0iL3dpa2kvRW5yaWNfSVYiIHRpdGxlPSJFbnJpYyBJViI+RW5yaWMgSVY8L2E+
LCBpIHZhIHJlYnJlIHBlciBsYSBzZXZhIGZhbcOtbGlhIGVsIGJlbmVmaWNpIGRl
bCBiaXNiYXQgZGUgPGEgaHJlZj0iL3cvaW5kZXgucGhwP3RpdGxlPUx1JUMzJUE3
b24mYW1wO2FjdGlvbj1lZGl0JmFtcDtyZWRsaW5rPTEiIGNsYXNzPSJuZXciIHRp
dGxlPSJMdcOnb24gKGVuY2FyYSBubyBleGlzdGVpeCkiPkx1w6dvbjwvYT4uIEFx
dWVzdCBiZW5lZmljaSBlc3RhdmEgZGVzdGluYXQgYWwgc2Vnb24gZmlsbCBBbHBo
b25zZSwgcGVyw7IgYXF1ZXN0IHJlbnVuY2nDoCBhbCBiaXNiYXQsIHF1ZSBmb3Ug
YXNzaWduYXQgYSBBcm1hbmQsIGVsIGZpbGwgbcOpcyBqb3ZlLCBlbCBxdWFsIGVz
dGF2YSBhIHB1bnQgZCdhY29uc2VndWlyIGVsIHTDrXRvbCBkJ29maWNpYWwuIEVs
IGpvdmUgYWNjZXB0w6AgYXF1ZXN0IGNhbnZpIHRhbnQgcmFkaWNhbCBkZSBydW1i
LCBhcGxpY2FudC1zZSBhbHMgbm91cyBlc3R1ZGlzIGFtYiBncmFuIHZvbHVudGF0
LjwvcD4KPHA+UG9jIHRlbXBzIGRlc3Byw6lzLCBjcmlkYXQgcGVsIG1hdGVpeCBy
ZWksIGVzIHRyYXNsbGFkw6AgYSA8YSBocmVmPSIvd2lraS9Sb21hIiB0aXRsZT0i
Um9tYSI+Um9tYTwvYT4gcGVyIG9idGVuaXIgZWwgbm9tZW5hbWVudC4gQXZpYXQg
ZXMgZGlzdGluZ8OtIHBlciBsYSBzZXZhIGN1bHR1cmEgaSBpbnRlbMK3bGlnw6hu
Y2lhLiBGb3UgY29uc2FncmF0IGVsIDxhIGhyZWY9Ii93aWtpLzE2MDciIHRpdGxl
PSIxNjA3Ij4xNjA3PC9hPiwgYW1iIGRpc3BlbnNhIHBvbnRpZsOtY2lhIGRlZ3V0
IGEgYSBsYSBzZXZhIGpvdmVudHV0LCBqYSBxdcOoLCBzZWdvbnMgZWwgPGEgaHJl
Zj0iL3dpa2kvRHJldF9jYW4lQzMlQjJuaWMiIHRpdGxlPSJEcmV0IGNhbsOybmlj
Ij5kcmV0IGNhbsOybmljPC9hPiB2aWdlbnQsIGVsIG1hdGVpeCBxdWUgYXZ1aSBk
aWEgKDxhIGhyZWY9Ii93aWtpLzIwMTAiIHRpdGxlPSIyMDEwIj4yMDEwPC9hPiks
IG5vIGVzIHBvZGlhIHNlciBvcmRlbmF0IGFiYW5zIGRlbHMgMjQgYW55cy4gRWwg
PGEgaHJlZj0iL3dpa2kvMTYwOCIgdGl0bGU9IjE2MDgiPjE2MDg8L2E+IGVzIGZl
dSBjw6BycmVjIGRlIGxhIHNldmEgZGnDsmNlc2kuPC9wPgo8aDI+PHNwYW4gY2xh
c3M9ImVkaXRzZWN0aW9uIj5bPGEgaHJlZj0iL3cvaW5kZXgucGhwP3RpdGxlPUNh
cmRlbmFsX1JpY2hlbGlldSZhbXA7YWN0aW9uPWVkaXQmYW1wO3NlY3Rpb249MiIg
dGl0bGU9Ik1vZGlmaWNhIGxhIHNlY2Npw7M6IE1pbmlzdHJlIGRlIEZyYW7Dp2Ei
Pm1vZGlmaWNhPC9hPl08L3NwYW4+IDxzcGFuIGNsYXNzPSJtdy1oZWFkbGluZSIg
aWQ9Ik1pbmlzdHJlX2RlX0ZyYW4uQzMuQTdhIj5NaW5pc3RyZSBkZSBGcmFuw6dh
PC9zcGFuPjwvaDI+CjxwPkVsIGdvdmVybiBkZSBsYSBkacOyY2VzaSBkZSBMdcOn
b24gZm91IHBlciBhIFJpY2hlbGlldSB1biDDunRpbCBhcHJlbmVudGF0Z2UuIEVs
IGJpc2JlIGVzIGRlZGljw6AgYW1iIHBhc3Npw7MgYSB0b3RzIGVscyBwcm9ibGVt
ZXMgZGUgbGEgZGnDsmNlc2k7IHBvZGlhIHByb25vc3RpY2FyLXNlIHF1ZSBmYXJp
YSB1bmEgYnJpbGxhbnQgY2FycmVyYSBlY2xlc2nDoHN0aWNhLiBQZXLDsiBlbGwg
dGVuaWEgdHJldHphdHMgZWxzIHNldXMgcGxhbnMgZW4gdW5hIGFsdHJhIGRpcmVj
Y2nDsy4gTm8gb2JsaWRhdmEgbGEgY29ydCBkZSBQYXLDrXMuPC9wPgo8cD5NZW50
cmUgdGFudCBlbCByZWkgPGEgaHJlZj0iL3dpa2kvRW5yaWNfSVYiIHRpdGxlPSJF
bnJpYyBJViI+RW5yaWMgSVY8L2E+IGhhdmlhIG1vcnQgaSByZWduYXZhIGVsIHNl
dSBmaWxsLCBlbCBqb3ZlIDxhIGhyZWY9Ii93aWtpL0xsdSVDMyVBRHNfWElJSSIg
dGl0bGU9IkxsdcOtcyBYSUlJIiBjbGFzcz0ibXctcmVkaXJlY3QiPkxsdcOtcyBY
SUlJPC9hPiwgc290YSBsYSByZWfDqG5jaWEgZGUgbGEgc2V2YSBtYXJlLCA8YSBo
cmVmPSIvd2lraS9NYXJpYV9kZV9NJUMzJUE4ZGljaSIgdGl0bGU9Ik1hcmlhIGRl
IE3DqGRpY2kiPk1hcmlhIGRlIE3DqGRpY2k8L2E+LiBSaWNoZWxpZXUgdm9saWEg
ZG9uYXItc2UgYSBjb27DqGl4ZXIgaSBhcHJlY2lhciBwZXIgYXF1ZWxsYSBkb25h
IHF1ZSB0ZW5pYSBhIGxlcyBzZXZlcyBtYW5zIGxlcyByZWduZXMgZGUgbCdFc3Rh
dC4gVXRpbGl0esOgIHRvdHMgZWxzIG1pdGphbnMgcGVyIGNvbmdyYWNpYXItc2Ug
YW1iIGVsbGE7IGVzY3JpdsOtIGNhcnRlcywgcHJvbnVuY2nDoCBzZXJtb25zIGVu
IHVuIHRvIGFkdWxhZG9yLCBpIGRlc3Byw6lzIGVzIGZldSBhbWljIGRlbCBzZXUg
Z3JhbiBwcm90ZWdpdCwgZGVsIG1pbGl0YXIgPGEgaHJlZj0iL3dpa2kvQ29uY2lu
b19Db25jaW5pIiB0aXRsZT0iQ29uY2lubyBDb25jaW5pIj5Db25jaW5vIENvbmNp
bmk8L2E+LCB1biBob21lIHNlbnNlIHZhbG9ycywgbmVjaSBpIHByZXBvdGVudDsg
cGVyw7IgYXF1ZXN0YSBhbWlzdGF0IGxpIHNpZ25pZmljw6AgYSBSaWNoZWxpZXUg
dW4gZW5kYXJyZXJpbWVudCBkZSB2dWl0IGFueXMgZW4gZWwgY29tZW7Dp2FtZW50
IGRlIGxhIHNldmEgeGFycmVyYSBwb2zDrXRpY2E6IGVuIGVmZWN0ZSwgZWwgbm9i
bGUgaXRhbGnDoCBmb3UgZmV0IG1hdGFyIHBlbCByZWksIHF1ZSwgaW1wcmV2aXNp
YmxlbWVudCwgaGF2aWEgcHJlcyBsYSBkYXZhbnRlcmEgYSBsYSBzZXZhIG1hcmUg
aSwgaW5jaXRhdCBwZWwgcGFydGl0IGFkdmVyc2FyaSBkZSBsYSByZWluYSwgbCdo
YXZpYSBkZXN0ZXJyYWRhLjwvcD4KPGgyPjxzcGFuIGNsYXNzPSJlZGl0c2VjdGlv
biI+WzxhIGhyZWY9Ii93L2luZGV4LnBocD90aXRsZT1DYXJkZW5hbF9SaWNoZWxp
ZXUmYW1wO2FjdGlvbj1lZGl0JmFtcDtzZWN0aW9uPTMiIHRpdGxlPSJNb2RpZmlj
YSBsYSBzZWNjacOzOiBDYXUgZW4gZGVzZ3LDoGNpYSI+bW9kaWZpY2E8L2E+XTwv
c3Bhbj4gPHNwYW4gY2xhc3M9Im13LWhlYWRsaW5lIiBpZD0iQ2F1X2VuX2Rlc2dy
LkMzLkEwY2lhIj5DYXUgZW4gZGVzZ3LDoGNpYTwvc3Bhbj48L2gyPgo8cD5SaWNo
ZWxpZXUsIGxsaWdhdCBhIGxhIGNhbWFyaWxsYSB2ZW7Dp3VkYSwgY2FpZ3XDqSBs
w7JnaWNhbWVudCBlbiBkZXNncsOgY2lhLiBQZXLDsiB2YSB0aW5kcmUgbGEgc3Vm
aWNpZW50IHBlcnNwaWPDoGNpYSBjb20gcGVyIGEgcmV0aXJhci1zZSBkaXNjcmV0
YW1lbnQ7IGludHXDr2EgcXVlIGVyYSBuZWNlc3NhcmkgZXNwZXJhci4gVGFtYsOp
IGNvbmZpYXZhIHF1ZSBNYXJpYSBkZSBNw6hkaWNpIHBvZ3XDqXMgZW5jYXJhIHJl
Y29icmFyIGVsIHBvZGVyLiBSaWNoZWxpZXUgbm8gcydlcXVpdm9jYXZhOyBlbnRy
ZSBsZXMgc2V2ZXMgaW5kaXNjdXRpYmxlcyBkb3RzLCBlc3RhdmEgbGEgZGUgY29u
w6hpeGVyIHByb2Z1bmRhbWVudCBhbHMgaG9tZXMuIE5vIHRhcmTDoCBnYWlyZSBl
biBlc2RldmVuaXIgZWwgcXVlIGVsIHByZWxhdCBoYXZpYSBwcmV2aXN0LiBNYXJp
YSBkZSBNw6hkaWNpIHRvcm7DoCBhIFBhcsOtcyBpIHJlY3VwZXLDoCBsYSBzZXZh
IGFudGlnYSBpbmZsdcOobmNpYSBlbiBlbCBnb3Zlcm47IGkgbCdhbnkgPGEgaHJl
Zj0iL3dpa2kvMTYyMiIgdGl0bGU9IjE2MjIiPjE2MjI8L2E+IGFzc29sw60gcGVy
IGVuIFJpY2hlbGlldSBlbCBjYXBldCBjYXJkZW5hbGljaTsgZG9zIGFueXMgZGVz
cHLDqXMgZWwgZmV1IGVsZWdpciBtaW5pc3RyZSBkJ0VzdGF0LjwvcD4KPGgyPjxz
cGFuIGNsYXNzPSJlZGl0c2VjdGlvbiI+WzxhIGhyZWY9Ii93L2luZGV4LnBocD90
aXRsZT1DYXJkZW5hbF9SaWNoZWxpZXUmYW1wO2FjdGlvbj1lZGl0JmFtcDtzZWN0
aW9uPTQiIHRpdGxlPSJNb2RpZmljYSBsYSBzZWNjacOzOiBIw6BiaWwgcG9sw610
aWMiPm1vZGlmaWNhPC9hPl08L3NwYW4+IDxzcGFuIGNsYXNzPSJtdy1oZWFkbGlu
ZSIgaWQ9IkguQzMuQTBiaWxfcG9sLkMzLkFEdGljIj5Iw6BiaWwgcG9sw610aWM8
L3NwYW4+PC9oMj4KPGRpdiBjbGFzcz0iZmxvYXRsZWZ0Ij48YSBocmVmPSIvd2lr
aS9GaXR4ZXI6Q09BX0NhcmRpbmFsX2RlX1JpY2hlbGlldS5zdmciIGNsYXNzPSJp
bWFnZSI+PGltZyBhbHQ9IkNPQSBDYXJkaW5hbCBkZSBSaWNoZWxpZXUuc3ZnIiBz
cmM9Imh0dHA6Ly91cGxvYWQud2lraW1lZGlhLm9yZy93aWtpcGVkaWEvY29tbW9u
cy90aHVtYi8yLzJjL0NPQV9DYXJkaW5hbF9kZV9SaWNoZWxpZXUuc3ZnLzIyMnB4
LUNPQV9DYXJkaW5hbF9kZV9SaWNoZWxpZXUuc3ZnLnBuZyIgd2lkdGg9IjIyMiIg
aGVpZ2h0PSIxOTYiIC8+PC9hPjwvZGl2Pgo8cD5TaSBNYXJpYSBkZSBNZWRpY2ks
IGVsIHJlaSBpIGVscyBub2JsZXMgaGFndWVzc2luIGNvbmVndXQgYSB0ZW1wcyBs
ZXMgZXhjZXBjaW9uYWxzIGNvbmRpY2lvbnMgZGUgUmljaGVsaWV1ICg8aT5sYSBz
ZXZhIHByZWNsYXJhIGludGVswrdsaWfDqG5jaWEsIGxhIHNldmEgZsOocnJpYSB2
b2x1bnRhdCwgZWwgdGFsZW50IHBvbMOtdGljPC9pPiksIHNlbnMgZHVidGUgaGF1
cmllbiBkdWJ0YXQgYWJhbnMgZGUgZG9uYXItbGkgdGFudGEgYXV0b3JpdGF0IGNv
bSBhIG1pbmlzdHJlOyBwZXLDsiBzZSBuJ2Fkb25hcmVuIG1hc3NhIHRhcmQgZGUg
dG90IGFpeMOyLiBFbiBwb2NzIHRlbXBzIGVsIGNhcmRlbmFsIGVzIHRyb27DoCBp
bmRpc3BlbnNhYmxlIGkgaW5zdWJzdGl0dcOvYmxlOyBub23DqXMgZWxsIGNvbXBy
ZW5pYSBpIHNhYmlhIGRpcmlnaXIgbGEgZGlmw61jaWwgcG9sw610aWNhIGV1cm9w
ZWEuPC9wPgo8cD5MYSByZWdlbnQgYWNhYsOgIHBlciBvZGlhciBhbCBzZXUgYW50
aWMgcHJvdGVnaXQsIHF1ZSBhcnJpYsOgIGEgaWdub3JhciBlbHMgc2V1cyBjb25z
ZWxscyBpIGZpbnMgaSB0b3QgcHJvY2VkaXIgZW4gY29udHJhIGRlIGxlcyBzZXZl
cyBkaXJlY3RpdXMuIFJpY2hlbGlldSB0aW5ndcOpIGRlIGxsdWl0YXIgdGFtYsOp
IGVuIGxhIGNvcnQsIG1lbnRyZSBkZXNlbnZvbHVwYXZhIGxhIHBlc2FkYSB0YXNj
YSBkZSBjb25kdWlyIGVscyBuZWdvY2lzIGRlIGwnRXN0YXQuIEVuIHBvbMOtdGlj
YSBpbnRlcm5hLCBwb3PDoCBmaSBhIGxlcyBjb250aW51ZXMgbGx1aXRlcyBmcmF0
cmljaWRlcyBlbnRvc3N1ZGlkZXMgcGVyIG1vdGl1cyBkZSByZWxpZ2nDsy4gRG9u
w6AgZWwgY29wIGRlIGdyw6BjaWEgYWwgcGFydGl0IGRlbHMgPGEgaHJlZj0iL3dp
a2kvSHVnb25vdCIgdGl0bGU9Ikh1Z29ub3QiPmh1Z29ub3RzPC9hPiwgY29ucXVp
c3RhbnQgbGEgc2V2YSBtb2x0IGJlbiBkZWZlbnNhZGEgZm9ydGFsZXNhIGRlIGxh
IDxhIGhyZWY9Ii93L2luZGV4LnBocD90aXRsZT1Sb2NoZWxsZSZhbXA7YWN0aW9u
PWVkaXQmYW1wO3JlZGxpbms9MSIgY2xhc3M9Im5ldyIgdGl0bGU9IlJvY2hlbGxl
IChlbmNhcmEgbm8gZXhpc3RlaXgpIj5Sb2NoZWxsZTwvYT4gKDxhIGhyZWY9Ii93
aWtpLzE2MjgiIHRpdGxlPSIxNjI4Ij4xNjI4PC9hPikuIEVuIHBvbMOtdGljYSBl
eHRlcmlvciBub23DqXMgdGluZ3XDqSB1bmEgw7puaWNhIGZpdGE6IGNvbWJhdHJl
IGwnYXNjZW5kZW50IGRlbHMgPGEgaHJlZj0iL3dpa2kvRGluYXN0aWFfZGVsc19I
YWJzYnVyZyIgdGl0bGU9IkRpbmFzdGlhIGRlbHMgSGFic2J1cmciPkhhYnNidXJn
PC9hPiBwZXIgYSBldml0YXIgcXVlIGxlcyBkdWVzIGZhbcOtbGllcyByZWduYW50
cywgbmFzY3VkZXMgZCd1biBtYXRlaXggdHJvbmMsIGxhIGQnPGEgaHJlZj0iL3dp
a2kvRXNwYW55YSIgdGl0bGU9IkVzcGFueWEiPkVzcGFueWE8L2E+IGkgbGEgZCc8
YSBocmVmPSIvd2lraS8lQzMlODB1c3RyaWEiIHRpdGxlPSLDgHVzdHJpYSI+w4B1
c3RyaWE8L2E+LCBqYSBzb2JyYWRhLW1lbnQgcG9kZXJvc2VzLCBzJ3VuaXNzaW4g
aSBkb21pbmVzc2luIGEgPGEgaHJlZj0iL3dpa2kvRXVyb3BhIiB0aXRsZT0iRXVy
b3BhIj5FdXJvcGE8L2E+LjwvcD4KPHA+UGVyIGFjb25zZWd1aXIgZWwgc2V1IHBy
b3Bvc2ksIGVsIGNhcmRlbmFsIG5vIHZhIHRpbmRyZSBlc2Nyw7pwb2xzIGVuIGFs
aWFyLXNlIHZhcmllcyB2ZWdhZGVzIGFtYiBlbHMgPGEgaHJlZj0iL3dpa2kvUHJv
dGVzdGFudCIgdGl0bGU9IlByb3Rlc3RhbnQiIGNsYXNzPSJtdy1yZWRpcmVjdCI+
cHJvdGVzdGFudHM8L2E+IGV1cm9wZXVzIGNvbnRyYSBlbHMgbW9sdCBjYXTDsmxp
Y3MgSGFic2J1cmcgaSBhc3NvbMOtIGVsIHNldSBpbnRlbnQuIEVuIHJlc3VtLCBS
aWNoZWxpZXUgZm91IHVuIGRlbHMgbcOpcyBub3RhYmxlcyBwb2zDrXRpY3MgZGUg
bGEgaGlzdMOycmlhIGRlIEZyYW7Dp2EuIFN1YnN0aXR1w60gYWxzIG5vYmxlcyBx
dWUgZ292ZXJuYXZlbiBlbiBwcm92w61uY2llcyBwZXIgZnVuY2lvbmFyaXMgZWxl
Z2l0cyBlbnRyZSBsYSBidXJnZXNpYSwgZWxzIDxpPmludGVuZGVudHM8L2k+LCBh
bWIgZWwgcXVhbCBhZmlybcOgIGwnYWJzb2x1dGlzbWUgcmVpYWwuPC9wPgo8cD5W
YSBzZXIgcGFydGljdWxhcm1lbnQgbm90w7JyaWEgbGEgc2V2YSBpbnRlcnZlbmNp
w7MgZW4gbGEgPGEgaHJlZj0iL3dpa2kvR3VlcnJhX2RlbHNfVHJlbnRhX0FueXMi
IHRpdGxlPSJHdWVycmEgZGVscyBUcmVudGEgQW55cyI+R3VlcnJhIGRlbHMgVHJl
bnRhIEFueXM8L2E+LCBxdWUgdmEgYWNhYmFyIGFtYiBsYSA8YSBocmVmPSIvd2lr
aS9QYXVfZGVfV2VzdGYlQzMlQTBsaWEiIHRpdGxlPSJQYXUgZGUgV2VzdGbDoGxp
YSI+UGF1IGRlIFdlc3Rmw6BsaWE8L2E+IGkgZW4gZWwgPGEgaHJlZj0iL3dpa2kv
UGFjdGVfZGVfQ2VyZXQiIHRpdGxlPSJQYWN0ZSBkZSBDZXJldCI+UGFjdGUgZGUg
Q2VyZXQ8L2E+LCBxdWUgdmEgaW52b2x1Y3JhciBhbCA8YSBocmVmPSIvd2lraS9S
ZWduZV9kZV9GcmFuJUMzJUE3YSIgdGl0bGU9IlJlZ25lIGRlIEZyYW7Dp2EiPlJl
Z25lIGRlIEZyYW7Dp2E8L2E+IGVuIGxhIGxsdWl0YSBkZSA8YSBocmVmPSIvd2lr
aS9DYXRhbHVueWEiIHRpdGxlPSJDYXRhbHVueWEiPkNhdGFsdW55YTwvYT4gcGVy
IGFsbGliZXJhci1zZSBkZWwgPGEgaHJlZj0iL3dpa2kvUmVnbmVfZCUyN0VzcGFu
eWEiIHRpdGxlPSJSZWduZSBkJ0VzcGFueWEiIGNsYXNzPSJtdy1yZWRpcmVjdCI+
UmVnbmUgZCdFc3BhbnlhPC9hPi48L3A+CjxwPkFmYXZvcsOtIGxlcyBsbGV0cmVz
IGkgbGVzIGFydHM7IGVsIDxhIGhyZWY9Ii93aWtpLzE2MzUiIHRpdGxlPSIxNjM1
Ij4xNjM1PC9hPiBmdW5kw6AgbCdBY2Fkw6htaWEgRnJhbmNlc2EsIGVuY2FycmVn
YWRhIGRlIGN1aWRhciBsYSBwdXJlc2EgZGUgbCdpZGlvbWEgaSByZWRhY3RhciB1
biBkaWNjaW9uYXJpIGkgdW5hIGdyYW3DoHRpY2EuIERlcyBkZSBsYSBzZXZhIMOo
cG9jYSBjb21lbsOnw6AgZWwgZnJhbmPDqHMgYSBzZXIgbGEgbGxlbmd1YSBkaXBs
b23DoHRpY2EuPC9wPgo8aDI+PHNwYW4gY2xhc3M9ImVkaXRzZWN0aW9uIj5bPGEg
aHJlZj0iL3cvaW5kZXgucGhwP3RpdGxlPUNhcmRlbmFsX1JpY2hlbGlldSZhbXA7
YWN0aW9uPWVkaXQmYW1wO3NlY3Rpb249NSIgdGl0bGU9Ik1vZGlmaWNhIGxhIHNl
Y2Npw7M6IE5vIGVyYSBlc3RpbWF0Ij5tb2RpZmljYTwvYT5dPC9zcGFuPiA8c3Bh
biBjbGFzcz0ibXctaGVhZGxpbmUiIGlkPSJOb19lcmFfZXN0aW1hdCI+Tm8gZXJh
IGVzdGltYXQ8L3NwYW4+PC9oMj4KPHA+RWxzIMO6bHRpbXMgY29uanVyYXRzIHF1
ZSBhdGVtcHRhcmVuIGNvbnRyYSBsYSB2aWRhIGRlIFJpY2hlbGlldSBmcmFjYXNz
YXJlbiBkb2JsZW1lbnQgZW4gbGEgc2V2YSBlbXByZXNhLiBQcmltZXIsIHBlcnF1
w6ggZm9yZW4gZGVzY29iZXJ0cyBhYmFucyBkZSBwb2RlciBhY3R1YXI7IHNlZ29u
LCBwZXJxdcOoIGVsIGNhcmRlbmFsIG1vcsOtLCBlcyBjcmV1IHF1ZSBkZSA8YSBo
cmVmPSIvd2lraS9QdWxtb25pYSIgdGl0bGU9IlB1bG1vbmlhIiBjbGFzcz0ibXct
cmVkaXJlY3QiPnB1bG1vbmlhPC9hPiwgcG9jcyBtZXNvcyBkZXNwcsOpcyBkZWwg
Y29tcGxvdCBkZWxzIGNvbmp1cmF0cy4gUHJvYmFibGVtZW50IG5pbmfDuiwgZXhj
ZXB0ZSBlbHMgc2V1cyBmYW1pbGlhcnMsIHBsb3LDoCBsYSBzZXZhIG1vcnQuIEFs
IGNvbnRyYXJpLiBFbHMgY29uc2VsbGVycywgc29icmV0b3QgZWxzIG5vYmxlcywg
aSBlbiBnZW5lcmFsIHRvdHMgZWxzIGRlIGxhIGNvcnQgZmVyZW4gdW4gc29zcGly
LCBhbGktdmlhdHMuIFBlciBmaSBkZXNhcGFyZWl4aWEgZWwgcXVlIGVscyBkb21p
bmF2YSwgZWwgcXXDqCwgc3VwZXJpb3IgYSB0b3RzIGVuIGludGVswrdsaWfDqG5j
aWEgaSB2b2x1bnRhdCwgY29uZHXDr2EgcGVsIHNldSBjb250ZSBsYSBwb2zDrXRp
Y2EgZGUgbCdFc3RhdC48L3A+CjxwPkVzIGRpdSBxdWUgZWwgbWF0ZWl4IHJlaSBM
bHXDrXMgWElJSSwgYXByb3BhbnQtc2UgYSBsYSBjYXDDp2FsZXJhIGRlbCBzZXUg
Z3JhbiBzZXJ2aWRvciwgamEgbW9yaWJ1bmQsIHMnYWxsdW55w6AgYWxsZXVqYXQu
IE1hbGdyYXQgdG90LCBlbCBjYXJkZW5hbCBSaWNoZWxpZXUsIGR1cmFudCAxOCBh
bnlzLCBkZXMgZGVsIDxhIGhyZWY9Ii93aWtpLzE2MjQiIHRpdGxlPSIxNjI0Ij4x
NjI0PC9hPiBmaW5zIGVsIDxhIGhyZWY9Ii93aWtpLzE2NDIiIHRpdGxlPSIxNjQy
Ij4xNjQyPC9hPiwgYW55IGRlIGxhIHNldmEgbW9ydCwgaGF2aWEgdHJlYmFsbGF0
IGFtYiBpbmNyZcOvYmxlIGRlZGljYWNpw7MsIGhhdmlhIHNhbHZhdCBGcmFuw6dh
IGRlIGdyZXVzIHBlcmlsbHMgaSBsJ2hhdmlhIGNvbnZlcnRpdCBlbiB1bmEgbmFj
acOzIHBvZGVyb3NhIGkgdGVtdWRhOyBpIHRvdCBhaXjDsiwgbGx1aXRhbnQgY29u
dHJhIGwnaG9zdGlsaXRhdCBpIGxlcyBjb25qdXJlcyBkZSBkaXN0aW50cyBub2Js
ZXMgcXVlIHZlaWVyZW4gZW4gZWxsIGVsIGRlZmVuc29yIGRlIGwnYXV0b3JpdGF0
IHJlaWFsLiBFbCBzdWNjZcOtIGVsIHRhbWLDqSBjYXJkZW5hbCA8YSBocmVmPSIv
d2lraS9DYXJkZW5hbF9NYXp6YXJpbm8iIHRpdGxlPSJDYXJkZW5hbCBNYXp6YXJp
bm8iIGNsYXNzPSJtdy1yZWRpcmVjdCI+SnVsaW8gTWF6emFyaW5vPC9hPi4gw4lz
IHRhbWLDqSBjb25lZ3V0IHBlbCBzb2JyZW5vbSBkZSA8aT5sJ8OJbWluZW5jZSBy
b3VnZTwvaT4gKCJsJ2VtaW7DqG5jaWEgdmVybWVsbGEiKSwgcGVyIGxlcyB2ZXN0
aWR1cmVzIHBvcnByZXMgZGVscyBjYXJkZW5hbHMuPC9wPgo8aDI+PHNwYW4gY2xh
c3M9ImVkaXRzZWN0aW9uIj5bPGEgaHJlZj0iL3cvaW5kZXgucGhwP3RpdGxlPUNh
cmRlbmFsX1JpY2hlbGlldSZhbXA7YWN0aW9uPWVkaXQmYW1wO3NlY3Rpb249NiIg
dGl0bGU9Ik1vZGlmaWNhIGxhIHNlY2Npw7M6IEJpYmxpb2dyYWZpYSI+bW9kaWZp
Y2E8L2E+XTwvc3Bhbj4gPHNwYW4gY2xhc3M9Im13LWhlYWRsaW5lIiBpZD0iQmli
bGlvZ3JhZmlhIj5CaWJsaW9ncmFmaWE8L3NwYW4+PC9oMj4KPHVsPgo8bGk+Q29s
wrdsZWNjaW9uYWJsZSBFbmNpY2xvcMOoZGlhIEVzdHVkaWFudGlsLCBuw7ptLiAy
MDMsIGFueSBJViwgcMOgZy4gMyAoRGlwb3NpdCBMZWdhbCBNIDMyMDEtMTk2Nik8
L2xpPgo8L3VsPgo8cD48YnIgLz48L3A+CjxoMj48c3BhbiBjbGFzcz0iZWRpdHNl
Y3Rpb24iPls8YSBocmVmPSIvdy9pbmRleC5waHA/dGl0bGU9Q2FyZGVuYWxfUmlj
aGVsaWV1JmFtcDthY3Rpb249ZWRpdCZhbXA7c2VjdGlvbj03IiB0aXRsZT0iTW9k
aWZpY2EgbGEgc2VjY2nDszogVmVnZXUgdGFtYsOpIj5tb2RpZmljYTwvYT5dPC9z
cGFuPiA8c3BhbiBjbGFzcz0ibXctaGVhZGxpbmUiIGlkPSJWZWdldV90YW1iLkMz
LkE5Ij5WZWdldSB0YW1iw6k8L3NwYW4+PC9oMj4KPHVsPgo8bGk+PGEgaHJlZj0i
L3dpa2kvUGF1X2QlMjdBbGFpcyIgdGl0bGU9IlBhdSBkJ0FsYWlzIj5QYXUgZCdB
bGFpczwvYT4uPC9saT4KPC91bD4KPHRhYmxlIHdpZHRoPSIyMzhweCIgY2xhc3M9
Im5vcHJpbnQgdG9jY29sb3VycyIgc3R5bGU9ImNsZWFyOnJpZ2h0OyBmb250LXNp
emU6OTAlOyBtYXJnaW46MCAwIDFlbSAxZW07IGZsb2F0OiByaWdodDsiPgo8dHI+
Cjx0ZD4KPGRpdiBjbGFzcz0iZmxvYXRub25lIj48YSBocmVmPSIvd2lraS9GaXR4
ZXI6Q29tbW9ucy1sb2dvLnN2ZyIgY2xhc3M9ImltYWdlIj48aW1nIGFsdD0iQ29t
bW9ucy1sb2dvLnN2ZyIgc3JjPSJodHRwOi8vdXBsb2FkLndpa2ltZWRpYS5vcmcv
d2lraXBlZGlhL2NvbW1vbnMvdGh1bWIvNC80YS9Db21tb25zLWxvZ28uc3ZnLzM1
cHgtQ29tbW9ucy1sb2dvLnN2Zy5wbmciIHdpZHRoPSIzNSIgaGVpZ2h0PSI0NyIg
Lz48L2E+PC9kaXY+CjwvdGQ+Cjx0ZCBzdHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFs
OyB2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7dGV4dC1hbGlnbjogY2VudGVyOyI+QSA8
c3BhbiBjbGFzcz0icGxhaW5saW5rcyI+PGEgaHJlZj0iaHR0cDovL2NvbW1vbnMu
d2lraW1lZGlhLm9yZy93aWtpL1AlQzMlQTBnaW5hX3ByaW5jaXBhbD91c2VsYW5n
PWNhIiBjbGFzcz0iZXh0ZXJuYWwgdGV4dCIgcmVsPSJub2ZvbGxvdyI+V2lraW1l
ZGlhIENvbW1vbnM8L2E+PC9zcGFuPiBoaSBoYSBjb250aW5ndXQgbXVsdGltw6hk
aWEgcmVsYXRpdSBhOjxiciAvPgo8aT48Yj48c3BhbiBzdHlsZT0iY29sb3I6IzAw
MmJiOCI+PHNwYW4gY2xhc3M9InBsYWlubGlua3MiPjxhIGhyZWY9Imh0dHA6Ly9j
b21tb25zLndpa2ltZWRpYS5vcmcvd2lraS9Bcm1hbmRfSmVhbl9kdV9QbGVzc2lz
LF9DYXJkaW5hbF9SaWNoZWxpZXU/dXNlbGFuZz1jYSIgY2xhc3M9ImV4dGVybmFs
IHRleHQiIHJlbD0ibm9mb2xsb3ciPkNhcmRlbmFsIFJpY2hlbGlldTwvYT48L3Nw
YW4+PC9zcGFuPjwvYj48L2k+PC90ZD4KPC90cj4KPC90YWJsZT4KPHA+PHNwYW4g
Y2xhc3M9IkFCIiBpZD0iQUItaW50ZXJ3aWtpLWRlIiBzdHlsZT0iZGlzcGxheTpu
b25lOyI+PC9zcGFuPjwvcD4KCgo8IS0tIApOZXdQUCBsaW1pdCByZXBvcnQKUHJl
cHJvY2Vzc29yIG5vZGUgY291bnQ6IDIzMzgvMTAwMDAwMApQb3N0LWV4cGFuZCBp
bmNsdWRlIHNpemU6IDc4NjQvMjA0ODAwMCBieXRlcwpUZW1wbGF0ZSBhcmd1bWVu
dCBzaXplOiAxODE1LzIwNDgwMDAgYnl0ZXMKRXhwZW5zaXZlIHBhcnNlciBmdW5j
dGlvbiBjb3VudDogMC81MDAKLS0+Cgo8IS0tIFNhdmVkIGluIHBhcnNlciBjYWNo
ZSB3aXRoIGtleSBjYXdpa2k6cGNhY2hlOmlkaGFzaDo0NjY4Mi0wITEhMCEhY2Eh
NCBhbmQgdGltZXN0YW1wIDIwMTEwMTMwMTgwNjE4IC0tPgo8ZGl2IGNsYXNzPSJw
cmludGZvb3RlciI+Ck9idGluZ3V0IGRlIMKrPGEgaHJlZj0iaHR0cDovL2NhLndp
a2lwZWRpYS5vcmcvd2lraS9DYXJkZW5hbF9SaWNoZWxpZXUiPmh0dHA6Ly9jYS53
aWtpcGVkaWEub3JnL3dpa2kvQ2FyZGVuYWxfUmljaGVsaWV1PC9hPsK7PC9kaXY+
CgkJCQk8IS0tIC9ib2R5dGV4dCAtLT4KCQkJCQkJCQk8IS0tIGNhdGxpbmtzIC0t
PgoJCQkJPGRpdiBpZD0nY2F0bGlua3MnIGNsYXNzPSdjYXRsaW5rcyc+PGRpdiBp
ZD0ibXctbm9ybWFsLWNhdGxpbmtzIj48YSBocmVmPSIvd2lraS9Fc3BlY2lhbDpD
YXRlZ29yaWVzIiB0aXRsZT0iRXNwZWNpYWw6Q2F0ZWdvcmllcyI+Q2F0ZWdvcmll
czwvYT46IDxzcGFuIGRpcj0nbHRyJz48YSBocmVmPSIvd2lraS9DYXRlZ29yaWE6
Q2FyZGVuYWxzIiB0aXRsZT0iQ2F0ZWdvcmlhOkNhcmRlbmFscyI+Q2FyZGVuYWxz
PC9hPjwvc3Bhbj4gfCA8c3BhbiBkaXI9J2x0cic+PGEgaHJlZj0iL3dpa2kvQ2F0
ZWdvcmlhOkhpc3QlQzMlQjJyaWFfZGVfRnJhbiVDMyVBN2EiIHRpdGxlPSJDYXRl
Z29yaWE6SGlzdMOycmlhIGRlIEZyYW7Dp2EiPkhpc3TDsnJpYSBkZSBGcmFuw6dh
PC9hPjwvc3Bhbj4gfCA8c3BhbiBkaXI9J2x0cic+PGEgaHJlZj0iL3dpa2kvQ2F0
ZWdvcmlhOlBvbCVDMyVBRHRpY3NfZnJhbmNlc29zIiB0aXRsZT0iQ2F0ZWdvcmlh
OlBvbMOtdGljcyBmcmFuY2Vzb3MiPlBvbMOtdGljcyBmcmFuY2Vzb3M8L2E+PC9z
cGFuPiB8IDxzcGFuIGRpcj0nbHRyJz48YSBocmVmPSIvd2lraS9DYXRlZ29yaWE6
UHJpbWVyc19taW5pc3RyZXNfZGVfRnJhbiVDMyVBN2EiIHRpdGxlPSJDYXRlZ29y
aWE6UHJpbWVycyBtaW5pc3RyZXMgZGUgRnJhbsOnYSI+UHJpbWVycyBtaW5pc3Ry
ZXMgZGUgRnJhbsOnYTwvYT48L3NwYW4+IHwgPHNwYW4gZGlyPSdsdHInPjxhIGhy
ZWY9Ii93aWtpL0NhdGVnb3JpYTpSZWxpZ2lvc29zX2ZyYW5jZXNvcyIgdGl0bGU9
IkNhdGVnb3JpYTpSZWxpZ2lvc29zIGZyYW5jZXNvcyI+UmVsaWdpb3NvcyBmcmFu
Y2Vzb3M8L2E+PC9zcGFuPjwvZGl2PjxkaXYgaWQ9Im13LWhpZGRlbi1jYXRsaW5r
cyIgY2xhc3M9Im13LWhpZGRlbi1jYXRzLWhpZGRlbiI+Q2F0ZWdvcmlhIG9jdWx0
YTogPHNwYW4gZGlyPSdsdHInPjxhIGhyZWY9Ii93aWtpL0NhdGVnb3JpYTpBcnRp
Y2xlc19ib25zX2VuX2FsZW1hbnkiIHRpdGxlPSJDYXRlZ29yaWE6QXJ0aWNsZXMg
Ym9ucyBlbiBhbGVtYW55Ij5BcnRpY2xlcyBib25zIGVuIGFsZW1hbnk8L2E+PC9z
cGFuPjwvZGl2PjwvZGl2PgkJCQk8IS0tIC9jYXRsaW5rcyAtLT4KCQkJCQkJCQkJ
CQkJPGRpdiBjbGFzcz0idmlzdWFsQ2xlYXIiPjwvZGl2PgoJCQk8L2Rpdj4KCQkJ
PCEtLSAvYm9keUNvbnRlbnQgLS0+CgkJPC9kaXY+CgkJPCEtLSAvY29udGVudCAt
LT4KCQk8IS0tIGhlYWRlciAtLT4KCQk8ZGl2IGlkPSJtdy1oZWFkIiBjbGFzcz0i
bm9wcmludCI+CgkJCQo8IS0tIDAgLS0+CjxkaXYgaWQ9InAtcGVyc29uYWwiIGNs
YXNzPSIiPgoJPGg1PkVpbmVzIHBlcnNvbmFsczwvaDU+Cgk8dWw+CgkJCQkJPGxp
ICBpZD0icHQtbG9naW4iPjxhIGhyZWY9Ii93L2luZGV4LnBocD90aXRsZT1Fc3Bl
Y2lhbDpSZWdpc3RyZV9pX2VudHJhZGEmYW1wO3JldHVybnRvPUNhcmRlbmFsX1Jp
Y2hlbGlldSIgdGl0bGU9IlVzIGFuaW1lbSBhIHJlZ2lzdHJhci12b3MsIHBlcsOy
IG5vIMOpcyBvYmxpZ2F0b3JpLiBbb10iIGFjY2Vzc2tleT0ibyI+SW5pY2lhIHVu
YSBzZXNzacOzIC8gY3JlYSB1biBjb21wdGU8L2E+PC9saT4KCQkJPC91bD4KPC9k
aXY+Cgo8IS0tIC8wIC0tPgoJCQk8ZGl2IGlkPSJsZWZ0LW5hdmlnYXRpb24iPgoJ
CQkJCjwhLS0gMCAtLT4KPGRpdiBpZD0icC1uYW1lc3BhY2VzIiBjbGFzcz0idmVj
dG9yVGFicyI+Cgk8aDU+RXNwYWlzIGRlIG5vbXM8L2g1PgoJPHVsPgoJCQkJCTxs
aSAgaWQ9ImNhLW5zdGFiLW1haW4iIGNsYXNzPSJzZWxlY3RlZCI+PGEgaHJlZj0i
L3dpa2kvQ2FyZGVuYWxfUmljaGVsaWV1IiAgdGl0bGU9IlZlZ2V1IGVsIGNvbnRp
bmd1dCBkZSBsYSBww6BnaW5hLiBbY10iIGFjY2Vzc2tleT0iYyI+PHNwYW4+UMOg
Z2luYTwvc3Bhbj48L2E+PC9saT4KCQkJCQk8bGkgIGlkPSJjYS10YWxrIiBjbGFz
cz0ibmV3Ij48YSBocmVmPSIvdy9pbmRleC5waHA/dGl0bGU9RGlzY3Vzc2klQzMl
QjM6Q2FyZGVuYWxfUmljaGVsaWV1JmFtcDthY3Rpb249ZWRpdCZhbXA7cmVkbGlu
az0xIiAgdGl0bGU9IkRpc2N1c3Npw7Mgc29icmUgZWwgY29udGluZ3V0IGQmIzAz
OTthcXVlc3RhIHDDoGdpbmEuIFt0XSIgYWNjZXNza2V5PSJ0Ij48c3Bhbj5EaXNj
dXNzacOzPC9zcGFuPjwvYT48L2xpPgoJCQk8L3VsPgo8L2Rpdj4KCjwhLS0gLzAg
LS0+Cgo8IS0tIDEgLS0+CjxkaXYgaWQ9InAtdmFyaWFudHMiIGNsYXNzPSJ2ZWN0
b3JNZW51IGVtcHR5UG9ydGxldCI+CgkJPGg1PjxzcGFuPlZhcmlhbnRzPC9zcGFu
PjxhIGhyZWY9IiMiPjwvYT48L2g1PgoJPGRpdiBjbGFzcz0ibWVudSI+CgkJPHVs
PgoJCQkJCTwvdWw+Cgk8L2Rpdj4KPC9kaXY+Cgo8IS0tIC8xIC0tPgoJCQk8L2Rp
dj4KCQkJPGRpdiBpZD0icmlnaHQtbmF2aWdhdGlvbiI+CgkJCQkKPCEtLSAwIC0t
Pgo8ZGl2IGlkPSJwLXZpZXdzIiBjbGFzcz0idmVjdG9yVGFicyI+Cgk8aDU+Vmlz
dGVzPC9oNT4KCTx1bD4KCQkJCQk8bGkgaWQ9ImNhLXZpZXciIGNsYXNzPSJzZWxl
Y3RlZCI+PGEgaHJlZj0iL3dpa2kvQ2FyZGVuYWxfUmljaGVsaWV1IiA+PHNwYW4+
TW9zdHJhPC9zcGFuPjwvYT48L2xpPgoJCQkJCTxsaSBpZD0iY2EtZWRpdCI+PGEg
aHJlZj0iL3cvaW5kZXgucGhwP3RpdGxlPUNhcmRlbmFsX1JpY2hlbGlldSZhbXA7
YWN0aW9uPWVkaXQiICB0aXRsZT0iUG9kZXUgbW9kaWZpY2FyIGFxdWVzdGEgcMOg
Z2luYS4gU2kgdXMgcGxhdSwgcHJldmlzdWFsaXR6ZXUtbGEgYWJhbnMgZGUgZGVz
YXIuIFtlXSIgYWNjZXNza2V5PSJlIj48c3Bhbj5Nb2RpZmljYTwvc3Bhbj48L2E+
PC9saT4KCQkJCQk8bGkgaWQ9ImNhLWhpc3RvcnkiIGNsYXNzPSJjb2xsYXBzaWJs
ZSAiPjxhIGhyZWY9Ii93L2luZGV4LnBocD90aXRsZT1DYXJkZW5hbF9SaWNoZWxp
ZXUmYW1wO2FjdGlvbj1oaXN0b3J5IiAgdGl0bGU9IlZlcnNpb25zIGFudGlndWVz
IGQmIzAzOTthcXVlc3RhIHDDoGdpbmEuIFtoXSIgYWNjZXNza2V5PSJoIj48c3Bh
bj5Nb3N0cmEgbCdoaXN0b3JpYWw8L3NwYW4+PC9hPjwvbGk+CgkJCTwvdWw+Cjwv
ZGl2PgoKPCEtLSAvMCAtLT4KCjwhLS0gMSAtLT4KPGRpdiBpZD0icC1jYWN0aW9u
cyIgY2xhc3M9InZlY3Rvck1lbnUgZW1wdHlQb3J0bGV0Ij4KCTxoNT48c3Bhbj5B
Y2Npb25zPC9zcGFuPjxhIGhyZWY9IiMiPjwvYT48L2g1PgoJPGRpdiBjbGFzcz0i
bWVudSI+CgkJPHVsPgoJCQkJCTwvdWw+Cgk8L2Rpdj4KPC9kaXY+Cgo8IS0tIC8x
IC0tPgoKPCEtLSAyIC0tPgo8ZGl2IGlkPSJwLXNlYXJjaCI+Cgk8aDU+PGxhYmVs
IGZvcj0ic2VhcmNoSW5wdXQiPkNlcmNhPC9sYWJlbD48L2g1PgoJPGZvcm0gYWN0
aW9uPSIvdy9pbmRleC5waHAiIGlkPSJzZWFyY2hmb3JtIj4KCQk8aW5wdXQgdHlw
ZT0naGlkZGVuJyBuYW1lPSJ0aXRsZSIgdmFsdWU9IkVzcGVjaWFsOkNlcmNhIi8+
CgkJCQk8ZGl2IGlkPSJzaW1wbGVTZWFyY2giPgoJCQk8aW5wdXQgaWQ9InNlYXJj
aElucHV0IiBuYW1lPSJzZWFyY2giIHR5cGU9InRleHQiICB0aXRsZT0iQ2VyY2Eg
YSBsYSBWaXF1aXDDqGRpYSBbZl0iIGFjY2Vzc2tleT0iZiIgIHZhbHVlPSIiIC8+
CgkJCTxidXR0b24gaWQ9InNlYXJjaEJ1dHRvbiIgdHlwZT0nc3VibWl0JyBuYW1l
PSdidXR0b24nICB0aXRsZT0iQ2VyY2EgYSBsZXMgcMOgZ2luZXMgYXF1ZXN0IHRl
eHQiPjxpbWcgc3JjPSJodHRwOi8vYml0cy53aWtpbWVkaWEub3JnL3NraW5zLTEu
NS92ZWN0b3IvaW1hZ2VzL3NlYXJjaC1sdHIucG5nPzI4My0xOSIgYWx0PSJDZXJj
YSIgLz48L2J1dHRvbj4KCQk8L2Rpdj4KCQkJPC9mb3JtPgo8L2Rpdj4KCjwhLS0g
LzIgLS0+CgkJCTwvZGl2PgoJCTwvZGl2PgoJCTwhLS0gL2hlYWRlciAtLT4KCQk8
IS0tIHBhbmVsIC0tPgoJCQk8ZGl2IGlkPSJtdy1wYW5lbCIgY2xhc3M9Im5vcHJp
bnQiPgoJCQkJPCEtLSBsb2dvIC0tPgoJCQkJCTxkaXYgaWQ9InAtbG9nbyI+PGEg
c3R5bGU9ImJhY2tncm91bmQtaW1hZ2U6IHVybChodHRwOi8vdXBsb2FkLndpa2lt
ZWRpYS5vcmcvd2lraXBlZGlhL2NvbW1vbnMvMy8zNC9XaWtpcGVkaWEtbG9nby12
Mi1jYS5wbmcpOyIgaHJlZj0iL3dpa2kvUG9ydGFkYSIgIHRpdGxlPSJWZWdldSBs
YSBQb3J0YWRhIj48L2E+PC9kaXY+CgkJCQk8IS0tIC9sb2dvIC0tPgoJCQkJCjwh
LS0gbmF2aWdhdGlvbiAtLT4KPGRpdiBjbGFzcz0icG9ydGFsIiBpZD0ncC1uYXZp
Z2F0aW9uJz4KCTxoNT5OYXZlZ2FjacOzPC9oNT4KCTxkaXYgY2xhc3M9ImJvZHki
PgoJCQkJPHVsPgoJCQkJCTxsaSBpZD0ibi1tYWlucGFnZSI+PGEgaHJlZj0iL3dp
a2kvUG9ydGFkYSIgdGl0bGU9IlZpc2l0ZXUgbGEgcMOgZ2luYSBwcmluY2lwYWwu
IFt6XSIgYWNjZXNza2V5PSJ6Ij5Qb3J0YWRhPC9hPjwvbGk+CgkJCQkJPGxpIGlk
PSJuLXBvcnRhbHRlbWF0aWMiPjxhIGhyZWY9Ii93aWtpL1BvcnRhbDpQb3J0YWRh
Ij5Qb3J0YWxzIHRlbcOgdGljczwvYT48L2xpPgoJCQkJCTxsaSBpZD0ibi1yYW5k
b21wYWdlIj48YSBocmVmPSIvd2lraS9Fc3BlY2lhbDpBcnRpY2xlX2FsZWF0b3Jp
IiB0aXRsZT0iVsOpcyBhIHVuYSBww6BnaW5hIGFsZWF0w7JyaWEuIFt4XSIgYWNj
ZXNza2V5PSJ4Ij5BcnRpY2xlIGEgbCdhdHphcjwvYT48L2xpPgoJCQkJCTxsaSBp
ZD0ibi1xdWFsaXRhdCI+PGEgaHJlZj0iL3dpa2kvVmlxdWlwJUMzJUE4ZGlhOkFy
dGljbGVzX2RlX3F1YWxpdGF0Ij5BcnRpY2xlcyBkZSBxdWFsaXRhdDwvYT48L2xp
PgoJCQkJCTxsaSBpZD0ibi1jdXJyZW50ZXZlbnRzIj48YSBocmVmPSIvd2lraS9W
aXF1aXAlQzMlQThkaWE6QWN0dWFsaXRhdCIgdGl0bGU9IlBlciB0cm9iYXIgaW5m
b3JtYWNpw7MgZ2VuZXJhbCBzb2JyZSBsJiMwMzk7YWN0dWFsaXRhdC4iPkFjdHVh
bGl0YXQ8L2E+PC9saT4KCQkJCTwvdWw+CgkJCTwvZGl2Pgo8L2Rpdj4KCjwhLS0g
L25hdmlnYXRpb24gLS0+Cgo8IS0tIFNFQVJDSCAtLT4KCjwhLS0gL1NFQVJDSCAt
LT4KCjwhLS0gY29tdW5pdGF0IC0tPgo8ZGl2IGNsYXNzPSJwb3J0YWwiIGlkPSdw
LWNvbXVuaXRhdCc+Cgk8aDU+Y29tdW5pdGF0PC9oNT4KCTxkaXYgY2xhc3M9ImJv
ZHkiPgoJCQkJPHVsPgoJCQkJCTxsaSBpZD0ibi1wb3J0YWwiPjxhIGhyZWY9Ii93
aWtpL1ZpcXVpcCVDMyVBOGRpYTpQb3J0YWwiIHRpdGxlPSJTb2JyZSBlbCBwcm9q
ZWN0ZSwgcXXDqCBwb2RldSBmZXIsIG9uIHBvZGV1IHRyb2JhciBjb3Nlcy4iPlBv
cnRhbCB2aXF1aXBlZGlzdGE8L2E+PC9saT4KCQkJCQk8bGkgaWQ9Im4tcmVjZW50
Y2hhbmdlcyI+PGEgaHJlZj0iL3dpa2kvRXNwZWNpYWw6Q2FudmlzX3JlY2VudHMi
IHRpdGxlPSJMYSBsbGlzdGEgZGUgY2FudmlzIHJlY2VudHMgYSBsYSB3aWtpLiBb
cl0iIGFjY2Vzc2tleT0iciI+Q2FudmlzIHJlY2VudHM8L2E+PC9saT4KCQkJCQk8
bGkgaWQ9Im4tTGEtdGF2ZXJuYSI+PGEgaHJlZj0iL3dpa2kvVmlxdWlwJUMzJUE4
ZGlhOkxhX3RhdmVybmEiPkxhIHRhdmVybmE8L2E+PC9saT4KCQkJCQk8bGkgaWQ9
Im4tQ29udGFjdGUiPjxhIGhyZWY9Ii93aWtpL1ZpcXVpcCVDMyVBOGRpYTpDb250
YWN0ZSI+Q29udGFjdGU8L2E+PC9saT4KCQkJCQk8bGkgaWQ9Im4tQ2FuYWwtSVJD
Ij48YSBocmVmPSJpcmM6Ly9pcmMuZnJlZW5vZGUubmV0L3dpa2lwZWRpYS1jYSI+
Q2FuYWwgSVJDPC9hPjwvbGk+CgkJCQkJPGxpIGlkPSJuLXNpdGVzdXBwb3J0Ij48
YSBocmVmPSJodHRwOi8vd2lraW1lZGlhZm91bmRhdGlvbi5vcmcvd2lraS9TcGVj
aWFsOkxhbmRpbmdjaGVjaz9sYW5kaW5nX3BhZ2U9V01GSkEwODUmYW1wO2xhbmd1
YWdlPWNhJmFtcDt1dG1fc291cmNlPWRvbmF0ZSZhbXA7dXRtX21lZGl1bT1zaWRl
YmFyJmFtcDt1dG1fY2FtcGFpZ249MjAxMDEyMDRTQjAwMiIgdGl0bGU9IkFqdWRh
dS1ub3MiPkRvbmF0aXVzPC9hPjwvbGk+CgkJCQkJPGxpIGlkPSJuLWhlbHAiPjxh
IGhyZWY9Ii93aWtpL1ZpcXVpcCVDMyVBOGRpYTpBanVkYSIgdGl0bGU9IkVsIGxs
b2MgcGVyIGVzYnJpbmFyLiI+QWp1ZGE8L2E+PC9saT4KCQkJCTwvdWw+CgkJCTwv
ZGl2Pgo8L2Rpdj4KCjwhLS0gL2NvbXVuaXRhdCAtLT4KCjwhLS0gY29sbC1wcmlu
dF9leHBvcnQgLS0+CjxkaXYgY2xhc3M9InBvcnRhbCIgaWQ9J3AtY29sbC1wcmlu
dF9leHBvcnQnPgoJPGg1PkltcHJpbWVpeC9leHBvcnRhPC9oNT4KCTxkaXYgY2xh
c3M9ImJvZHkiPgoJCQkJPHVsIGlkPSJjb2xsZWN0aW9uUG9ydGxldExpc3QiPjxs
aSBpZD0iY29sbC1jcmVhdGVfYV9ib29rIj48YSBocmVmPSIvdy9pbmRleC5waHA/
dGl0bGU9RXNwZWNpYWw6Qm9vayZhbXA7Ym9va2NtZD1ib29rX2NyZWF0b3ImYW1w
O3JlZmVyZXI9Q2FyZGVuYWwrUmljaGVsaWV1IiB0aXRsZT0iQ3JlYSB1biBsbGli
cmUgbyB1bmEgY29swrdsZWNjacOzIGRlIHDDoGdpbmVzIiByZWw9Im5vZm9sbG93
Ij5DcmVhIHVuIGxsaWJyZTwvYT48L2xpPjxsaSBpZD0iY29sbC1kb3dubG9hZC1h
cy1ybCI+PGEgaHJlZj0iL3cvaW5kZXgucGhwP3RpdGxlPUVzcGVjaWFsOkJvb2sm
YW1wO2Jvb2tjbWQ9cmVuZGVyX2FydGljbGUmYW1wO2FydHRpdGxlPUNhcmRlbmFs
K1JpY2hlbGlldSZhbXA7b2xkaWQ9Njg0NjcwOSZhbXA7d3JpdGVyPXJsIiB0aXRs
ZT0iRGVzY2FycmVnYSB1bmEgdmVyc2nDsyBQREYgZCdhcXVlc3RhIHDDoGdpbmEg
d2lraSIgcmVsPSJub2ZvbGxvdyI+RGVzY2FycmVnYSBjb20gUERGPC9hPjwvbGk+
PGxpIGlkPSJ0LXByaW50Ij48YSBocmVmPSIvdy9pbmRleC5waHA/dGl0bGU9Q2Fy
ZGVuYWxfUmljaGVsaWV1JmFtcDtwcmludGFibGU9eWVzIiB0aXRsZT0iVmVyc2nD
syBwZXIgYSBpbXByZXNzacOzIGQmIzAzOTthcXVlc3RhIHDDoGdpbmEgW3BdIiBh
Y2Nlc3NrZXk9InAiPlZlcnNpw7MgcGVyIGEgaW1wcmVzc29yYTwvYT48L2xpPjwv
dWw+CQkJPC9kaXY+CjwvZGl2PgoKPCEtLSAvY29sbC1wcmludF9leHBvcnQgLS0+
Cgo8IS0tIFRPT0xCT1ggLS0+CjxkaXYgY2xhc3M9InBvcnRhbCIgaWQ9InAtdGIi
PgoJPGg1PkVpbmVzPC9oNT4KCTxkaXYgY2xhc3M9ImJvZHkiPgoJCTx1bD4KCQkJ
CQk8bGkgaWQ9InQtd2hhdGxpbmtzaGVyZSI+PGEgaHJlZj0iL3dpa2kvRXNwZWNp
YWw6RW5sbGElQzMlQTdvcy9DYXJkZW5hbF9SaWNoZWxpZXUiIHRpdGxlPSJMbGlz
dGEgZGUgdG90ZXMgbGVzIHDDoGdpbmVzIHZpcXVpIHF1ZSBlbmxsYWNlbiBhY8Ot
LiBbal0iIGFjY2Vzc2tleT0iaiI+UXXDqCBoaSBlbmxsYcOnYTwvYT48L2xpPgoJ
CQkJCQk8bGkgaWQ9InQtcmVjZW50Y2hhbmdlc2xpbmtlZCI+PGEgaHJlZj0iL3dp
a2kvRXNwZWNpYWw6U2VndWltZW50L0NhcmRlbmFsX1JpY2hlbGlldSIgdGl0bGU9
IkNhbnZpcyByZWNlbnRzIGEgcMOgZ2luZXMgcXVlIGVubGxhY2VuIGFtYiBhcXVl
c3RhIHDDoGdpbmEuIFtrXSIgYWNjZXNza2V5PSJrIj5TZWd1aW1lbnQgZCdlbmxs
YcOnb3M8L2E+PC9saT4KCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJ
CQkJCQkJCQkJPGxpIGlkPSJ0LXNwZWNpYWxwYWdlcyI+PGEgaHJlZj0iL3dpa2kv
RXNwZWNpYWw6UCVDMyVBMGdpbmVzX2VzcGVjaWFscyIgdGl0bGU9IkxsaXN0YSBk
ZSB0b3RlcyBsZXMgcMOgZ2luZXMgZXNwZWNpYWxzLiBbcV0iIGFjY2Vzc2tleT0i
cSI+UMOgZ2luZXMgZXNwZWNpYWxzPC9hPjwvbGk+CgkJCQkJCQkJCQkJPGxpIGlk
PSJ0LXBlcm1hbGluayI+PGEgaHJlZj0iL3cvaW5kZXgucGhwP3RpdGxlPUNhcmRl
bmFsX1JpY2hlbGlldSZhbXA7b2xkaWQ9Njg0NjcwOSIgdGl0bGU9IkVubGxhw6cg
cGVybWFuZW50IGEgYXF1ZXN0YSB2ZXJzacOzIGRlIGxhIHDDoGdpbmEiPkVubGxh
w6cgcGVybWFuZW50PC9hPjwvbGk+CgkJCQk8bGkgaWQ9InQtY2l0ZSI+PGEgaHJl
Zj0iL3cvaW5kZXgucGhwP3RpdGxlPUVzcGVjaWFsOkNpdGF1JmFtcDtwYWdlPUNh
cmRlbmFsX1JpY2hlbGlldSZhbXA7aWQ9Njg0NjcwOSIgdGl0bGU9IkluZm9ybWF0
aW9uIG9uIGhvdyB0byBjaXRlIHRoaXMgcGFnZSI+Q2l0YXUgYXF1ZXN0IGFydGlj
bGU8L2E+PC9saT4JCTwvdWw+Cgk8L2Rpdj4KPC9kaXY+Cgo8IS0tIC9UT09MQk9Y
IC0tPgoKPCEtLSBMQU5HVUFHRVMgLS0+CjxkaXYgY2xhc3M9InBvcnRhbCIgaWQ9
InAtbGFuZyI+Cgk8aDU+RW4gYWx0cmVzIGxsZW5nw7xlczwvaDU+Cgk8ZGl2IGNs
YXNzPSJib2R5Ij4KCQk8dWw+CgkJCQkJPGxpIGNsYXNzPSJpbnRlcndpa2ktYWxz
Ij48YSBocmVmPSJodHRwOi8vYWxzLndpa2lwZWRpYS5vcmcvd2lraS9Bcm1hbmRf
SmVhbl9kdV9QbGVzc2lzXyhIZXJ6b2dfdm9uX1JpY2hlbGlldSkiIHRpdGxlPSJB
cm1hbmQgSmVhbiBkdSBQbGVzc2lzIChIZXJ6b2cgdm9uIFJpY2hlbGlldSkiPkFs
ZW1hbm5pc2NoPC9hPjwvbGk+CgkJCQkJPGxpIGNsYXNzPSJpbnRlcndpa2ktYXIi
PjxhIGhyZWY9Imh0dHA6Ly9hci53aWtpcGVkaWEub3JnL3dpa2kvJUQ4JUIxJUQ5
JThBJUQ4JUI0JUQ5JThBJUQ5JTg0JUQ5JThBJUQ5JTg4IiB0aXRsZT0i2LHZiti0
2YrZhNmK2YgiPtin2YTYudix2KjZitipPC9hPjwvbGk+CgkJCQkJPGxpIGNsYXNz
PSJpbnRlcndpa2ktYXN0Ij48YSBocmVmPSJodHRwOi8vYXN0Lndpa2lwZWRpYS5v
cmcvd2lraS9SaWNoZWxpZXUiIHRpdGxlPSJSaWNoZWxpZXUiPkFzdHVyaWFudTwv
YT48L2xpPgoJCQkJCTxsaSBjbGFzcz0iaW50ZXJ3aWtpLWF6Ij48YSBocmVmPSJo
dHRwOi8vYXoud2lraXBlZGlhLm9yZy93aWtpL0thcmRpbmFsX1JpJUM1JTlGZWx5
ZSIgdGl0bGU9IkthcmRpbmFsIFJpxZ9lbHllIj5BesmZcmJheWNhbmNhPC9hPjwv
bGk+CgkJCQkJPGxpIGNsYXNzPSJpbnRlcndpa2ktYmUteC1vbGQiPjxhIGhyZWY9
Imh0dHA6Ly9iZS14LW9sZC53aWtpcGVkaWEub3JnL3dpa2kvJUQwJTlBJUQwJUIw
JUQxJTgwJUQwJUI0JUQxJThCJUQwJUJEJUQwJUIwJUQwJUJCXyVEMCVBMCVEMSU4
QiVEMSU4OCVEMSU4RCVEMCVCQiVEMSU4QyVEMSU5MSIgdGl0bGU9ItCa0LDRgNC0
0YvQvdCw0Lsg0KDRi9GI0Y3Qu9GM0ZEiPtCR0LXQu9Cw0YDRg9GB0LrQsNGPICjR
gtCw0YDQsNGI0LrQtdCy0ZbRhtCwKTwvYT48L2xpPgoJCQkJCTxsaSBjbGFzcz0i
aW50ZXJ3aWtpLWJnIj48YSBocmVmPSJodHRwOi8vYmcud2lraXBlZGlhLm9yZy93
aWtpLyVEMCU5MCVEMSU4MCVEMCVCQyVEMCVCMCVEMCVCRF8lRDAlOTYlRDAlQjAl
RDAlQkRfJUQwJUI0JUQxJThFXyVEMCU5RiVEMCVCQiVEMCVCNSVEMSU4MSVEMCVC
OF8lRDAlQjQlRDElOEMlRDAlQkVfJUQwJUEwJUQwJUI4JUQxJTg4JUQwJUI1JUQw
JUJCJUQxJThDJUQwJUJFIiB0aXRsZT0i0JDRgNC80LDQvSDQltCw0L0g0LTRjiDQ
n9C70LXRgdC4INC00YzQviDQoNC40YjQtdC70YzQviI+0JHRitC70LPQsNGA0YHQ
utC4PC9hPjwvbGk+CgkJCQkJPGxpIGNsYXNzPSJpbnRlcndpa2ktY3MiPjxhIGhy
ZWY9Imh0dHA6Ly9jcy53aWtpcGVkaWEub3JnL3dpa2kvQXJtYW5kLUplYW5fZHVf
UGxlc3Npc19kZV9SaWNoZWxpZXUiIHRpdGxlPSJBcm1hbmQtSmVhbiBkdSBQbGVz
c2lzIGRlIFJpY2hlbGlldSI+xIxlc2t5PC9hPjwvbGk+CgkJCQkJPGxpIGNsYXNz
PSJpbnRlcndpa2ktZGEiPjxhIGhyZWY9Imh0dHA6Ly9kYS53aWtpcGVkaWEub3Jn
L3dpa2kvQXJtYW5kLUplYW5fZHVfUGxlc3Npc19kZV9SaWNoZWxpZXUiIHRpdGxl
PSJBcm1hbmQtSmVhbiBkdSBQbGVzc2lzIGRlIFJpY2hlbGlldSI+RGFuc2s8L2E+
PC9saT4KCQkJCQk8bGkgY2xhc3M9ImludGVyd2lraS1kZSI+PGEgaHJlZj0iaHR0
cDovL2RlLndpa2lwZWRpYS5vcmcvd2lraS9Bcm1hbmQtSmVhbl9kdV9QbGVzc2lz
LF9kdWNfZGVfUmljaGVsaWV1IiB0aXRsZT0iQXJtYW5kLUplYW4gZHUgUGxlc3Np
cywgZHVjIGRlIFJpY2hlbGlldSI+RGV1dHNjaDwvYT48L2xpPgoJCQkJCTxsaSBj
bGFzcz0iaW50ZXJ3aWtpLWVuIj48YSBocmVmPSJodHRwOi8vZW4ud2lraXBlZGlh
Lm9yZy93aWtpL0NhcmRpbmFsX1JpY2hlbGlldSIgdGl0bGU9IkNhcmRpbmFsIFJp
Y2hlbGlldSI+RW5nbGlzaDwvYT48L2xpPgoJCQkJCTxsaSBjbGFzcz0iaW50ZXJ3
aWtpLWVvIj48YSBocmVmPSJodHRwOi8vZW8ud2lraXBlZGlhLm9yZy93aWtpL0Fy
bWFuZF9KZWFuX2R1X1BsZXNzaXNfZGVfUmljaGVsaWV1IiB0aXRsZT0iQXJtYW5k
IEplYW4gZHUgUGxlc3NpcyBkZSBSaWNoZWxpZXUiPkVzcGVyYW50bzwvYT48L2xp
PgoJCQkJCTxsaSBjbGFzcz0iaW50ZXJ3aWtpLWVzIj48YSBocmVmPSJodHRwOi8v
ZXMud2lraXBlZGlhLm9yZy93aWtpL0NhcmRlbmFsX1JpY2hlbGlldSIgdGl0bGU9
IkNhcmRlbmFsIFJpY2hlbGlldSI+RXNwYcOxb2w8L2E+PC9saT4KCQkJCQk8bGkg
Y2xhc3M9ImludGVyd2lraS1ldCI+PGEgaHJlZj0iaHR0cDovL2V0Lndpa2lwZWRp
YS5vcmcvd2lraS9LYXJkaW5hbF9SaWNoZWxpZXUiIHRpdGxlPSJLYXJkaW5hbCBS
aWNoZWxpZXUiPkVlc3RpPC9hPjwvbGk+CgkJCQkJPGxpIGNsYXNzPSJpbnRlcndp
a2ktZXUiPjxhIGhyZWY9Imh0dHA6Ly9ldS53aWtpcGVkaWEub3JnL3dpa2kvUmlj
aGVsaWV1X2thcmRpbmFsYSIgdGl0bGU9IlJpY2hlbGlldSBrYXJkaW5hbGEiPkV1
c2thcmE8L2E+PC9saT4KCQkJCQk8bGkgY2xhc3M9ImludGVyd2lraS1mYSI+PGEg
aHJlZj0iaHR0cDovL2ZhLndpa2lwZWRpYS5vcmcvd2lraS8lREElQTklRDglQTcl
RDglQjElRDglQUYlREIlOEMlRDklODYlRDglQTclRDklODRfJUQ4JUIxJURCJThD
JUQ4JUI0JUQ5JTg0JURCJThDJUQ5JTg4IiB0aXRsZT0i2qnYp9ix2K/bjNmG2KfZ
hCDYsduM2LTZhNuM2YgiPtmB2KfYsdiz24w8L2E+PC9saT4KCQkJCQk8bGkgY2xh
c3M9ImludGVyd2lraS1maSI+PGEgaHJlZj0iaHR0cDovL2ZpLndpa2lwZWRpYS5v
cmcvd2lraS9LYXJkaW5hYWxpX1JpY2hlbGlldSIgdGl0bGU9IkthcmRpbmFhbGkg
UmljaGVsaWV1Ij5TdW9taTwvYT48L2xpPgoJCQkJCTxsaSBjbGFzcz0iaW50ZXJ3
aWtpLWZyIj48YSBocmVmPSJodHRwOi8vZnIud2lraXBlZGlhLm9yZy93aWtpL0Fy
bWFuZF9KZWFuX2R1X1BsZXNzaXNfZGVfUmljaGVsaWV1IiB0aXRsZT0iQXJtYW5k
IEplYW4gZHUgUGxlc3NpcyBkZSBSaWNoZWxpZXUiPkZyYW7Dp2FpczwvYT48L2xp
PgoJCQkJCTxsaSBjbGFzcz0iaW50ZXJ3aWtpLWdhIj48YSBocmVmPSJodHRwOi8v
Z2Eud2lraXBlZGlhLm9yZy93aWtpL0NhaXJkaW4lQzMlQTlhbF9kZV9SaWNoZWxp
ZXUiIHRpdGxlPSJDYWlyZGluw6lhbCBkZSBSaWNoZWxpZXUiPkdhZWlsZ2U8L2E+
PC9saT4KCQkJCQk8bGkgY2xhc3M9ImludGVyd2lraS1nbCI+PGEgaHJlZj0iaHR0
cDovL2dsLndpa2lwZWRpYS5vcmcvd2lraS9DYXJkZWFsX1JpY2hlbGlldSIgdGl0
bGU9IkNhcmRlYWwgUmljaGVsaWV1Ij5HYWxlZ288L2E+PC9saT4KCQkJCQk8bGkg
Y2xhc3M9ImludGVyd2lraS1oZSI+PGEgaHJlZj0iaHR0cDovL2hlLndpa2lwZWRp
YS5vcmcvd2lraS8lRDclOTQlRDclQTclRDclQTglRDclOTMlRDclOTklRDclQTAl
RDclOUNfJUQ3JUE4JUQ3JTk5JUQ3JUE5JUQ3JTlDJUQ3JTk5JUQ3JTk5JUQ3JTk0
IiB0aXRsZT0i15TXp9eo15PXmdeg15wg16jXmdep15zXmdeZ15QiPtei15HXqNeZ
16o8L2E+PC9saT4KCQkJCQk8bGkgY2xhc3M9ImludGVyd2lraS1ociI+PGEgaHJl
Zj0iaHR0cDovL2hyLndpa2lwZWRpYS5vcmcvd2lraS9Bcm1hbmRfSmVhbl9kdV9Q
bGVzc2lzLF9rYXJkaW5hbF9SaWNoZWxpZXUiIHRpdGxlPSJBcm1hbmQgSmVhbiBk
dSBQbGVzc2lzLCBrYXJkaW5hbCBSaWNoZWxpZXUiPkhydmF0c2tpPC9hPjwvbGk+
CgkJCQkJPGxpIGNsYXNzPSJpbnRlcndpa2ktaHUiPjxhIGhyZWY9Imh0dHA6Ly9o
dS53aWtpcGVkaWEub3JnL3dpa2kvQXJtYW5kX0plYW5fZHVfUGxlc3Npc19kZV9S
aWNoZWxpZXUiIHRpdGxlPSJBcm1hbmQgSmVhbiBkdSBQbGVzc2lzIGRlIFJpY2hl
bGlldSI+TWFneWFyPC9hPjwvbGk+CgkJCQkJPGxpIGNsYXNzPSJpbnRlcndpa2kt
aHkiPjxhIGhyZWY9Imh0dHA6Ly9oeS53aWtpcGVkaWEub3JnL3dpa2kvJUQ1JThD
JUQ1JUFCJUQ1JUI3JUQ1JUE1JUQ1JUFDJUQ1JUFCJUQ1JUE1IiB0aXRsZT0i1YzV
q9W31aXVrNWr1aUiPtWA1aHVtdWl1oDVpdW2PC9hPjwvbGk+CgkJCQkJPGxpIGNs
YXNzPSJpbnRlcndpa2ktaXMiPjxhIGhyZWY9Imh0dHA6Ly9pcy53aWtpcGVkaWEu
b3JnL3dpa2kvUmljaGVsaWV1X2thcmRpbiVDMyVBMWxpIiB0aXRsZT0iUmljaGVs
aWV1IGthcmRpbsOhbGkiPsONc2xlbnNrYTwvYT48L2xpPgoJCQkJCTxsaSBjbGFz
cz0iaW50ZXJ3aWtpLWl0Ij48YSBocmVmPSJodHRwOi8vaXQud2lraXBlZGlhLm9y
Zy93aWtpL0FybWFuZC1KZWFuX2R1X1BsZXNzaXNfZGVfUmljaGVsaWV1IiB0aXRs
ZT0iQXJtYW5kLUplYW4gZHUgUGxlc3NpcyBkZSBSaWNoZWxpZXUiPkl0YWxpYW5v
PC9hPjwvbGk+CgkJCQkJPGxpIGNsYXNzPSJpbnRlcndpa2ktamEiPjxhIGhyZWY9
Imh0dHA6Ly9qYS53aWtpcGVkaWEub3JnL3dpa2kvJUUzJTgzJUFBJUUzJTgyJUI3
JUUzJTgzJUE1JUUzJTgzJUFBJUUzJTgzJUE1JUUzJTgzJUJDIiB0aXRsZT0i44Oq
44K344Ol44Oq44Ol44O8Ij7ml6XmnKzoqp48L2E+PC9saT4KCQkJCQk8bGkgY2xh
c3M9ImludGVyd2lraS1rYSI+PGEgaHJlZj0iaHR0cDovL2thLndpa2lwZWRpYS5v
cmcvd2lraS8lRTElODMlOTAlRTElODMlQTAlRTElODMlOUIlRTElODMlOTAlRTEl
ODMlOUNfJUUxJTgzJTlGJUUxJTgzJTkwJUUxJTgzJTlDXyVFMSU4MyU5MyVFMSU4
MyU5OCVFMSU4MyVBM18lRTElODMlOUUlRTElODMlOUElRTElODMlOTQlRTElODMl
QTElRTElODMlOThfJUUxJTgzJUEwJUUxJTgzJTk4JUUxJTgzJUE4JUUxJTgzJTk0
JUUxJTgzJTlBJUUxJTgzJTk4JUUxJTgzJTk0IiB0aXRsZT0i4YOQ4YOg4YOb4YOQ
4YOcIOGDn+GDkOGDnCDhg5Phg5jhg6Mg4YOe4YOa4YOU4YOh4YOYIOGDoOGDmOGD
qOGDlOGDmuGDmOGDlCI+4YOl4YOQ4YOg4YOX4YOj4YOa4YOYPC9hPjwvbGk+CgkJ
CQkJPGxpIGNsYXNzPSJpbnRlcndpa2kta28iPjxhIGhyZWY9Imh0dHA6Ly9rby53
aWtpcGVkaWEub3JnL3dpa2kvJUVDJTk1JTg0JUVCJUE1JUI0JUVCJUE3JTlEXyVF
QyU5RSVBNV8lRUIlOTIlQTRfJUVEJTk0JThDJUVCJUEwJTg4JUVDJThCJTlDXyVF
QiU5MyU5Q18lRUIlQTYlQUMlRUMlOEElOTAlRUIlQTYlQUMlRUMlOTklQjgiIHRp
dGxlPSLslYTrpbTrp50g7J6lIOuSpCDtlIzroIjsi5wg65OcIOumrOyKkOumrOyZ
uCI+7ZWc6rWt7Ja0PC9hPjwvbGk+CgkJCQkJPGxpIGNsYXNzPSJpbnRlcndpa2kt
bGEiPjxhIGhyZWY9Imh0dHA6Ly9sYS53aWtpcGVkaWEub3JnL3dpa2kvQXJtYW5k
dXNfSW9hbm5lc19QbGVzc2FldXNfZGVfUmljaGVsaWV1IiB0aXRsZT0iQXJtYW5k
dXMgSW9hbm5lcyBQbGVzc2FldXMgZGUgUmljaGVsaWV1Ij5MYXRpbmE8L2E+PC9s
aT4KCQkJCQk8bGkgY2xhc3M9ImludGVyd2lraS1sYiI+PGEgaHJlZj0iaHR0cDov
L2xiLndpa2lwZWRpYS5vcmcvd2lraS9Bcm1hbmRfSmVhbl9kdV9QbGVzc2lzX2Rl
X1JpY2hlbGlldSIgdGl0bGU9IkFybWFuZCBKZWFuIGR1IFBsZXNzaXMgZGUgUmlj
aGVsaWV1Ij5Mw6t0emVidWVyZ2VzY2g8L2E+PC9saT4KCQkJCQk8bGkgY2xhc3M9
ImludGVyd2lraS1sdCI+PGEgaHJlZj0iaHR0cDovL2x0Lndpa2lwZWRpYS5vcmcv
d2lraS9SaWNoZWxpZXUiIHRpdGxlPSJSaWNoZWxpZXUiPkxpZXR1dmnFszwvYT48
L2xpPgoJCQkJCTxsaSBjbGFzcz0iaW50ZXJ3aWtpLWx2Ij48YSBocmVmPSJodHRw
Oi8vbHYud2lraXBlZGlhLm9yZy93aWtpL0thcmRpbiVDNCU4MWxzX1JpJUM1JUEx
ZWxqJUM0JTkzIiB0aXRsZT0iS2FyZGluxIFscyBSacWhZWxqxJMiPkxhdHZpZcWh
dTwvYT48L2xpPgoJCQkJCTxsaSBjbGFzcz0iaW50ZXJ3aWtpLW1rIj48YSBocmVm
PSJodHRwOi8vbWsud2lraXBlZGlhLm9yZy93aWtpLyVEMCU5MCVEMSU4MCVEMCVC
QyVEMCVCMCVEMCVCRF8lRDAlOTYlRDAlQjAlRDAlQkRfJUQwJUI0JUQwJUI4XyVE
MCU5RiVEMCVCQiVEMCVCNSVEMSU4MSVEMCVCOF8lRDAlQjQlRDAlQjVfJUQwJUEw
JUQwJUI4JUQxJTg4JUQwJUI1JUQwJUJCJUQxJTk4JUQwJUI1IiB0aXRsZT0i0JDR
gNC80LDQvSDQltCw0L0g0LTQuCDQn9C70LXRgdC4INC00LUg0KDQuNGI0LXQu9GY
0LUiPtCc0LDQutC10LTQvtC90YHQutC4PC9hPjwvbGk+CgkJCQkJPGxpIGNsYXNz
PSJpbnRlcndpa2ktbmwiPjxhIGhyZWY9Imh0dHA6Ly9ubC53aWtpcGVkaWEub3Jn
L3dpa2kvS2FyZGluYWFsX2RlX1JpY2hlbGlldSIgdGl0bGU9IkthcmRpbmFhbCBk
ZSBSaWNoZWxpZXUiPk5lZGVybGFuZHM8L2E+PC9saT4KCQkJCQk8bGkgY2xhc3M9
ImludGVyd2lraS1ubyI+PGEgaHJlZj0iaHR0cDovL25vLndpa2lwZWRpYS5vcmcv
d2lraS9Bcm1hbmQtSmVhbl9kdV9QbGVzc2lzX2RlX1JpY2hlbGlldSIgdGl0bGU9
IkFybWFuZC1KZWFuIGR1IFBsZXNzaXMgZGUgUmljaGVsaWV1Ij7igKpOb3JzayAo
Ym9rbcOlbCnigKw8L2E+PC9saT4KCQkJCQk8bGkgY2xhc3M9ImludGVyd2lraS1v
YyI+PGEgaHJlZj0iaHR0cDovL29jLndpa2lwZWRpYS5vcmcvd2lraS9Bcm1hbmRf
SmVhbl9kdV9QbGVzc2lzX2RlX1JpY2hlbGlldSIgdGl0bGU9IkFybWFuZCBKZWFu
IGR1IFBsZXNzaXMgZGUgUmljaGVsaWV1Ij5PY2NpdGFuPC9hPjwvbGk+CgkJCQkJ
PGxpIGNsYXNzPSJpbnRlcndpa2ktb3MiPjxhIGhyZWY9Imh0dHA6Ly9vcy53aWtp
cGVkaWEub3JnL3dpa2kvJUQwJUEwJUQwJUI4JUQxJTg4JUQwJUI1JUQwJUJCJUQx
JThDJUQxJTkxLF8lRDAlOTAlRDElODAlRDAlQkMlRDAlQjAlRDAlQkRfJUQwJTk2
JUQwJUIwJUQwJUJEXyVEMCVCNCVEMSU4RV8lRDAlOUYlRDAlQkIlRDAlQjUlRDEl
ODElRDElODElRDAlQjgiIHRpdGxlPSLQoNC40YjQtdC70YzRkSwg0JDRgNC80LDQ
vSDQltCw0L0g0LTRjiDQn9C70LXRgdGB0LgiPtCY0YDQvtC90LDRgzwvYT48L2xp
PgoJCQkJCTxsaSBjbGFzcz0iaW50ZXJ3aWtpLXBsIj48YSBocmVmPSJodHRwOi8v
cGwud2lraXBlZGlhLm9yZy93aWtpL0FybWFuZF9KZWFuX1JpY2hlbGlldSIgdGl0
bGU9IkFybWFuZCBKZWFuIFJpY2hlbGlldSI+UG9sc2tpPC9hPjwvbGk+CgkJCQkJ
PGxpIGNsYXNzPSJpbnRlcndpa2ktcHQiPjxhIGhyZWY9Imh0dHA6Ly9wdC53aWtp
cGVkaWEub3JnL3dpa2kvQ2FyZGVhbF9kZV9SaWNoZWxpZXUiIHRpdGxlPSJDYXJk
ZWFsIGRlIFJpY2hlbGlldSI+UG9ydHVndcOqczwvYT48L2xpPgoJCQkJCTxsaSBj
bGFzcz0iaW50ZXJ3aWtpLXJvIj48YSBocmVmPSJodHRwOi8vcm8ud2lraXBlZGlh
Lm9yZy93aWtpL0NhcmRpbmFsdWxfUmljaGVsaWV1IiB0aXRsZT0iQ2FyZGluYWx1
bCBSaWNoZWxpZXUiPlJvbcOibsSDPC9hPjwvbGk+CgkJCQkJPGxpIGNsYXNzPSJp
bnRlcndpa2ktcnUiPjxhIGhyZWY9Imh0dHA6Ly9ydS53aWtpcGVkaWEub3JnL3dp
a2kvJUQwJUEwJUQwJUI4JUQxJTg4JUQwJUI1JUQwJUJCJUQxJThDJUQxJTkxLF8l
RDAlOTAlRDElODAlRDAlQkMlRDAlQjAlRDAlQkRfJUQwJTk2JUQwJUIwJUQwJUJE
XyVEMCVCNCVEMSU4RV8lRDAlOUYlRDAlQkIlRDAlQjUlRDElODElRDElODElRDAl
QjgiIHRpdGxlPSLQoNC40YjQtdC70YzRkSwg0JDRgNC80LDQvSDQltCw0L0g0LTR
jiDQn9C70LXRgdGB0LgiPtCg0YPRgdGB0LrQuNC5PC9hPjwvbGk+CgkJCQkJPGxp
IGNsYXNzPSJpbnRlcndpa2ktc2giPjxhIGhyZWY9Imh0dHA6Ly9zaC53aWtpcGVk
aWEub3JnL3dpa2kvS2FyZGluYWxfUmljaGVsaWV1IiB0aXRsZT0iS2FyZGluYWwg
UmljaGVsaWV1Ij5TcnBza29ocnZhdHNraSAvINCh0YDQv9GB0LrQvtGF0YDQstCw
0YLRgdC60Lg8L2E+PC9saT4KCQkJCQk8bGkgY2xhc3M9ImludGVyd2lraS1zaW1w
bGUiPjxhIGhyZWY9Imh0dHA6Ly9zaW1wbGUud2lraXBlZGlhLm9yZy93aWtpL0Nh
cmRpbmFsX1JpY2hlbGlldSIgdGl0bGU9IkNhcmRpbmFsIFJpY2hlbGlldSI+U2lt
cGxlIEVuZ2xpc2g8L2E+PC9saT4KCQkJCQk8bGkgY2xhc3M9ImludGVyd2lraS1z
ayI+PGEgaHJlZj0iaHR0cDovL3NrLndpa2lwZWRpYS5vcmcvd2lraS9Bcm1hbmRf
SmVhbl9kdV9QbGVzc2lzX2RlX1JpY2hlbGlldSIgdGl0bGU9IkFybWFuZCBKZWFu
IGR1IFBsZXNzaXMgZGUgUmljaGVsaWV1Ij5TbG92ZW7EjWluYTwvYT48L2xpPgoJ
CQkJCTxsaSBjbGFzcz0iaW50ZXJ3aWtpLXNsIj48YSBocmVmPSJodHRwOi8vc2wu
d2lraXBlZGlhLm9yZy93aWtpL0thcmRpbmFsX1JpY2hlbGlldSIgdGl0bGU9Ikth
cmRpbmFsIFJpY2hlbGlldSI+U2xvdmVuxaHEjWluYTwvYT48L2xpPgoJCQkJCTxs
aSBjbGFzcz0iaW50ZXJ3aWtpLXNyIj48YSBocmVmPSJodHRwOi8vc3Iud2lraXBl
ZGlhLm9yZy93aWtpLyVEMCU5MCVEMSU4MCVEMCVCQyVEMCVCMCVEMCVCRF8lRDAl
OTYlRDAlQjAlRDAlQkRfJUQwJUI0JUQwJUI4XyVEMCU5RiVEMCVCQiVEMCVCNSVE
MSU4MSVEMCVCOF8lRDAlQjQlRDAlQjVfJUQwJUEwJUQwJUI4JUQxJTg4JUQwJUI1
JUQxJTk5JUQwJUI1IiB0aXRsZT0i0JDRgNC80LDQvSDQltCw0L0g0LTQuCDQn9C7
0LXRgdC4INC00LUg0KDQuNGI0LXRmdC1Ij7QodGA0L/RgdC60LggLyBTcnBza2k8
L2E+PC9saT4KCQkJCQk8bGkgY2xhc3M9ImludGVyd2lraS1zdiI+PGEgaHJlZj0i
aHR0cDovL3N2Lndpa2lwZWRpYS5vcmcvd2lraS9Bcm1hbmQtSmVhbl9kdV9QbGVz
c2lzX1JpY2hlbGlldSIgdGl0bGU9IkFybWFuZC1KZWFuIGR1IFBsZXNzaXMgUmlj
aGVsaWV1Ij5TdmVuc2thPC9hPjwvbGk+CgkJCQkJPGxpIGNsYXNzPSJpbnRlcndp
a2ktdGgiPjxhIGhyZWY9Imh0dHA6Ly90aC53aWtpcGVkaWEub3JnL3dpa2kvJUUw
JUI4JUFEJUUwJUI4JUIyJUUwJUI4JUEzJUUwJUI5JThDJUUwJUI4JUExJUUwJUI5
JTg3JUUwJUI4JUFEJUUwJUI4JTg3XyVFMCVCOCU4QyVFMCVCOSU4NyVFMCVCOCVB
RCVFMCVCOCU4N18lRTAlQjglOTQlRTAlQjglQjklRTAlQjglQTclRTAlQjklOENf
JUUwJUI5JTgwJUUwJUI4JTlCJUUwJUI4JUE1JUUwJUI4JThCJUUwJUI4JUI1XyVF
MCVCOSU4MCVFMCVCOCU5NCVFMCVCOCVBRF8lRTAlQjglQTMlRTAlQjglQjUlRTAl
QjklODAlRTAlQjglOEElRTAlQjglQUQlRTAlQjglQTUlRTAlQjglQjUlRTAlQjkl
ODAlRTAlQjglQTIlRTAlQjglQUQiIHRpdGxlPSLguK3guLLguKPguYzguKHguYfg
uK3guIcg4LiM4LmH4Lit4LiHIOC4lOC4ueC4p+C5jCDguYDguJvguKXguIvguLUg
4LmA4LiU4LitIOC4o+C4teC5gOC4iuC4reC4peC4teC5gOC4ouC4rSI+4LmE4LiX
4LiiPC9hPjwvbGk+CgkJCQkJPGxpIGNsYXNzPSJpbnRlcndpa2ktdGwiPjxhIGhy
ZWY9Imh0dHA6Ly90bC53aWtpcGVkaWEub3JnL3dpa2kvS2FyZGluYWxfUmljaGVs
aWV1IiB0aXRsZT0iS2FyZGluYWwgUmljaGVsaWV1Ij5UYWdhbG9nPC9hPjwvbGk+
CgkJCQkJPGxpIGNsYXNzPSJpbnRlcndpa2ktdHIiPjxhIGhyZWY9Imh0dHA6Ly90
ci53aWtpcGVkaWEub3JnL3dpa2kvQXJtYW5kX0plYW5fZHVfUGxlc3Npc19kZV9S
aWNoZWxpZXUiIHRpdGxlPSJBcm1hbmQgSmVhbiBkdSBQbGVzc2lzIGRlIFJpY2hl
bGlldSI+VMO8cmvDp2U8L2E+PC9saT4KCQkJCQk8bGkgY2xhc3M9ImludGVyd2lr
aS11ayI+PGEgaHJlZj0iaHR0cDovL3VrLndpa2lwZWRpYS5vcmcvd2lraS8lRDAl
QTAlRDElOTYlRDElODglRDAlQjUlRDAlQkIlRDElOEMlRDElOTRfJUQwJTkwJUQx
JTgwJUQwJUJDJUQwJUIwJUQwJUJEXyVEMCU5NiVEMCVCMCVEMCVCRF8lRDAlQjQl
RDElOEVfJUQwJTlGJUQwJUJCJUQwJUI1JUQxJTgxJUQxJTgxJUQxJTk2IiB0aXRs
ZT0i0KDRltGI0LXQu9GM0ZQg0JDRgNC80LDQvSDQltCw0L0g0LTRjiDQn9C70LXR
gdGB0ZYiPtCj0LrRgNCw0ZfQvdGB0YzQutCwPC9hPjwvbGk+CgkJCQkJPGxpIGNs
YXNzPSJpbnRlcndpa2ktdXIiPjxhIGhyZWY9Imh0dHA6Ly91ci53aWtpcGVkaWEu
b3JnL3dpa2kvJUQ4JUIxJUQ4JUI0JURCJThDJUQ5JTg0JURCJThDJUQ5JTg4IiB0
aXRsZT0i2LHYtNuM2YTbjNmIIj7Yp9ix2K/ZiDwvYT48L2xpPgoJCQkJCTxsaSBj
bGFzcz0iaW50ZXJ3aWtpLXZpIj48YSBocmVmPSJodHRwOi8vdmkud2lraXBlZGlh
Lm9yZy93aWtpL0glRTElQkIlOTNuZ195X1JpY2hlbGlldSIgdGl0bGU9Ikjhu5Nu
ZyB5IFJpY2hlbGlldSI+VGnhur9uZyBWaeG7h3Q8L2E+PC9saT4KCQkJCQk8bGkg
Y2xhc3M9ImludGVyd2lraS16aCI+PGEgaHJlZj0iaHR0cDovL3poLndpa2lwZWRp
YS5vcmcvd2lraS8lRTklQkIlOEUlRTUlQTElOUUlRTclOTUlOTkiIHRpdGxlPSLp
u47loZ7nlZkiPuS4reaWhzwvYT48L2xpPgoJCQkJPC91bD4KCTwvZGl2Pgo8L2Rp
dj4KCjwhLS0gL0xBTkdVQUdFUyAtLT4KCQkJPC9kaXY+CgkJPCEtLSAvcGFuZWwg
LS0+CgkJPCEtLSBmb290ZXIgLS0+CgkJPGRpdiBpZD0iZm9vdGVyIj4KCQkJCQkJ
CQkJCQk8dWwgaWQ9ImZvb3Rlci1pbmZvIj4KCQkJCQkJCQkJCQkJCQkJCQk8bGkg
aWQ9ImZvb3Rlci1pbmZvLWxhc3Rtb2QiPiBEYXJyZXJhIG1vZGlmaWNhY2nDsyBk
ZSBsYSBww6BnaW5hOiAzMCBnZW4gMjAxMSBhIGxlcyAxOTowNi48YnIgLz48L2xp
PgoJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCTxsaSBpZD0iZm9vdGVyLWluZm8tY29w
eXJpZ2h0Ij5FbCB0ZXh0IGVzdMOgIGRpc3BvbmlibGUgc290YSBsYSA8YSBocmVm
PSJodHRwOi8vY2Eud2lraXBlZGlhLm9yZy93aWtpL1ZpcXVpcCVDMyVBOGRpYTpU
ZXh0X2RlX2xhX2xsaWMlQzMlQThuY2lhX2RlX0NyZWF0aXZlX0NvbW1vbnNfUmVj
b25laXhlbWVudC1Db21wYXJ0aXJfSWd1YWxfMy4wX05vX2FkYXB0YWRhIj4gTGxp
Y8OobmNpYSBkZSBDcmVhdGl2ZSBDb21tb25zIFJlY29uZWl4ZW1lbnQgaSBDb21w
YXJ0aXItSWd1YWw8L2E+OyBlcyBwb2RlbiBhcGxpY2FyIHRlcm1lcyBhZGRpY2lv
bmFscy4KVmVnZXUgbGVzIDxhIGhyZWY9Imh0dHA6Ly9jYS53aWtpcGVkaWEub3Jn
L3dpa2kvVmlxdWlwJUMzJUE4ZGlhOkNvbmRpY2lvbnNfZCUyNyVDMyVCQXMiPkNv
bmRpY2lvbnMgZCfDunM8L2E+IHBlciBhIG3DqXMgaW5mb3JtYWNpw7MuCldpa2lw
ZWRpYSZyZWc7IChWaXF1aXDDqGRpYeKEoikgw6lzIHVuYSA8YSBocmVmPSJodHRw
Oi8vY2Eud2lraXBlZGlhLm9yZy93aWtpL01hcmNhX2NvbWVyY2lhbCI+bWFyY2Eg
cmVnaXN0cmFkYTwvYT4gZGUgPGEgaHJlZj0iaHR0cDovL3d3dy53aWtpbWVkaWFm
b3VuZGF0aW9uLm9yZyI+V2lraW1lZGlhIEZvdW5kYXRpb24sIEluYzwvYT4uPGJy
IC8+PC9saT4KCQkJCQkJCQkJCQkJCQkJPC91bD4KCQkJCQkJCQkJCQkJCQkJPHVs
IGlkPSJmb290ZXItcGxhY2VzIj4KCQkJCQkJCQkJCQkJCQkJCQk8bGkgaWQ9ImZv
b3Rlci1wbGFjZXMtcHJpdmFjeSI+PGEgaHJlZj0iaHR0cDovL3dpa2ltZWRpYWZv
dW5kYXRpb24ub3JnL3dpa2kvUG9sJUMzJUFEdGljYV9kZV9wcml2YWRlc2EiIHRp
dGxlPSJ3aWtpbWVkaWE6UG9sw610aWNhIGRlIHByaXZhZGVzYSI+UG9sw610aWNh
IGRlIHByaXZhZGVzYTwvYT48L2xpPgoJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCTxs
aSBpZD0iZm9vdGVyLXBsYWNlcy1hYm91dCI+PGEgaHJlZj0iL3dpa2kvVmlxdWlw
JUMzJUE4ZGlhOlF1YW50X2FfbGFfVmlxdWlwJUMzJUE4ZGlhIiB0aXRsZT0iVmlx
dWlww6hkaWE6UXVhbnQgYSBsYSBWaXF1aXDDqGRpYSI+UXVhbnQgYWwgcHJvamVj
dGUgVmlxdWlww6hkaWE8L2E+PC9saT4KCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk8
bGkgaWQ9ImZvb3Rlci1wbGFjZXMtZGlzY2xhaW1lciI+PGEgaHJlZj0iL3dpa2kv
VmlxdWlwJUMzJUE4ZGlhOkF2JUMzJUFEc19kJTI3ZXhlbXBjaSVDMyVCM19kZV9y
ZXNwb25zYWJpbGl0YXQiIHRpdGxlPSJWaXF1aXDDqGRpYTpBdsOtcyBkJ2V4ZW1w
Y2nDsyBkZSByZXNwb25zYWJpbGl0YXQiPkF2w61zIGQmIzM5O2V4ZW1wY2nDsyBk
ZSByZXNwb25zYWJpbGl0YXQ8L2E+PC9saT4KCQkJCQkJCQkJCQkJCQkJPC91bD4K
CQkJCQkJCQkJCTx1bCBpZD0iZm9vdGVyLWljb25zIiBjbGFzcz0ibm9wcmludCI+
CgkJCQkJCQkJPGxpIGlkPSJmb290ZXItaWNvbi1wb3dlcmVkYnkiPjxhIGhyZWY9
Imh0dHA6Ly93d3cubWVkaWF3aWtpLm9yZy8iPjxpbWcgc3JjPSJodHRwOi8vYml0
cy53aWtpbWVkaWEub3JnL3NraW5zLTEuNS9jb21tb24vaW1hZ2VzL3Bvd2VyZWRi
eV9tZWRpYXdpa2lfODh4MzEucG5nIiBoZWlnaHQ9IjMxIiB3aWR0aD0iODgiIGFs
dD0iUG93ZXJlZCBieSBNZWRpYVdpa2kiIC8+PC9hPjwvbGk+CgkJCQkJCQkJCQkJ
CTxsaSBpZD0iZm9vdGVyLWljb24tY29weXJpZ2h0Ij48YSBocmVmPSJodHRwOi8v
d2lraW1lZGlhZm91bmRhdGlvbi5vcmcvIj48aW1nIHNyYz0iL2ltYWdlcy93aWtp
bWVkaWEtYnV0dG9uLnBuZyIgd2lkdGg9Ijg4IiBoZWlnaHQ9IjMxIiBhbHQ9Ildp
a2ltZWRpYSBGb3VuZGF0aW9uIi8+PC9hPjwvbGk+CgkJCQkJCQk8L3VsPgoJCQk8
ZGl2IHN0eWxlPSJjbGVhcjpib3RoIj48L2Rpdj4KCQk8L2Rpdj4KCQk8IS0tIC9m
b290ZXIgLS0+CgkJPCEtLSBmaXhhbHBoYSAtLT4KCQk8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCI+IGlmICggd2luZG93LmlzTVNJRTU1ICkgZml4YWxwaGEo
KTsgPC9zY3JpcHQ+CgkJPCEtLSAvZml4YWxwaGEgLS0+CgkJCjxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0Ij5pZiAod2luZG93LnJ1bk9ubG9hZEhvb2spIHJ1
bk9ubG9hZEhvb2soKTs8L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiIHNyYz0iaHR0cDovL2dlb2lwbG9va3VwLndpa2ltZWRpYS5vcmcvIj48
L3NjcmlwdD4JCTwhLS0gU2VydmVkIGJ5IHNydjE2NiBpbiAwLjA4MCBzZWNzLiAt
LT4JCQk8L2JvZHk+CjwvaHRtbD4K
------------CQ4wAorH1dcm6byte6AhmR
Content-Disposition: inline; filename=favicon.ico
Content-Type: image/x-icon; name=favicon.ico
Content-Location: http://ca.wikipedia.org/favicon.ico
Content-Transfer-Encoding: Base64
AAABAAEAEBAQAAEABAAoAQAAFgAAACgAAAAQAAAAIAAAAAEABAAAAAAAAAAAAAAA
AAAAAAAAEAAAAAAAAAAEAgQAhIOEAMjHyABIR0gA6ejpAGlqaQCpqKkAKCgoAPz9
/AAZGBkAmJiYANjZ2ABXWFcAent6ALm6uQA8OjwAiIiIiIiIiIiIiI4oiL6IiIiI
gzuIV4iIiIhndo53KIiIiB/WvXoYiIiIfEZfWBSIiIEGi/foqoiIgzuL84i9iIjp
GIoMiEHoiMkos3FojmiLlUipYliEWIF+iDe0GoRa7D6GPbjcu1yIiIiIiIiIiIiI
iIiIiIiIiIiIiIiIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
------------CQ4wAorH1dcm6byte6AhmR
Content-Disposition: inline
Content-Type: image/png
Content-Location: http://bits.wikimedia.org/skins-1.5/vector/images/page-base.png?1
Content-Transfer-Encoding: Base64
iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAGXRFWHRTb2Z0d2Fy
ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAANQTFRF9vb2AAsjqgAAAApJREFUCB1j
YAAAAAIAAc/INeUAAAAASUVORK5CYII=
------------CQ4wAorH1dcm6byte6AhmR
Content-Disposition: inline
Content-Type: image/png
Content-Location: http://bits.wikimedia.org/skins-1.5/vector/images/border.png?1
Content-Transfer-Encoding: Base64
iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAGXRFWHRTb2Z0d2Fy
ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAANQTFRFp9f5cVVvXwAAAApJREFUCB1j
YAAAAAIAAc/INeUAAAAASUVORK5CYII=
------------CQ4wAorH1dcm6byte6AhmR
Content-Disposition: inline
Content-Type: image/png
Content-Location: http://bits.wikimedia.org/skins-1.5/vector/images/page-fade.png?1
Content-Transfer-Encoding: Base64
iVBORw0KGgoAAAANSUhEUgAAAAEAAAAsCAMAAACT+SJTAAAAGXRFWHRTb2Z0d2Fy
ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFdQTFRF+fn49/f2+/v89vf3/v79/v3+
/v/++fj4/fz89/f4+fr5/f79/Pv8+Pn59/b2+/v7/f38+Pj4+vr5+vr7/Pz8+fn5
9vb29/j4+vr6/v7+/f399/f3////vR8U6wAAADxJREFUeNotwgcOgCAURMEnKnaw
Yr3/Od38kBm+zHObmoqBx8y07OIYiWxyyUrPITDRsHBKx2tKCgKJ9AOMswMINl/f
OQAAAABJRU5ErkJggg==
------------CQ4wAorH1dcm6byte6AhmR
Content-Disposition: inline
Content-Type: image/png
Content-Location: http://bits.wikimedia.org/skins-1.5/vector/images/tab-break.png?1
Content-Transfer-Encoding: Base64
iVBORw0KGgoAAAANSUhEUgAAAAEAAAAuCAMAAADeMYNYAAAAGXRFWHRTb2Z0d2Fy
ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGBQTFRFyuf7xeX6vuL6td76qtn5+vv7
9/n7rtr5/Pz84vH7sNv6weP60en7qNf56vX74PD77fb7zuj77/b8stz65/P78/j8
8ff83e/7uuD61ev79Pj75PL72Oz72+370+v7uN/6UiPZnwAAAD1JREFUeNpNwccB
gCAABMFFMaMIZkz9d+k9naH+LbTUxMJKZGRg1pMGz8bNxcGDI4AY7cjY9SVn0pZK
rfYfcHYCb27V9m8AAAAASUVORK5CYII=
------------CQ4wAorH1dcm6byte6AhmR
Content-Disposition: inline
Content-Type: image/png
Content-Location: http://bits.wikimedia.org/skins-1.5/vector/images/tab-normal-fade.png?1
Content-Transfer-Encoding: Base64
iVBORw0KGgoAAAANSUhEUgAAAAEAAABkCAMAAABw8qpSAAAAGXRFWHRTb2Z0d2Fy
ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFpQTFRF/P3++fv9+vz+6vT46vP49/r9
+Pv9p9f57PT6+/z+7PT59vr98/j77vb69Pn89Pn76vL48ff67fT68ff77vX6/v//
9fr86PL4+/3+7/b68vf7/f7+/v7/////unDFUAAAADpJREFUeNrFwoURg0AAALDg
Li3SYvuvyR9LcInrZYvzcTzgrxIHUZDLNFa9QWs3+dh0Zl+lWiI1+iluKncJSLF7
CNkAAAAASUVORK5CYII=
------------CQ4wAorH1dcm6byte6AhmR
Content-Disposition: inline
Content-Type: image/png
Content-Location: http://bits.wikimedia.org/skins-1.5/vector/images/tab-current-fade.png?1
Content-Transfer-Encoding: Base64
iVBORw0KGgoAAAANSUhEUgAAAAEAAABkAQMAAAB94sgjAAAAGXRFWHRTb2Z0d2Fy
ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAANQTFRF////p8QbyAAAAAxJREFUCB1j
YBgeAAAAyAABP2UdiQAAAABJRU5ErkJggg==
------------CQ4wAorH1dcm6byte6AhmR
Content-Disposition: inline
Content-Type: image/png
Content-Location: http://bits.wikimedia.org/skins-1.5/vector/images/search-fade.png?1
Content-Transfer-Encoding: Base64
iVBORw0KGgoAAAANSUhEUgAAAAEAAAAQBAMAAAAlsQiEAAAAGXRFWHRTb2Z0d2Fy
ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACpQTFRF9vf3/v/++fr5/Pv8+/v7/f38
+Pj4+fn59vb2+vr6/v7+/f399/f3////Hp8+5gAAACVJREFUCNdjaGBoYDjAkACE
BQwKDBMYHBgMGAIYNgDhAoYLDBcAdIAIAfO0JnYAAAAASUVORK5CYII=
------------CQ4wAorH1dcm6byte6AhmR
Content-Disposition: inline
Content-Type: image/png
Content-Location: http://bits.wikimedia.org/skins-1.5/vector/images/portal-break.png?1
Content-Transfer-Encoding: Base64
iVBORw0KGgoAAAANSUhEUgAAAIwAAAABCAMAAAA7MLYKAAAAGXRFWHRTb2Z0d2Fy
ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEtQTFRF29vb2tra4ODg6urq5OTk4uLi
6+vr7e3t7Ozs8PDw5+fn4+Pj4eHh3d3d39/f6Ojo5eXl6enp8fHx8/Pz8vLy7+/v
3Nzc2dnZ2NjYnErj7QAAAD1JREFUeNq0wQUBACAMALDj7hf6JyUFGxzEnYhC9GaN
PG1xVffGDErk/iCigLl1XV2xM49lfAxEaSM+AQYA9HMKuv4liFQAAAAASUVORK5C
YII=
------------CQ4wAorH1dcm6byte6AhmR
Content-Disposition: inline
Content-Type: image/png
Content-Location: http://bits.wikimedia.org/skins-1.5/vector/images/bullet-icon.png?1
Content-Transfer-Encoding: Base64
iVBORw0KGgoAAAANSUhEUgAAAAUAAAANCAMAAABW4lS6AAAAGXRFWHRTb2Z0d2Fy
ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAZQTFRFAFKM////QIUK9QAAAAJ0Uk5T
/wDltzBKAAAAGklEQVR42mJgBAEGokgGBjBGBxBxsBqAAAMACHwALd5r8ygAAAAA
SUVORK5CYII=
------------CQ4wAorH1dcm6byte6AhmR
Content-Disposition: inline
Content-Type: image/png
Content-Location: http://bits.wikimedia.org/skins-1.5/vector/images/user-icon.png?1
Content-Transfer-Encoding: Base64
iVBORw0KGgoAAAANSUhEUgAAAAoAAAALCAMAAABxsOwqAAAAGXRFWHRTb2Z0d2Fy
ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGBQTFRF78mOboqv0K93R2uZ4a1a5rp2
N2mnMmGd/Pr4k6zMMFySTXWr2Jg157Vn4Zst9unUl6a836ZMr7CwooVQPXGwpLnW
5KQ/vMne+O/gXXiV6+zt5Orx1t7n7/Dwgpm5////xZOJMQAAACB0Uk5T////////
/////////////////////////////////wBcXBvtAAAAY0lEQVR42hzKSQKAIAwE
wWAMQUBBQdzN/38p0pepw4DI3vVzH0RADBCNpTOVYaZAxYefZaQyNZplqrXDeiTv
07EJ3C67uGR0F7yo9bAyYwSFrJ1iywoi19HW2gjPiy11fgIMAJ51Bh79zDO4AAAA
AElFTkSuQmCC
------------CQ4wAorH1dcm6byte6AhmR
Content-Disposition: inline; filename=main-ltr.css
Content-Type: text/css; name=main-ltr.css
Content-Location: http://bits.wikimedia.org/skins-1.5/vector/main-ltr.css?283-19
Content-Transfer-Encoding: 8bit
/*
* main-rtl.css is automatically generated using CSSJanus, a python script for
* creating RTL versions of otherwise LTR stylesheets.
*
* You may download the tool to rebuild this stylesheet
* http://code.google.com/p/cssjanus/
*
* An online version of this tool can be used at:
* http://cssjanus.commoner.com/
*
* The following command is used to generate the RTL version of this file
* ./cssjanus.py --swap_ltr_rtl_in_url < main-ltr.css > main-rtl.css
*
* Any rules which should not be flipped should be prepended with @noflip in
* a comment block.
*/
/* Framework */
html,
body {
height: 100%;
margin: 0;
padding: 0;
font-family: sans-serif;
font-size: 1em;
}
body {
background-color: #f3f3f3;
background-image: url(images/page-base.png?1);
}
/* Content */
#content {
margin-left: 10em;
padding: 1em;
background-image: url(images/border.png?1);
background-position: top left;
background-repeat: repeat-y;
background-color: white;
color: black;
}
/* Head */
#mw-page-base {
height: 5em;
background-color: white;
background-image: url(images/page-fade.png?1);
background-position: bottom left;
background-repeat: repeat-x;
}
#mw-head-base {
margin-top: -5em;
margin-left: 10em;
height: 5em;
background-image: url(images/border.png?1);
background-position: bottom left;
background-repeat: repeat-x;
}
div#mw-head {
position: absolute;
top: 0;
right: 0;
width: 100%;
}
div#mw-head h5 {
margin: 0;
padding: 0;
}
/* Hide empty portlets */
div.emptyPortlet {
display: none;
}
/* Personal */
#p-personal {
position: absolute;
top: 0;
padding-left: 10em;
right: 0.75em;
}
#p-personal h5 {
display: none;
}
#p-personal ul {
list-style: none;
margin: 0;
padding: 0;
}
/* @noflip */
#p-personal li {
line-height: 1.125em;
float: left;
}
/* This one flips! */
#p-personal li {
margin-left: 0.75em;
margin-top: 0.5em;
font-size: 0.75em;
white-space: nowrap;
}
/* Navigation Containers */
#left-navigation {
position: absolute;
left: 10em;
top: 2.5em;
}
#right-navigation {
float: right;
margin-top: 2.5em;
}
/* Navigation Labels */
div.vectorTabs h5,
div.vectorMenu h5 span {
display: none;
}
/* Namespaces and Views */
/* @noflip */
div.vectorTabs {
float: left;
height: 2.5em;
}
div.vectorTabs {
background-image: url(images/tab-break.png?1);
background-position: bottom left;
background-repeat: no-repeat;
padding-left: 1px;
}
/* @noflip */
div.vectorTabs ul {
float: left;
}
div.vectorTabs ul {
height: 100%;
list-style: none;
margin: 0;
padding: 0;
}
/* @noflip */
div.vectorTabs ul li {
float: left;
}
/* OVERRIDDEN BY COMPLIANT BROWSERS */
div.vectorTabs ul li {
line-height: 1.125em;
display: inline-block;
height: 100%;
margin: 0;
padding: 0;
background-color: #f3f3f3;
background-image: url(images/tab-normal-fade.png?1);
background-position: bottom left;
background-repeat: repeat-x;
white-space:nowrap;
}
/* IGNORED BY IE6 */
div.vectorTabs ul > li {
display: block;
}
div.vectorTabs li.selected {
background-image: url(images/tab-current-fade.png?1);
}
/* OVERRIDDEN BY COMPLIANT BROWSERS */
div.vectorTabs li a {
display: inline-block;
height: 2.5em;
padding-left: 0.4em;
padding-right: 0.4em;
background-image: url(images/tab-break.png?1);
background-position: bottom right;
background-repeat: no-repeat;
}
div.vectorTabs li a,
div.vectorTabs li a span {
color: #0645ad;
cursor: pointer;
}
div.vectorTabs li a span {
font-size: 0.8em;
}
/* IGNORED BY IE6 */
div.vectorTabs li > a {
display: block;
}
/* OVERRIDDEN BY COMPLIANT BROWSERS */
div.vectorTabs a span {
display: inline-block;
padding-top: 1.25em;
}
/* IGNORED BY IE6 */
/* @noflip */
div.vectorTabs a > span {
float: left;
display: block;
}
div.vectorTabs li.selected a,
div.vectorTabs li.selected a span,
div.vectorTabs li.selected a:visited
div.vectorTabs li.selected a:visited span {
color: #333333;
text-decoration: none;
}
div.vectorTabs li.new a,
div.vectorTabs li.new a span,
div.vectorTabs li.new a:visited,
div.vectorTabs li.new a:visited span {
color: #a55858;
}
/* Variants and Actions */
/* @noflip */
div.vectorMenu {
direction: ltr;
float: left;
background-image: url(images/arrow-down-icon.png?1);
background-position: 100% 60%;
background-repeat: no-repeat;
cursor: pointer;
}
/* @noflip */
body.rtl div.vectorMenu {
direction: rtl;
}
/* OVERRIDDEN BY COMPLIANT BROWSERS */
/* @noflip */
div#mw-head div.vectorMenu h5 {
float: left;
background-image: url(images/tab-break.png?1);
background-repeat: no-repeat;
}
/* IGNORED BY IE6 */
div#mw-head div.vectorMenu > h5 {
background-image: none;
}
div#mw-head div.vectorMenu h5 {
background-position: bottom left;
margin-left: -1px;
}
div#mw-head div.vectorMenu h4 {
display: inline-block;
float: left;
font-size: 0.8em;
padding-left: 0.5em;
padding-top: 1.375em;
font-weight: normal;
border: none;
}
/* OVERRIDDEN BY COMPLIANT BROWSERS */
/* @noflip */
div.vectorMenu h5 a {
display: inline-block;
width: 24px;
height: 2.5em;
text-decoration: none;
background-image: url(images/tab-break.png?1);
background-repeat: no-repeat;
}
div.vectorMenu h5 a{
background-position: bottom right;
}
/* IGNORED BY IE6 */
div.vectorMenu h5 > a {
display: block;
}
div.vectorMenu div.menu {
position: relative;
display: none;
clear: both;
text-align: left;
}
/* OVERRIDDEN BY COMPLIANT BROWSERS */
/* @noflip */
body.rtl div.vectorMenu div.menu {
margin-left: 24px;
}
/* IGNORED BY IE6 */
/* @noflip */
body.rtl div.vectorMenu > div.menu {
margin-left: auto;
}
/* Fixes old versions of FireFox */
/* @noflip */
body.rtl div.vectorMenu > div.menu,
x:-moz-any-link {
margin-left: 23px;
}
div.vectorMenu:hover div.menu {
display: block;
}
div.vectorMenu ul {
position: absolute;
background-color: white;
border: solid 1px silver;
border-top-width: 0;
list-style: none;
list-style-image: none;
list-style-type: none;
padding: 0;
margin: 0;
margin-left: -1px;
text-align: left;
}
/* Fixes old versions of FireFox */
div.vectorMenu ul,
x:-moz-any-link {
min-width: 5em;
}
/* Returns things back to normal in modern versions of FireFox */
div.vectorMenu ul,
x:-moz-any-link,
x:default {
min-width: 0;
}
div.vectorMenu li {
padding: 0;
margin: 0;
text-align: left;
line-height: 1em;
}
/* OVERRIDDEN BY COMPLIANT BROWSERS */
div.vectorMenu li a {
display: inline-block;
padding: 0.5em;
white-space: nowrap;
}
/* IGNORED BY IE6 */
div.vectorMenu li > a {
display: block;
}
div.vectorMenu li a {
color: #0645ad;
cursor: pointer;
font-size: 0.8em;
}
div.vectorMenu li.selected a,
div.vectorMenu li.selected a:visited {
color: #333333;
text-decoration: none;
}
/* Search */
#p-search h5 {
display: none;
}
/* @noflip */
#p-search {
float: left;
}
#p-search {
margin-right: 0.5em;
margin-left: 0.5em;
}
#p-search form,
#p-search input {
margin: 0;
margin-top: 0.4em;
}
#simpleSearch {
margin-top: 0.65em;
position: relative;
min-height: 1px; /* Gotta trigger hasLayout for IE7 */
border: solid 1px #AAAAAA;
background-color: white;
background-image: url(images/search-fade.png?1);
background-position: top left;
background-repeat: repeat-x;
}
#simpleSearch label {
font-size: 13px;
top: 0.25em;
}
div#simpleSearch .placeholder {
color: #999999;
}
div#simpleSearch input::-webkit-input-placeholder {
color: #999999;
}
div#simpleSearch input#searchInput {
margin: 0;
border-width: 0;
padding: 3px;
vertical-align: top;
font-size: 13px;
width: 14em;
background-color: transparent;
}
/* OVERRIDDEN BY COMPLIANT BROWSERS */
#simpleSearch button#searchButton {
padding: 0;
margin: 0 5px;
border: none;
cursor: pointer;
background-color: transparent;
font-size: x-small;
}
div#simpleSearch button#searchButton img {
border: none;
margin: 0;
padding: 0;
vertical-align: middle;
}
/* Panel */
div#mw-panel {
position: absolute;
top: 160px;
padding-top: 1em;
width: 10em;
left: 0;
}
div#mw-panel div.portal {
padding-bottom: 1.5em;
}
div#mw-panel div.portal h5 {
font-weight: normal;
color: #444444;
padding: 0.25em;
padding-top: 0;
padding-left: 1.75em;
cursor: default;
border: none;
font-size: 0.75em;
}
div#mw-panel div.portal div.body {
margin: 0;
padding-top: 0.5em;
margin-left: 1.25em;
background-image: url(images/portal-break.png?1);
background-repeat: no-repeat;
background-position: top left;
}
div#mw-panel div.portal div.body ul {
list-style: none;
list-style-image: none;
list-style-type: none;
padding: 0;
margin: 0;
}
div#mw-panel div.portal div.body ul li {
line-height: 1.125em;
padding: 0;
padding-bottom: 0.5em;
margin: 0;
overflow: hidden;
font-size: 0.75em;
}
div#mw-panel div.portal div.body ul li a {
color: #0645ad;
}
div#mw-panel div.portal div.body ul li a:visited {
color: #0b0080;
}
/* Footer */
#footer {
margin-left: 10em;
margin-top: 0;
padding: 0.75em;
background-image: url(images/border.png?1);
background-position: top left;
background-repeat: repeat-x;
}
#footer ul {
list-style: none;
list-style-image: none;
list-style-type: none;
margin: 0;
padding: 0;
}
#footer ul li {
margin: 0;
padding: 0;
padding-top: 0.5em;
padding-bottom: 0.5em;
color: #333333;
font-size: 0.7em;
}
#footer #footer-icons {
float: right;
}
/* @noflip */
body.ltr #footer #footer-places {
float: left;
}
#footer #footer-info li {
line-height: 1.4em;
}
#footer #footer-icons li {
float: left;
margin-left: 0.5em;
line-height: 2em;
}
#footer #footer-places li {
float: left;
margin-right: 1em;
line-height: 2em;
}
/* Logo */
#p-logo {
position: absolute;
top: -160px;
left: 0;
width: 10em;
height: 160px;
}
#p-logo a {
display: block;
width: 10em;
height: 160px;
background-repeat: no-repeat;
background-position: center center;
text-decoration: none;
}
/*
*
* The following code is highly modified from monobook. It would be nice if the
* preftoc id was more human readable like preferences-toc for instance,
* howerver this would require backporting the other skins.
*/
/* Preferences */
#preftoc {
/* Tabs */
width: 100%;
float: left;
clear: both;
margin: 0 !important;
padding: 0 !important;
background-image: url(images/preferences-break.png?1);
background-position: bottom left;
background-repeat: no-repeat;
}
#preftoc li {
/* Tab */
float: left;
margin: 0;
padding: 0;
padding-right: 1px;
height: 2.25em;
white-space: nowrap;
list-style-type: none;
list-style-image: none;
background-image: url(images/preferences-break.png?1);
background-position: bottom right;
background-repeat: no-repeat;
}
/* IGNORED BY IE6 */
#preftoc li:first-child {
margin-left: 1px;
}
#preftoc a,
#preftoc a:active {
display: inline-block;
position: relative;
color: #0645ad;
padding: 0.5em;
text-decoration: none;
background-image: none;
font-size: 0.9em;
}
#preftoc a:hover {
text-decoration: underline;
}
#preftoc li.selected a {
background-image: url(images/preferences-fade.png?1);
background-position: bottom;
background-repeat: repeat-x;
color: #333333;
text-decoration: none;
}
#preferences {
float: left;
width: 100%;
margin: 0;
margin-top: -2px;
clear: both;
border: solid 1px #cccccc;
background-color: #f9f9f9;
background-image: url(images/preferences-base.png?1);
}
#preferences fieldset.prefsection {
border: none;
padding: 0;
margin: 1em;
}
#preferences fieldset.prefsection fieldset {
border: none;
border-top: solid 1px #cccccc;
}
#preferences legend {
color: #666666;
}
#preferences fieldset.prefsection legend.mainLegend {
display: none;
}
#preferences td {
padding-left: 0.5em;
padding-right: 0.5em;
}
#preferences td.htmlform-tip {
font-size: x-small;
padding: .2em 2em;
color: #666666;
}
#preferences div.mw-prefs-buttons {
padding: 1em;
}
#preferences div.mw-prefs-buttons input {
margin-right: 0.25em;
}
/*
* Styles for the user login and create account forms
*/
#userlogin, #userloginForm {
border: solid 1px #cccccc;
padding: 1.2em;
margin: .5em;
float: left;
}
#userlogin {
min-width: 20em;
max-width: 90%;
width: 40em;
}
/*
*
* The following code is slightly modified from monobook
*
*/
#content {
line-height: 1.5em;
}
#bodyContent {
font-size: 0.8em;
}
/* Links */
a {
text-decoration: none;
color: #0645ad;
background: none;
}
a:visited {
color: #0b0080;
}
a:active {
color: #faa700;
}
a:hover {
text-decoration: underline;
}
a.stub {
color: #772233;
}
a.new, #p-personal a.new {
color: #ba0000;
}
a.new:visited, #p-personal a.new:visited {
color: #a55858;
}
/* Inline Elements */
img {
border: none;
vertical-align: middle;
}
hr {
height: 1px;
color: #aaa;
background-color: #aaa;
border: 0;
margin: .2em 0 .2em 0;
}
/* Structural Elements */
h1,
h2,
h3,
h4,
h5,
h6 {
color: black;
background: none;
font-weight: normal;
margin: 0;
padding-top: .5em;
padding-bottom: .17em;
border-bottom: 1px solid #aaa;
width: auto;
}
h1 { font-size: 188%; }
h1 .editsection { font-size: 53%; }
h2 { font-size: 150%; }
h2 .editsection { font-size: 67%; }
h3,
h4,
h5,
h6 {
border-bottom: none;
font-weight: bold;
}
h3 { font-size: 132%; }
h3 .editsection { font-size: 76%; font-weight: normal; }
h4 { font-size: 116%; }
h4 .editsection { font-size: 86%; font-weight: normal; }
h5 { font-size: 100%; }
h5 .editsection { font-weight: normal; }
h6 { font-size: 80%; }
h6 .editsection { font-size: 125%; font-weight: normal; }
p {
margin: .4em 0 .5em 0;
line-height: 1.5em;
}
p img {
margin: 0;
}
abbr,
acronym,
.explain {
border-bottom: 1px dotted black;
color: black;
background: none;
cursor: help;
}
q {
font-family: Times, "Times New Roman", serif;
font-style: italic;
}
/* Disabled for now
blockquote {
font-family: Times, "Times New Roman", serif;
font-style: italic;
}*/
pre, code, tt {
/*
* It's important for this rule to first reference an actual font name, some browsers will render the monospace text
* too small otherwise, namely Firefox, Chrome and Safari
*/
font-family: monospace, "Courier New";
}
code {
background-color: #f9f9f9;
}
pre {
padding: 1em;
border: 1px dashed #2f6fab;
color: black;
background-color: #f9f9f9;
line-height: 1.1em;
}
ul {
line-height: 1.5em;
list-style-type: square;
margin: .3em 0 0 1.5em;
padding: 0;
list-style-image: url(images/bullet-icon.png?1);
}
ol {
line-height: 1.5em;
margin: .3em 0 0 3.2em;
padding: 0;
list-style-image: none;
}
li {
margin-bottom: .1em;
}
dt {
font-weight: bold;
margin-bottom: .1em;
}
dl {
margin-top: .2em;
margin-bottom: .5em;
}
dd {
line-height: 1.5em;
margin-left: 2em;
margin-bottom: .1em;
}
/* Tables */
table {
font-size: 100%;
color: black;
/* we don't want the bottom borders of s to be visible through
* floated tables */
background-color: white;
}
fieldset table {
/* but keep table layouts in forms clean... */
background: none;
}
/* Forms */
fieldset {
border: 1px solid #2f6fab;
margin: 1em 0 1em 0;
padding: 0 1em 1em;
line-height: 1.5em;
}
fieldset.nested {
margin: 0 0 0.5em 0;
padding: 0 0.5em 0.5em;
}
legend {
padding: .5em;
font-size: 95%;
}
form {
border: none;
margin: 0;
}
textarea {
width: 100%;
padding: .1em;
}
select {
vertical-align: top;
}
/* Table of Contents */
#toc,
.toc,
.mw-warning {
border: 1px solid #aaa;
background-color: #f9f9f9;
padding: 5px;
font-size: 95%;
}
#toc h2,
.toc h2 {
display: inline;
border: none;
padding: 0;
font-size: 100%;
font-weight: bold;
}
#toc #toctitle,
.toc #toctitle,
#toc .toctitle,
.toc .toctitle {
text-align: center;
}
#toc ul,
.toc ul {
list-style-type: none;
list-style-image: none;
margin-left: 0;
padding-left: 0;
text-align: left;
}
#toc ul ul,
.toc ul ul {
margin: 0 0 0 2em;
}
#toc .toctoggle,
.toc .toctoggle {
font-size: 94%;
}
/* Images */
div.floatright, table.floatright {
clear: right;
float: right;
position: relative;
margin: 0 0 .5em .5em;
border: 0;
}
div.floatright p { font-style: italic; }
div.floatleft, table.floatleft {
float: left;
clear: left;
position: relative;
margin: 0 .5em .5em 0;
border: 0;
}
div.floatleft p { font-style: italic; }
/* Thumbnails */
div.thumb {
margin-bottom: .5em;
border-style: solid;
border-color: white;
width: auto;
background-color: transparent;
}
div.thumbinner {
border: 1px solid #ccc;
padding: 3px !important;
background-color: #f9f9f9;
font-size: 94%;
text-align: center;
overflow: hidden;
}
html .thumbimage {
border: 1px solid #ccc;
}
html .thumbcaption {
border: none;
text-align: left;
line-height: 1.4em;
padding: 3px !important;
font-size: 94%;
}
div.magnify {
float: right;
border: none !important;
background: none !important;
}
div.magnify a, div.magnify img {
display: block;
border: none !important;
background: none !important;
}
/* @noflip */
div.tright {
clear: right;
float: right;
border-width: .5em 0 .8em 1.4em;
}
/* @noflip */
div.tleft {
float: left;
clear: left;
margin-right: .5em;
border-width: .5em 1.4em .8em 0;
}
img.thumbborder {
border: 1px solid #dddddd;
}
.hiddenStructure {
display: none;
}
/* Warning */
.mw-warning {
margin-left: 50px;
margin-right: 50px;
text-align: center;
}
/* User Message */
.usermessage {
background-color: #ffce7b;
border: 1px solid #ffa500;
color: black;
font-weight: bold;
margin: 2em 0 1em;
padding: .5em 1em;
vertical-align: middle;
}
/* Site Notice (includes notices from CentralNotice extension) */
#siteNotice {
position: relative;
text-align: center;
font-size: 0.8em;
margin: 0;
}
#localNotice {
margin-bottom: 0.9em;
}
/* Categories */
.catlinks {
border: 1px solid #aaa;
background-color: #f9f9f9;
padding: 5px;
margin-top: 1em;
clear: both;
}
/* Sub-navigation */
#siteSub {
display: none;
}
#jump-to-nav {
display: none;
}
#contentSub, #contentSub2 {
font-size: 84%;
line-height: 1.2em;
margin: 0 0 1.4em 1em;
color: #7d7d7d;
width: auto;
}
span.subpages {
display: block;
}
/* Emulate Center */
.center {
width: 100%;
text-align: center;
}
*.center * {
margin-left: auto;
margin-right: auto;
}
/* Small for tables and similar */
.small, .small * {
font-size: 94%;
}
table.small {
font-size: 100%;
}
/* Edge Cases for Content */
h1, h2 {
margin-bottom: .6em;
}
h3, h4, h5 {
margin-bottom: .3em;
}
#firstHeading {
padding-top: 0;
margin-top: 0;
padding-top: 0;
margin-bottom: 0.1em;
line-height: 1.2em;
font-size: 1.6em;
padding-bottom: 0;
}
#content a.external,
#content a[href ^="gopher://"] {
background: url(images/external-link-ltr-icon.png?2) center right no-repeat;
padding: 0 13px 0 0;
}
#content a[href ^="https://"],
.link-https {
background: url(images/lock-icon.png?2) center right no-repeat;
padding: 0 13px 0 0;
}
#content a[href ^="mailto:"],
.link-mailto {
background: url(images/mail-icon.png?2) center right no-repeat;
padding: 0 13px 0 0;
}
#content a[href ^="news://"] {
background: url(images/news-icon.png?2) center right no-repeat;
padding: 0 13px 0 0;
}
#content a[href ^="ftp://"],
.link-ftp {
background: url(images/file-icon.png?2) center right no-repeat;
padding: 0 13px 0 0;
}
#content a[href ^="irc://"],
#content a.extiw[href ^="irc://"],
.link-irc {
background: url(images/talk-icon.png?2) center right no-repeat;
padding: 0 13px 0 0;
}
#content a.external[href $=".ogg"], #content a.external[href $=".OGG"],
#content a.external[href $=".mid"], #content a.external[href $=".MID"],
#content a.external[href $=".midi"], #content a.external[href $=".MIDI"],
#content a.external[href $=".mp3"], #content a.external[href $=".MP3"],
#content a.external[href $=".wav"], #content a.external[href $=".WAV"],
#content a.external[href $=".wma"], #content a.external[href $=".WMA"],
.link-audio {
background: url("images/audio-icon.png?2") center right no-repeat;
padding: 0 13px 0 0;
}
#content a.external[href $=".ogm"], #content a.external[href $=".OGM"],
#content a.external[href $=".avi"], #content a.external[href $=".AVI"],
#content a.external[href $=".mpeg"], #content a.external[href $=".MPEG"],
#content a.external[href $=".mpg"], #content a.external[href $=".MPG"],
.link-video {
background: url("images/video-icon.png?2") center right no-repeat;
padding: 0 13px 0 0;
}
#content a.external[href $=".pdf"], #content a.external[href $=".PDF"],
#content a.external[href *=".pdf#"], #content a.external[href *=".PDF#"],
#content a.external[href *=".pdf?"], #content a.external[href *=".PDF?"],
.link-document {
background: url("images/document-icon.png?2") center right no-repeat;
padding: 0 13px 0 0;
}
/* Interwiki Styling (Disabled) */
#content a.extiw,
#content a.extiw:active {
color: #36b;
background: none;
padding: 0;
}
#content a.external {
color: #36b;
}
#content .printfooter {
display: none;
}
/* Icon for Usernames */
#pt-userpage,
#pt-anonuserpage,
#pt-login {
background: url(images/user-icon.png?1) left top no-repeat;
padding-left: 15px !important;
text-transform: none;
}
.toccolours {
border: 1px solid #aaa;
background-color: #f9f9f9;
padding: 5px;
font-size: 95%;
}
#bodyContent {
position: relative;
width: 100%;
}
#mw-js-message {
font-size: 0.8em;
}
div#bodyContent {
line-height: 1.5em;
}
/* Watch/Unwatch Icon Styling */
#ca-unwatch.icon,
#ca-watch.icon {
margin-right:1px;
}
#ca-unwatch.icon a,
#ca-watch.icon a {
margin: 0;
padding: 0;
outline: none;
display: block;
width: 26px;
height: 2.5em;
}
#ca-unwatch.icon a {
background-image: url(images/watch-icons.png?1);
background-position: -43px 60%;
}
#ca-watch.icon a {
background-image: url(images/watch-icons.png?1);
background-position: 5px 60%;
}
#ca-unwatch.icon a:hover {
background-image: url(images/watch-icons.png?1);
background-position: -67px 60%;
}
#ca-watch.icon a:hover {
background-image: url(images/watch-icons.png?1);
background-position: -19px 60%;
}
#ca-unwatch.icon a.loading,
#ca-watch.icon a.loading {
background-image: url(images/watch-icon-loading.gif?1);
background-position: center 60%;
}
#ca-unwatch.icon a span,
#ca-watch.icon a span {
display: none;
}
div.vectorTabs ul {
background-image:url(images/tab-break.png?1);
background-position:right bottom;
background-repeat:no-repeat;
}
------------CQ4wAorH1dcm6byte6AhmR
Content-Disposition: inline; filename=shared.css
Content-Type: text/css; name=shared.css
Content-Location: http://bits.wikimedia.org/skins-1.5/common/shared.css?283-19
Content-Transfer-Encoding: 8bit
/**
* CSS in this file is used by *all* skins (that have any CSS at all). Be
* careful what you put in here, since what looks good in one skin may not in
* another, but don't ignore the poor non-Monobook users either.
*/
/* Colored watchlist and recent changes numbers */
.mw-plusminus-pos { color: #006400; } /* dark green */
.mw-plusminus-neg { color: #8b0000; } /* dark red */
.mw-plusminus-null { color: #aaa; } /* gray */
/* Comment and username portions of RC entries */
span.comment {
font-style: italic;
}
span.changedby {
font-size: 95%;
}
/* Math */
.texvc { direction: ltr; unicode-bidi: embed; }
img.tex { vertical-align: middle; }
span.texhtml { font-family: serif; }
/* add a bit of margin space between the preview and the toolbar */
/* this replaces the ugly
we used to insert into the page source */
#wikiPreview.ontop { margin-bottom: 1em; }
/* Stop floats from intruding into edit area in previews */
#editform, #toolbar, #wpTextbox1 { clear: both; }
div#mw-js-message {
margin: 1em 5%;
padding: 0.5em 2.5%;
border: solid 1px #ddd;
background-color: #fcfcfc;
}
/* Edit section links */
.editsection {
float: right;
margin-left: 5px;
}
/**
* File histories
*/
h2#filehistory {
clear: both;
}
table.filehistory th,
table.filehistory td {
vertical-align:top;
}
table.filehistory th {
text-align: left;
}
table.filehistory td.mw-imagepage-filesize,
table.filehistory th.mw-imagepage-filesize {
white-space:nowrap;
}
table.filehistory td.filehistory-selected {
font-weight: bold;
}
/*
* rev_deleted stuff
*/
li span.deleted, span.history-deleted {
text-decoration: line-through;
color: #888;
font-style: italic;
}
/**
* Patrol stuff
*/
.not-patrolled {
background-color: #ffa;
}
.unpatrolled {
font-weight: bold;
color: red;
}
div.patrollink {
font-size: 75%;
text-align: right;
}
/**
* Forms
*/
body.ltr td.mw-label { text-align: right; }
body.ltr td.mw-input { text-align: left; }
body.ltr td.mw-submit { text-align: left; }
body.rtl td.mw-label { text-align: left; }
body.rtl td.mw-input { text-align: right; }
body.rtl td.mw-submit { text-align: right; }
td.mw-label { vertical-align: top; }
.prefsection td.mw-label { width: 20%; }
.prefsection table { width: 100%; }
td.mw-submit { white-space: nowrap; }
table.mw-htmlform-nolabel td.mw-label { width: 0 !important; }
tr.mw-htmlform-vertical-label td.mw-label {
text-align: left !important;
}
input#wpSummary {
width: 80%;
}
/**
* Image captions
*/
body.rtl .thumbcaption { text-align:right; }
body.rtl .magnify { float:left; }
body.ltr .thumbcaption { text-align:left; }
body.ltr .magnify { float:right; }
/**
* Hidden categories
*/
.mw-hidden-cats-hidden { display: none; }
.catlinks-allhidden { display: none; }
/* Convenience links to edit block, delete and protect reasons */
p.mw-ipb-conveniencelinks, p.mw-protect-editreasons,
p.mw-filedelete-editreasons, p.mw-delete-editreasons,
p.mw-revdel-editreasons {
font-size: 90%;
float: right;
}
body.rtl p.mw-ipb-conveniencelinks, body.rtl p.mw-protect-editreasons,
body.rtl p.mw-filedelete-editreasons, body.rtl p.mw-delete-editreasons,
body.rtl p.mw-revdel-editreasons {
float: left;
}
/* Search results */
.searchresults {
}
.searchresults p {
margin-left: 0.4em;
margin-top: 1em;
margin-bottom: 1.2em;
}
div.searchresult {
font-size: 95%;
width:38em;
}
.mw-search-results {
margin-left: 0.4em;
}
.mw-search-results li {
padding-bottom: 1em;
list-style:none;
list-style-image:none;
}
.mw-search-results li a {
font-size: 108%;
}
.mw-search-result-data {
color: green;
font-size: 97%;
}
.mw-search-formheader {
background-color: #f3f3f3;
margin-top: 1em;
border: 1px solid silver;
}
.mw-search-formheader div.search-types {
float:left;
padding-left: 0.25em;
}
.rtl .mw-search-formheader div.search-types {
float: right;
}
.mw-search-formheader div.search-types ul {
margin: 0 !important;
padding: 0 !important;
list-style: none !important;
}
.mw-search-formheader div.search-types ul li {
float: left;
margin: 0;
padding: 0;
}
.mw-search-formheader div.search-types ul li a {
display: block;
padding: 0.5em;
}
.mw-search-formheader div.search-types ul li.current a {
color: #333333;
cursor: default;
}
.mw-search-formheader div.search-types ul li.current a:hover {
text-decoration: none;
}
.mw-search-formheader div.results-info {
float: right;
padding: 0.5em;
padding-right: 0.75em;
}
.mw-search-formheader div.results-info ul {
margin: 0 !important;
padding: 0 !important;
list-style: none !important;
}
.mw-search-formheader div.results-info ul li {
float: right;
margin: 0;
padding: 0;
}
fieldset#mw-searchoptions {
margin: 0;
padding-left: 0.75em !important;
padding-right: 0.75em !important;
padding-bottom: 0.5em !important;
padding-top: 0.5em !important;
border: none;
background-color: #f9f9f9;
border: 1px solid silver !important;
border-top-width: 0 !important;
}
fieldset#mw-searchoptions legend {
display: none;
}
fieldset#mw-searchoptions h4 {
padding: 0;
margin: 0;
float: left;
}
.rtl fieldset#mw-searchoptions h4 {
float: right;
}
fieldset#mw-searchoptions div#mw-search-togglebox {
float: right;
}
.rtl fieldset#mw-searchoptions div#mw-search-togglebox {
float: left;
}
fieldset#mw-searchoptions div#mw-search-togglebox label {
margin-right: 0.25em;
}
fieldset#mw-searchoptions div#mw-search-togglebox input {
margin-left: 0.25em;
}
fieldset#mw-searchoptions table {
float: left;
margin-right: 3em;
}
fieldset#mw-searchoptions table td {
padding-right: 1em;
}
.rtl fieldset#mw-searchoptions table td {
padding-left: 1em;
padding-right: 0;
}
body.rtl fieldset#mw-searchoptions table {
margin-right: 0;
margin-left: 3em;
float: right;
}
fieldset#mw-searchoptions div.divider {
clear: both;
border-bottom: 1px solid #DDDDDD;
padding-top: 0.5em;
margin-bottom: 0.5em;
}
td#mw-search-menu {
padding-left:6em;
font-size:85%;
}
div#mw-search-interwiki {
float: right;
width: 18em;
border-style: solid;
border-color: #AAAAAA;
border-width: 1px;
margin-top: 2ex;
}
.rtl div#mw-search-interwiki {
float: left;
}
div#mw-search-interwiki li {
font-size: 95%;
}
.mw-search-interwiki-more {
float: right;
font-size: 90%;
}
.rtl .mw-search-interwiki-more {
float: left;
}
div#mw-search-interwiki-caption {
text-align: center;
font-weight: bold;
font-size: 95%;
}
.mw-search-interwiki-project {
font-size: 97%;
text-align: left;
padding-left: 0.2em;
padding-right: 0.15em;
padding-bottom: 0.2em;
padding-top: 0.15em;
background-color:#ececec;
border-top:1px solid #BBBBBB;
}
.rtl .mw-search-interwiki-project {
text-align: right;
}
span.searchalttitle {
font-size: 95%;
}
div.searchdidyoumean {
font-size: 127%;
margin-top: 0.8em;
/* Note that this color won't affect the link, as desired. */
color: #c00;
}
div.searchdidyoumean em {
font-weight: bold;
}
.searchmatch {
font-weight: bold;
}
table#mw-search-top-table {
background-color: transparent;
}
/*
* Advanced PowerSearch box
*/
td#mw-search-togglebox {
text-align: right;
}
table#mw-search-powertable {
width:100%;
}
form#powersearch {
clear: both;
}
/*
* UserRights stuff
*/
.mw-userrights-disabled {
color: #888;
}
table.mw-userrights-groups * td,table.mw-userrights-groups * th {
padding-right: 1.5em;
}
/*
* OpenSearch ajax suggestions
*/
.os-suggest {
overflow: auto;
overflow-x: hidden;
position: absolute;
top: 0px;
left: 0px;
width: 0px;
background-color: white;
background-color: Window;
border-style: solid;
border-color: #AAAAAA;
border-width: 1px;
z-index:99;
font-size:95%;
}
table.os-suggest-results {
font-size: 95%;
cursor: pointer;
border: 0;
border-collapse: collapse;
width: 100%;
}
.os-suggest-result, .os-suggest-result-hl {
white-space: nowrap;
background-color: white;
background-color: Window;
color: black;
color: WindowText;
padding: 2px;
}
.os-suggest-result-hl,
.os-suggest-result-hl-webkit {
background-color: #4C59A6;
color: white;
}
.os-suggest-result-hl {
/* System colors are misimplemented in Safari 3.0 and earlier,
making highlighted text illegible... */
background-color: Highlight;
color: HighlightText;
}
.os-suggest-toggle {
position: relative;
left: 1ex;
font-size: 65%;
}
.os-suggest-toggle-def {
position: absolute;
top: 0px;
left: 0px;
font-size: 65%;
visibility: hidden;
}
/* Page history styling */
/* the auto-generated edit comments */
.autocomment { color: gray; }
#pagehistory .history-user {
margin-left: 0.4em;
margin-right: 0.2em;
}
#pagehistory span.minor { font-weight: bold; }
#pagehistory li { border: 1px solid white; }
#pagehistory li.selected {
background-color: #f9f9f9;
border: 1px dashed #aaa;
}
/** Generic minor/bot/newpage styling */
.newpage, .minor, .bot {
font-weight: bold;
}
/* Special:Contributions styling */
.mw-uctop {
font-weight: bold;
}
/* Special:ListGroupRights styling */
table.mw-listgrouprights-table tr {
vertical-align: top;
}
.listgrouprights-revoked { text-decoration: line-through; }
/* Special:Statistics styling */
td.mw-statistics-numbers {
text-align: right;
}
/* Special:SpecialPages styling */
h4.mw-specialpagesgroup {
background-color: #dcdcdc;
padding: 2px;
margin: .3em 0em 0em 0em;
}
.mw-specialpagerestricted {
font-weight: bold;
}
#shared-image-dup, #shared-image-conflict {
font-style: italic;
}
/* Special:EmailUser styling */
table.mw-emailuser-table {
width: 98%;
}
td#mw-emailuser-sender, td#mw-emailuser-recipient {
font-weight: bold;
}
/* Special:Allpages styling */
table.allpageslist {
background-color: transparent;
}
table.mw-allpages-table-form, table.mw-allpages-table-chunk {
background-color: transparent;
width: 100%;
}
td.mw-allpages-alphaindexline {
text-align: right;
}
td.mw-allpages-nav, p.mw-allpages-nav {
text-align: right;
font-size: smaller;
margin-bottom: 1em;
}
table.mw-allpages-table-form tr {
vertical-align: top;
}
/* Special:Prefixindex styling */
table#mw-prefixindex-list-table,
table#mw-prefixindex-nav-table {
width: 98%;
background-color: transparent;
}
td#mw-prefixindex-nav-form {
font-size: smaller;
margin-bottom: 1em;
text-align: right;
vertical-align: top;
}
/*
* Recreating deleted page warning
* Reupload file warning
* Page protection warning
* incl. log entries for these warnings
*/
div.mw-warning-with-logexcerpt {
padding: 3px;
margin-bottom: 3px;
border: 2px solid #2F6FAB;
clear: both;
}
div.mw-warning-with-logexcerpt ul li {
font-size: 90%;
}
/* (show/hide) revision deletion links */
span.mw-revdelundel-link,
strong.mw-revdelundel-link {
font-size: 90%;
}
span.mw-revdelundel-hidden,
input.mw-revdelundel-hidden {
visibility: hidden;
}
td.mw-revdel-checkbox, th.mw-revdel-checkbox {
padding-right: 10px;
text-align: center;
}
/* feed links */
a.feedlink {
background: url("images/feed-icon.png") center left no-repeat;
padding-left: 16px;
}
/* Plainlinks - this can be used to switch
* off special external link styling */
.plainlinks a {
background: none !important;
padding: 0 !important;
}
/* wikitable class for skinning normal tables */
table.wikitable {
margin: 1em 1em 1em 0;
background: #f9f9f9;
border: 1px #aaa solid;
border-collapse: collapse;
}
.wikitable th, .wikitable td {
border: 1px #aaa solid;
padding: 0.2em;
}
.wikitable th {
background: #f2f2f2;
text-align: center;
}
.wikitable caption {
font-weight: bold;
}
/* hide initially collapsed collapsable tables */
table.collapsed tr.collapsable {
display: none;
}
/* success and error messages */
.success {
color: green;
font-size: larger;
}
.error {
color: red;
font-size: larger;
}
.errorbox, .successbox {
font-size: larger;
border: 2px solid;
padding: .5em 1em;
float: left;
margin-bottom: 2em;
color: #000;
}
.errorbox {
border-color: red;
background-color: #fff2f2;
}
.successbox {
border-color: green;
background-color: #dfd;
}
.errorbox h2, .successbox h2 {
font-size: 1em;
font-weight: bold;
display: inline;
margin: 0 .5em 0 0;
border: none;
}
/* Note on preview page */
.previewnote {
color: #c00;
margin-bottom: 1em;
}
.previewnote p {
text-indent: 3em;
margin: 0.8em 0;
}
.visualClear {
clear: both;
}
#mw_trackbacks {
border: solid 1px #bbbbff;
background-color: #eeeeff;
padding: 0.2em;
}
/*
Table pager (e.g. Special:Imagelist)
- remove underlines from the navigation link
- collapse borders
- set the borders to outsets (similar to Special:Allmessages)
- remove line wrapping for all td and th, set background color
- restore line wrapping for the last two table cells (description and size)
*/
.TablePager { min-width: 80%; }
.TablePager_nav a { text-decoration: none; }
.TablePager { border-collapse: collapse; }
.TablePager, .TablePager td, .TablePager th {
border: 1px solid #aaaaaa;
padding: 0 0.15em 0 0.15em;
}
.TablePager th { background-color: #eeeeff }
.TablePager td { background-color: #ffffff }
.TablePager tr:hover td { background-color: #eeeeff }
.imagelist td, .imagelist th { white-space: nowrap }
.imagelist .TablePager_col_links { background-color: #eeeeff }
.imagelist .TablePager_col_img_description { white-space: normal }
.imagelist th.TablePager_sort { background-color: #ccccff }
/* Allmessages table */
#mw-allmessagestable .allmessages-customised td.am_default {
background-color: #fcffc4;
}
#mw-allmessagestable tr.allmessages-customised:hover td.am_default {
background-color: #faff90;
}
#mw-allmessagestable td.am_actual {
background-color: #e2ffe2;
}
#mw-allmessagestable tr.allmessages-customised:hover + tr.allmessages-customised td.am_actual {
background-color: #b1ffb1;
}
/* filetoc */
ul#filetoc {
text-align: center;
border: 1px solid #aaaaaa;
background-color: #f9f9f9;
padding: 5px;
font-size: 95%;
margin-bottom: 0.5em;
margin-left: 0;
margin-right: 0;
}
#filetoc li {
display: inline;
list-style-type: none;
padding-right: 2em;
}
/* Classes for EXIF data display */
table.mw_metadata {
font-size: 0.8em;
margin-left: 0.5em;
margin-bottom: 0.5em;
width: 300px;
}
table.mw_metadata caption {
font-weight: bold;
}
table.mw_metadata th {
font-weight: normal;
}
table.mw_metadata td {
padding: 0.1em;
}
table.mw_metadata {
border: none;
border-collapse: collapse;
}
table.mw_metadata td, table.mw_metadata th {
text-align: center;
border: 1px solid #aaaaaa;
padding-left: 0.1em;
padding-right: 0.1em;
}
table.mw_metadata th {
background-color: #f9f9f9;
}
table.mw_metadata td {
background-color: #fcfcfc;
}
/* Galleries */
table.gallery {
border: 1px solid #ccc;
margin: 2px;
padding: 2px;
background-color: white;
}
table.gallery tr {
vertical-align: top;
}
table.gallery td {
vertical-align: top;
background-color: #f9f9f9;
border: solid 2px white;
}
table.gallery caption {
font-weight: bold;
}
div.gallerybox {
margin: 2px;
}
div.gallerybox div.thumb {
text-align: center;
border: 1px solid #ccc;
margin: 2px;
}
div.gallerytext {
overflow: hidden;
font-size: 94%;
padding: 2px 4px;
}
table.mw-enhanced-rc {
background: none;
border:0;
border-spacing:0;
}
td.mw-enhanced-rc {
white-space:nowrap;
padding:0;
vertical-align:top;
font-family:monospace
}
#mw-addcategory-prompt {
display: inline;
margin-left: 1em;
}
#mw-addcategory-prompt input {
margin-left: 0.5em;
margin-right: 0.5em;
}
.mw-remove-category {
padding: 8px;
background-image: url(images/remove.png);
background-position: center center;
background-repeat: no-repeat;
}
.mw-ajax-addcategory {
padding-left: 20px;
background-image: url(images/add.png);
background-position: left center;
background-repeat: no-repeat;
}
.mw-ajax-loader {
background-image: url(images/ajax-loader.gif);
background-position: center center;
background-repeat: no-repeat;
padding: 16px;
position: relative;
top: -16px;
}
.mw-small-spinner {
padding: 10px !important;
margin-right: 0.6em;
background-image: url(images/spinner.gif);
background-position: center center;
background-repeat: no-repeat;
}
/* Sort arrows added by SortableTables */
a.sortheader {
margin: 0 0.3em;
}
------------CQ4wAorH1dcm6byte6AhmR
Content-Disposition: inline; filename=commonPrint.css
Content-Type: text/css; name=commonPrint.css
Content-Location: http://bits.wikimedia.org/skins-1.5/common/commonPrint.css?283-19
Content-Transfer-Encoding: 8bit
/*
** MediaWiki Print style sheet for CSS2-capable browsers.
** Copyright Gabriel Wicke, http://www.aulinx.de/
**
** Derived from the plone (http://plone.org/) styles
** Copyright Alexander Limi
*/
/* Thanks to A List Apart (http://alistapart.com/) for useful extras */
a.stub,
a.new{ color:#ba0000; text-decoration:none; }
#toc {
/*border:1px solid #2f6fab;*/
border:1px solid #aaaaaa;
background-color:#f9f9f9;
padding:5px;
}
.tocindent {
margin-left: 2em;
}
.tocline {
margin-bottom: 0px;
}
/* images */
div.floatright {
float: right;
clear: right;
margin: 0;
position:relative;
border: 0.5em solid White;
border-width: 0.5em 0 0.8em 1.4em;
}
div.floatright p { font-style: italic;}
div.floatleft {
float: left;
margin: 0.3em 0.5em 0.5em 0;
position:relative;
border: 0.5em solid White;
border-width: 0.5em 1.4em 0.8em 0;
}
div.floatleft p { font-style: italic; }
/* thumbnails */
div.thumb {
margin-bottom: 0.5em;
border-style: solid; border-color: White;
width: auto;
overflow: hidden;
}
div.thumbinner {
border:1px solid #cccccc;
padding: 3px !important;
background-color:#f9f9f9;
font-size: 94%;
text-align: center;
}
html .thumbimage {
border:1px solid #cccccc;
}
html .thumbcaption {
border: none;
padding: 0.3em 0 0.1em 0;
}
div.magnify { display: none; }
div.tright {
float: right;
clear: right;
border-width: 0.5em 0 0.8em 1.4em;
}
div.tleft {
float: left;
margin-right:0.5em;
border-width: 0.5em 1.4em 0.8em 0;
}
img.thumbborder {
border: 1px solid #dddddd;
}
/* table standards */
table.rimage {
float:right;
width:1pt;
position:relative;
margin-left:1em;
margin-bottom:1em;
text-align:center;
}
body {
background: White;
/*font-size: 11pt !important;*/
color: Black;
margin: 0;
padding: 0;
}
.noprint,
div#jump-to-nav,
div.top,
div#column-one,
#colophon,
.editsection,
.toctoggle,
.tochidden,
div#f-poweredbyico,
div#f-copyrightico,
li#viewcount,
li#about,
li#disclaimer,
li#privacy,
#mw-hidden-catlinks {
/* Hides all the elements irrelevant for printing */
display: none;
}
ul {
list-style-type: square;
}
#content {
background: none;
border: none ! important;
padding: 0 ! important;
margin: 0 ! important;
}
#footer {
background : white;
color : black;
border-top: 1px solid black;
}
h1, h2, h3, h4, h5, h6 {
font-weight: bold;
}
p, .documentDescription {
margin: 1em 0 ! important;
line-height: 1.2em;
}
.tocindent p {
margin: 0 0 0 0 ! important;
}
pre {
border: 1pt dashed black;
white-space: pre;
font-size: 8pt;
overflow: auto;
padding: 1em 0;
background : white;
color : black;
}
table.listing,
table.listing td {
border: 1pt solid black;
border-collapse: collapse;
}
a {
color: Black !important;
background: none !important;
padding: 0 !important;
}
a:link, a:visited {
color: #520;
background: transparent;
text-decoration: underline;
}
#content a.external.text:after, #content a.external.autonumber:after {
/* Expand URLs for printing */
content: " (" attr(href) ") ";
}
#globalWrapper {
width: 100% !important;
min-width: 0 !important;
}
#content {
background : white;
color : black;
}
#column-content {
margin: 0 !important;
}
#column-content #content {
padding: 1em;
margin: 0 !important;
}
/* MSIE/Win doesn't understand 'inherit' */
a, a.external, a.new, a.stub {
color: black ! important;
text-decoration: none ! important;
}
/* Continue ... */
a, a.external, a.new, a.stub {
color: inherit ! important;
text-decoration: inherit ! important;
}
img { border: none; }
img.tex { vertical-align: middle; }
span.texhtml { font-family: serif; }
#siteNotice { display: none; }
div.gallerybox {
border: 1px solid #cccccc;
background-color:#f9f9f9;
width: 150px;
}
div.gallerytext {
overflow: visible;
}
/*
** Diff rendering
*/
table.diff { background:white; }
td.diff-otitle { background:#ffffff; }
td.diff-ntitle { background:#ffffff; }
td.diff-addedline {
background:#ccffcc;
font-size: smaller;
border: solid 2px black;
}
td.diff-deletedline {
background:#ffffaa;
font-size: smaller;
border: dotted 2px black;
}
td.diff-context {
background:#eeeeee;
font-size: smaller;
}
.diffchange {
color: silver;
font-weight: bold;
text-decoration: underline;
}
------------CQ4wAorH1dcm6byte6AhmR
Content-Disposition: inline
Content-Type: image/png
Content-Location: http://bits.wikimedia.org/w/extensions/UsabilityInitiative/images/vector/collapsibleNav/portal-break.png?1
Content-Transfer-Encoding: Base64
iVBORw0KGgoAAAANSUhEUgAAAIwAAAABCAMAAAA7MLYKAAAAGXRFWHRTb2Z0d2Fy
ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEtQTFRF29vb2tra4ODg6urq5OTk4uLi
6+vr7e3t7Ozs8PDw5+fn4+Pj4eHh3d3d39/f6Ojo5eXl6enp8fHx8/Pz8vLy7+/v
3Nzc2dnZ2NjYnErj7QAAAD1JREFUeNq0wQUBACAMALDj7hf6JyUFGxzEnYhC9GaN
PG1xVffGDErk/iCigLl1XV2xM49lfAxEaSM+AQYA9HMKuv4liFQAAAAASUVORK5C
YII=
------------CQ4wAorH1dcm6byte6AhmR
Content-Disposition: inline
Content-Type: image/png
Content-Location: http://bits.wikimedia.org/w/extensions/UsabilityInitiative/images/vector/collapsibleNav/arrow-down.png?1
Content-Transfer-Encoding: Base64
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAGXRFWHRTb2Z0d2Fy
ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA9QTFRFeXl53d3dmpqasbGx////GU0i
EgAAAAV0Uk5T/////wD7tg5TAAAAK0lEQVQI12NwgQIG0hhCDAwMTCJAhqMCA4Mi
WEoIJABiOCooQhULi5BqMgB2bh4svs8t+QAAAABJRU5ErkJggg==
------------CQ4wAorH1dcm6byte6AhmR
Content-Disposition: inline
Content-Type: image/png
Content-Location: http://bits.wikimedia.org/w/extensions/UsabilityInitiative/images/vector/collapsibleNav/arrow-right.png?1
Content-Transfer-Encoding: Base64
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAGXRFWHRTb2Z0d2Fy
ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAxQTFRF3d3deXl5////nZ2dQA6SoAAA
AAN0Uk5T//8A18oNQQAAADNJREFUeNpiYEIDDMQKMKALMDOgCTDCRWACcBG4AEwE
IcDITEAFuhnotmC4g4EEzwEEGAADqgHmQSPJKgAAAABJRU5ErkJggg==
------------CQ4wAorH1dcm6byte6AhmR
Content-Disposition: inline; filename=combined.min.css
Content-Type: text/css; name=combined.min.css
Content-Location: http://bits.wikimedia.org/w/extensions/UsabilityInitiative/css/combined.min.css?117
Content-Transfer-Encoding: 8bit
.suggestions{
overflow:hidden;
position:absolute;
top:0px;
left:0px;
width:0px;
border:none;
z-index:99;
padding:0;
margin:-1px 0 0 0;
}
.suggestions-special{
position:relative;
background-color:Window;
font-size:0.8em;
cursor:pointer;
border:solid 1px #aaaaaa;
padding:0;
margin:0;
margin-top:-2px;
display:none;
padding:0.25em 0.25em;
line-height:1.25em;
}
.suggestions-results{
background-color:white;
background-color:Window;
font-size:0.8em;
cursor:pointer;
border:solid 1px #aaaaaa;
padding:0;
margin:0;
}
.suggestions-result{
color:black;
color:WindowText;
margin:0;
line-height:1.5em;
padding:0.01em 0.25em;
}
.suggestions-result-current{
background-color:#4C59A6;
background-color:Highlight;
color:white;
color:HighlightText;
}
.suggestions-special .special-label{
font-size:0.8em;
color:gray;
}
.suggestions-special .special-query{
color:black;
font-style:italic;
}
.suggestions-special .special-hover{
background-color:silver;
}
.suggestions-result-current .special-label,
.suggestions-result-current .special-query{
color:white;
color:HighlightText;
}
.autoellipsis-matched,
.highlight{
font-weight:bold;
}
#mw-panel.collapsible-nav div.portal{
background-image:url(../images/vector/collapsibleNav/portal-break.png?1);
background-position:left top;
background-repeat:no-repeat;
padding:0.25em 0 !important;
margin:-11px 9px 10px 11px;
}
body.rtl #mw-panel.collapsible-nav div.portal{
background-position:right top;
margin:-11px 11px 10px 9px;
}
#mw-panel.collapsible-nav div.portal h5{
color:#4D4D4D;
font-weight:normal;
background:url(../images/vector/collapsibleNav/arrow-down.png?1) 0 50% no-repeat;
padding:4px 0 3px 1.5em;
margin-bottom:0px;
}
body.rtl #mw-panel.collapsible-nav div.portal h5{
background:url(../images/vector/collapsibleNav/arrow-down.png?1) 100% 50% no-repeat;
padding:4px 1.5em 3px 0;
}
#mw-panel.collapsible-nav div.collapsed h5{
color:#0645AD;
background:url(../images/vector/collapsibleNav/arrow-right.png?1) 0 50% no-repeat;
margin-bottom:0px;
}
body.rtl #mw-panel.collapsible-nav div.collapsed h5{
background:url(../images/vector/collapsibleNav/arrow-left.png?1) 100% 50% no-repeat;
}
#mw-panel.collapsible-nav div h5:hover{
cursor:pointer;
text-decoration:none;
}
#mw-panel.collapsible-nav div.collapsed h5:hover{
text-decoration:underline;
}
#mw-panel.collapsible-nav div.portal div.body{
background:none !important;
padding-top:0px;
display:none;
}
#mw-panel.collapsible-nav div.persistent div.body{
display:block;
}
#mw-panel.collapsible-nav div.first h5{
display:none;
}
#mw-panel.collapsible-nav div.persistent h5{
background:none !important;
padding-left:0.7em;
cursor:default;
}
#mw-panel.collapsible-nav div.portal div.body ul li{
padding:0.25em 0;
}
#mw-panel.collapsible-nav div.first{
background-image:none;
margin-top:0px;
}
#mw-panel.collapsible-nav div.persistent div.body{
margin-left:0.5em;
}
body.rtl #mw-panel.collapsible-nav div.persistent div.body{
margin-left:0;
margin-right:0.5em;
}
form#editform{
margin:0;
padding:0;
}
#wpSummary,#wpSummaryLabel{
margin-bottom:1em;
}
.wikiEditor-ui textarea#wpTextbox1{
border:none;
padding:0;
margin:-1px;
line-height:1.5em;
}
.wikiEditor-ui .wikiEditor-ui-text > textarea#wpTextbox1{
margin:0;
}
.wikiEditor-ui{
float:left;
position:relative;
clear:both;
width:100%;
background-color:#E0EEf7;
border:solid silver 1px;
}
body.rtl .wikiEditor-ui{
float:right;
}
.wikiEditor-ui .wikiEditor-ui-bottom{
}
.wikiEditor-ui .wikiEditor-ui-text{
line-height:0;
}
.wikiEditor-ui .wikiEditor-ui-top{
position:relative;
border-bottom:solid silver 1px;
}
.wikiEditor-ui .wikiEditor-ui-left{
float:left;
width:100%;
}
body.rtl .wikiEditor-ui .wikiEditor-ui-left{
float:right;
}
.wikiEditor-ui .wikiEditor-ui-right{
float:right;
background:#F3F3F3;
overflow:hidden;
}
body.rtl .wikiEditor-ui .wikiEditor-ui-right{
float:left;
}
.wikiEditor-wikitext{
float:left;
width:100%;
}
.wikiEditor-ui-controls{
float:left;
width:100%;
background-color:white;
margin-top:-1px;
border-bottom:solid 1px silver;
}
.wikiEditor-ui-tabs{
float:left;
height:2.5em;
margin-left:-1px;
background-color:white;
border-left:solid 1px silver;
border-top:solid 1px silver;
}
.wikiEditor-ui-buttons{
float:right;
height:2.5em;
margin-right:-1px;
background-color:white;
padding-left:1em;
border-top:solid 1px white;
}
.wikiEditor-ui-buttons button{
margin-left:0.5em;
}
.wikiEditor-ui-tabs div{
float:left;
height:2.5em;
background-color:#f3f3f3;
border-right:solid 1px silver;
border-bottom:solid 1px silver;
}
.wikiEditor-ui-tabs div.current{
border-bottom:solid 1px white;
background-color:white;
}
.wikiEditor-ui-tabs div a{
display:inline-block;
padding:0 0.75em;
line-height:2.5em;
color:#0645AD;
}
.wikiEditor-ui-tabs div.current a{
color:#333333;
}
.wikiEditor-ui-tabs div.current a:hover{
text-decoration:none;
}
.wikiEditor-view-wikitext{
line-height:1em;
}
.wikiEditor-ui-loading{
background:#f3f3f3;
z-index:10;
position:absolute;
top:0;
left:0;
text-align:center;
height:100%;
width:100%;
border:1px solid silver;
margin:-1px;
}
.wikiEditor-ui-loading span{
display:block;
height:24px;
width:24px;
background:url( ../images/wikiEditor/toolbar/loading.gif ) 0 0 no-repeat;
text-indent:-9999px;
margin:0 auto;
}
.wikiEditor-toolbar-dialog table{
margin-top:0.75em;
}
.wikiEditor-toolbar-dialog table td{
padding:0.5em;
height:3em;
overflow:visible;
}
div.suggestions{
z-index:1099;
}
.wikiEditor-toolbar-dialog .ui-dialog-titlebar-close:hover{
text-decoration:none;
}
.wikiEditor-toolbar-dialog .ui-dialog-content .status-invalid input{
border:2px solid red;
padding:2px 1px;
}
.wikiEditor-toolbar-dialog .ui-dialog-titlebar{
padding:0.9em 1.4em 0.6em !important;
}
.wikiEditor-toolbar-dialog table td{
padding:0 !important;
}
.wikiEditor-toolbar-dialog .ui-dialog-buttonpane button{
-moz-border-radius:4px;
-webkit-border-radius:4px;
padding:0.2em 0.6em 0.15em !important;
margin:0.5em 0 0.5em 0.4em !important;
border:1px solid #a6a6a6 !important;
background:#f2f2f2 url( ../images/wikiEditor/dialogs/button_off.png?1) repeat-x scroll 50% 100% !important;
}
.wikiEditor-toolbar-dialog .ui-dialog-buttonpane button:hover{
border-color:#6e7273;
background:#e1e1e1 url( ../images/wikiEditor/dialogs/button_over.png?1) repeat-x scroll 50% 100% !important;
}
.wikiEditor-toolbar-dialog .ui-dialog-buttonpane button:active,
.wikiEditor-toolbar-dialog .ui-dialog-buttonpane button:focus{
border-color:#707271;
background:#bfbfbf url( ../images/wikiEditor/dialogs/button_down.png?1) repeat-x scroll 50% 100% !important;
}
.wikiEditor-toolbar-dialog .ui-dialog-buttonpane button.disabled{
color:#7f7f7f;
border-color:#cccccc;
background:#f2f2f2 url( ../images/wikiEditor/dialogs/button_disabled.png?1) repeat-x scroll 50% 100% !important;
}
.wikiEditor-toolbar-dialog .ui-dialog-buttonpane button::-moz-focus-inner{
border:0;
}
.wikiEditor-toolbar-dialog .ui-widget-header{
background:#f0f0f0 url( ../images/wikiEditor/dialogs/titlebar_fade.png?1) repeat-x scroll 50% 100% !important;
}
.wikiEditor-toolbar-dialog .ui-icon-closethick{
background:url( ../images/wikiEditor/dialogs/close_x.png?1) no-repeat 50% 50% !important;
}
.wikiEditor-toolbar-dialog .ui-dialog-buttonpane{
margin-top:0 !important;
padding:0.3em 1.4em 0.5em 1.4em !important;
}
.wikiEditor-toolbar-dialog .ui-dialog-content fieldset{
border:none !important;
margin:0 !important;
padding:0 !important;
}
.wikiEditor-toolbar-dialog .ui-widget-header{
border-bottom:1px solid #6bc8f3 !important;
}
.wikiEditor-toolbar-dialog .ui-dialog-content input[type=text]{
-moz-box-sizing:border-box;
-ms-box-sizing:border-box;
-webkit-box-sizing:border-box;
-khtml-box-sizing:border-box;
}
.wikiEditor-toolbar-dialog .ui-dialog-content input[type="radio"],
.wikiEditor-toolbar-dialog .ui-dialog-content input[type="checkbox"]{
margin-left:0;
}
.wikiEditor-toolbar-dialog .ui-dialog-titlebar-close{
padding:0;
}
body.ltr .wikiEditor-toolbar-dialog .ui-dialog-titlebar-close{
right:0.9em;
}
.wikieditor-toolbar-field-wrapper{
padding:0 0 25px 0;
}
.wikieditor-toolbar-floated-field-wrapper{
float:left;
margin-right:2em;
}
.wikieditor-toolbar-dialog-hint{
color:#999999;
}
.wikiEditor-toolbar-dialog,
.wikiEditor-toolbar-dialog .ui-widget-content{
border:none !important;
}
#wikieditor-toolbar-table-dialog fieldset{
width:218px;
padding:0;
float:left;
}
body.rtl #wikieditor-toolbar-table-dialog fieldset{
float:right;
}
#wikieditor-toolbar-table-dialog .wikieditor-toolbar-table-preview-wrapper{
width:330px;
padding:0;
float:right;
}
body.rtl #wikieditor-toolbar-table-dialog .wikieditor-toolbar-table-preview-wrapper{
float:left;
}
body.rtl .wikiEditor-toolbar-dialog .wikieditor-toolbar-table-preview-wrapper table{
margin-left:1em;
margin-right:0;
}
.wikieditor-toolbar-table-preview-content *{
cursor:default;
}
.wikiEditor-toolbar-dialog .wikieditor-toolbar-table-preview-wrapper table{
width:100% !important;
}
.wikiEditor-toolbar-dialog .wikieditor-toolbar-table-preview-content table td{
padding:10px 4px !important;
height:auto !important;
}
.wikiEditor-toolbar-dialog .wikieditor-toolbar-table-preview-content table th{
padding:7px 3px !important;
}
.wikieditor-toolbar-table-dimension-fields .wikieditor-toolbar-field-wrapper{
float:left;
margin-right:20px;
vertical-align:bottom;
}
body.rtl .wikieditor-toolbar-table-dimension-fields .wikieditor-toolbar-field-wrapper{
float:right;
margin-right:0px;
margin-left:20px;
}
.wikiEditor-toolbar-dialog .ui-dialog-content{
padding:30px 20px 0 !important;
}
.wikieditor-toolbar-dialog-wrapper{
width:100%;
}
#wikieditor-toolbar-link-int-target-status{
float:right;
}
#wikieditor-toolbar-link-int-target,
#wikieditor-toolbar-link-int-text{
width:100%;
}
#wikieditor-toolbar-tool-link-int-target-label{
float:left;
line-height:1.7em;
}
#wikieditor-toolbar-link-int-target-status-loading{
line-height:1.7em;
}
#wikieditor-toolbar-link-int-target-status-exists,
#wikieditor-toolbar-link-int-target-status-notexists,
#wikieditor-toolbar-link-int-target-status-invalid,
#wikieditor-toolbar-link-int-target-status-external{
padding-left:30px;
background-position:0 50%;
background-repeat:no-repeat;
}
#wikieditor-toolbar-link-int-target-status-exists{
background-image:url( ../images/wikiEditor/dialogs/insert-link-exists.png?1);
}
#wikieditor-toolbar-link-int-target-status-notexists{
background-image:url( ../images/wikiEditor/dialogs/insert-link-notexists.png?1);
}
#wikieditor-toolbar-link-int-target-status-invalid{
background-image:url( ../images/wikiEditor/dialogs/insert-link-invalid.png?1);
}
#wikieditor-toolbar-link-int-target-status-external{
background-image:url( ../images/wikiEditor/dialogs/insert-link-external.png?1);
}
#wikieditor-toolbar-reference-dialog label{
float:left;
line-height:1.7em;
}
#wikieditor-toolbar-reference-text{
width:100%;
}
body.rtl .wikiEditor-toolbar-dialog .ui-dialog-buttonpane button{
float:left;
margin:0.5em 0.4em 0.5em 0 !important;
}
body.rtl .wikiEditor-toolbar-dialog .ui-dialog-titlebar-close{
left:0.9em;
right:auto;
}
body.rtl .wikiEditor-toolbar-dialog .ui-dialog-title{
float:right;
}
body.rtl #wikieditor-toolbar-link-int-target-status{
float:left;
}
body.rtl #wikieditor-toolbar-tool-link-int-target-label{
float:right;
}
body.rtl .wikieditor-toolbar-floated-field-wrapper{
float:right;
margin-right:0;
margin-left:2em;
}
body.rtl #wikieditor-toolbar-link-int-target-status-exists,
body.rtl #wikieditor-toolbar-link-int-target-status-notexists,
body.rtl #wikieditor-toolbar-link-int-target-status-invalid,
body.rtl #wikieditor-toolbar-link-int-target-status-external{
padding-left:0;
padding-right:30px;
background-position:100% 50%;
}
body.rtl #wikieditor-toolbar-link-int-target-status-external{
background-image:url( ../images/wikiEditor/dialogs/insert-link-external-rtl.png?1);
}
body.rtl #wikieditor-toolbar-reference-dialog label{
float:right;
}
.wikiEditor-template-dialog-fields label{
text-transform:capitalize;
float:left;
width:25%;
line-height:2.25em;
}
.wikiEditor-template-dialog-fields textarea{
float:right;
width:70%;
line-height:1.5em;
height:1.5em;
}
.wikiEditor-template-dialog-fields .wikiEditor-template-dialog-field-wrapper{
padding:0.75em 0.33em;
border-bottom:dashed 1px silver;
clear:both;
}
.wikiEditor-template-dialog-fields .wikiEditor-template-dialog-field-wrapper:first-child{
padding-top:0;
}
.wikiEditor-template-dialog-fields .wikiEditor-template-dialog-field-wrapper:last-child{
border-bottom:none;
}
.wikieditor-toolbar-table-dimension-fields:after,
.wikieditor-toolbar-dialog-wrapper:after{
visibility:hidden;
display:block;
font-size:0;
content:" ";
clear:both;
height:0;
}
.wikieditor-toolbar-table-dimension-fields,
.wikieditor-toolbar-dialog-wrapper{
display:inline-table;
}
* html .wikieditor-toolbar-table-dimension-fields,
* html .wikieditor-toolbar-dialog-wrapper{
height:1%;
}
.wikieditor-toolbar-table-dimension-fields,
.wikieditor-toolbar-dialog-wrapper{
display:block;
}
.wikiEditor-toolbar-dialog .ui-dialog-buttonpane{
border-top:1px solid #cccccc !important;
}
.wikiEditor-toolbar-dialog .ui-dialog-content{
padding-bottom:1em !important;
}
.wikiEditor-dialog-editoptions{
margin-top:15px;
}
.wikiEditor-publish-dialog-copywarn{
margin-top:0.5em;
}
.wikiEditor-publish-dialog-summary{
margin-top:1.5em;
}
.wikiEditor-publish-dialog-options{
margin-top:1.5em;
}
.wikiEditor-ui-toolbar{
position:relative;
width:100%;
}
.wikiEditor-ui-toolbar .sections{
float:left;
width:100%;
clear:both;
height:0;
}
body.rtl .wikiEditor-ui-toolbar .sections{
float:right;
}
.wikiEditor-ui-toolbar .sections .section{
display:none;
float:left;
width:100%;
border-top:solid 1px #DDDDDD;
background-color:#E0EEf7;
}
.wikiEditor-ui-toolbar{
background-image:url(../images/wikiEditor/toolbar/base.png?1);
background-position:left top;
background-repeat:repeat-x;
}
/*
.wikiEditor-ui-toolbar .toolbar{
background-image:url(../images/wikiEditor/toolbar/base.png?1);
background-position:left top;
}
*/
body.rtl .wikiEditor-ui-toolbar .sections .section{
float:right;
}
.wikiEditor-ui-toolbar .sections div .spinner{
display:none;
}
.wikiEditor-ui-toolbar .sections .loading .spinner{
display:block;
background-image:url(../images/wikiEditor/toolbar/loading.gif?2);
background-position:left center;
background-repeat:no-repeat;
padding-left:32px;
margin-left:0.5em;
height:32px;
float:left;
color:#666666;
}
body.rtl .wikiEditor-ui-toolbar .sections .loading .spinner{
background-position:right center;
padding-left:0;
padding-right:32px;
margin-left:0;
margin-right:0.5em;
float:right;
}
.wikiEditor-ui-toolbar .tabs,
.wikiEditor-ui-toolbar .section-main{
position:relative;
float:left;
height:26px;
}
body.rtl .wikiEditor-ui-toolbar .tabs,
body.rtl .wikiEditor-ui-toolbar .section-main{
float:right;
}
.wikiEditor-ui-toolbar .group{
float:left;
height:26px;
padding-right:6px;
border-right:solid 1px #DDDDDD;
margin:3px;
}
body.rtl .wikiEditor-ui-toolbar .group{
float:right;
padding-right:0;
padding-left:6px;
border-right:none;
border-left:solid 1px #DDDDDD;
}
.wikiEditor-ui-toolbar .group-search{
float:right;
padding:0 0 0 6px;
border-right:none;
border-left:1px solid #DDDDDD;
}
.wikiEditor-ui-toolbar .group-insert{
border-right:none;
}
body.rtl .wikiEditor-ui-toolbar .group-search{
float:left;
padding:0 6px 0 0;
border-left:none;
border-right:1px solid #DDDDDD;
}
body.rtl .wikiEditor-ui-toolbar .group-insert{
border-left:none;
}
.wikiEditor-toolbar-spritedButton{
background:url(../images/wikiEditor/toolbar/button-sprite.png?1) 0 0 no-repeat;
display:block;
float:left;
height:22px;
text-indent:-9999px;
width:22px;
padding:2px;
cursor:pointer;
overflow:hidden;
}
.wikiEditor-ui-toolbar .tabs{
list-style:none;
margin:3px;
}
.wikiEditor-ui-toolbar .tabs span.tab{
display:inline-block;
float:left;
line-height:26px;
}
.wikiEditor-ui-toolbar .tabs > span.tab{
display:block;
}
body.rtl .wikiEditor-ui-toolbar .tabs > span.tab{
float:right;
}
.wikiEditor-ui-toolbar .tabs span.tab a,
.wikiEditor-ui-toolbar .tabs span.tab a:visited{
display:inline-block;
float:left;
padding-left:18px;
padding-right:12px;
height:26px;
cursor:pointer;
color:#0645ad;
background-image:url(../images/wikiEditor/toolbar/arrow-right.png?1);
background-position:left center;
background-repeat:no-repeat;
}
body.rtl .wikiEditor-ui-toolbar .tabs span.tab a,
body.rtl .wikiEditor-ui-toolbar .tabs span.tab a:visited{
padding-left:12px;
padding-right:18px;
background-image:url(../images/wikiEditor/toolbar/arrow-left.png?1);
background-position:right center;
}
body.rtl .wikiEditor-ui-toolbar .tabs > span.tab > a,
body.rtl .wikiEditor-ui-toolbar .tabs > pan.tab > a:visited{
float:right;
}
.wikiEditor-ui-toolbar .tabs span.tab a.current,
.wikiEditor-ui-toolbar .tabs span.tab a.current:visited{
color:#333333;
background-image:url(../images/wikiEditor/toolbar/arrow-down.png?1);
}
body.rtl .wikiEditor-ui-toolbar .tabs span.tab a.current,
body.rtl .wikiEditor-ui-toolbar .tabs span.tab a.current:visited{
background-image:url(../images/wikiEditor/toolbar/arrow-down.png?1);
}
.wikiEditor-ui-toolbar .tabs span.tab a.current:hover{
text-decoration:none;
}
.wikiEditor-ui-toolbar .tabs span.tab a.loading{
background-image:url(../images/wikiEditor/toolbar/loading-small.gif?1) !important;
}
.wikiEditor-ui-toolbar .group .label{
float:left;
border:0px;
height:22px;
line-height:22px;
margin:2px;
margin-left:5px;
margin-right:8px;
color:#777777;
cursor:default;
}
body.rtl .wikiEditor-ui-toolbar .group > .label{
float:right;
margin-left:8px;
margin-right:5px;
}
.wikiEditor-ui-toolbar .group img.tool{
float:left;
border:0px;
height:22px;
width:22px;
padding:2px;
cursor:pointer;
}
body.rtl .wikiEditor-ui-toolbar .group > img.tool{
float:right;
}
.wikiEditor-ui-toolbar .group .tool-select{
float:left;
margin:2px;
height:22px;
cursor:pointer;
border:solid 1px silver;
padding:0;
margin-right:0;
cursor:pointer;
background-color:#ffffff;
}
body.rtl .wikiEditor-ui-toolbar .group > .tool-select{
float:right;
}
.wikiEditor-ui-toolbar .group .tool-select .label{
background-image:url(../images/wikiEditor/toolbar/arrow-down.png?1);
background-position:center right;
background-repeat:no-repeat;
padding:0;
margin:0;
padding-left:4px;
padding-right:22px;
margin-right:4px;
cursor:pointer;
text-decoration:none;
color:#333333;
}
body.rtl .wikiEditor-ui-toolbar .group .tool-select .label{
background-position:center left;
padding-right:4px;
padding-left:22px;
margin-left:4px;
margin-right:0;
}
body.rtl .wikiEditor-ui-toolbar .group .tool-select .menu{
clear:both;
}
.wikiEditor-ui-toolbar .group .tool-select .menu .options{
position:absolute;
display:none;
margin-left:-1px;
border:solid 1px silver;
background-color:#ffffff;
}
body.rtl .wikiEditor-ui-toolbar .group .tool-select .menu{
margin-left:-1px;
margin-right:-1px;
}
.wikiEditor-ui-toolbar .group .tool-select .options {
margin-top:22px;
}
.wikiEditor-ui-toolbar .group .tool-select .options .option{
display:block;
padding:0.5em;
text-decoration:none;
color:black;
white-space:nowrap;
}
.wikiEditor-ui-toolbar .group .tool-select .options .option:hover{
background-color:#E0EEf7;
}
.wikiEditor-ui-toolbar .group .tool-select .options .option[rel=heading-2]{
font-size:150%;
font-weight:normal;
}
.wikiEditor-ui-toolbar .group .tool-select .options .option[rel=heading-3]{
font-size:132%;
font-weight:normal;
}
.wikiEditor-ui-toolbar .group .tool-select .options .option[rel=heading-4]{
font-size:116%;
font-weight:normal;
}
.wikiEditor-ui-toolbar .group .tool-select .options .option[rel=heading-5]{
font-size:100%;
font-weight:bold;
}
.wikiEditor-ui-toolbar .booklet .index{
float:left;
width:20%;
height:125px;
overflow:auto;
}
body.rtl .wikiEditor-ui-toolbar .booklet .index{
float:right;
}
.wikiEditor-ui-toolbar .booklet .index div{
padding:4px;
padding-left:6px;
cursor:pointer;
color:#0645ad;
}
body.rtl .wikiEditor-ui-toolbar .booklet .index div{
padding-left:4px;
padding-right:6px;
}
.wikiEditor-ui-toolbar .booklet .index .current{
background-color:#FAFAFA;
color:#333333;
cursor:default;
}
.wikiEditor-ui-toolbar .booklet .pages{
float:right;
width:80%;
height:125px;
overflow:auto;
background-color:#FAFAFA;
}
body.rtl .wikiEditor-ui-toolbar .booklet .pages{
float:left;
}
.wikiEditor-ui-toolbar .page-table table{
padding-left:5px;
padding-right:5px;
background:none;
}
.wikiEditor-ui-toolbar .page-table th{
color:#999999;
}
.wikiEditor-ui-toolbar .page-table td{
color:black;
border-top:solid 1px #EEEEEE;
}
.wikiEditor-ui-toolbar .page-table th,
.wikiEditor-ui-toolbar .page-table td{
text-align:left;
padding:5px;
margin:0px;
}
body.rtl .wikiEditor-ui-toolbar .page-table th,
body.rtl .wikiEditor-ui-toolbar .page-table td{
text-align:right;
}
.wikiEditor-ui-toolbar .section-help .page-table td.cell-syntax,
.wikiEditor-ui-toolbar .section-help .page-table td.syntax{
font-family:monospace;
}
.wikiEditor-ui-toolbar .section-help .page-table td.syntax,
.wikiEditor-ui-toolbar .section-help .page-table td.cell-syntax,
.wikiEditor-ui-toolbar .section-help .page-table td.cell-result,
.wikiEditor-ui-toolbar .section-help .page-table td.result{
width:40%;
}
.wikiEditor-ui-toolbar .section-help .page-table td.description,
.wikiEditor-ui-toolbar .section-help .page-table td.description{
width:20%;
}
.wikiEditor-ui-toolbar .page-characters div span{
border:solid 1px #DDDDDD;
padding:5px;
padding-left:8px;
padding-right:8px;
margin-left:5px;
margin-top:5px;
height:1em;
float:left;
display:block;
color:black;
text-decoration:none;
cursor:pointer;
font-family:monospace;
font-size:1.25em;
}
body.rtl .wikiEditor-ui-toolbar .page-characters > div > span,
.wikiEditor-ui-toolbar .page-characters div[dir=rtl] span{
direction:rtl;
float:right;
margin-left:0;
margin-right:5px;
}
.wikiEditor-ui-toolbar .page-characters div span:hover{
background-color:white;
text-decoration:none;
border-color:#a8d7f9;
}
.ui-widget table td.wikieditor-toolbar-table-preview-wrapper span{
padding:4px 6px 0px;
display:block;
}
.ui-widget table .wikieditor-toolbar-table-preview-frame{
width:340px;
background:#fff;
padding:10px;
overflow:hidden;
display:block;
position:relative;
}
.ui-widget table .wikieditor-toolbar-table-preview-content{
width:375px;
display:block;
}
.ui-widget table .wikieditor-toolbar-table-preview{
width:340px;
}
.ui-widget table td.wikieditor-toolbar-table-preview-wrapper{
background:#e5e5e5;
padding:10px;
}
.wikiEditor-preview-loading{
padding:1em;
background-color:white;
}
.wikiEditor-preview-loading span{
color:#666666;
}
.wikiEditor-preview-spinner{
padding-right:1em;
}
.wikiEditor-preview-contents{
padding:1em;
background-color:white;
}
#wikiEditor-0-preview-dialog .wikiEditor-ui-loading{
overflow:hidden;
border:none;
}
.ui-dialog .ui-dialog-buttonpane{
margin:0 !important;
}
------------CQ4wAorH1dcm6byte6AhmR
Content-Disposition: inline; filename=jquery-ui-1.7.2.css
Content-Type: text/css; name=jquery-ui-1.7.2.css
Content-Location: http://bits.wikimedia.org/w/extensions/UsabilityInitiative/css/vector/jquery-ui-1.7.2.css?1.7.2y
Content-Transfer-Encoding: Quoted-Printable
/*
* jQuery UI CSS Framework
* Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt=
) licenses.
*/
/* Layout helpers
----------------------------------*/
.ui-helper-hidden { display: none; }
.ui-helper-hidden-accessible { position: absolute; left: -99999999px; }
.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-he=
ight: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
.ui-helper-clearfix:after { content: "."; display: block; height: 0; cle=
ar: both; visibility: hidden; }
.ui-helper-clearfix { display: inline-block; }
/* required comment for clearfix to work in Opera \*/
* html .ui-helper-clearfix { height:1%; }
.ui-helper-clearfix { display:block; }
/* end clearfix */
.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: =
absolute; opacity: 0; filter:Alpha(Opacity=3D0); }
/* Interaction Cues
----------------------------------*/
.ui-state-disabled { cursor: default !important; }
/* Icons
----------------------------------*/
/* states and images */
.ui-icon { display: block; text-indent: -99999px; overflow: hidden; back=
ground-repeat: no-repeat; }
/* Misc visuals
----------------------------------*/
/* Overlays */
.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; h=
eight: 100%; }
/*
* jQuery UI CSS Framework
* Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt=
) licenses.
* To view and modify this theme, visit http://jqueryui.com/themeroller/?=
ffDefault=3Dsans-serif&fwDefault=3Dnormal&fsDefault=3D1em&cornerRadius=3D=
0&bgColorHeader=3De2eef6&bgTextureHeader=3D04_highlight_hard.png&bgImgOp=
acityHeader=3D100&borderColorHeader=3Dc0c0c0&fcHeader=3D333333&iconColor=
Header=3D333333&bgColorContent=3Dffffff&bgTextureContent=3D01_flat.png&b=
gImgOpacityContent=3D100&borderColorContent=3Dc0c0c0&fcContent=3D000000&=
iconColorContent=3D000000&bgColorDefault=3De2eef6&bgTextureDefault=3D04_=
highlight_hard.png&bgImgOpacityDefault=3D100&borderColorDefault=3Dc0c0c0=
&fcDefault=3D333333&iconColorDefault=3D333333&bgColorHover=3Dffffff&bgTe=
xtureHover=3D04_highlight_hard.png&bgImgOpacityHover=3D100&borderColorHo=
ver=3Dc0c0c0&fcHover=3D333333&iconColorHover=3D333333&bgColorActive=3Dff=
ffff&bgTextureActive=3D01_flat.png&bgImgOpacityActive=3D100&borderColorA=
ctive=3Dc0c0c0&fcActive=3D333333&iconColorActive=3D333333&bgColorHighlig=
ht=3Dfbf9ee&bgTextureHighlight=3D04_highlight_hard.png&bgImgOpacityHighl=
ight=3D55&borderColorHighlight=3Dfcefa1&fcHighlight=3D363636&iconColorHi=
ghlight=3D2e83ff&bgColorError=3Dfef1ec&bgTextureError=3D05_inset_soft.pn=
g&bgImgOpacityError=3D95&borderColorError=3Dcd0a0a&fcError=3Dcd0a0a&icon=
ColorError=3Dcd0a0a&bgColorOverlay=3D000000&bgTextureOverlay=3D01_flat.p=
ng&bgImgOpacityOverlay=3D0&opacityOverlay=3D75&bgColorShadow=3D000000&bg=
TextureShadow=3D01_flat.png&bgImgOpacityShadow=3D0&opacityShadow=3D30&th=
icknessShadow=3D8px&offsetTopShadow=3D-8px&offsetLeftShadow=3D-8px&corne=
rRadiusShadow=3D8px
*/
/* Component containers
----------------------------------*/
.ui-widget { font-family: sans-serif; font-size: 0.9em; }
.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget but=
ton { font-family: sans-serif; font-size: 1em; }
.ui-widget-content { border: 1px solid #c0c0c0; background: #ffffff url(=
images/ui-bg_flat_100_ffffff_40x100.png) 50% 50% repeat-x; color: #00000=
0; }
.ui-widget-content a { color: #000000; }
.ui-widget-header { border-bottom: 1px solid #c0c0c0; line-height: 1em; =
background: #e2eef6 url(images/ui-bg_highlight-hard_100_e2eef6_1x100.png=
) 50% 50% repeat-x; color: #333333; font-weight: bold; }
.ui-widget-header a { color: #333333; }
/* Interaction states
----------------------------------*/
.ui-state-default, .ui-widget-content .ui-state-default { border: 1px so=
lid #c0c0c0; background: #e2eef6 url(images/ui-bg_highlight-hard_100_e2e=
ef6_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #333333; ou=
tline: none; }
.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visit=
ed { color: #333333; text-decoration: none; outline: none; }
.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-state-focus, .u=
i-widget-content .ui-state-focus { border: 1px solid #c0c0c0; background=
: #ffffff url(images/ui-bg_highlight-hard_100_ffffff_1x100.png) 50% 50% =
repeat-x; font-weight: normal; color: #333333; outline: none; }
.ui-state-hover a, .ui-state-hover a:hover { color: #333333; text-decora=
tion: none; outline: none; }
.ui-state-active, .ui-widget-content .ui-state-active { border: 1px soli=
d #c0c0c0; background: #ffffff url(images/ui-bg_flat_100_ffffff_40x100.p=
ng) 50% 50% repeat-x; font-weight: normal; color: #333333; outline: none=
; }
.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited =
{ color: #333333; outline: none; text-decoration: none; }
/* Interaction Cues
----------------------------------*/
.ui-state-highlight, .ui-widget-content .ui-state-highlight {border: 1px=
solid #fcefa1; background: #fbf9ee url(images/ui-bg_highlight-hard_55_f=
bf9ee_1x100.png) 50% top repeat-x; color: #363636; }
.ui-state-highlight a, .ui-widget-content .ui-state-highlight a { color:=
#363636; }
.ui-state-error, .ui-widget-content .ui-state-error {border: 1px solid #=
cd0a0a; background: #fef1ec url(images/ui-bg_inset-soft_95_fef1ec_1x100.=
png) 50% bottom repeat-x; color: #cd0a0a; }
.ui-state-error a, .ui-widget-content .ui-state-error a { color: #cd0a0a=
; }
.ui-state-error-text, .ui-widget-content .ui-state-error-text { color: #=
cd0a0a; }
.ui-state-disabled, .ui-widget-content .ui-state-disabled { opacity: .35=
; filter:Alpha(Opacity=3D35); background-image: none; }
.ui-priority-primary, .ui-widget-content .ui-priority-primary { font-wei=
ght: bold; }
.ui-priority-secondary, .ui-widget-content .ui-priority-secondary { opac=
ity: .7; filter:Alpha(Opacity=3D70); font-weight: normal; }
/* Icons
----------------------------------*/
/* states and images */
.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-ic=
ons_000000_256x240.png); }
.ui-widget-content .ui-icon {background-image: url(images/ui-icons_00000=
0_256x240.png); }
.ui-widget-header .ui-icon {background-image: url(images/ui-icons_333333=
_256x240.png); }
.ui-state-default .ui-icon { background-image: url(images/ui-icons_33333=
3_256x240.png); }
.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: ur=
l(images/ui-icons_333333_256x240.png); }
.ui-state-active .ui-icon {background-image: url(images/ui-icons_333333_=
256x240.png); }
.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83=
ff_256x240.png); }
.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-imag=
e: url(images/ui-icons_cd0a0a_256x240.png); }
/* positioning */
.ui-icon-carat-1-n { background-position: 0 0; }
.ui-icon-carat-1-ne { background-position: -16px 0; }
.ui-icon-carat-1-e { background-position: -32px 0; }
.ui-icon-carat-1-se { background-position: -48px 0; }
.ui-icon-carat-1-s { background-position: -64px 0; }
.ui-icon-carat-1-sw { background-position: -80px 0; }
.ui-icon-carat-1-w { background-position: -96px 0; }
.ui-icon-carat-1-nw { background-position: -112px 0; }
.ui-icon-carat-2-n-s { background-position: -128px 0; }
.ui-icon-carat-2-e-w { background-position: -144px 0; }
.ui-icon-triangle-1-n { background-position: 0 -16px; }
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
.ui-icon-triangle-1-e { background-position: -32px -16px; }
.ui-icon-triangle-1-se { background-position: -48px -16px; }
.ui-icon-triangle-1-s { background-position: -64px -16px; }
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
.ui-icon-triangle-1-w { background-position: -96px -16px; }
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
.ui-icon-arrow-1-n { background-position: 0 -32px; }
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
.ui-icon-arrow-1-e { background-position: -32px -32px; }
.ui-icon-arrow-1-se { background-position: -48px -32px; }
.ui-icon-arrow-1-s { background-position: -64px -32px; }
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
.ui-icon-arrow-1-w { background-position: -96px -32px; }
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
.ui-icon-arrow-4 { background-position: 0 -80px; }
.ui-icon-arrow-4-diag { background-position: -16px -80px; }
.ui-icon-extlink { background-position: -32px -80px; }
.ui-icon-newwin { background-position: -48px -80px; }
.ui-icon-refresh { background-position: -64px -80px; }
.ui-icon-shuffle { background-position: -80px -80px; }
.ui-icon-transfer-e-w { background-position: -96px -80px; }
.ui-icon-transferthick-e-w { background-position: -112px -80px; }
.ui-icon-folder-collapsed { background-position: 0 -96px; }
.ui-icon-folder-open { background-position: -16px -96px; }
.ui-icon-document { background-position: -32px -96px; }
.ui-icon-document-b { background-position: -48px -96px; }
.ui-icon-note { background-position: -64px -96px; }
.ui-icon-mail-closed { background-position: -80px -96px; }
.ui-icon-mail-open { background-position: -96px -96px; }
.ui-icon-suitcase { background-position: -112px -96px; }
.ui-icon-comment { background-position: -128px -96px; }
.ui-icon-person { background-position: -144px -96px; }
.ui-icon-print { background-position: -160px -96px; }
.ui-icon-trash { background-position: -176px -96px; }
.ui-icon-locked { background-position: -192px -96px; }
.ui-icon-unlocked { background-position: -208px -96px; }
.ui-icon-bookmark { background-position: -224px -96px; }
.ui-icon-tag { background-position: -240px -96px; }
.ui-icon-home { background-position: 0 -112px; }
.ui-icon-flag { background-position: -16px -112px; }
.ui-icon-calendar { background-position: -32px -112px; }
.ui-icon-cart { background-position: -48px -112px; }
.ui-icon-pencil { background-position: -64px -112px; }
.ui-icon-clock { background-position: -80px -112px; }
.ui-icon-disk { background-position: -96px -112px; }
.ui-icon-calculator { background-position: -112px -112px; }
.ui-icon-zoomin { background-position: -128px -112px; }
.ui-icon-zoomout { background-position: -144px -112px; }
.ui-icon-search { background-position: -160px -112px; }
.ui-icon-wrench { background-position: -176px -112px; }
.ui-icon-gear { background-position: -192px -112px; }
.ui-icon-heart { background-position: -208px -112px; }
.ui-icon-star { background-position: -224px -112px; }
.ui-icon-link { background-position: -240px -112px; }
.ui-icon-cancel { background-position: 0 -128px; }
.ui-icon-plus { background-position: -16px -128px; }
.ui-icon-plusthick { background-position: -32px -128px; }
.ui-icon-minus { background-position: -48px -128px; }
.ui-icon-minusthick { background-position: -64px -128px; }
.ui-icon-close { background-position: -80px -128px; }
.ui-icon-closethick { background-position: -96px -128px; }
.ui-icon-key { background-position: -112px -128px; }
.ui-icon-lightbulb { background-position: -128px -128px; }
.ui-icon-scissors { background-position: -144px -128px; }
.ui-icon-clipboard { background-position: -160px -128px; }
.ui-icon-copy { background-position: -176px -128px; }
.ui-icon-contact { background-position: -192px -128px; }
.ui-icon-image { background-position: -208px -128px; }
.ui-icon-video { background-position: -224px -128px; }
.ui-icon-script { background-position: -240px -128px; }
.ui-icon-alert { background-position: 0 -144px; }
.ui-icon-info { background-position: -16px -144px; }
.ui-icon-notice { background-position: -32px -144px; }
.ui-icon-help { background-position: -48px -144px; }
.ui-icon-check { background-position: -64px -144px; }
.ui-icon-bullet { background-position: -80px -144px; }
.ui-icon-radio-off { background-position: -96px -144px; }
.ui-icon-radio-on { background-position: -112px -144px; }
.ui-icon-pin-w { background-position: -128px -144px; }
.ui-icon-pin-s { background-position: -144px -144px; }
.ui-icon-play { background-position: 0 -160px; }
.ui-icon-pause { background-position: -16px -160px; }
.ui-icon-seek-next { background-position: -32px -160px; }
.ui-icon-seek-prev { background-position: -48px -160px; }
.ui-icon-seek-end { background-position: -64px -160px; }
.ui-icon-seek-first { background-position: -80px -160px; }
.ui-icon-stop { background-position: -96px -160px; }
.ui-icon-eject { background-position: -112px -160px; }
.ui-icon-volume-off { background-position: -128px -160px; }
.ui-icon-volume-on { background-position: -144px -160px; }
.ui-icon-power { background-position: 0 -176px; }
.ui-icon-signal-diag { background-position: -16px -176px; }
.ui-icon-signal { background-position: -32px -176px; }
.ui-icon-battery-0 { background-position: -48px -176px; }
.ui-icon-battery-1 { background-position: -64px -176px; }
.ui-icon-battery-2 { background-position: -80px -176px; }
.ui-icon-battery-3 { background-position: -96px -176px; }
.ui-icon-circle-plus { background-position: 0 -192px; }
.ui-icon-circle-minus { background-position: -16px -192px; }
.ui-icon-circle-close { background-position: -32px -192px; }
.ui-icon-circle-triangle-e { background-position: -48px -192px; }
.ui-icon-circle-triangle-s { background-position: -64px -192px; }
.ui-icon-circle-triangle-w { background-position: -80px -192px; }
.ui-icon-circle-triangle-n { background-position: -96px -192px; }
.ui-icon-circle-arrow-e { background-position: -112px -192px; }
.ui-icon-circle-arrow-s { background-position: -128px -192px; }
.ui-icon-circle-arrow-w { background-position: -144px -192px; }
.ui-icon-circle-arrow-n { background-position: -160px -192px; }
.ui-icon-circle-zoomin { background-position: -176px -192px; }
.ui-icon-circle-zoomout { background-position: -192px -192px; }
.ui-icon-circle-check { background-position: -208px -192px; }
.ui-icon-circlesmall-plus { background-position: 0 -208px; }
.ui-icon-circlesmall-minus { background-position: -16px -208px; }
.ui-icon-circlesmall-close { background-position: -32px -208px; }
.ui-icon-squaresmall-plus { background-position: -48px -208px; }
.ui-icon-squaresmall-minus { background-position: -64px -208px; }
.ui-icon-squaresmall-close { background-position: -80px -208px; }
.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
/* Misc visuals
----------------------------------*/
/* Corner radius */
.ui-corner-tl { -moz-border-radius-topleft: 0; -webkit-border-top-left-r=
adius: 0; }
.ui-corner-tr { -moz-border-radius-topright: 0; -webkit-border-top-right=
-radius: 0; }
.ui-corner-bl { -moz-border-radius-bottomleft: 0; -webkit-border-bottom-=
left-radius: 0; }
.ui-corner-br { -moz-border-radius-bottomright: 0; -webkit-border-bottom=
-right-radius: 0; }
.ui-corner-top { -moz-border-radius-topleft: 0; -webkit-border-top-left-=
radius: 0; -moz-border-radius-topright: 0; -webkit-border-top-right-radi=
us: 0; }
.ui-corner-bottom { -moz-border-radius-bottomleft: 0; -webkit-border-bot=
tom-left-radius: 0; -moz-border-radius-bottomright: 0; -webkit-border-bo=
ttom-right-radius: 0; }
.ui-corner-right { -moz-border-radius-topright: 0; -webkit-border-top-r=
ight-radius: 0; -moz-border-radius-bottomright: 0; -webkit-border-bottom=
-right-radius: 0; }
.ui-corner-left { -moz-border-radius-topleft: 0; -webkit-border-top-left=
-radius: 0; -moz-border-radius-bottomleft: 0; -webkit-border-bottom-left=
-radius: 0; }
.ui-corner-all { -moz-border-radius: 0; -webkit-border-radius: 0; }
/* Overlays */
.ui-widget-overlay { background: #000000 url(images/ui-bg_flat_0_000000_=
40x100.png) 50% 50% repeat-x; opacity: .75;filter:Alpha(Opacity=3D75); }=
.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #00=
0000 url(images/ui-bg_flat_0_000000_40x100.png) 50% 50% repeat-x; opacit=
y: .30;filter:Alpha(Opacity=3D30); -moz-border-radius: 8px; -webkit-bord=
er-radius: 8px; }/* Accordion
----------------------------------*/
.ui-accordion .ui-accordion-header { cursor: pointer; position: relative=
; margin-top: 1px; zoom: 1; }
.ui-accordion .ui-accordion-li-fix { display: inline; }
.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important;=
}
.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; p=
adding: .5em .5em .5em 2.2em; }
.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: =
.5em; top: 50%; margin-top: -8px; }
.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0;=
margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; ove=
rflow: auto; display: none; }
.ui-accordion .ui-accordion-content-active { display: block; }/* Datepic=
ker
----------------------------------*/
.ui-datepicker { width: 17em; padding: .2em .2em 0; }
.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0=
; }
.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next {=
position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-=
next-hover { top: 1px; }
.ui-datepicker .ui-datepicker-prev { left:2px; }
.ui-datepicker .ui-datepicker-next { right:2px; }
.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
.ui-datepicker .ui-datepicker-next-hover { right:1px; }
.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-n=
ext span { display: block; position: absolute; left: 50%; margin-left: -=
8px; top: 50%; margin-top: -8px; }
.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8e=
m; text-align: center; }
.ui-datepicker .ui-datepicker-title select { float:left; font-size:1em; =
margin:1px 0; }
.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
.ui-datepicker select.ui-datepicker-month, =
.ui-datepicker select.ui-datepicker-year { width: 49%;}
.ui-datepicker .ui-datepicker-title select.ui-datepicker-year { float: r=
ight; }
.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: col=
lapse; margin:0 0 .4em; }
.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight:=
bold; border: 0; }
.ui-datepicker td { border: 0; padding: 1px; }
.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .=
2em; text-align: right; text-decoration: none; }
.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margi=
n: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-b=
ottom: 0; }
.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: =
.5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:aut=
o; overflow:visible; }
.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { =
float:left; }
/* with multiple calendars */
.ui-datepicker.ui-datepicker-multi { width:auto; }
.ui-datepicker-multi .ui-datepicker-group { float:left; }
.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 au=
to .4em; }
.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { b=
order-left-width:0; }
.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {=
border-left-width:0; }
.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
.ui-datepicker-row-break { clear:both; width:100%; }
/* RTL support */
.ui-datepicker-rtl { direction: rtl; }
.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }=
.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }=
.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-curren=
t { float:right; }
.ui-datepicker-rtl .ui-datepicker-group { float:right; }
.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { bor=
der-right-width:0; border-left-width:1px; }
.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { b=
order-right-width:0; border-left-width:1px; }
/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
.ui-datepicker-cover {
display: none; /*sorry for IE5*/
display/**/: block; /*sorry for IE5*/
position: absolute; /*must have*/
z-index: -1; /*must have*/
filter: mask(); /*must have*/
top: -4px; /*must have*/
left: -4px; /*must have*/
width: 200px; /*must have*/
height: 200px; /*must have*/
}/* Dialog
----------------------------------*/
.ui-dialog { position: relative; padding: 0; width: 300px; }
.ui-dialog .ui-dialog-titlebar { padding: .75em; position: relative; }
.ui-dialog .ui-dialog-title { float: left; margin: 0; } =
.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .75em;=
top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px;=
}
.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px;=
}
.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titleb=
ar-close:focus { padding: 0; }
.ui-dialog .ui-dialog-content { border: 0; padding: .5em 1em; background=
: none; overflow: auto; zoom: 1; }
.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0=
0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em=
.4em; }
.ui-dialog .ui-dialog-buttonpane button { float: right; margin: .5em .4e=
m .5em 0; cursor: pointer; padding: .2em .6em .3em .6em; line-height: 1.=
4em; width:auto; overflow:visible; }
.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bot=
tom: 3px; }
.ui-draggable .ui-dialog-titlebar { cursor: move; }
/* Progressbar
----------------------------------*/
.ui-progressbar { height:2em; text-align: left; }
.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }/* Re=
sizable
----------------------------------*/
.ui-resizable { position: relative;}
.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 9999=
9; display: block;}
.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-=
resizable-handle { display: none; }
.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px;=
left: 0px; }
.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5=
px; left: 0px; }
.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0px; h=
eight: 100%; }
.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0px; he=
ight: 100%; }
.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: =
1px; bottom: 1px; }
.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5p=
x; bottom: -5px; }
.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5p=
x; top: -5px; }
.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5=
px; top: -5px;}/* Slider
----------------------------------*/
.ui-slider { position: relative; text-align: left; }
.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.=
2em; height: 1.2em; cursor: default; }
.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size:=
.7em; display: block; border: 0; }
.ui-slider-horizontal { height: .8em; }
.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em=
; }
.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
.ui-slider-horizontal .ui-slider-range-min { left: 0; }
.ui-slider-horizontal .ui-slider-range-max { right: 0; }
.ui-slider-vertical { width: .8em; height: 100px; }
.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; mar=
gin-bottom: -.6em; }
.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
.ui-slider-vertical .ui-slider-range-max { top: 0; }/* Tabs
----------------------------------*/
.ui-tabs { padding: .2em; zoom: 1; }
.ui-tabs .ui-tabs-nav { list-style: none; position: relative; padding: .=
2em .2em 0; }
.ui-tabs .ui-tabs-nav li { position: relative; float: left; border-botto=
m-width: 0 !important; margin: 0 .2em -1px 0; padding: 0; }
.ui-tabs .ui-tabs-nav li a { float: left; text-decoration: none; padding=
: .5em 1em; }
.ui-tabs .ui-tabs-nav li.ui-tabs-selected { padding-bottom: 1px; border-=
bottom-width: 0; }
.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui=
-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { curs=
or: text; }
.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li=
.ui-tabs-selected a { cursor: pointer; } /* first selector in group seem=
s obsolete, but required to overcome bug in Opera applying cursor: text =
overall if defined elsewhere... */
.ui-tabs .ui-tabs-panel { padding: 1em 1.4em; display: block; border-wid=
th: 0; background: none; }
.ui-tabs .ui-tabs-hide { display: none !important; }
------------CQ4wAorH1dcm6byte6AhmR
Content-Disposition: inline; filename=index.css
Content-Type: text/css; charset=UTF-8; name=index.css
Content-Location: http://ca.wikipedia.org/w/index.php?title=MediaWiki:Common.css&usemsgcache=yes&ctype=text%2Fcss&smaxage=2678400&action=raw&maxage=2678400
Content-Transfer-Encoding: 8bit
/* CSS per a tots els usuaris i totes les aparences (skins)
Avís per als administradors!! Per a qualsevol canvi que es faça a
[[MediaWiki:Monobook.css]] o a Common.css s'hauria de proposar primer a [[Viquipèdia:La taverna]]. Gràcies.
Comproveu la validesa del codi amb el [http://jigsaw.w3.org/css-validator/validator?uri=http%3A%2F%2Fca.wikipedia.org%2Fw%2Findex.php%3Ftitle%3DMediaWiki%3ACommon.css%26action%3Draw%26ctype%3Dtext%2Fcss&usermedium=all W3C CSS Validation Service] ([http://qa-dev.w3.org:8001/css-validator/validator?uri=http%3A%2F%2Fca.wikipedia.org%2Fw%2Findex.php%3Ftitle%3DMediaWiki%3ACommon.css%26action%3Draw%26ctype%3Dtext%2Fcss&warning=2&profile=css3&usermedium=all versió CVS]) després de cada canvi.
*/
/* wikitable/prettytable class for skinning normal tables */
table.wikitable,
table.prettytable,
table.bellataula {
margin: 1em 1em 1em 0;
background: #f9f9f9;
border: 1px #aaaaaa solid;
border-collapse: collapse;
}
table.wikitable th, table.wikitable td,
table.prettytable th, table.prettytable td,
table.bellataula th, table.bellataula td {
border: 1px #aaaaaa solid;
padding: 0.2em;
}
table.wikitable th,
table.bellataula th,
table.prettytable th {
background: #f2f2f2;
text-align: center;
}
table.wikitable caption,
table.bellataula caption,
table.prettytable caption {
margin-left: inherit;
margin-right: inherit;
}
table.centre, table.center { /* Alineació centrada amb class="bellataula centre" */
margin:1em auto;
}
table.wikitable[align=center] {margin:1em auto;} /*Alineació centrada amb align=center */
/* Style for "notices" */
.notice,
.avís {
text-align: justify;
margin: 1em;
padding: 0.2em;
}
#disambig,
#desambiagua {
border-top: 3px double #cccccc;
border-bottom: 3px double #cccccc;
}
#spoiler {
border-top: 2px solid #ddd;
border-bottom:2px solid #ddd;
}
/* Standard talk template style */
.Talk-Notice {
border: 1px solid #C0C090;
background-color: #F8EABA;
margin-bottom: 3px;
width: 85%;
border-spacing: 3px;
margin-left: auto;
margin-right: auto;
}
/* Make template background appear correctly on all browsers */
.Talk-Notice td {
background: inherit;
}
/* Choose whether to have AD/BC dates or CE/BCE dates*/
/*Add formatting to make sure that "external references" from [[Template:Ref]] do
not get URL expansion, not even when printed. The mechanism up to MediaWiki 1.4 was
that the HTML code contained a SPAN following the anchor A; this SPAN had the class
"urlexpansion", which was not displayed on screen, but was shown when the medium was
"print". The rules below ensure (a) that there is no extra padding to the right of
the anchor (displayed as "[]"), (b) that there is no "external link arrow" for
the link, and (c) that this SPAN of class "urlexpansion" is never shown.
~~~~
*/
.nowraplinks a,
span.texhtml,
sup.reference a { white-space: nowrap; }
.plainlinksneverexpand {
background: none ! important;
padding: 0 ! important;
}
.plainlinksneverexpand .urlexpansion {
display : none ! important;
}
/* Make sure that ext links displayed within "plainlinksneverexpand" don't get
the arrow...
*/
.plainlinksneverexpand a {
background: none !important;
padding: 0 !important
}
/* With MediaWiki 1.5, the mechanism has changed: instead of a SPAN of class "urlexpansion"
following the anchor A, the anchor itself now has class "external autonumber" and the
expansion is inserted when printing (see the common printing style sheet at
http://en.wikipedia.org/skins-1.5/common/commonPrint.css) using the ":after" pseudo-
element of CSS. We have to switch this off for links due to Template:Ref!
~~~~
*/
.plainlinksneverexpand a.external.text:after {
display: none !important;
}
.plainlinksneverexpand a.external.autonumber:after {
display: none !important;
}
/* Merge template style */
.messagebox {
border: 1px solid #aaaaaa;
background-color: #f9f9f9;
width: 85%;
margin: 0 auto 1em auto;
padding: .2em;
text-align: justify;
}
.messagebox.merge {
border: 1px solid #cf9fff;
background-color: #f5edf5;
text-align: center;
}
.messagebox.cleanup {
border: 1px solid #9f9fff;
background-color: #efefff;
text-align: center;
}
.messagebox.standard-talk {
border: 1px solid #c0c090;
background-color: #f8eaba;
}
/* Support for Template:IPA, Template:Unicode and Template:Polytonic. The inherit declaration resets the font for all browsers except MSIE6. The empty comment must remain. */
.IPA {
font-family: Arial Unicode MS, Chrysanthi Unicode, Doulos SIL, Gentium, GentiumAlt, Code2000, TITUS Cyberbit Basic, DejaVu Sans, Bitstream Vera Sans, Bitstream Cyberbit, Lucida Sans Unicode, Hiragino Kaku Gothic Pro, Matrix Unicode;
font-family /**/:inherit;
font-size: 100%;
}
.Unicode {
font-family: Arial Unicode MS, TITUS Cyberbit Basic, Code2000, Doulos SIL, Chrysanthi Unicode, Bitstream Cyberbit, Bitstream CyberBase, Bitstream Vera, Thryomanes, Gentium, GentiumAlt, Visual Geez Unicode, Lucida Grande, Microsoft Sans Serif, Lucida Sans Unicode;
font-family /**/:inherit;
}
.polytonic {
font-family: Arial Unicode MS, Athena, Gentium, Palatino Linotype, Lucida Sans Unicode, Lucida Grande, Code2000;
font-family /**/:inherit;
}
#wpSave {
font-weight: bold;
}
.amaga {
display: none;
visibility: hidden;
}
/* Geographical coordinates (copiat de la viqui anglesa el 26/8/2007)
Per a visualitzar les coordenades usant la definició de cada article, escriviu açò en el vostre Usuari:Username/monobook.css:
.geo-default { display: inline } .geo-nondefault { display: none }
.geo-dec { display: inline } .geo-dms { display: inline }
Per a visualitzar sempre les coordenades usant la notació decimal, escriviu açò en el vostre Usuari:Username/monobook.css:
.geo-default { display: inline } .geo-nondefault { display: inline }
.geo-dec { display: inline } .geo-dms { display: none }
Per a visualitzar sempre les coordenades usant la notació grau/minut/segon (dms), escriviu açò en el vostre Usuari:Username/monobook.css:
.geo-default { display: inline } .geo-nondefault { display: inline }
.geo-dec { display: none } .geo-dms { display: inline }
Per a visualitzar sempre les coordenades usant ambdues notacions, escriviu açò en el vostre Usuari:Username/monobook.css:
.geo-default { display: inline } .geo-nondefault { display: inline }
.geo-dec { display: inline } .geo-dms { display: inline }
.geo-multi-punct { display: inline }
See [[Template:Coor link]] for how these are used.
Note that the classes "geo", "longitude", and "latitude" are not just styles but also used by the [[Geo microformat]], so the names should not be changed.
*/
.geo-default { display: inline; }
.geo-nondefault { display: none; }
.geo-dms { display: inline; }
.geo-dec { display: inline; }
.geo-multi-punct { display: none; }
.longitude .latitude {
white-space: nowrap;
}
/* This is used for the Geo microformat, but no style is needed for now other than .geo-dec. */
.geo { }
/***** end Geo-related */
/*HERE STARTS "METABOX" COLOUR-SCHEMES*/
/* Nou esquema de colors per a la Plantilla:Metacaixa usada a la portada */
/* Configuració per defecte en lila
Tons usats; 1; 7050a0 2; 9070c0 3; b090e0 4; d0b0ff 5; f0d0ff */
.mcBoto {
background-color: #d0b0ff; /* 4 */
border: 0.15em solid #000000;
border-color: #f0d0ff #b090e0 #9070c0 #f0d0ff; /* 5 3 3 5 */
border-radius: .5em .5em 0em 0em; /* especificació W3C funciona amb Opera, Safari i Chrome */
-moz-border-radius: .5em .5em 0em 0em; /* funciona amb Firefox */
cursor:pointer;
display: inline;
margin-right: 0.1em;
padding: 0.2em 0.3em 0.2em 0.3em;
position: relative;}
.mcBoto a,
.mcBoto strong {
background: none !important;
color:#7050a0 !important; /* 1 */
font-size: 90%;
font-weight: bold;
padding: 0 !important;
text-decoration: none !important;}
.mcBoto a:hover,
.mcBoto strong:hover {
color: black !important;
text-decoration: underline !important;}
.mcBotoSel {
background-color: #9070c0; /* 2 */
border: 0.15em solid #000000;
border-color: #b090e0 #7050a0 #9070c0 #b090e0; /* 3 1 2 3 */
border-radius: .5em .5em 0em 0em;
-moz-border-radius: .5em .5em 0em 0em;
cursor: default;
display: inline;
margin-right: 0.1em;
padding: 0.2em 0.3em 0.2em 0.3em;
position: relative;
color:white;}
.mcBotoSel a {
background: none !important;
color:white !important;
cursor: default;
font-size: 90%;
font-weight: bold;
padding: 0 !important;
text-decoration: none !important;}
.mcContingut {
background-color: #f8f8ff;
border: 0.2em solid #9070c0; /* 2 */
border-color: #9070c0 #7050a0 #7050a0 #9070c0 ; /* 2 1 1 2 */
-moz-border-radius: 0em .5em .5em 0em;
border-radius: 0em .5em .5em 0em;
padding: 1em;
position: static; /* Si hi posem relative falla amb MSIE */}
.mcPestanya {
background-color: #f8f8ff;
border-color: #7050a0 #b090e0 #b090e0 #7050a0; /* 1 3 3 1 */ width: 100%;
}
/* Configuració del Verd 1;60b030 2;75c045 3;90d060 4;a5e085 5;c0f090 */
.mcVerd .mcBoto {
background-color: #a5e085; /* 4 */
border-color: #c0f090 #90d060 #75c045 #c0f090; /* 5 3 2 5 */}
.mcVerd .mcBoto a,
.mcVerd .mcBoto strong {
color:#60b030 !important; /* 1 */
font-size:90%}
.mcVerd .mcBoto a:hover,
.mcVerd .mcBoto strong:hover {
color: black !important;
text-decoration: underline;}
.mcVerd .mcBotoSel {
background-color: #75c045; /* 2 */
border-color: #90d060 #60b030 #75c045 #90d060; /* 3 1 2 3 */}
.mcVerd .mcContingut {
background-color: #f5fffa;
border-color: #75c045 #60b030 #60b030 #75c045 ; /* 2 1 1 2 */}
.mcVerd .mcPestanya {
background-color: #f5fffa;
border-color: #60b030 #90d060 #90d060 #60b030; /* 1 3 3 1 */}
/* Configuració del Vermell 1;CC0000 2;FF0000 3;FF8888 4;FFAAAA 5;FFCCCC */
.mcVermell .mcBoto {
background-color: #FFAAAA; /* 4 */
border-color: #FFCCCC #FF8888 #FF0000 #FFCCCC; /* 5 3 2 5 */}
.mcVermell .mcBoto a,
.mcVermell .mcBoto strong {
color:#CC0000 !important; /* 1 */
font-size:90%}
.mcVermell .mcBoto a:hover
.mcVermell .mcBoto strong:hover {
color: black !important;
text-decoration: underline;}
.mcVermell .mcBotoSel {
background-color: #FF0000; /* 2 */
border-color: #FF8888 #CC0000 #FF0000 #FF8888; /* 3 1 2 3 */}
.mcVermell .mcContingut {
background-color: #fffafa;
border-color: #FF0000 #CC0000 #CC0000 #FF0000; /* 2 1 1 2 */}
.mcVermell .mcPestanya {
background-color: #fffafa;
border-color: #CC0000 #FF0000 #FF0000 #CC0000; /* 1 3 3 1 */}
/* Configuració del Blau 1;3379de 2;5b8dd6 3;88abde 4;a7c1e6 5;c8d6e9 */
.mcBlau .mcBoto {
background-color: #a7c1e6; /* 4 */
border-color: #c8d6e9 #88abde #5b8dd6 #c8d6e9; /* 5 3 2 5 */}
.mcBlau .mcBoto a,
.mcBlau .mcBoto strong {
color:#3379de !important; /* 1 */
font-size:90%}
.mcBlau .mcBoto a:hover
.mcBlau .mcBoto strong:hover {
color: black !important;
text-decoration: underline;}
.mcBlau .mcBotoSel {
background-color: #5b8dd6; /* 2 */
border-color: #88abde #3379de #5b8dd6 #88abde; /* 3 1 2 3 */}
.mcBlau .mcContingut {
background-color: #f0f8ff;
border-color: #5b8dd6 #3379de #3379de #5b8dd6; /* 2 1 1 2 */}
.mcBlau .mcPestanya {
background-color: #f0f8ff;
border-color: #3379de #88abde #88abde #3379de; /* 1 3 3 1 */}
/* Configuració del Groc 1;ffd813 2;ffe147 3;ffe977 4;fff1a4 5;fef4bc */
.mcGroc .mcBoto {
background-color: #fff1a4; /* 4 */
border-color: #fef4bc #ffe977 #ffe147 #fef4bc; /* 5 3 2 5 */}
.mcGroc .mcBoto a,
.mcGroc .mcBoto strong {
color:#ffd813 !important; /* 1 */
font-size:90%}
.mcGroc .mcBoto a:hover
.mcGroc .mcBoto strong:hover {
color: black !important;
text-decoration: underline;}
.mcGroc .mcBotoSel {
background-color: #ffe147; /* 2 */
border-color: #ffe977 #ffd813 #ffe147 #ffe977; /* 3 1 2 3 */}
.mcGroc .mcContingut {
background-color: #fffce8;
border-color: #ffe147 #ffd813 #ffd813 #ffe147; /* 2 1 1 2 */}
.mcGroc .mcPestanya {
background-color: #fffce8;
border-color: #ffd813 #88abde #88abde #ffd813; /* 1 3 3 1 */}
/* Configuració del Taronja 1;ff820e 2;ff9d42 3;ffac5d 4;ffbd7f 5;ffd0a4 6;ffeedd */
.mcTaronja .mcBoto {
background-color: #ffbd7f; /* 4 */
border-color: #ffd0a4 #ffac5d #ff9d42 #ffd0a4; /* 5 3 2 5 */}
.mcTaronja .mcBoto a,
.mcTaronja .mcBoto strong {
color:#ff820e !important; /* 1 */
font-size:90%}
.mcTaronja .mcBoto a:hover
.mcTaronja .mcBoto strong:hover {
color: black !important;
text-decoration: underline;}
.mcTaronja .mcBotoSel {
background-color: #ff9d42; /* 2 */
border-color: #ffac5d #ff820e #ff9d42 #ffac5d; /* 3 1 2 3 */}
.mcTaronja .mcContingut {
background-color: #ffeedd; /* 6 */
border-color: #ff9d42 #ff820e #ff820e #ff9d42; /* 2 1 1 2 */}
.mcTaronja .mcPestanya {
background-color: #ffeedd; /* 6 */
border-color: #ff820e #ffac5d #ffac5d #ff820e; /* 1 3 3 1 */}
/* Final d'estils de la Metacaixa */
/*HERE FINISHES "METABOX" COLOUR-SCHEMES*/
/* Mida petita per a les referències i colorejat de la nota clicada, */
/* els números de les cites ja llegides amb un color més blanquejat */
/* entre d'altres propietats per a fer la lectura més normal. */
.reference, .exposant {
vertical-align: text-top;
position: relative;
}
sup.reference {
font-weight: lighter;
word-spacing: 0em;
font-size: 0.75em;
margin-left:0em;
margin-right:0em;
top: -0.5em;
}
sup.reference a {
color: #777;
}
sup.reference a:visited {
color: #777;
}
sup.reference a:active {
color: #777;
}
sup.reference a:hover {
color: #002BB8;
font-style: normal;
text-decoration: none;
}
.references-small {
font-size: 90%;
}
ol.references > li:target {
background-color: #DEF;
}
sup.reference:target {
background-color: #DEF;
}
/* fi personalització referències */
/* Amaga l'enllaç cap a [[Especial:Upload]], canviat per un altre enllaç a Common.js */
#t-upload {display:none}
/* Default skin for navigation boxes */
table.navbox { /* Navbox container style */
border: 1px solid #aaa;
width: 100%;
margin: auto;
margin-top: 10px;
clear: both;
font-size: 88%;
text-align: center;
padding: 1px;
}
table.navbox + table.navbox { /* Single pixel border between adjacent navboxes */
margin-top: -1px; /* (doesn't work for IE6, but that's okay) */
}
.navbox-title,
.navbox-abovebelow,
table.navbox th {
text-align: center; /* Title and above/below styles */
padding-left: 1em;
padding-right: 1em;
}
.navbox-group { /* Group style */
white-space: nowrap;
text-align: right;
font-weight: bold;
padding-left: 1em;
padding-right: 1em;
}
.navbox, .navbox-subgroup {
background: #fdfdfd; /* Background color */
}
.navbox-list {
border-color: #fdfdfd; /* Must match background color */
}
.navbox-title,
table.navbox th {
background: #ccccff; /* Level 1 color */
}
.navbox-abovebelow,
.navbox-group,
.navbox-subgroup .navbox-title {
background: #ddddff; /* Level 2 color */
}
.navbox-subgroup .navbox-group, .navbox-subgroup .navbox-abovebelow {
background: #e6e6ff; /* Level 3 color */
}
.navbox-even {
background: #f7f7f7; /* Even row striping */
}
.navbox-odd {
background: transparent; /* Odd row striping */
}
.collapseButton { /* 'show'/'hide' buttons created dynamically */
float: right; /* by the CollapsibleTables javascript in */
font-weight: normal; /* [[MediaWiki:Common.js]]are styled here */
text-align: right; /* so they can be customised. */
width: auto;
}
.navbox .collapseButton { /* In navboxes, the show/hide button balances */
width: 6em; /* the vde links from [[Template:Tnavbar]], */
} /* so they need to be the same width. */
@media print {
.navbox {
display: none;
}
}
/*CÀRREGA D'IMATGES
/* gràfics transparents per les capçaleres d'infotaules */
.capçalera.mapa {background: url("http://upload.wikimedia.org/wikipedia/commons/7/7a/Picto_infobox_map.png") no-repeat top right;}
#Cerca { background: url(http://upload.wikimedia.org/wikipedia/en/a/ae/MP-magnifying-glass.png) no-repeat top right; }
#Llibre { background-image: url(http://upload.wikimedia.org/wikipedia/en/7/7e/MP-open-book.png); }
/* Final de CÀRREGA D'IMATGES
/* Metacaixes d'avís. Copiat de la versió anglesa. */
th.mbox-text, td.mbox-text { /* The message body cell(s) */
border: none;
padding: 0.25em 0.9em; /* 0.9em left/right */
width: 100%; /* Make all mboxes the same width regardless of text length */
}
td.mbox-image { /* The left image cell */
border: none;
padding: 2px 0 2px 0.9em; /* 0.9em left, 0px right */
text-align: center;
}
td.mbox-imageright { /* The right image cell */
border: none;
padding: 2px 0.9em 2px 0; /* 0px left, 0.9em right */
text-align: center;
}
td.mbox-empty-cell { /* An empty narrow cell */
border: none;
padding: 0px;
width: 1px;
}
/* Article message box styles */
table.ambox {
margin: 0px 10%; /* 10% = Will not overlap with other elements */
border: 1px solid #aaa;
border-left: 10px solid #1e90ff; /* Default "notice" blue */
background: #fbfbfb;
}
table.ambox + table.ambox { /* Single border between stacked boxes. */
margin-top: -1px;
}
.ambox th.mbox-text,
.ambox td.mbox-text { /* The message body cell(s) */
padding: 0.25em 0.5em; /* 0.5em left/right */
}
.ambox td.mbox-image { /* The left image cell */
padding: 2px 0 2px 0.5em; /* 0.5em left, 0px right */
}
.ambox td.mbox-imageright { /* The right image cell */
padding: 2px 0.5em 2px 0; /* 0px left, 0.5em right */
}
table.ambox-notice {
border-left: 10px solid #1e90ff; /* Blue */
}
table.ambox-speedy {
border-left: 10px solid #b22222; /* Red */
background: #fee; /* Pink */
}
table.ambox-delete {
border-left: 10px solid #b22222; /* Red */
}
table.ambox-content {
border-left: 10px solid #f28500; /* Orange */
}
table.ambox-style {
border-left: 10px solid #f4c430; /* Yellow */
}
table.ambox-move {
border-left: 10px solid #9932cc; /* Purple */
}
table.ambox-protection {
border-left: 10px solid #bba; /* Gray-gold */
}
table.ambox-completar {
border-left: 10px solid #66bb77; /* Verd */
}
/* Category message box styles */
table.cmbox {
margin: 3px 10%;
border-collapse: collapse;
border: 1px solid #aaa;
background: #DFE8FF; /* Default "notice" blue */
}
table.cmbox-notice {
background: #D8E8FF; /* Blue */
}
table.cmbox-speedy {
margin-top: 4px;
margin-bottom: 4px;
border: 4px solid #b22222; /* Red */
background: #FFDBDB; /* Pink */
}
table.cmbox-delete {
background: #FFDBDB; /* Red */
}
table.cmbox-content {
background: #FFE7CE; /* Orange */
}
table.cmbox-style {
background: #FFF9DB; /* Yellow */
}
table.cmbox-move {
background: #E4D8FF; /* Purple */
}
table.cmbox-protection {
background: #EFEFE1; /* Gray-gold */
}
/* Other pages message box styles */
table.ombox {
margin: 4px 10%;
border-collapse: collapse;
border: 1px solid #aaa; /* Default "notice" gray */
background: #f9f9f9;
}
table.ombox-notice {
border: 1px solid #aaa; /* Gray */
}
table.ombox-speedy {
border: 2px solid #b22222; /* Red */
background: #fee; /* Pink */
}
table.ombox-delete {
border: 2px solid #b22222; /* Red */
}
table.ombox-content {
border: 1px solid #f28500; /* Orange */
}
table.ombox-style {
border: 1px solid #f4c430; /* Yellow */
}
table.ombox-move {
border: 1px solid #9932cc; /* Purple */
}
table.ombox-protection {
border: 2px solid #bba; /* Gray-gold */
}
/* Talk page message box styles */
table.tmbox {
margin: 4px 10%;
border-collapse: collapse;
border: 1px solid #c0c090; /* Default "notice" gray-brown */
background: #f8eaba;
}
table.tmbox-speedy {
border: 2px solid #b22222; /* Red */
background: #fee; /* Pink */
}
table.tmbox-delete {
border: 2px solid #b22222; /* Red */
}
table.tmbox-content {
border: 2px solid #f28500; /* Orange */
}
table.tmbox-style {
border: 2px solid #f4c430; /* Yellow */
}
table.tmbox-move {
border: 2px solid #9932cc; /* Purple */
}
table.tmbox-protection,
table.tmbox-notice {
border: 1px solid #c0c090; /* Gray-brown */
}
/* Redireccions en cursiva a Especial:Allpages, llista de seguiment i categories */
.allpagesredirect a, .watchlistredir a, .redirect-in-category {
font-style: italic;
}
/* Limitació dels nivells d'encapçalaments mostrats a la taula de continguts
per exemple, , mostra només el ==primer== i ===segon=== nivell.
Copiat de l'anglesa. */
.toclimit-2 .toclevel-2 {display:none;}
.toclimit-3 .toclevel-3 {display:none;}
.toclimit-4 .toclevel-4 {display:none;}
.toclimit-5 .toclevel-5 {display:none;}
.toclimit-6 .toclevel-6 {display:none;}
.toclimit-7 .toclevel-7 {display:none;}
/* Infobox template style */
.infobox {
border: 1px solid #aaa;
background-color: #f9f9f9;
color: black;
margin: 0.5em 0 0.5em 1em;
padding: 0.2em;
float: right;
clear: right;
}
.infobox td,
.infobox th {
vertical-align: top;
}
.infobox caption {
font-size: larger;
}
.infobox.bordered {
border-collapse: collapse;
}
.infobox.bordered td,
.infobox.bordered th {
border: 1px solid #aaa;
}
.infobox.bordered .borderless td,
.infobox.bordered .borderless th {
border: 0;
}
.infobox.sisterproject {
width: 20em;
font-size: 90%;
}
.infobox.standard-talk {
border: 1px solid #c0c090;
background-color: #f8eaba;
}
.infobox.standard-talk.bordered td,
.infobox.standard-talk.bordered th {
border: 1px solid #c0c090;
}
/* styles for bordered infobox with merged rows */
.infobox.bordered .mergedtoprow td,
.infobox.bordered .mergedtoprow th {
border: 0;
border-top: 1px solid #aaa;
border-right: 1px solid #aaa;
}
.infobox.bordered .mergedrow td,
.infobox.bordered .mergedrow th {
border: 0;
border-right: 1px solid #aaa;
}
/* Styles for geography infoboxes, eg countries,
country subdivisions, cities, etc. */
.infobox.geography {
text-align: left;
border-collapse: collapse;
line-height: 1.2em;
font-size: 90%;
}
.infobox.geography td,
.infobox.geography th {
border-top: solid 1px #aaa;
padding: 0.4em 0.6em 0.4em 0.6em;
}
.infobox.geography .mergedtoprow td,
.infobox.geography .mergedtoprow th {
border-top: solid 1px #aaa;
padding: 0.4em 0.6em 0.2em 0.6em;
}
.infobox.geography .mergedrow td,
.infobox.geography .mergedrow th {
border: 0;
padding: 0 0.6em 0.2em 0.6em;
}
.infobox.geography .mergedbottomrow td,
.infobox.geography .mergedbottomrow th {
border-top: 0;
border-bottom: solid 1px #aaa;
padding: 0 0.6em 0.4em 0.6em;
}
.infobox.geography .maptable td,
.infobox.geography .maptable th {
border: 0;
padding: 0;
}
/* Patch temporaire pour bug de rendu des liens externes hors des articles */
/* copiat de fr:MediaWiki:Common.css Version du 20 juin 2009 à 15:29 */
#bodyContent a.external {
padding:0 13px 0 0;
}
/* Estil de la portada */
body.page-Portada #ca-delete {
display: none !important;
}
body.page-Portada #mp-topbanner {
clear: both;
}
/* Caixes desplegables */
div.BoxenVerschmelzen,
div.NavFrame,
div.Fullejador {
margin: 0px;
padding: 2px;
border: 1px solid #aaaaaa;
text-align: center;
border-collapse: collapse;
font-size: 95%;
}
div.BoxenVerschmelzen div.NavFrame {
border-style: none;
border-style: hidden;
}
div.Fullejador + div.Fullejador,
div.NavFrame + div.NavFrame {
border-top-style: none;
border-top-style: hidden;
}
div.NavPic,
div.ImatgeFullejador {
background-color: #ffffff;
margin: 0px;
padding: 2px;
float: left;
}
div.NavFrame div.NavHead,
div.Fullejador div.EncapFullejador {
height: 1.6em;
font-weight: bold;
background-color: #efefef;
}
div.Fullejador p,
div.NavFrame p {
font-size: 100%;
}
div.Fullejador div.ContingutFullejador,
div.NavFrame div.NavContent {
font-size: 100%;
}
div.Fullejador div.ContingutFullejador p,
div.NavFrame div.NavContent p {
font-size: 100%;
}
div.FiFullejador,
div.NavEnd {
margin: 0px;
padding: 0px;
line-height: 1px;
clear: both;
}
.ActivaFullejador,
.NavToggle {
font-size: x-small;
float:right;
}
/* */
------------CQ4wAorH1dcm6byte6AhmR
Content-Disposition: inline; filename=index.css
Content-Type: text/css; charset=UTF-8; name=index.css
Content-Location: http://ca.wikipedia.org/w/index.php?title=MediaWiki:Print.css&usemsgcache=yes&ctype=text%2Fcss&smaxage=2678400&action=raw&maxage=2678400
Content-Transfer-Encoding: 8bit
/* CSS que afecten a la versió per a impressora */
/* No imprimir:
Enllaços: Política de privadesa, Quant al projecte, Avís d'exempció
*/
#privacy, #about, #disclaimer, .editlink {
display: none;
}
------------CQ4wAorH1dcm6byte6AhmR
Content-Disposition: inline; filename=index.css
Content-Type: text/css; charset=UTF-8; name=index.css
Content-Location: http://ca.wikipedia.org/w/index.php?title=MediaWiki:Handheld.css&usemsgcache=yes&ctype=text%2Fcss&smaxage=2678400&action=raw&maxage=2678400
Content-Transfer-Encoding: 8bit
/* CSS placed here will affect handheld devices based on the skin configured in $wgHandheldStyle */
------------CQ4wAorH1dcm6byte6AhmR
Content-Disposition: inline
Content-Type: image/png
Content-Location: http://upload.wikimedia.org/wikipedia/fr/8/86/Icone_BA.png
Content-Transfer-Encoding: Base64
iVBORw0KGgoAAAANSUhEUgAAAAkAAAANCAYAAAB7AEQGAAAA3UlEQVR42mP4//8/
AyHMQGdFt2/fRsGdnZ3O6GIonIqKCt4DBw60TJgwQRSrIh0dHea1a9dGXbhwoWf9
+vUxKIqAxgcsX768et26da3bt2/v2bFjR8/WrVt7VqxYUTN//vzstrY2d4bCwkKO
KVOmxE2bNq1n0qRJPUB2z4wZM3pmz54NYufU19eLwo0E6ijtgYLu7u6e1tbWQgw3
Aa2t6O3t7QHhvr6+nvb29nQURWVlZTxARR1A02IaGxv1gOycjo6OhrS0NEa4otra
WqGamhpzZB8B3RIO1MwOYgMArMIjiHcLWLwAAAAASUVORK5CYII=
------------CQ4wAorH1dcm6byte6AhmR
Content-Disposition: inline; filename=index.css
Content-Type: text/css; charset=UTF-8; name=index.css
Content-Location: http://ca.wikipedia.org/w/index.php?title=MediaWiki:Vector.css&usemsgcache=yes&ctype=text%2Fcss&smaxage=2678400&action=raw&maxage=2678400
Content-Transfer-Encoding: 8bit
/* CSS placed here will affect users of the Vector skin */
/* Coordinades en el títol, utilitzat per la família de Plantilla:Coord */
/* la referència és dewiki; no serveix enwiki ja que ells tenen un subtítol "From Wikipedia..." */
#coordinates {
position: absolute;
top: -1.4em;
right: 0;
display: block;
line-height: 11px;
text-align: right;
text-indent: 0;
font-size: 10px;
white-space: nowrap;
}
/* Estrelles AdQ i AB als interwikis segons Plantilla:Enllaç AD i Plantilla:Enllaç AB*/
#mw-panel div.portal div.body ul li.AdQ {
background: url("http://upload.wikimedia.org/wikipedia/commons/4/4c/Icone_AdQ.png") no-repeat 0% 0%;
margin-left: -10px;
padding-left: 10px;
}
#mw-panel div.portal div.body ul li.AB {
background: url("http://upload.wikimedia.org/wikipedia/fr/8/86/Icone_BA.png") no-repeat 0% 0%;
margin-left: -10px;
padding-left: 10px;
}
/* Configuració de la Portada */
body.page-Portada #deleteconfirm,
body.page-Portada #t-cite,
body.page-Portada #footer-info-lastmod,
body.page-Portada #siteSub,
body.page-Portada #contentSub,
body.page-Portada #catlinks,
body.page-Portada h1.firstHeading {
display: none !important;
}
/* Pestanya "Modifica" (edita) en negreta */
#ca-edit a { font-weight: bold !important; }
/* Posició d'icones a la part superior dreta, utilitzat per plantilles com "Article de qualitat" */
div.topicon {
position: absolute;
top: -3em;
margin-right: -10px;
display: block !important;
}
/* Mida de les referències. El 90% de common.css no es veu amb vector */
.references-small {
font-size: 89%;
}
/* Sagnat amb color de les discussions, tret de la versió en francès */
.ns-1 dd, .ns-3 dd, .ns-5 dd, .ns-7 dd, .ns-9 dd,
.ns-11 dd, .ns-13 dd,.ns-15 dd, .ns-101 dd, .ns-103 dd, .ns-105 dd {
margin:0;
padding:0;
}
.ns-1 dl, .ns-3 dl, .ns-5 dl, .ns-7 dl, .ns-9 dl,
.ns-11 dl, .ns-13 dl, .ns-15 dl, .ns-101 dl, .ns-103 dl, .ns-105 dl {
border-top:solid 1px #a7d7f9;
border-left:solid 1px #a7d7f9;
padding-top:.5em;
padding-left:.5em;
margin-left:1em;
}
.ns-1 dl, .ns-3 dl, .ns-5 dl, .ns-7 dl, .ns-9 dl,
.ns-11 dl, .ns-13 dl, .ns-15 dl, .ns-101 dl, .ns-103 dl, .ns-105 dl,
.ns-1 dl dl dl, .ns-3 dl dl dl, .ns-5 dl dl dl, .ns-7 dl dl dl, .ns-9 dl dl dl,
.ns-11 dl dl dl, .ns-13 dl dl dl, .ns-15 dl dl dl, .ns-101 dl dl dl, .ns-103 dl dl dl, .ns-105 dl dl dl,
.ns-1 dl dl dl dl dl, .ns-3 dl dl dl dl dl, .ns-5 dl dl dl dl dl,
.ns-7 dl dl dl dl dl, .ns-9 dl dl dl dl dl, .ns-11 dl dl dl dl dl,
.ns-13 dl dl dl dl dl, .ns-15 dl dl dl dl dl, .ns-101 dl dl dl dl dl,
.ns-103 dl dl dl dl dl, .ns-105 dl dl dl dl dl,
.ns-1 dl dl dl dl dl dl dl, .ns-3 dl dl dl dl dl dl dl,
.ns-5 dl dl dl dl dl dl dl, .ns-7 dl dl dl dl dl dl dl,
.ns-9 dl dl dl dl dl dl dl, .ns-11 dl dl dl dl dl dl dl,
.ns-13 dl dl dl dl dl dl dl, .ns-15 dl dl dl dl dl dl dl,
.ns-101 dl dl dl dl dl dl dl, .ns-103 dl dl dl dl dl dl dl,
.ns-105 dl dl dl dl dl dl dl,
.ns-1 dl dl dl dl dl dl dl dl dl, .ns-3 dl dl dl dl dl dl dl dl dl,
.ns-5 dl dl dl dl dl dl dl dl dl, .ns-7 dl dl dl dl dl dl dl dl dl,
.ns-9 dl dl dl dl dl dl dl dl dl, .ns-11 dl dl dl dl dl dl dl dl dl,
.ns-13 dl dl dl dl dl dl dl dl dl, .ns-15 dl dl dl dl dl dl dl dl dl,
.ns-101 dl dl dl dl dl dl dl dl dl, .ns-103 dl dl dl dl dl dl dl dl dl,
.ns-105 dl dl dl dl dl dl dl dl dl
{ background:#f6f6f6; }
.ns-1 dl dl, .ns-3 dl dl, .ns-5 dl dl, .ns-7 dl dl, .ns-9 dl dl,
.ns-11 dl dl, .ns-13 dl dl, .ns-15 dl dl, .ns-101 dl dl, .ns-103 dl dl, .ns-105 dl dl,
.ns-1 dl dl dl dl, .ns-3 dl dl dl dl, .ns-5 dl dl dl dl, .ns-7 dl dl dl dl,
.ns-9 dl dl dl dl, .ns-11 dl dl dl dl, .ns-13 dl dl dl dl, .ns-15 dl dl dl dl,
.ns-101 dl dl dl dl, .ns-103 dl dl dl dl, .ns-105 dl dl dl dl,
.ns-1 dl dl dl dl dl dl, .ns-3 dl dl dl dl dl dl,
.ns-5 dl dl dl dl dl dl, .ns-7 dl dl dl dl dl dl,
.ns-9 dl dl dl dl dl dl, .ns-11 dl dl dl dl dl dl,
.ns-13 dl dl dl dl dl dl, .ns-15 dl dl dl dl dl dl,
.ns-101 dl dl dl dl dl dl, .ns-103 dl dl dl dl dl dl,
.ns-105 dl dl dl dl dl dl,
.ns-1 dl dl dl dl dl dl dl dl, .ns-3 dl dl dl dl dl dl dl dl,
.ns-5 dl dl dl dl dl dl dl dl, .ns-7 dl dl dl dl dl dl dl dl,
.ns-9 dl dl dl dl dl dl dl dl, .ns-11 dl dl dl dl dl dl dl dl,
.ns-13 dl dl dl dl dl dl dl dl, .ns-15 dl dl dl dl dl dl dl dl,
.ns-101 dl dl dl dl dl dl dl dl, .ns-103 dl dl dl dl dl dl dl dl,
.ns-105 dl dl dl dl dl dl dl dl,
.ns-1 dl dl dl dl dl dl dl dl dl dl, .ns-3 dl dl dl dl dl dl dl dl dl dl,
.ns-5 dl dl dl dl dl dl dl dl dl dl, .ns-7 dl dl dl dl dl dl dl dl dl dl,
.ns-9 dl dl dl dl dl dl dl dl dl dl, .ns-11 dl dl dl dl dl dl dl dl dl dl,
.ns-13 dl dl dl dl dl dl dl dl dl dl, .ns-15 dl dl dl dl dl dl dl dl dl dl,
.ns-101 dl dl dl dl dl dl dl dl dl dl, .ns-103 dl dl dl dl dl dl dl dl dl dl,
.ns-105 dl dl dl dl dl dl dl dl dl dl
{ background:white; }
------------CQ4wAorH1dcm6byte6AhmR
Content-Disposition: inline; filename=index.css
Content-Type: text/css; charset=UTF-8; name=index.css
Content-Location: http://ca.wikipedia.org/w/index.php?title=-&action=raw&maxage=2678400&gen=css
Content-Transfer-Encoding: 8bit
/* generated user stylesheet */
a.new, #quickbar a.new { color: #CC2200; }
------------CQ4wAorH1dcm6byte6AhmR
Content-Disposition: inline; filename=wikibits.js
Content-Type: application/x-javascript; name=wikibits.js
Content-Location: http://bits.wikimedia.org/skins-1.5/common/wikibits.js?283-19
Content-Transfer-Encoding: Base64
Ly8gTWVkaWFXaWtpIEphdmFTY3JpcHQgc3VwcG9ydCBmdW5jdGlvbnMKCnZhciBj
bGllbnRQQyA9IG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKTsgLy8g
R2V0IGNsaWVudCBpbmZvCnZhciBpc19nZWNrbyA9IC9nZWNrby8udGVzdCggY2xp
ZW50UEMgKSAmJgoJIS9raHRtbHxzcG9vZmVyfG5ldHNjYXBlXC83XC4wLy50ZXN0
KGNsaWVudFBDKTsKdmFyIHdlYmtpdF9tYXRjaCA9IGNsaWVudFBDLm1hdGNoKC9h
cHBsZXdlYmtpdFwvKFxkKykvKTsKaWYgKHdlYmtpdF9tYXRjaCkgewoJdmFyIGlz
X3NhZmFyaSA9IGNsaWVudFBDLmluZGV4T2YoJ2FwcGxld2Via2l0JykgIT0gLTEg
JiYKCQljbGllbnRQQy5pbmRleE9mKCdzcG9vZmVyJykgPT0gLTE7Cgl2YXIgaXNf
c2FmYXJpX3dpbiA9IGlzX3NhZmFyaSAmJiBjbGllbnRQQy5pbmRleE9mKCd3aW5k
b3dzJykgIT0gLTE7Cgl2YXIgd2Via2l0X3ZlcnNpb24gPSBwYXJzZUludCh3ZWJr
aXRfbWF0Y2hbMV0pOwp9Ci8vIEZvciBhY2Nlc3NrZXlzOyBub3RlIHRoYXQgRkYz
KyBpcyBpbmNsdWRlZCBoZXJlIQp2YXIgaXNfZmYyID0gL2ZpcmVmb3hcL1syLTld
fG1pbmVmaWVsZFwvMy8udGVzdCggY2xpZW50UEMgKTsKdmFyIGZmMl9idWdzID0g
L2ZpcmVmb3hcLzIvLnRlc3QoIGNsaWVudFBDICk7Ci8vIFRoZXNlIGFyZW4ndCB1
c2VkIGhlcmUsIGJ1dCBzb21lIGN1c3RvbSBzY3JpcHRzIHJlbHkgb24gdGhlbQp2
YXIgaXNfZmYyX3dpbiA9IGlzX2ZmMiAmJiBjbGllbnRQQy5pbmRleE9mKCd3aW5k
b3dzJykgIT0gLTE7CnZhciBpc19mZjJfeDExID0gaXNfZmYyICYmIGNsaWVudFBD
LmluZGV4T2YoJ3gxMScpICE9IC0xOwppZiAoY2xpZW50UEMuaW5kZXhPZignb3Bl
cmEnKSAhPSAtMSkgewoJdmFyIGlzX29wZXJhID0gdHJ1ZTsKCXZhciBpc19vcGVy
YV9wcmVzZXZlbiA9IHdpbmRvdy5vcGVyYSAmJiAhZG9jdW1lbnQuY2hpbGROb2Rl
czsKCXZhciBpc19vcGVyYV9zZXZlbiA9IHdpbmRvdy5vcGVyYSAmJiBkb2N1bWVu
dC5jaGlsZE5vZGVzOwoJdmFyIGlzX29wZXJhXzk1ID0gL29wZXJhXC8oOVwuWzUt
OV18WzEtOV1bMC05XSkvLnRlc3QoIGNsaWVudFBDICk7Cgl2YXIgb3BlcmE2X2J1
Z3MgPSBpc19vcGVyYV9wcmVzZXZlbjsKCXZhciBvcGVyYTdfYnVncyA9IGlzX29w
ZXJhX3NldmVuICYmICFpc19vcGVyYV85NTsKCXZhciBvcGVyYTk1X2J1Z3MgPSAv
b3BlcmFcLyg5XC41KS8udGVzdCggY2xpZW50UEMgKTsKfQovLyBBcyByZWNvbW1l
bmRlZCBieSA8aHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5
L21zNTM3NTA5LmFzcHg+LAovLyBhdm9pZGluZyBmYWxzZSBwb3NpdGl2ZXMgZnJv
bSBtb3JvbmljIGV4dGVuc2lvbnMgdGhhdCBhcHBlbmQgdG8gdGhlIElFIFVBCi8v
IHN0cmluZyAoYnVnIDIzMTcxKQp2YXIgaWU2X2J1Z3MgPSBmYWxzZTsKaWYgKCAv
bXNpZSAoWzAtOV17MSx9W1wuMC05XXswLH0pLy5leGVjKCBjbGllbnRQQyApICE9
IG51bGwKJiYgcGFyc2VGbG9hdCggUmVnRXhwLiQxICkgPD0gNi4wICkgewoJaWU2
X2J1Z3MgPSB0cnVlOwp9CgovLyBHbG9iYWwgZXh0ZXJuYWwgb2JqZWN0cyB1c2Vk
IGJ5IHRoaXMgc2NyaXB0LgovKmV4dGVybiB0YSwgc3R5bGVwYXRoLCBza2luICov
CgovLyBhZGQgYW55IG9ubG9hZCBmdW5jdGlvbnMgaW4gdGhpcyBob29rIChwbGVh
c2UgZG9uJ3QgaGFyZC1jb2RlIGFueSBldmVudHMgaW4gdGhlIHhodG1sIHNvdXJj
ZSkKdmFyIGRvbmVPbmxvYWRIb29rOwoKaWYgKCF3aW5kb3cub25sb2FkRnVuY3Rz
KSB7Cgl2YXIgb25sb2FkRnVuY3RzID0gW107Cn0KCmZ1bmN0aW9uIGFkZE9ubG9h
ZEhvb2soIGhvb2tGdW5jdCApIHsKCS8vIEFsbG93cyBhZGQtb24gc2NyaXB0cyB0
byBhZGQgb25sb2FkIGZ1bmN0aW9ucwoJaWYoICFkb25lT25sb2FkSG9vayApIHsK
CQlvbmxvYWRGdW5jdHNbb25sb2FkRnVuY3RzLmxlbmd0aF0gPSBob29rRnVuY3Q7
Cgl9IGVsc2UgewoJCWhvb2tGdW5jdCgpOyAgLy8gYnVnIGluIE1TSUUgc2NyaXB0
IGxvYWRpbmcKCX0KfQoKZnVuY3Rpb24gaG9va0V2ZW50KCBob29rTmFtZSwgaG9v
a0Z1bmN0ICkgewoJYWRkSGFuZGxlciggd2luZG93LCBob29rTmFtZSwgaG9va0Z1
bmN0ICk7Cn0KCmZ1bmN0aW9uIGltcG9ydFNjcmlwdCggcGFnZSApIHsKCS8vIFRP
RE86IG1pZ2h0IHdhbnQgdG8gaW50cm9kdWNlIGEgdXRpbGl0eSBmdW5jdGlvbiB0
byBtYXRjaCB3ZlVybGVuY29kZSgpIGluIFBIUAoJdmFyIHVyaSA9IHdnU2NyaXB0
ICsgJz90aXRsZT0nICsKCQllbmNvZGVVUklDb21wb25lbnQocGFnZS5yZXBsYWNl
KC8gL2csJ18nKSkucmVwbGFjZSgvJTJGL2lnLCcvJykucmVwbGFjZSgvJTNBL2ln
LCc6JykgKwoJCScmYWN0aW9uPXJhdyZjdHlwZT10ZXh0L2phdmFzY3JpcHQnOwoJ
cmV0dXJuIGltcG9ydFNjcmlwdFVSSSggdXJpICk7Cn0KCnZhciBsb2FkZWRTY3Jp
cHRzID0ge307IC8vIGluY2x1ZGVkLXNjcmlwdHMgdHJhY2tlcgpmdW5jdGlvbiBp
bXBvcnRTY3JpcHRVUkkoIHVybCApIHsKCWlmICggbG9hZGVkU2NyaXB0c1t1cmxd
ICkgewoJCXJldHVybiBudWxsOwoJfQoJbG9hZGVkU2NyaXB0c1t1cmxdID0gdHJ1
ZTsKCXZhciBzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggJ3NjcmlwdCcgKTsK
CXMuc2V0QXR0cmlidXRlKCAnc3JjJywgdXJsICk7CglzLnNldEF0dHJpYnV0ZSgg
J3R5cGUnLCAndGV4dC9qYXZhc2NyaXB0JyApOwoJZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoJ2hlYWQnKVswXS5hcHBlbmRDaGlsZCggcyApOwoJcmV0dXJu
IHM7Cn0KCmZ1bmN0aW9uIGltcG9ydFN0eWxlc2hlZXQoIHBhZ2UgKSB7CglyZXR1
cm4gaW1wb3J0U3R5bGVzaGVldFVSSSggd2dTY3JpcHQgKyAnP2FjdGlvbj1yYXcm
Y3R5cGU9dGV4dC9jc3MmdGl0bGU9JyArIGVuY29kZVVSSUNvbXBvbmVudCggcGFn
ZS5yZXBsYWNlKC8gL2csJ18nKSApICk7Cn0KCmZ1bmN0aW9uIGltcG9ydFN0eWxl
c2hlZXRVUkkoIHVybCwgbWVkaWEgKSB7Cgl2YXIgbCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoICdsaW5rJyApOwoJbC50eXBlID0gJ3RleHQvY3NzJzsKCWwucmVs
ID0gJ3N0eWxlc2hlZXQnOwoJbC5ocmVmID0gdXJsOwoJaWYoIG1lZGlhICkgewoJ
CWwubWVkaWEgPSBtZWRpYTsKCX0KCWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCdoZWFkJylbMF0uYXBwZW5kQ2hpbGQoIGwgKTsKCXJldHVybiBsOwp9Cgpm
dW5jdGlvbiBhcHBlbmRDU1MoIHRleHQgKSB7Cgl2YXIgcyA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoICdzdHlsZScgKTsKCXMudHlwZSA9ICd0ZXh0L2Nzcyc7Cglz
LnJlbCA9ICdzdHlsZXNoZWV0JzsKCWlmICggcy5zdHlsZVNoZWV0ICkgewoJCXMu
c3R5bGVTaGVldC5jc3NUZXh0ID0gdGV4dDsgLy8gSUUKCX0gZWxzZSB7CgkJcy5h
cHBlbmRDaGlsZCggZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIHRleHQgKyAnJyAp
ICk7IC8vIFNhZmFyaSBzb21ldGltZXMgYm9ya3Mgb24gbnVsbAoJfQoJZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXS5hcHBlbmRDaGlsZCgg
cyApOwoJcmV0dXJuIHM7Cn0KCi8vIFNwZWNpYWwgc3R5bGVzaGVldCBsaW5rcyBm
b3IgTW9ub2Jvb2sgb25seSAoc2VlIGJ1ZyAxNDcxNykKaWYgKCB0eXBlb2Ygc3R5
bGVwYXRoICE9ICd1bmRlZmluZWQnICYmIHNraW4gPT0gJ21vbm9ib29rJyApIHsK
CWlmICggb3BlcmE2X2J1Z3MgKSB7CgkJaW1wb3J0U3R5bGVzaGVldFVSSSggc3R5
bGVwYXRoICsgJy8nICsgc2tpbiArICcvT3BlcmE2Rml4ZXMuY3NzJyApOwoJfSBl
bHNlIGlmICggb3BlcmE3X2J1Z3MgKSB7CgkJaW1wb3J0U3R5bGVzaGVldFVSSSgg
c3R5bGVwYXRoICsgJy8nICsgc2tpbiArICcvT3BlcmE3Rml4ZXMuY3NzJyApOwoJ
fSBlbHNlIGlmICggb3BlcmE5NV9idWdzICkgewoJCWltcG9ydFN0eWxlc2hlZXRV
UkkoIHN0eWxlcGF0aCArICcvJyArIHNraW4gKyAnL09wZXJhOUZpeGVzLmNzcycg
KTsKCX0gZWxzZSBpZiAoIGZmMl9idWdzICkgewoJCWltcG9ydFN0eWxlc2hlZXRV
UkkoIHN0eWxlcGF0aCArICcvJyArIHNraW4gKyAnL0ZGMkZpeGVzLmNzcycgKTsK
CX0KfQoKCmlmICggd2dCcmVha0ZyYW1lcyApIHsKCS8vIFVuLXRyYXAgdXMgZnJv
bSBmcmFtZXNldHMKCWlmICggd2luZG93LnRvcCAhPSB3aW5kb3cgKSB7CgkJd2lu
ZG93LnRvcC5sb2NhdGlvbiA9IHdpbmRvdy5sb2NhdGlvbjsKCX0KfQoKZnVuY3Rp
b24gc2hvd1RvY1RvZ2dsZSgpIHsKCWlmICggZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUgKSB7CgkJLy8gVXNlcyBET00gY2FsbHMgdG8gYXZvaWQgZG9jdW1lbnQud3Jp
dGUgKyBYSFRNTCBpc3N1ZXMKCgkJdmFyIGxpbmtIb2xkZXIgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCggJ3RvY3RpdGxlJyApOwoJCXZhciBleGlzdGluZ0xpbmsg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCggJ3RvZ2dsZWxpbmsnICk7CgkJaWYg
KCAhbGlua0hvbGRlciB8fCBleGlzdGluZ0xpbmsgKSB7CgkJCS8vIERvbid0IGFk
ZCB0aGUgdG9nZ2xlIGxpbmsgdHdpY2UKCQkJcmV0dXJuOwoJCX0KCgkJdmFyIG91
dGVyU3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoICdzcGFuJyApOwoJCW91
dGVyU3Bhbi5jbGFzc05hbWUgPSAndG9jdG9nZ2xlJzsKCgkJdmFyIHRvZ2dsZUxp
bmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAnYScgKTsKCQl0b2dnbGVMaW5r
LmlkID0gJ3RvZ2dsZWxpbmsnOwoJCXRvZ2dsZUxpbmsuY2xhc3NOYW1lID0gJ2lu
dGVybmFsJzsKCQl0b2dnbGVMaW5rLmhyZWYgPSAnIyc7CgkJYWRkQ2xpY2tIYW5k
bGVyKCB0b2dnbGVMaW5rLCBmdW5jdGlvbiggZXZ0ICkgeyB0b2dnbGVUb2MoKTsg
cmV0dXJuIGtpbGxFdnQoIGV2dCApOyB9ICk7CgkJCgkJdG9nZ2xlTGluay5hcHBl
bmRDaGlsZCggZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIHRvY0hpZGVUZXh0ICkg
KTsKCgkJb3V0ZXJTcGFuLmFwcGVuZENoaWxkKCBkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZSggJ1snICkgKTsKCQlvdXRlclNwYW4uYXBwZW5kQ2hpbGQoIHRvZ2dsZUxp
bmsgKTsKCQlvdXRlclNwYW4uYXBwZW5kQ2hpbGQoIGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKCAnXScgKSApOwoKCQlsaW5rSG9sZGVyLmFwcGVuZENoaWxkKCBkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZSggJyAnICkgKTsKCQlsaW5rSG9sZGVyLmFwcGVu
ZENoaWxkKCBvdXRlclNwYW4gKTsKCgkJdmFyIGNvb2tpZVBvcyA9IGRvY3VtZW50
LmNvb2tpZS5pbmRleE9mKCAiaGlkZXRvYz0iICk7CgkJaWYgKCBjb29raWVQb3Mg
PiAtMSAmJiBkb2N1bWVudC5jb29raWUuY2hhckF0KCBjb29raWVQb3MgKyA4ICkg
PT0gMSApIHsKCQkJdG9nZ2xlVG9jKCk7CgkJfQoJfQp9CgpmdW5jdGlvbiBjaGFu
Z2VUZXh0KCBlbCwgbmV3VGV4dCApIHsKCS8vIFNhZmFyaSB3b3JrIGFyb3VuZAoJ
aWYgKCBlbC5pbm5lclRleHQgKSB7CgkJZWwuaW5uZXJUZXh0ID0gbmV3VGV4dDsK
CX0gZWxzZSBpZiAoIGVsLmZpcnN0Q2hpbGQgJiYgZWwuZmlyc3RDaGlsZC5ub2Rl
VmFsdWUgKSB7CgkJZWwuZmlyc3RDaGlsZC5ub2RlVmFsdWUgPSBuZXdUZXh0OwoJ
fQp9CgpmdW5jdGlvbiBraWxsRXZ0KCBldnQgKSB7CglldnQgPSBldnQgfHwgd2lu
ZG93LmV2ZW50IHx8IHdpbmRvdy5FdmVudDsgLy8gVzNDLCBJRSwgTmV0c2NhcGUK
CWlmICggdHlwZW9mICggZXZ0LnByZXZlbnREZWZhdWx0ICkgIT0gJ3VuZGVmaW5l
ZCcgKSB7CgkJZXZ0LnByZXZlbnREZWZhdWx0KCk7IC8vIERvbid0IGZvbGxvdyB0
aGUgbGluawoJCWV2dC5zdG9wUHJvcGFnYXRpb24oKTsKCX0gZWxzZSB7CgkJZXZ0
LmNhbmNlbEJ1YmJsZSA9IHRydWU7IC8vIElFCgl9CglyZXR1cm4gZmFsc2U7IC8v
IERvbid0IGZvbGxvdyB0aGUgbGluayAoSUUpCn0KCmZ1bmN0aW9uIHRvZ2dsZVRv
YygpIHsKCXZhciB0b2NtYWluID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoICd0
b2MnICk7Cgl2YXIgdG9jID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RvYycp
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd1bCcpWzBdOwoJdmFyIHRvZ2dsZUxpbmsg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCggJ3RvZ2dsZWxpbmsnICk7CgoJaWYg
KCB0b2MgJiYgdG9nZ2xlTGluayAmJiB0b2Muc3R5bGUuZGlzcGxheSA9PSAnbm9u
ZScgKSB7CgkJY2hhbmdlVGV4dCggdG9nZ2xlTGluaywgdG9jSGlkZVRleHQgKTsK
CQl0b2Muc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CgkJZG9jdW1lbnQuY29va2ll
ID0gImhpZGV0b2M9MCI7CgkJdG9jbWFpbi5jbGFzc05hbWUgPSAndG9jJzsKCX0g
ZWxzZSB7CgkJY2hhbmdlVGV4dCggdG9nZ2xlTGluaywgdG9jU2hvd1RleHQgKTsK
CQl0b2Muc3R5bGUuZGlzcGxheSA9ICdub25lJzsKCQlkb2N1bWVudC5jb29raWUg
PSAiaGlkZXRvYz0xIjsKCQl0b2NtYWluLmNsYXNzTmFtZSA9ICd0b2MgdG9jaGlk
ZGVuJzsKCX0KfQoKdmFyIG13RWRpdEJ1dHRvbnMgPSBbXTsKdmFyIG13Q3VzdG9t
RWRpdEJ1dHRvbnMgPSBbXTsgLy8gZWcgdG8gYWRkIGluIE1lZGlhV2lraTpDb21t
b24uanMKCmZ1bmN0aW9uIGVzY2FwZVF1b3RlcyggdGV4dCApIHsKCXZhciByZSA9
IG5ldyBSZWdFeHAoICInIiwgImciICk7Cgl0ZXh0ID0gdGV4dC5yZXBsYWNlKCBy
ZSwgIlxcJyIgKTsKCXJlID0gbmV3IFJlZ0V4cCggIlxcbiIsICJnIiApOwoJdGV4
dCA9IHRleHQucmVwbGFjZSggcmUsICJcXG4iICk7CglyZXR1cm4gZXNjYXBlUXVv
dGVzSFRNTCggdGV4dCApOwp9CgpmdW5jdGlvbiBlc2NhcGVRdW90ZXNIVE1MKCB0
ZXh0ICkgewoJdmFyIHJlID0gbmV3IFJlZ0V4cCggJyYnLCAiZyIgKTsKCXRleHQg
PSB0ZXh0LnJlcGxhY2UoIHJlLCAiJmFtcDsiICk7CglyZSA9IG5ldyBSZWdFeHAo
ICciJywgImciICk7Cgl0ZXh0ID0gdGV4dC5yZXBsYWNlKCByZSwgIiZxdW90OyIg
KTsKCXJlID0gbmV3IFJlZ0V4cCggJzwnLCAiZyIgKTsKCXRleHQgPSB0ZXh0LnJl
cGxhY2UoIHJlLCAiJmx0OyIgKTsKCXJlID0gbmV3IFJlZ0V4cCggJz4nLCAiZyIg
KTsKCXRleHQgPSB0ZXh0LnJlcGxhY2UoIHJlLCAiJmd0OyIgKTsKCXJldHVybiB0
ZXh0Owp9CgovKioKICogU2V0IHRoZSBhY2Nlc3NrZXkgcHJlZml4IGJhc2VkIG9u
IGJyb3dzZXIgZGV0ZWN0aW9uLgogKi8KdmFyIHRvb2x0aXBBY2Nlc3NLZXlQcmVm
aXggPSAnYWx0LSc7CmlmICggaXNfb3BlcmEgKSB7Cgl0b29sdGlwQWNjZXNzS2V5
UHJlZml4ID0gJ3NoaWZ0LWVzYy0nOwp9IGVsc2UgaWYgKCAhaXNfc2FmYXJpX3dp
biAmJiBpc19zYWZhcmkgJiYgd2Via2l0X3ZlcnNpb24gPiA1MjYgKSB7Cgl0b29s
dGlwQWNjZXNzS2V5UHJlZml4ID0gJ2N0cmwtYWx0LSc7Cn0gZWxzZSBpZiAoICFp
c19zYWZhcmlfd2luICYmICggaXNfc2FmYXJpCgkJfHwgY2xpZW50UEMuaW5kZXhP
ZignbWFjJykgIT0gLTEKCQl8fCBjbGllbnRQQy5pbmRleE9mKCdrb25xdWVyb3In
KSAhPSAtMSApICkgewoJdG9vbHRpcEFjY2Vzc0tleVByZWZpeCA9ICdjdHJsLSc7
Cn0gZWxzZSBpZiAoIGlzX2ZmMiApIHsKCXRvb2x0aXBBY2Nlc3NLZXlQcmVmaXgg
PSAnYWx0LXNoaWZ0LSc7Cn0KdmFyIHRvb2x0aXBBY2Nlc3NLZXlSZWdleHAgPSAv
XFsoY3RybC0pPyhhbHQtKT8oc2hpZnQtKT8oZXNjLSk/KC4pXF0kLzsKCi8qKgog
KiBBZGQgdGhlIGFwcHJvcHJpYXRlIHByZWZpeCB0byB0aGUgYWNjZXNza2V5IHNo
b3duIGluIHRoZSB0b29sdGlwLgogKiBJZiB0aGUgbm9kZUxpc3QgcGFyYW1ldGVy
IGlzIGdpdmVuLCBvbmx5IHRob3NlIG5vZGVzIGFyZSB1cGRhdGVkOwogKiBvdGhl
cndpc2UsIGFsbCB0aGUgbm9kZXMgdGhhdCB3aWxsIHByb2JhYmx5IGhhdmUgYWNj
ZXNza2V5cyBieQogKiBkZWZhdWx0IGFyZSB1cGRhdGVkLgogKgogKiBAcGFyYW0g
QXJyYXkgbm9kZUxpc3QgLS0gbGlzdCBvZiBlbGVtZW50cyB0byB1cGRhdGUKICov
CmZ1bmN0aW9uIHVwZGF0ZVRvb2x0aXBBY2Nlc3NLZXlzKCBub2RlTGlzdCApIHsK
CWlmICggIW5vZGVMaXN0ICkgewoJCS8vIFJhdGhlciB0aGFuIHNjYW4gYWxsIGxp
bmtzIG9uIHRoZSB3aG9sZSBwYWdlLCB3ZSBjYW4ganVzdCBzY2FuIHRoZXNlCgkJ
Ly8gY29udGFpbmVycyB3aGljaCBjb250YWluIHRoZSByZWxldmFudCBsaW5rcy4g
VGhpcyBpcyByZWFsbHkganVzdCBhbgoJCS8vIG9wdGltaXphdGlvbiB0ZWNobmlx
dWUuCgkJdmFyIGxpbmtDb250YWluZXJzID0gWwoJCQknY29sdW1uLW9uZScsIC8v
IE1vbm9ib29rIGFuZCBNb2Rlcm4KCQkJJ213LWhlYWQnLCAnbXctcGFuZWwnLCAn
cC1sb2dvJyAvLyBWZWN0b3IKCQldOwoJCWZvciAoIHZhciBpIGluIGxpbmtDb250
YWluZXJzICkgewoJCQl2YXIgbGlua0NvbnRhaW5lciA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCBsaW5rQ29udGFpbmVyc1tpXSApOwoJCQlpZiAoIGxpbmtDb250
YWluZXIgKSB7CgkJCQl1cGRhdGVUb29sdGlwQWNjZXNzS2V5cyggbGlua0NvbnRh
aW5lci5nZXRFbGVtZW50c0J5VGFnTmFtZSggJ2EnICkgKTsKCQkJfQoJCX0KCQkv
LyB0aGVzZSBhcmUgcmFyZSBlbm91Z2ggdGhhdCBubyBzdWNoIG9wdGltaXphdGlv
biBpcyBuZWVkZWQKCQl1cGRhdGVUb29sdGlwQWNjZXNzS2V5cyggZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoICdpbnB1dCcgKSApOwoJCXVwZGF0ZVRvb2x0
aXBBY2Nlc3NLZXlzKCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSggJ2xh
YmVsJyApICk7CgkJcmV0dXJuOwoJfQoKCWZvciAoIHZhciBpID0gMDsgaSA8IG5v
ZGVMaXN0Lmxlbmd0aDsgaSsrICkgewoJCXZhciBlbGVtZW50ID0gbm9kZUxpc3Rb
aV07CgkJdmFyIHRpcCA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCAndGl0bGUnICk7
CgkJaWYgKCB0aXAgJiYgdG9vbHRpcEFjY2Vzc0tleVJlZ2V4cC5leGVjKCB0aXAg
KSApIHsKCQkJdGlwID0gdGlwLnJlcGxhY2UodG9vbHRpcEFjY2Vzc0tleVJlZ2V4
cCwKCQkJCQkgICdbJyArIHRvb2x0aXBBY2Nlc3NLZXlQcmVmaXggKyAiJDVdIik7
CgkJCWVsZW1lbnQuc2V0QXR0cmlidXRlKCAndGl0bGUnLCB0aXAgKTsKCQl9Cgl9
Cn0KCi8qKgogKiBBZGQgYSBsaW5rIHRvIG9uZSBvZiB0aGUgcG9ydGxldCBtZW51
cyBvbiB0aGUgcGFnZSwgaW5jbHVkaW5nOgogKgogKiBwLWNhY3Rpb25zOiBDb250
ZW50IGFjdGlvbnMgKHNob3duIGFzIHRhYnMgYWJvdmUgdGhlIG1haW4gY29udGVu
dCBpbiBNb25vYm9vaykKICogcC1wZXJzb25hbDogUGVyc29uYWwgdG9vbHMgKHNo
b3duIGF0IHRoZSB0b3AgcmlnaHQgb2YgdGhlIHBhZ2UgaW4gTW9ub2Jvb2spCiAq
IHAtbmF2aWdhdGlvbjogTmF2aWdhdGlvbgogKiBwLXRiOiBUb29sYm94CiAqCiAq
IFRoaXMgZnVuY3Rpb24gZXhpc3RzIGZvciB0aGUgY29udmVuaWVuY2Ugb2YgY3Vz
dG9tIEpTIGF1dGhvcnMuICBBbGwKICogYnV0IHRoZSBmaXJzdCB0aHJlZSBwYXJh
bWV0ZXJzIGFyZSBvcHRpb25hbCwgdGhvdWdoIHByb3ZpZGluZyBhdAogKiBsZWFz
dCBhbiBpZCBhbmQgYSB0b29sdGlwIGlzIHJlY29tbWVuZGVkLgogKgogKiBCeSBk
ZWZhdWx0IHRoZSBuZXcgbGluayB3aWxsIGJlIGFkZGVkIHRvIHRoZSBlbmQgb2Yg
dGhlIGxpc3QuICBUbwogKiBhZGQgdGhlIGxpbmsgYmVmb3JlIGEgZ2l2ZW4gZXhp
c3RpbmcgaXRlbSwgcGFzcyB0aGUgRE9NIG5vZGUgb2YKICogdGhhdCBpdGVtIChl
YXNpbHkgb2J0YWluZWQgd2l0aCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgpKSBh
cyB0aGUKICogbmV4dG5vZGUgcGFyYW1ldGVyOyB0byBhZGQgdGhlIGxpbmsgX2Fm
dGVyXyBhbiBleGlzdGluZyBpdGVtLCBwYXNzCiAqIHRoZSBub2RlJ3MgbmV4dFNp
YmxpbmcgaW5zdGVhZC4KICoKICogQHBhcmFtIFN0cmluZyBwb3J0bGV0IC0tIGlk
IG9mIHRoZSB0YXJnZXQgcG9ydGxldCAoInAtY2FjdGlvbnMiLCAicC1wZXJzb25h
bCIsICJwLW5hdmlnYXRpb24iIG9yICJwLXRiIikKICogQHBhcmFtIFN0cmluZyBo
cmVmIC0tIGxpbmsgVVJMCiAqIEBwYXJhbSBTdHJpbmcgdGV4dCAtLSBsaW5rIHRl
eHQgKHdpbGwgYmUgYXV0b21hdGljYWxseSBsb3dlcmNhc2VkIGJ5IENTUyBmb3Ig
cC1jYWN0aW9ucyBpbiBNb25vYm9vaykKICogQHBhcmFtIFN0cmluZyBpZCAtLSBp
ZCBvZiB0aGUgbmV3IGl0ZW0sIHNob3VsZCBiZSB1bmlxdWUgYW5kIHByZWZlcmFi
bHkgaGF2ZSB0aGUgYXBwcm9wcmlhdGUgcHJlZml4ICgiY2EtIiwgInB0LSIsICJu
LSIgb3IgInQtIikKICogQHBhcmFtIFN0cmluZyB0b29sdGlwIC0tIHRleHQgdG8g
c2hvdyB3aGVuIGhvdmVyaW5nIG92ZXIgdGhlIGxpbmssIHdpdGhvdXQgYWNjZXNz
a2V5IHN1ZmZpeAogKiBAcGFyYW0gU3RyaW5nIGFjY2Vzc2tleSAtLSBhY2Nlc3Nr
ZXkgdG8gYWN0aXZhdGUgdGhpcyBsaW5rIChvbmUgY2hhcmFjdGVyLCB0cnkgdG8g
YXZvaWQgY29uZmxpY3RzKQogKiBAcGFyYW0gTm9kZSBuZXh0bm9kZSAtLSB0aGUg
RE9NIG5vZGUgYmVmb3JlIHdoaWNoIHRoZSBuZXcgaXRlbSBzaG91bGQgYmUgYWRk
ZWQsIHNob3VsZCBiZSBhbm90aGVyIGl0ZW0gaW4gdGhlIHNhbWUgbGlzdAogKgog
KiBAcmV0dXJuIE5vZGUgLS0gdGhlIERPTSBub2RlIG9mIHRoZSBuZXcgaXRlbSAo
YW4gTEkgZWxlbWVudCkgb3IgbnVsbAogKi8KZnVuY3Rpb24gYWRkUG9ydGxldExp
bmsoIHBvcnRsZXQsIGhyZWYsIHRleHQsIGlkLCB0b29sdGlwLCBhY2Nlc3NrZXks
IG5leHRub2RlICkgewoJdmFyIHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCggcG9ydGxldCApOwoJaWYgKCAhcm9vdCApIHsKCQlyZXR1cm4gbnVsbDsKCX0K
CXZhciBub2RlID0gcm9vdC5nZXRFbGVtZW50c0J5VGFnTmFtZSggJ3VsJyApWzBd
OwoJaWYgKCAhbm9kZSApIHsKCQlyZXR1cm4gbnVsbDsKCX0KCgkvLyB1bmhpZGUg
cG9ydGxldCBpZiBpdCB3YXMgaGlkZGVuIGJlZm9yZQoJcm9vdC5jbGFzc05hbWUg
PSByb290LmNsYXNzTmFtZS5yZXBsYWNlKCAvKF58ICllbXB0eVBvcnRsZXQoIHwk
KS8sICIkMiIgKTsKCgl2YXIgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ICdzcGFuJyApOwoJc3Bhbi5hcHBlbmRDaGlsZCggZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoIHRleHQgKSApOwoKCXZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCggJ2EnICk7CglsaW5rLmFwcGVuZENoaWxkKCBzcGFuICk7CglsaW5rLmhy
ZWYgPSBocmVmOwoKCXZhciBpdGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgg
J2xpJyApOwoJaXRlbS5hcHBlbmRDaGlsZCggbGluayApOwoJaWYgKCBpZCApIHsK
CQlpdGVtLmlkID0gaWQ7Cgl9CgoJaWYgKCBhY2Nlc3NrZXkgKSB7CgkJbGluay5z
ZXRBdHRyaWJ1dGUoICdhY2Nlc3NrZXknLCBhY2Nlc3NrZXkgKTsKCQl0b29sdGlw
ICs9ICcgWycgKyBhY2Nlc3NrZXkgKyAnXSc7Cgl9CglpZiAoIHRvb2x0aXAgKSB7
CgkJbGluay5zZXRBdHRyaWJ1dGUoICd0aXRsZScsIHRvb2x0aXAgKTsKCX0KCWlm
ICggYWNjZXNza2V5ICYmIHRvb2x0aXAgKSB7CgkJdXBkYXRlVG9vbHRpcEFjY2Vz
c0tleXMoIG5ldyBBcnJheSggbGluayApICk7Cgl9CgoJaWYgKCBuZXh0bm9kZSAm
JiBuZXh0bm9kZS5wYXJlbnROb2RlID09IG5vZGUgKSB7CgkJbm9kZS5pbnNlcnRC
ZWZvcmUoIGl0ZW0sIG5leHRub2RlICk7Cgl9IGVsc2UgewoJCW5vZGUuYXBwZW5k
Q2hpbGQoIGl0ZW0gKTsgIC8vIElFIGNvbXBhdGliaWxpdHkgKD8pCgl9CgoJcmV0
dXJuIGl0ZW07Cn0KCmZ1bmN0aW9uIGdldElubmVyVGV4dCggZWwgKSB7CglpZiAo
IHR5cGVvZiBlbCA9PSAnc3RyaW5nJyApIHsKCQlyZXR1cm4gZWw7Cgl9CglpZiAo
IHR5cGVvZiBlbCA9PSAndW5kZWZpbmVkJyApIHsKCQlyZXR1cm4gZWw7Cgl9Cglp
ZiAoIGVsLnRleHRDb250ZW50ICkgewoJCXJldHVybiBlbC50ZXh0Q29udGVudDsg
Ly8gbm90IG5lZWRlZCBidXQgaXQgaXMgZmFzdGVyCgl9CglpZiAoIGVsLmlubmVy
VGV4dCApIHsKCQlyZXR1cm4gZWwuaW5uZXJUZXh0OyAvLyBJRSBkb2Vzbid0IGhh
dmUgdGV4dENvbnRlbnQKCX0KCXZhciBzdHIgPSAnJzsKCgl2YXIgY3MgPSBlbC5j
aGlsZE5vZGVzOwoJdmFyIGwgPSBjcy5sZW5ndGg7Cglmb3IgKCB2YXIgaSA9IDA7
IGkgPCBsOyBpKysgKSB7CgkJc3dpdGNoICggY3NbaV0ubm9kZVR5cGUgKSB7CgkJ
CWNhc2UgMTogLy8gRUxFTUVOVF9OT0RFCgkJCQlzdHIgKz0gdHNfZ2V0SW5uZXJU
ZXh0KCBjc1tpXSApOwoJCQkJYnJlYWs7CgkJCWNhc2UgMzoJLy8gVEVYVF9OT0RF
CgkJCQlzdHIgKz0gY3NbaV0ubm9kZVZhbHVlOwoJCQkJYnJlYWs7CgkJfQoJfQoJ
cmV0dXJuIHN0cjsKfQoKLyogRHVtbXkgZm9yIGRlcHJlY2F0ZWQgZnVuY3Rpb24g
Ki8KZnVuY3Rpb24gYWtleXR0KCBkb0lkICkgewp9Cgp2YXIgY2hlY2tib3hlczsK
dmFyIGxhc3RDaGVja2JveDsKCmZ1bmN0aW9uIHNldHVwQ2hlY2tib3hTaGlmdENs
aWNrKCkgewoJY2hlY2tib3hlcyA9IFtdOwoJbGFzdENoZWNrYm94ID0gbnVsbDsK
CXZhciBpbnB1dHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSggJ2lu
cHV0JyApOwoJYWRkQ2hlY2tib3hDbGlja0hhbmRsZXJzKCBpbnB1dHMgKTsKfQoK
ZnVuY3Rpb24gYWRkQ2hlY2tib3hDbGlja0hhbmRsZXJzKCBpbnB1dHMsIHN0YXJ0
ICkgewoJaWYgKCAhc3RhcnQgKSB7CgkJc3RhcnQgPSAwOwoJfQoKCXZhciBmaW5p
c2ggPSBzdGFydCArIDI1MDsKCWlmICggZmluaXNoID4gaW5wdXRzLmxlbmd0aCAp
IHsKCQlmaW5pc2ggPSBpbnB1dHMubGVuZ3RoOwoJfQoKCWZvciAoIHZhciBpID0g
c3RhcnQ7IGkgPCBmaW5pc2g7IGkrKyApIHsKCQl2YXIgY2IgPSBpbnB1dHNbaV07
CgkJaWYgKCAhY2IudHlwZSB8fCBjYi50eXBlLnRvTG93ZXJDYXNlKCkgIT0gJ2No
ZWNrYm94JyB8fCAoICcgJyArIGNiLmNsYXNzTmFtZSArICcgJyApLmluZGV4T2Yo
ICcgbm9zaGlmdHNlbGVjdCAnICkgICE9IC0xICkgewoJCQljb250aW51ZTsKCQl9
CgkJdmFyIGVuZCA9IGNoZWNrYm94ZXMubGVuZ3RoOwoJCWNoZWNrYm94ZXNbZW5k
XSA9IGNiOwoJCWNiLmluZGV4ID0gZW5kOwoJCWNiLm9uY2xpY2sgPSBjaGVja2Jv
eENsaWNrSGFuZGxlcjsKCX0KCglpZiAoIGZpbmlzaCA8IGlucHV0cy5sZW5ndGgg
KSB7CgkJc2V0VGltZW91dCggZnVuY3Rpb24oKSB7CgkJCWFkZENoZWNrYm94Q2xp
Y2tIYW5kbGVycyggaW5wdXRzLCBmaW5pc2ggKTsKCQl9LCAyMDAgKTsKCX0KfQoK
ZnVuY3Rpb24gY2hlY2tib3hDbGlja0hhbmRsZXIoIGUgKSB7CglpZiAoIHR5cGVv
ZiBlID09ICd1bmRlZmluZWQnICkgewoJCWUgPSB3aW5kb3cuZXZlbnQ7Cgl9Cglp
ZiAoICFlLnNoaWZ0S2V5IHx8IGxhc3RDaGVja2JveCA9PT0gbnVsbCApIHsKCQls
YXN0Q2hlY2tib3ggPSB0aGlzLmluZGV4OwoJCXJldHVybiB0cnVlOwoJfQoJdmFy
IGVuZFN0YXRlID0gdGhpcy5jaGVja2VkOwoJdmFyIHN0YXJ0LCBmaW5pc2g7Cglp
ZiAoIHRoaXMuaW5kZXggPCBsYXN0Q2hlY2tib3ggKSB7CgkJc3RhcnQgPSB0aGlz
LmluZGV4ICsgMTsKCQlmaW5pc2ggPSBsYXN0Q2hlY2tib3g7Cgl9IGVsc2UgewoJ
CXN0YXJ0ID0gbGFzdENoZWNrYm94OwoJCWZpbmlzaCA9IHRoaXMuaW5kZXggLSAx
OwoJfQoJZm9yICggdmFyIGkgPSBzdGFydDsgaSA8PSBmaW5pc2g7ICsraSApIHsK
CQljaGVja2JveGVzW2ldLmNoZWNrZWQgPSBlbmRTdGF0ZTsKCQlpZiggaSA+IHN0
YXJ0ICYmIHR5cGVvZiBjaGVja2JveGVzW2ldLm9uY2hhbmdlID09ICdmdW5jdGlv
bicgKSB7CgkJCWNoZWNrYm94ZXNbaV0ub25jaGFuZ2UoKTsgLy8gZmlyZSB0cmln
Z2VycwoJCX0KCX0KCWxhc3RDaGVja2JveCA9IHRoaXMuaW5kZXg7CglyZXR1cm4g
dHJ1ZTsKfQoKCi8qCglXcml0dGVuIGJ5IEpvbmF0aGFuIFNub29rLCBodHRwOi8v
d3d3LnNub29rLmNhL2pvbmF0aGFuCglBZGQtb25zIGJ5IFJvYmVydCBOeW1hbiwg
aHR0cDovL3d3dy5yb2JlcnRueW1hbi5jb20KCUF1dGhvciBzYXlzICJUaGUgY3Jl
ZGl0IGNvbW1lbnQgaXMgYWxsIGl0IHRha2VzLCBubyBsaWNlbnNlLiBHbyBjcmF6
eSB3aXRoIGl0ITotKSIKCUZyb20gaHR0cDovL3d3dy5yb2JlcnRueW1hbi5jb20v
MjAwNS8xMS8wNy90aGUtdWx0aW1hdGUtZ2V0ZWxlbWVudHNieWNsYXNzbmFtZS8K
Ki8KZnVuY3Rpb24gZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSggb0VsbSwgc3RyVGFn
TmFtZSwgb0NsYXNzTmFtZXMgKSB7Cgl2YXIgYXJyUmV0dXJuRWxlbWVudHMgPSBu
ZXcgQXJyYXkoKTsKCWlmICggdHlwZW9mKCBvRWxtLmdldEVsZW1lbnRzQnlDbGFz
c05hbWUgKSA9PSAnZnVuY3Rpb24nICkgewoJCS8qIFVzZSBhIG5hdGl2ZSBpbXBs
ZW1lbnRhdGlvbiB3aGVyZSBwb3NzaWJsZSBGRjMsIFNhZjMuMiwgT3BlcmEgOS41
ICovCgkJdmFyIGFyck5hdGl2ZVJldHVybiA9IG9FbG0uZ2V0RWxlbWVudHNCeUNs
YXNzTmFtZSggb0NsYXNzTmFtZXMgKTsKCQlpZiAoIHN0clRhZ05hbWUgPT0gJyon
ICkgewoJCQlyZXR1cm4gYXJyTmF0aXZlUmV0dXJuOwoJCX0KCQlmb3IgKCB2YXIg
aCA9IDA7IGggPCBhcnJOYXRpdmVSZXR1cm4ubGVuZ3RoOyBoKysgKSB7CgkJCWlm
KCBhcnJOYXRpdmVSZXR1cm5baF0udGFnTmFtZS50b0xvd2VyQ2FzZSgpID09IHN0
clRhZ05hbWUudG9Mb3dlckNhc2UoKSApIHsKCQkJCWFyclJldHVybkVsZW1lbnRz
W2FyclJldHVybkVsZW1lbnRzLmxlbmd0aF0gPSBhcnJOYXRpdmVSZXR1cm5baF07
CgkJCX0KCQl9CgkJcmV0dXJuIGFyclJldHVybkVsZW1lbnRzOwoJfQoJdmFyIGFy
ckVsZW1lbnRzID0gKCBzdHJUYWdOYW1lID09ICcqJyAmJiBvRWxtLmFsbCApID8g
b0VsbS5hbGwgOiBvRWxtLmdldEVsZW1lbnRzQnlUYWdOYW1lKCBzdHJUYWdOYW1l
ICk7Cgl2YXIgYXJyUmVnRXhwQ2xhc3NOYW1lcyA9IG5ldyBBcnJheSgpOwoJaWYo
IHR5cGVvZiBvQ2xhc3NOYW1lcyA9PSAnb2JqZWN0JyApIHsKCQlmb3IoIHZhciBp
ID0gMDsgaSA8IG9DbGFzc05hbWVzLmxlbmd0aDsgaSsrICkgewoJCQlhcnJSZWdF
eHBDbGFzc05hbWVzW2FyclJlZ0V4cENsYXNzTmFtZXMubGVuZ3RoXSA9CgkJCQlu
ZXcgUmVnRXhwKCIoXnxcXHMpIiArIG9DbGFzc05hbWVzW2ldLnJlcGxhY2UoL1wt
L2csICJcXC0iKSArICIoXFxzfCQpIik7CgkJfQoJfSBlbHNlIHsKCQlhcnJSZWdF
eHBDbGFzc05hbWVzW2FyclJlZ0V4cENsYXNzTmFtZXMubGVuZ3RoXSA9CgkJCW5l
dyBSZWdFeHAoIihefFxccykiICsgb0NsYXNzTmFtZXMucmVwbGFjZSgvXC0vZywg
IlxcLSIpICsgIihcXHN8JCkiKTsKCX0KCXZhciBvRWxlbWVudDsKCXZhciBiTWF0
Y2hlc0FsbDsKCWZvciggdmFyIGogPSAwOyBqIDwgYXJyRWxlbWVudHMubGVuZ3Ro
OyBqKysgKSB7CgkJb0VsZW1lbnQgPSBhcnJFbGVtZW50c1tqXTsKCQliTWF0Y2hl
c0FsbCA9IHRydWU7CgkJZm9yKCB2YXIgayA9IDA7IGsgPCBhcnJSZWdFeHBDbGFz
c05hbWVzLmxlbmd0aDsgaysrICkgewoJCQlpZiggIWFyclJlZ0V4cENsYXNzTmFt
ZXNba10udGVzdCggb0VsZW1lbnQuY2xhc3NOYW1lICkgKSB7CgkJCQliTWF0Y2hl
c0FsbCA9IGZhbHNlOwoJCQkJYnJlYWs7CgkJCX0KCQl9CgkJaWYoIGJNYXRjaGVz
QWxsICkgewoJCQlhcnJSZXR1cm5FbGVtZW50c1thcnJSZXR1cm5FbGVtZW50cy5s
ZW5ndGhdID0gb0VsZW1lbnQ7CgkJfQoJfQoJcmV0dXJuICggYXJyUmV0dXJuRWxl
bWVudHMgKTsKfQoKZnVuY3Rpb24gcmVkaXJlY3RUb0ZyYWdtZW50KCBmcmFnbWVu
dCApIHsKCXZhciBtYXRjaCA9IG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL0Fw
cGxlV2ViS2l0XC8oXGQrKS8pOwoJaWYgKCBtYXRjaCApIHsKCQl2YXIgd2ViS2l0
VmVyc2lvbiA9IHBhcnNlSW50KCBtYXRjaFsxXSApOwoJCWlmICggd2ViS2l0VmVy
c2lvbiA8IDQyMCApIHsKCQkJLy8gUmVsZWFzZWQgU2FmYXJpIHcvIFdlYktpdCA0
MTguOS4xIG1lc3NlcyB1cCBob3JyaWJseQoJCQkvLyBOaWdodGxpZXMgb2YgNDIw
KyBhcmUgb2sKCQkJcmV0dXJuOwoJCX0KCX0KCWlmICggaXNfZ2Vja28gKSB7CgkJ
Ly8gTW96aWxsYSBuZWVkcyB0byB3YWl0IHVudGlsIGFmdGVyIGxvYWQsIG90aGVy
d2lzZSB0aGUgd2luZG93IGRvZXNuJ3Qgc2Nyb2xsCgkJYWRkT25sb2FkSG9vayhm
dW5jdGlvbigpIHsKCQkJaWYgKCB3aW5kb3cubG9jYXRpb24uaGFzaCA9PSAnJyAp
IHsKCQkJCXdpbmRvdy5sb2NhdGlvbi5oYXNoID0gZnJhZ21lbnQ7CgkJCX0KCQl9
KTsKCX0gZWxzZSB7CgkJaWYgKCB3aW5kb3cubG9jYXRpb24uaGFzaCA9PSAnJyAp
IHsKCQkJd2luZG93LmxvY2F0aW9uLmhhc2ggPSBmcmFnbWVudDsKCQl9Cgl9Cn0K
Ci8qCiAqIFRhYmxlIHNvcnRpbmcgc2NyaXB0IGJhc2VkIG9uIG9uZSAoYykgMTk5
Ny0yMDA2IFN0dWFydCBMYW5ncmlkZ2UgYW5kIEpvb3N0CiAqIGRlIFZhbGs6CiAq
IGh0dHA6Ly93d3cuam9vc3RkZXZhbGsubmwvY29kZS9zb3J0YWJsZS10YWJsZS8K
ICogaHR0cDovL3d3dy5rcnlvZ2VuaXgub3JnL2NvZGUvYnJvd3Nlci9zb3J0dGFi
bGUvCiAqCiAqIEB0b2RvIGRvbid0IGJyZWFrIG9uIGNvbHNwYW5zL3Jvd3NwYW5z
IChidWcgODAyOCkKICogQHRvZG8gbGFuZ3VhZ2Utc3BlY2lmaWMgZGlnaXQgZ3Jv
dXBpbmcvZGVjaW1hbHMgKGJ1ZyA4MDYzKQogKiBAdG9kbyBzdXBwb3J0IGFsbCBh
Y2NlcHRlZCBkYXRlIGZvcm1hdHMgKGJ1ZyA4MjI2KQogKi8KCnZhciB0c19pbWFn
ZV9wYXRoID0gc3R5bGVwYXRoICsgJy9jb21tb24vaW1hZ2VzLyc7CnZhciB0c19p
bWFnZV91cCA9ICdzb3J0X3VwLmdpZic7CnZhciB0c19pbWFnZV9kb3duID0gJ3Nv
cnRfZG93bi5naWYnOwp2YXIgdHNfaW1hZ2Vfbm9uZSA9ICdzb3J0X25vbmUuZ2lm
JzsKdmFyIHRzX2V1cm9wZWFuZGF0ZSA9IHdnQ29udGVudExhbmd1YWdlICE9ICdl
bic7IC8vIFRoZSBub24tQW1lcmljYW4taW5jbGluZWQgY2FuIGNoYW5nZSB0byAi
dHJ1ZSIKdmFyIHRzX2FsdGVybmF0ZV9yb3dfY29sb3JzID0gZmFsc2U7CnZhciB0
c19udW1iZXJfdHJhbnNmb3JtX3RhYmxlID0gbnVsbDsKdmFyIHRzX251bWJlcl9y
ZWdleCA9IG51bGw7CgpmdW5jdGlvbiBzb3J0YWJsZXNfaW5pdCgpIHsKCXZhciBp
ZG51bSA9IDA7CgkvLyBGaW5kIGFsbCB0YWJsZXMgd2l0aCBjbGFzcyBzb3J0YWJs
ZSBhbmQgbWFrZSB0aGVtIHNvcnRhYmxlCgl2YXIgdGFibGVzID0gZ2V0RWxlbWVu
dHNCeUNsYXNzTmFtZSggZG9jdW1lbnQsICd0YWJsZScsICdzb3J0YWJsZScgKTsK
CWZvciAoIHZhciB0aSA9IDA7IHRpIDwgdGFibGVzLmxlbmd0aCA7IHRpKysgKSB7
CgkJaWYgKCAhdGFibGVzW3RpXS5pZCApIHsKCQkJdGFibGVzW3RpXS5zZXRBdHRy
aWJ1dGUoICdpZCcsICdzb3J0YWJsZV90YWJsZV9pZF8nICsgaWRudW0gKTsKCQkJ
KytpZG51bTsKCQl9CgkJdHNfbWFrZVNvcnRhYmxlKCB0YWJsZXNbdGldICk7Cgl9
Cn0KCmZ1bmN0aW9uIHRzX21ha2VTb3J0YWJsZSggdGFibGUgKSB7Cgl2YXIgZmly
c3RSb3c7CglpZiAoIHRhYmxlLnJvd3MgJiYgdGFibGUucm93cy5sZW5ndGggPiAw
ICkgewoJCWlmICggdGFibGUudEhlYWQgJiYgdGFibGUudEhlYWQucm93cy5sZW5n
dGggPiAwICkgewoJCQlmaXJzdFJvdyA9IHRhYmxlLnRIZWFkLnJvd3NbdGFibGUu
dEhlYWQucm93cy5sZW5ndGgtMV07CgkJfSBlbHNlIHsKCQkJZmlyc3RSb3cgPSB0
YWJsZS5yb3dzWzBdOwoJCX0KCX0KCWlmICggIWZpcnN0Um93ICkgewoJCXJldHVy
bjsKCX0KCgkvLyBXZSBoYXZlIGEgZmlyc3Qgcm93OiBhc3N1bWUgaXQncyB0aGUg
aGVhZGVyLCBhbmQgbWFrZSBpdHMgY29udGVudHMgY2xpY2thYmxlIGxpbmtzCglm
b3IgKCB2YXIgaSA9IDA7IGkgPCBmaXJzdFJvdy5jZWxscy5sZW5ndGg7IGkrKyAp
IHsKCQl2YXIgY2VsbCA9IGZpcnN0Um93LmNlbGxzW2ldOwoJCWlmICggKCcgJyAr
IGNlbGwuY2xhc3NOYW1lICsgJyAnKS5pbmRleE9mKCcgdW5zb3J0YWJsZSAnKSA9
PSAtMSApIHsKCQkJY2VsbC5pbm5lckhUTUwgKz0gJzxhIGhyZWY9IiMiIGNsYXNz
PSJzb3J0aGVhZGVyIiAnCgkJCQkrICdvbmNsaWNrPSJ0c19yZXNvcnRUYWJsZSh0
aGlzKTtyZXR1cm4gZmFsc2U7Ij4nCgkJCQkrICc8c3BhbiBjbGFzcz0ic29ydGFy
cm93Ij4nCgkJCQkrICc8aW1nIHNyYz0iJwoJCQkJKyB0c19pbWFnZV9wYXRoCgkJ
CQkrIHRzX2ltYWdlX25vbmUKCQkJCSsgJyIgYWx0PSImZGFycjsiLz48L3NwYW4+
PC9hPic7CgkJfQoJfQoJaWYgKCB0c19hbHRlcm5hdGVfcm93X2NvbG9ycyApIHsK
CQl0c19hbHRlcm5hdGUoIHRhYmxlICk7Cgl9Cn0KCmZ1bmN0aW9uIHRzX2dldElu
bmVyVGV4dCggZWwgKSB7CglyZXR1cm4gZ2V0SW5uZXJUZXh0KCBlbCApOwp9Cgpm
dW5jdGlvbiB0c19yZXNvcnRUYWJsZSggbG5rICkgewoJLy8gZ2V0IHRoZSBzcGFu
Cgl2YXIgc3BhbiA9IGxuay5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc3BhbicpWzBd
OwoKCXZhciB0ZCA9IGxuay5wYXJlbnROb2RlOwoJdmFyIHRyID0gdGQucGFyZW50
Tm9kZTsKCXZhciBjb2x1bW4gPSB0ZC5jZWxsSW5kZXg7CgoJdmFyIHRhYmxlID0g
dHIucGFyZW50Tm9kZTsKCXdoaWxlICggdGFibGUgJiYgISggdGFibGUudGFnTmFt
ZSAmJiB0YWJsZS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT0gJ3RhYmxlJyApICkg
ewoJCXRhYmxlID0gdGFibGUucGFyZW50Tm9kZTsKCX0KCWlmICggIXRhYmxlICkg
ewoJCXJldHVybjsKCX0KCglpZiAoIHRhYmxlLnJvd3MubGVuZ3RoIDw9IDEgKSB7
CgkJcmV0dXJuOwoJfQoKCS8vIEdlbmVyYXRlIHRoZSBudW1iZXIgdHJhbnNmb3Jt
IHRhYmxlIGlmIGl0J3Mgbm90IGRvbmUgYWxyZWFkeQoJaWYgKCB0c19udW1iZXJf
dHJhbnNmb3JtX3RhYmxlID09PSBudWxsICkgewoJCXRzX2luaXRUcmFuc2Zvcm1U
YWJsZSgpOwoJfQoKCS8vIFdvcmsgb3V0IGEgdHlwZSBmb3IgdGhlIGNvbHVtbgoJ
Ly8gU2tpcCB0aGUgZmlyc3Qgcm93IGlmIHRoYXQncyB3aGVyZSB0aGUgaGVhZGlu
Z3MgYXJlCgl2YXIgcm93U3RhcnQgPSAoIHRhYmxlLnRIZWFkICYmIHRhYmxlLnRI
ZWFkLnJvd3MubGVuZ3RoID4gMCA/IDAgOiAxICk7CgoJdmFyIGl0bSA9ICcnOwoJ
Zm9yICggdmFyIGkgPSByb3dTdGFydDsgaSA8IHRhYmxlLnJvd3MubGVuZ3RoOyBp
KysgKSB7CgkJaWYgKCB0YWJsZS5yb3dzW2ldLmNlbGxzLmxlbmd0aCA+IGNvbHVt
biApIHsKCQkJaXRtID0gdHNfZ2V0SW5uZXJUZXh0KHRhYmxlLnJvd3NbaV0uY2Vs
bHNbY29sdW1uXSk7CgkJCWl0bSA9IGl0bS5yZXBsYWNlKC9eW1xzXHhhMF0rLywg
JycpLnJlcGxhY2UoL1tcc1x4YTBdKyQvLCAnJyk7CgkJCWlmICggaXRtICE9ICcn
ICkgewoJCQkJYnJlYWs7CgkJCX0KCQl9Cgl9CgoJLy8gVE9ETzogYnVnIDgyMjYs
IGxvY2FsaXNlZCBkYXRlIGZvcm1hdHMKCXZhciBzb3J0Zm4gPSB0c19zb3J0X2dl
bmVyaWM7Cgl2YXIgcHJlcHJvY2Vzc29yID0gdHNfdG9Mb3dlckNhc2U7CglpZiAo
IC9eXGRcZFtcLy4gLV1bYS16QS1aXXszfVtcLy4gLV1cZFxkXGRcZCQvLnRlc3Qo
IGl0bSApICkgewoJCXByZXByb2Nlc3NvciA9IHRzX2RhdGVUb1NvcnRLZXk7Cgl9
IGVsc2UgaWYgKCAvXlxkXGRbXC8uLV1cZFxkW1wvLi1dXGRcZFxkXGQkLy50ZXN0
KCBpdG0gKSApIHsKCQlwcmVwcm9jZXNzb3IgPSB0c19kYXRlVG9Tb3J0S2V5OwoJ
fSBlbHNlIGlmICggL15cZFxkW1wvLi1dXGRcZFtcLy4tXVxkXGQkLy50ZXN0KCBp
dG0gKSApIHsKCQlwcmVwcm9jZXNzb3IgPSB0c19kYXRlVG9Tb3J0S2V5OwoJCS8v
IChtaW51cyBzaWduKShbcG91bmQgZG9sbGFyIGV1cm8geWVuIGN1cnJlbmN5XXxj
ZW50cykKCX0gZWxzZSBpZiAoIC8oXihbLVx1MjIxMl0gKik/W1x1MDBhMyRcdTIw
YWNcdTAwYTRcdTAwYTVdfFx1MDBhMiQpLy50ZXN0KCBpdG0gKSApIHsKCQlwcmVw
cm9jZXNzb3IgPSB0c19jdXJyZW5jeVRvU29ydEtleTsKCX0gZWxzZSBpZiAoIHRz
X251bWJlcl9yZWdleC50ZXN0KCBpdG0gKSApIHsKCQlwcmVwcm9jZXNzb3IgPSB0
c19wYXJzZUZsb2F0OwoJfQoKCXZhciByZXZlcnNlID0gKCBzcGFuLmdldEF0dHJp
YnV0ZSggJ3NvcnRkaXInICkgPT0gJ2Rvd24nICk7CgoJdmFyIG5ld1Jvd3MgPSBu
ZXcgQXJyYXkoKTsKCXZhciBzdGF0aWNSb3dzID0gbmV3IEFycmF5KCk7Cglmb3Ig
KCB2YXIgaiA9IHJvd1N0YXJ0OyBqIDwgdGFibGUucm93cy5sZW5ndGg7IGorKyAp
IHsKCQl2YXIgcm93ID0gdGFibGUucm93c1tqXTsKCQlpZiggKCcgJyArIHJvdy5j
bGFzc05hbWUgKyAnICcpLmluZGV4T2YoJyB1bnNvcnRhYmxlICcpIDwgMCApIHsK
CQkJdmFyIGtleVRleHQgPSB0c19nZXRJbm5lclRleHQoIHJvdy5jZWxsc1tjb2x1
bW5dICk7CgkJCWlmKCBrZXlUZXh0ID09PSB1bmRlZmluZWQgKSB7CgkJCQlrZXlU
ZXh0ID0gJyc7IAoJCQl9CgkJCXZhciBvbGRJbmRleCA9ICggcmV2ZXJzZSA/IC1q
IDogaiApOwoJCQl2YXIgcHJlcHJvY2Vzc2VkID0gcHJlcHJvY2Vzc29yKCBrZXlU
ZXh0LnJlcGxhY2UoL15bXHNceGEwXSsvLCAnJykucmVwbGFjZSgvW1xzXHhhMF0r
JC8sICcnKSApOwoKCQkJbmV3Um93c1tuZXdSb3dzLmxlbmd0aF0gPSBuZXcgQXJy
YXkoIHJvdywgcHJlcHJvY2Vzc2VkLCBvbGRJbmRleCApOwoJCX0gZWxzZSB7CgkJ
CXN0YXRpY1Jvd3Nbc3RhdGljUm93cy5sZW5ndGhdID0gbmV3IEFycmF5KCByb3cs
IGZhbHNlLCBqLXJvd1N0YXJ0ICk7CgkJfQoJfQoKCW5ld1Jvd3Muc29ydCggc29y
dGZuICk7CgoJdmFyIGFycm93SFRNTDsKCWlmICggcmV2ZXJzZSApIHsKCQlhcnJv
d0hUTUwgPSAnPGltZyBzcmM9IicgKyB0c19pbWFnZV9wYXRoICsgdHNfaW1hZ2Vf
ZG93biArICciIGFsdD0iJmRhcnI7Ii8+JzsKCQluZXdSb3dzLnJldmVyc2UoKTsK
CQlzcGFuLnNldEF0dHJpYnV0ZSggJ3NvcnRkaXInLCAndXAnICk7Cgl9IGVsc2Ug
ewoJCWFycm93SFRNTCA9ICc8aW1nIHNyYz0iJyArIHRzX2ltYWdlX3BhdGggKyB0
c19pbWFnZV91cCArICciIGFsdD0iJnVhcnI7Ii8+JzsKCQlzcGFuLnNldEF0dHJp
YnV0ZSggJ3NvcnRkaXInLCAnZG93bicgKTsKCX0KCglmb3IgKCB2YXIgaSA9IDA7
IGkgPCBzdGF0aWNSb3dzLmxlbmd0aDsgaSsrICkgewoJCXZhciByb3cgPSBzdGF0
aWNSb3dzW2ldOwoJCW5ld1Jvd3Muc3BsaWNlKCByb3dbMl0sIDAsIHJvdyApOwoJ
fQoKCS8vIFdlIGFwcGVuZENoaWxkIHJvd3MgdGhhdCBhbHJlYWR5IGV4aXN0IHRv
IHRoZSB0Ym9keSwgc28gaXQgbW92ZXMgdGhlbSByYXRoZXIgdGhhbiBjcmVhdGlu
ZyBuZXcgb25lcwoJLy8gZG9uJ3QgZG8gc29ydGJvdHRvbSByb3dzCglmb3IgKCB2
YXIgaSA9IDA7IGkgPCBuZXdSb3dzLmxlbmd0aDsgaSsrICkgewoJCWlmICggKCAn
ICcgKyBuZXdSb3dzW2ldWzBdLmNsYXNzTmFtZSArICcgJykuaW5kZXhPZignIHNv
cnRib3R0b20gJykgPT0gLTEgKSB7CgkJCXRhYmxlLnRCb2RpZXNbMF0uYXBwZW5k
Q2hpbGQoIG5ld1Jvd3NbaV1bMF0gKTsKCQl9Cgl9CgkvLyBkbyBzb3J0Ym90dG9t
IHJvd3Mgb25seQoJZm9yICggdmFyIGkgPSAwOyBpIDwgbmV3Um93cy5sZW5ndGg7
IGkrKyApIHsKCQlpZiAoICggJyAnICsgbmV3Um93c1tpXVswXS5jbGFzc05hbWUg
KyAnICcpLmluZGV4T2YoJyBzb3J0Ym90dG9tICcpICE9IC0xICkgewoJCQl0YWJs
ZS50Qm9kaWVzWzBdLmFwcGVuZENoaWxkKCBuZXdSb3dzW2ldWzBdICk7CgkJfQoJ
fQoKCS8vIERlbGV0ZSBhbnkgb3RoZXIgYXJyb3dzIHRoZXJlIG1heSBiZSBzaG93
aW5nCgl2YXIgc3BhbnMgPSBnZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCB0ciwgJ3Nw
YW4nLCAnc29ydGFycm93JyApOwoJZm9yICggdmFyIGkgPSAwOyBpIDwgc3BhbnMu
bGVuZ3RoOyBpKysgKSB7CgkJc3BhbnNbaV0uaW5uZXJIVE1MID0gJzxpbWcgc3Jj
PSInICsgdHNfaW1hZ2VfcGF0aCArIHRzX2ltYWdlX25vbmUgKyAnIiBhbHQ9IiZk
YXJyOyIvPic7Cgl9CglzcGFuLmlubmVySFRNTCA9IGFycm93SFRNTDsKCglpZiAo
IHRzX2FsdGVybmF0ZV9yb3dfY29sb3JzICkgewoJCXRzX2FsdGVybmF0ZSggdGFi
bGUgKTsKCX0KfQoKZnVuY3Rpb24gdHNfaW5pdFRyYW5zZm9ybVRhYmxlKCkgewoJ
aWYgKCB0eXBlb2Ygd2dTZXBhcmF0b3JUcmFuc2Zvcm1UYWJsZSA9PSAndW5kZWZp
bmVkJwoJCQl8fCAoIHdnU2VwYXJhdG9yVHJhbnNmb3JtVGFibGVbMF0gPT0gJycg
JiYgd2dEaWdpdFRyYW5zZm9ybVRhYmxlWzJdID09ICcnICkgKQoJewoJCWRpZ2l0
Q2xhc3MgPSAiWzAtOSwuXSI7CgkJdHNfbnVtYmVyX3RyYW5zZm9ybV90YWJsZSA9
IGZhbHNlOwoJfSBlbHNlIHsKCQl0c19udW1iZXJfdHJhbnNmb3JtX3RhYmxlID0g
e307CgkJLy8gVW5wYWNrIHRoZSB0cmFuc2Zvcm0gdGFibGUKCQkvLyBTZXBhcmF0
b3JzCgkJYXNjaWkgPSB3Z1NlcGFyYXRvclRyYW5zZm9ybVRhYmxlWzBdLnNwbGl0
KCJcdCIpOwoJCWxvY2FsaXNlZCA9IHdnU2VwYXJhdG9yVHJhbnNmb3JtVGFibGVb
MV0uc3BsaXQoIlx0Iik7CgkJZm9yICggdmFyIGkgPSAwOyBpIDwgYXNjaWkubGVu
Z3RoOyBpKysgKSB7CgkJCXRzX251bWJlcl90cmFuc2Zvcm1fdGFibGVbbG9jYWxp
c2VkW2ldXSA9IGFzY2lpW2ldOwoJCX0KCQkvLyBEaWdpdHMKCQlhc2NpaSA9IHdn
RGlnaXRUcmFuc2Zvcm1UYWJsZVswXS5zcGxpdCgiXHQiKTsKCQlsb2NhbGlzZWQg
PSB3Z0RpZ2l0VHJhbnNmb3JtVGFibGVbMV0uc3BsaXQoIlx0Iik7CgkJZm9yICgg
dmFyIGkgPSAwOyBpIDwgYXNjaWkubGVuZ3RoOyBpKysgKSB7CgkJCXRzX251bWJl
cl90cmFuc2Zvcm1fdGFibGVbbG9jYWxpc2VkW2ldXSA9IGFzY2lpW2ldOwoJCX0K
CgkJLy8gQ29uc3RydWN0IHJlZ2V4IGZvciBudW1iZXIgaWRlbnRpZmljYXRpb24K
CQlkaWdpdHMgPSBbJzAnLCAnMScsICcyJywgJzMnLCAnNCcsICc1JywgJzYnLCAn
NycsICc4JywgJzknLCAnLCcsICdcXC4nXTsKCQltYXhEaWdpdExlbmd0aCA9IDE7
CgkJZm9yICggdmFyIGRpZ2l0IGluIHRzX251bWJlcl90cmFuc2Zvcm1fdGFibGUg
KSB7CgkJCS8vIEVzY2FwZSByZWdleCBtZXRhY2hhcmFjdGVycwoJCQlkaWdpdHMu
cHVzaCgKCQkJCWRpZ2l0LnJlcGxhY2UoIC9bXFxcXCRcKlwrXD9cLlwoXClcfFx7
XH1cW1xdXC1dLywKCQkJCQlmdW5jdGlvbiggcyApIHsgcmV0dXJuICdcXCcgKyBz
OyB9ICkKCQkJKTsKCQkJaWYgKCBkaWdpdC5sZW5ndGggPiBtYXhEaWdpdExlbmd0
aCApIHsKCQkJCW1heERpZ2l0TGVuZ3RoID0gZGlnaXQubGVuZ3RoOwoJCQl9CgkJ
fQoJCWlmICggbWF4RGlnaXRMZW5ndGggPiAxICkgewoJCQlkaWdpdENsYXNzID0g
J1snICsgZGlnaXRzLmpvaW4oICcnLCBkaWdpdHMgKSArICddJzsKCQl9IGVsc2Ug
ewoJCQlkaWdpdENsYXNzID0gJygnICsgZGlnaXRzLmpvaW4oICd8JywgZGlnaXRz
ICkgKyAnKSc7CgkJfQoJfQoKCS8vIFdlIGFsbG93IGEgdHJhaWxpbmcgcGVyY2Vu
dCBzaWduLCB3aGljaCB3ZSBqdXN0IHN0cmlwLiAgVGhpcyB3b3JrcyBmaW5lCgkv
LyBpZiBwZXJjZW50cyBhbmQgcmVndWxhciBudW1iZXJzIGFyZW4ndCBiZWluZyBt
aXhlZC4KCXRzX251bWJlcl9yZWdleCA9IG5ldyBSZWdFeHAoCgkJIl4oIiArCgkJ
CSJbLStcdTIyMTJdP1swLTldWzAtOSxdKihcXC5bMC05LF0qKT8oRVstK1x1MjIx
Ml0/WzAtOV1bMC05LF0qKT8iICsgLy8gRm9ydHJhbi1zdHlsZSBzY2llbnRpZmlj
CgkJCSJ8IiArCgkJCSJbLStcdTIyMTJdPyIgKyBkaWdpdENsYXNzICsgIislPyIg
KyAvLyBHZW5lcmljIGxvY2FsaXNlZAoJCSIpJCIsICJpIgoJKTsKfQoKZnVuY3Rp
b24gdHNfdG9Mb3dlckNhc2UoIHMgKSB7CglyZXR1cm4gcy50b0xvd2VyQ2FzZSgp
Owp9CgpmdW5jdGlvbiB0c19kYXRlVG9Tb3J0S2V5KCBkYXRlICkgewoJLy8geTJr
IG5vdGVzOiB0d28gZGlnaXQgeWVhcnMgbGVzcyB0aGFuIDUwIGFyZSB0cmVhdGVk
IGFzIDIwWFgsIGdyZWF0ZXIgdGhhbiA1MCBhcmUgdHJlYXRlZCBhcyAxOVhYCglp
ZiAoIGRhdGUubGVuZ3RoID09IDExICkgewoJCXN3aXRjaCAoIGRhdGUuc3Vic3Ry
KCAzLCAzICkudG9Mb3dlckNhc2UoKSApIHsKCQkJY2FzZSAnamFuJzoKCQkJCXZh
ciBtb250aCA9ICcwMSc7CgkJCQlicmVhazsKCQkJY2FzZSAnZmViJzoKCQkJCXZh
ciBtb250aCA9ICcwMic7CgkJCQlicmVhazsKCQkJY2FzZSAnbWFyJzoKCQkJCXZh
ciBtb250aCA9ICcwMyc7CgkJCQlicmVhazsKCQkJY2FzZSAnYXByJzoKCQkJCXZh
ciBtb250aCA9ICcwNCc7CgkJCQlicmVhazsKCQkJY2FzZSAnbWF5JzoKCQkJCXZh
ciBtb250aCA9ICcwNSc7CgkJCQlicmVhazsKCQkJY2FzZSAnanVuJzoKCQkJCXZh
ciBtb250aCA9ICcwNic7CgkJCQlicmVhazsKCQkJY2FzZSAnanVsJzoKCQkJCXZh
ciBtb250aCA9ICcwNyc7CgkJCQlicmVhazsKCQkJY2FzZSAnYXVnJzoKCQkJCXZh
ciBtb250aCA9ICcwOCc7CgkJCQlicmVhazsKCQkJY2FzZSAnc2VwJzoKCQkJCXZh
ciBtb250aCA9ICcwOSc7CgkJCQlicmVhazsKCQkJY2FzZSAnb2N0JzoKCQkJCXZh
ciBtb250aCA9ICcxMCc7CgkJCQlicmVhazsKCQkJY2FzZSAnbm92JzoKCQkJCXZh
ciBtb250aCA9ICcxMSc7CgkJCQlicmVhazsKCQkJY2FzZSAnZGVjJzoKCQkJCXZh
ciBtb250aCA9ICcxMic7CgkJCQlicmVhazsKCQkJLy8gZGVmYXVsdDogdmFyIG1v
bnRoID0gJzAwJzsKCQl9CgkJcmV0dXJuIGRhdGUuc3Vic3RyKCA3LCA0ICkgKyBt
b250aCArIGRhdGUuc3Vic3RyKCAwLCAyICk7Cgl9IGVsc2UgaWYgKCBkYXRlLmxl
bmd0aCA9PSAxMCApIHsKCQlpZiAoIHRzX2V1cm9wZWFuZGF0ZSA9PSBmYWxzZSAp
IHsKCQkJcmV0dXJuIGRhdGUuc3Vic3RyKCA2LCA0ICkgKyBkYXRlLnN1YnN0cigg
MCwgMiApICsgZGF0ZS5zdWJzdHIoIDMsIDIgKTsKCQl9IGVsc2UgewoJCQlyZXR1
cm4gZGF0ZS5zdWJzdHIoIDYsIDQgKSArIGRhdGUuc3Vic3RyKCAzLCAyICkgKyBk
YXRlLnN1YnN0ciggMCwgMiApOwoJCX0KCX0gZWxzZSBpZiAoIGRhdGUubGVuZ3Ro
ID09IDggKSB7CgkJeXIgPSBkYXRlLnN1YnN0ciggNiwgMiApOwoJCWlmICggcGFy
c2VJbnQoIHlyICkgPCA1MCApIHsKCQkJeXIgPSAnMjAnICsgeXI7CgkJfSBlbHNl
IHsKCQkJeXIgPSAnMTknICsgeXI7CgkJfQoJCWlmICggdHNfZXVyb3BlYW5kYXRl
ID09IHRydWUgKSB7CgkJCXJldHVybiB5ciArIGRhdGUuc3Vic3RyKCAzLCAyICkg
KyBkYXRlLnN1YnN0ciggMCwgMiApOwoJCX0gZWxzZSB7CgkJCXJldHVybiB5ciAr
IGRhdGUuc3Vic3RyKCAwLCAyICkgKyBkYXRlLnN1YnN0ciggMywgMiApOwoJCX0K
CX0KCXJldHVybiAnMDAwMDAwMDAnOwp9CgpmdW5jdGlvbiB0c19wYXJzZUZsb2F0
KCBzICkgewoJaWYgKCAhcyApIHsKCQlyZXR1cm4gMDsKCX0KCWlmICggdHNfbnVt
YmVyX3RyYW5zZm9ybV90YWJsZSAhPSBmYWxzZSApIHsKCQl2YXIgbmV3TnVtID0g
JycsIGM7CgoJCWZvciAoIHZhciBwID0gMDsgcCA8IHMubGVuZ3RoOyBwKysgKSB7
CgkJCWMgPSBzLmNoYXJBdCggcCApOwoJCQlpZiAoIGMgaW4gdHNfbnVtYmVyX3Ry
YW5zZm9ybV90YWJsZSApIHsKCQkJCW5ld051bSArPSB0c19udW1iZXJfdHJhbnNm
b3JtX3RhYmxlW2NdOwoJCQl9IGVsc2UgewoJCQkJbmV3TnVtICs9IGM7CgkJCX0K
CQl9CgkJcyA9IG5ld051bTsKCX0KCW51bSA9IHBhcnNlRmxvYXQoIHMucmVwbGFj
ZSgvWywgXS9nLCAnJykucmVwbGFjZSgiXHUyMjEyIiwgJy0nKSApOwoJcmV0dXJu
ICggaXNOYU4oIG51bSApID8gLUluZmluaXR5IDogbnVtICk7Cn0KCmZ1bmN0aW9u
IHRzX2N1cnJlbmN5VG9Tb3J0S2V5KCBzICkgewoJcmV0dXJuIHRzX3BhcnNlRmxv
YXQocy5yZXBsYWNlKC9bXi1cdTIyMTIwLTkuLF0vZywnJykpOwp9CgpmdW5jdGlv
biB0c19zb3J0X2dlbmVyaWMoIGEsIGIgKSB7CglyZXR1cm4gYVsxXSA8IGJbMV0g
PyAtMSA6IGFbMV0gPiBiWzFdID8gMSA6IGFbMl0gLSBiWzJdOwp9CgpmdW5jdGlv
biB0c19hbHRlcm5hdGUoIHRhYmxlICkgewoJLy8gVGFrZSBvYmplY3QgdGFibGUg
YW5kIGdldCBhbGwgaXQncyB0Ym9kaWVzLgoJdmFyIHRhYmxlQm9kaWVzID0gdGFi
bGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoICd0Ym9keScgKTsKCS8vIExvb3AgdGhy
b3VnaCB0aGVzZSB0Ym9kaWVzCglmb3IgKCB2YXIgaSA9IDA7IGkgPCB0YWJsZUJv
ZGllcy5sZW5ndGg7IGkrKyApIHsKCQkvLyBUYWtlIHRoZSB0Ym9keSwgYW5kIGdl
dCBhbGwgaXQncyByb3dzCgkJdmFyIHRhYmxlUm93cyA9IHRhYmxlQm9kaWVzW2ld
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCAndHInICk7CgkJLy8gTG9vcCB0aHJvdWdo
IHRoZXNlIHJvd3MKCQkvLyBTdGFydCBhdCAxIGJlY2F1c2Ugd2Ugd2FudCB0byBs
ZWF2ZSB0aGUgaGVhZGluZyByb3cgdW50b3VjaGVkCgkJZm9yICggdmFyIGogPSAw
OyBqIDwgdGFibGVSb3dzLmxlbmd0aDsgaisrICkgewoJCQkvLyBDaGVjayBpZiBq
IGlzIGV2ZW4sIGFuZCBhcHBseSBjbGFzc2VzIGZvciBib3RoIHBvc3NpYmxlIHJl
c3VsdHMKCQkJdmFyIG9sZENsYXNzZXMgPSB0YWJsZVJvd3Nbal0uY2xhc3NOYW1l
LnNwbGl0KCcgJyk7CgkJCXZhciBuZXdDbGFzc05hbWUgPSAnJzsKCQkJZm9yICgg
dmFyIGsgPSAwOyBrIDwgb2xkQ2xhc3Nlcy5sZW5ndGg7IGsrKyApIHsKCQkJCWlm
ICggb2xkQ2xhc3Nlc1trXSAhPSAnJyAmJiBvbGRDbGFzc2VzW2tdICE9ICdldmVu
JyAmJiBvbGRDbGFzc2VzW2tdICE9ICdvZGQnICkgewoJCQkJCW5ld0NsYXNzTmFt
ZSArPSBvbGRDbGFzc2VzW2tdICsgJyAnOwoJCQkJfQoJCQl9CgkJCXRhYmxlUm93
c1tqXS5jbGFzc05hbWUgPSBuZXdDbGFzc05hbWUgKyAoIGogJSAyID09IDAgPyAn
ZXZlbicgOiAnb2RkJyApOwoJCX0KCX0KfQoKLyoKICogRW5kIG9mIHRhYmxlIHNv
cnRpbmcgY29kZQogKi8KCgovKioKICogQWRkIGEgY3V0ZSBsaXR0bGUgYm94IGF0
IHRoZSB0b3Agb2YgdGhlIHNjcmVlbiB0byBpbmZvcm0gdGhlIHVzZXIgb2YKICog
c29tZXRoaW5nLCByZXBsYWNpbmcgYW55IHByZWV4aXN0aW5nIG1lc3NhZ2UuCiAq
CiAqIEBwYXJhbSBTdHJpbmcgLW9yLSBEb20gT2JqZWN0IG1lc3NhZ2UgSFRNTCB0
byBiZSBwdXQgaW5zaWRlIHRoZSByaWdodCBkaXYKICogQHBhcmFtIFN0cmluZyBj
bGFzc05hbWUgICBVc2VkIGluIGFkZGluZyBhIGNsYXNzOyBzaG91bGQgYmUgZGlm
ZmVyZW50IGZvciBlYWNoCiAqICAgY2FsbCB0byBhbGxvdyBDU1MvSlMgdG8gaGlk
ZSBkaWZmZXJlbnQgYm94ZXMuICBudWxsID0gbm8gY2xhc3MgdXNlZC4KICogQHJl
dHVybiBCb29sZWFuICAgICAgIFRydWUgb24gc3VjY2VzcywgZmFsc2Ugb24gZmFp
bHVyZQogKi8KZnVuY3Rpb24ganNNc2coIG1lc3NhZ2UsIGNsYXNzTmFtZSApIHsK
CWlmICggIWRvY3VtZW50LmdldEVsZW1lbnRCeUlkICkgewoJCXJldHVybiBmYWxz
ZTsKCX0KCS8vIFdlIHNwZWNpYWwtY2FzZSBza2luIHN0cnVjdHVyZXMgcHJvdmlk
ZWQgYnkgdGhlIHNvZnR3YXJlLiAgU2tpbnMgdGhhdAoJLy8gY2hvb3NlIHRvIGFi
YW5kb24gb3Igc2lnbmlmaWNhbnRseSBtb2RpZnkgb3VyIGZvcm1hdHRpbmcgY2Fu
IGp1c3QgZGVmaW5lCgkvLyBhbiBtdy1qcy1tZXNzYWdlIGRpdiB0byBzdGFydCB3
aXRoLgoJdmFyIG1lc3NhZ2VEaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgg
J213LWpzLW1lc3NhZ2UnICk7CglpZiAoICFtZXNzYWdlRGl2ICkgewoJCW1lc3Nh
Z2VEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAnZGl2JyApOwoJCWlmICgg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoICdjb2x1bW4tY29udGVudCcgKQoJCSYm
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCAnY29udGVudCcgKSApIHsKCQkJLy8g
TW9ub0Jvb2ssIHByZXN1bWFibHkKCQkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ICdjb250ZW50JyApLmluc2VydEJlZm9yZSgKCQkJCW1lc3NhZ2VEaXYsCgkJCQlk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCggJ2NvbnRlbnQnICkuZmlyc3RDaGlsZAoJ
CQkpOwoJCX0gZWxzZSBpZiAoIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCAnY29u
dGVudCcgKQoJCSYmIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCAnYXJ0aWNsZScg
KSApIHsKCQkJLy8gTm9uLU1vbm9ib29rIGJ1dCBzdGlsbCByZWNvZ25pemFibGUg
KG9sZC1zdHlsZSkKCQkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoICdhcnRpY2xl
JykuaW5zZXJ0QmVmb3JlKAoJCQkJbWVzc2FnZURpdiwKCQkJCWRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCAnYXJ0aWNsZScgKS5maXJzdENoaWxkCgkJCSk7CgkJfSBl
bHNlIHsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCX0KCgltZXNzYWdlRGl2LnNldEF0
dHJpYnV0ZSggJ2lkJywgJ213LWpzLW1lc3NhZ2UnICk7CgltZXNzYWdlRGl2LnN0
eWxlLmRpc3BsYXkgPSAnYmxvY2snOwoJaWYoIGNsYXNzTmFtZSApIHsKCQltZXNz
YWdlRGl2LnNldEF0dHJpYnV0ZSggJ2NsYXNzJywgJ213LWpzLW1lc3NhZ2UtJyAr
IGNsYXNzTmFtZSApOwoJfQoKCWlmICggdHlwZW9mIG1lc3NhZ2UgPT09ICdvYmpl
Y3QnICkgewoJCXdoaWxlICggbWVzc2FnZURpdi5oYXNDaGlsZE5vZGVzKCkgKSB7
IC8vIFJlbW92ZSBvbGQgY29udGVudAoJCQltZXNzYWdlRGl2LnJlbW92ZUNoaWxk
KCBtZXNzYWdlRGl2LmZpcnN0Q2hpbGQgKTsKCQl9CgkJbWVzc2FnZURpdi5hcHBl
bmRDaGlsZCggbWVzc2FnZSApOyAvLyBBcHBlbmQgbmV3IGNvbnRlbnQKCX0gZWxz
ZSB7CgkJbWVzc2FnZURpdi5pbm5lckhUTUwgPSBtZXNzYWdlOwoJfQoJcmV0dXJu
IHRydWU7Cn0KCi8qKgogKiBJbmplY3QgYSBjdXRlIGxpdHRsZSBwcm9ncmVzcyBz
cGlubmVyIGFmdGVyIHRoZSBzcGVjaWZpZWQgZWxlbWVudAogKgogKiBAcGFyYW0g
ZWxlbWVudCBFbGVtZW50IHRvIGluamVjdCBhZnRlcgogKiBAcGFyYW0gaWQgSWRl
bnRpZmllciBzdHJpbmcgKGZvciB1c2Ugd2l0aCByZW1vdmVTcGlubmVyKCksIGJl
bG93KQogKi8KZnVuY3Rpb24gaW5qZWN0U3Bpbm5lciggZWxlbWVudCwgaWQgKSB7
Cgl2YXIgc3Bpbm5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoICdpbWcnICk7
CglzcGlubmVyLmlkID0gJ213LXNwaW5uZXItJyArIGlkOwoJc3Bpbm5lci5zcmMg
PSBzdHlsZXBhdGggKyAnL2NvbW1vbi9pbWFnZXMvc3Bpbm5lci5naWYnOwoJc3Bp
bm5lci5hbHQgPSBzcGlubmVyLnRpdGxlID0gJy4uLic7CglpZiggZWxlbWVudC5u
ZXh0U2libGluZyApIHsKCQllbGVtZW50LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3Jl
KCBzcGlubmVyLCBlbGVtZW50Lm5leHRTaWJsaW5nICk7Cgl9IGVsc2UgewoJCWVs
ZW1lbnQucGFyZW50Tm9kZS5hcHBlbmRDaGlsZCggc3Bpbm5lciApOwoJfQp9Cgov
KioKICogUmVtb3ZlIGEgcHJvZ3Jlc3Mgc3Bpbm5lciBhZGRlZCB3aXRoIGluamVj
dFNwaW5uZXIoKQogKgogKiBAcGFyYW0gaWQgSWRlbnRpZmllciBzdHJpbmcKICov
CmZ1bmN0aW9uIHJlbW92ZVNwaW5uZXIoIGlkICkgewoJdmFyIHNwaW5uZXIgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCggJ213LXNwaW5uZXItJyArIGlkICk7Cglp
Ziggc3Bpbm5lciApIHsKCQlzcGlubmVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQo
IHNwaW5uZXIgKTsKCX0KfQoKZnVuY3Rpb24gcnVuT25sb2FkSG9vaygpIHsKCS8v
IGRvbid0IHJ1biBhbnl0aGluZyBiZWxvdyB0aGlzIGZvciBub24tZG9tIGJyb3dz
ZXJzCglpZiAoIGRvbmVPbmxvYWRIb29rIHx8ICEoIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkICYmIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lICkgKSB7CgkJ
cmV0dXJuOwoJfQoKCS8vIHNldCB0aGlzIGJlZm9yZSBydW5uaW5nIGFueSBob29r
cywgc2luY2UgYW55IGVycm9ycyBiZWxvdwoJLy8gbWlnaHQgY2F1c2UgdGhlIGZ1
bmN0aW9uIHRvIHRlcm1pbmF0ZSBwcmVtYXR1cmVseQoJZG9uZU9ubG9hZEhvb2sg
PSB0cnVlOwoKCXVwZGF0ZVRvb2x0aXBBY2Nlc3NLZXlzKCBudWxsICk7CglzZXR1
cENoZWNrYm94U2hpZnRDbGljaygpOwoJc29ydGFibGVzX2luaXQoKTsKCgkvLyBS
dW4gYW55IGFkZGVkLW9uIGZ1bmN0aW9ucwoJZm9yICggdmFyIGkgPSAwOyBpIDwg
b25sb2FkRnVuY3RzLmxlbmd0aDsgaSsrICkgewoJCW9ubG9hZEZ1bmN0c1tpXSgp
OwoJfQp9CgovKioKICogQWRkIGFuIGV2ZW50IGhhbmRsZXIgdG8gYW4gZWxlbWVu
dAogKgogKiBAcGFyYW0gRWxlbWVudCBlbGVtZW50IEVsZW1lbnQgdG8gYWRkIGhh
bmRsZXIgdG8KICogQHBhcmFtIFN0cmluZyBhdHRhY2ggRXZlbnQgdG8gYXR0YWNo
IHRvCiAqIEBwYXJhbSBjYWxsYWJsZSBoYW5kbGVyIEV2ZW50IGhhbmRsZXIgY2Fs
bGJhY2sKICovCmZ1bmN0aW9uIGFkZEhhbmRsZXIoIGVsZW1lbnQsIGF0dGFjaCwg
aGFuZGxlciApIHsKCWlmKCB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciApIHsKCQll
bGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIGF0dGFjaCwgaGFuZGxlciwgZmFsc2Ug
KTsKCX0gZWxzZSBpZiggd2luZG93LmF0dGFjaEV2ZW50ICkgewoJCWVsZW1lbnQu
YXR0YWNoRXZlbnQoICdvbicgKyBhdHRhY2gsIGhhbmRsZXIgKTsKCX0KfQoKLyoq
CiAqIEFkZCBhIGNsaWNrIGV2ZW50IGhhbmRsZXIgdG8gYW4gZWxlbWVudAogKgog
KiBAcGFyYW0gRWxlbWVudCBlbGVtZW50IEVsZW1lbnQgdG8gYWRkIGhhbmRsZXIg
dG8KICogQHBhcmFtIGNhbGxhYmxlIGhhbmRsZXIgRXZlbnQgaGFuZGxlciBjYWxs
YmFjawogKi8KZnVuY3Rpb24gYWRkQ2xpY2tIYW5kbGVyKCBlbGVtZW50LCBoYW5k
bGVyICkgewoJYWRkSGFuZGxlciggZWxlbWVudCwgJ2NsaWNrJywgaGFuZGxlciAp
Owp9CgovKioKICogUmVtb3ZlcyBhbiBldmVudCBoYW5kbGVyIGZyb20gYW4gZWxl
bWVudAogKgogKiBAcGFyYW0gRWxlbWVudCBlbGVtZW50IEVsZW1lbnQgdG8gcmVt
b3ZlIGhhbmRsZXIgZnJvbQogKiBAcGFyYW0gU3RyaW5nIHJlbW92ZSBFdmVudCB0
byByZW1vdmUKICogQHBhcmFtIGNhbGxhYmxlIGhhbmRsZXIgRXZlbnQgaGFuZGxl
ciBjYWxsYmFjayB0byByZW1vdmUKICovCmZ1bmN0aW9uIHJlbW92ZUhhbmRsZXIo
IGVsZW1lbnQsIHJlbW92ZSwgaGFuZGxlciApIHsKCWlmKCB3aW5kb3cucmVtb3Zl
RXZlbnRMaXN0ZW5lciApIHsKCQllbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIo
IHJlbW92ZSwgaGFuZGxlciwgZmFsc2UgKTsKCX0gZWxzZSBpZiggd2luZG93LmRl
dGFjaEV2ZW50ICkgewoJCWVsZW1lbnQuZGV0YWNoRXZlbnQoICdvbicgKyByZW1v
dmUsIGhhbmRsZXIgKTsKCX0KfQovLyBub3RlOiBhbGwgc2tpbnMgc2hvdWxkIGNh
bGwgcnVuT25sb2FkSG9vaygpIGF0IHRoZSBlbmQgb2YgaHRtbCBvdXRwdXQsCi8v
ICAgICAgc28gdGhlIGJlbG93IHNob3VsZCBiZSByZWR1bmRhbnQuIEl0J3MgdGhl
cmUganVzdCBpbiBjYXNlLgpob29rRXZlbnQoICdsb2FkJywgcnVuT25sb2FkSG9v
ayApOwoKaWYgKCBpZTZfYnVncyApIHsKCWltcG9ydFNjcmlwdFVSSSggc3R5bGVw
YXRoICsgJy9jb21tb24vSUVGaXhlcy5qcycgKTsKfQoKLy8gRm9yIGZ1dHVyZSB1
c2UuCm13ID0ge307Cgo=
------------CQ4wAorH1dcm6byte6AhmR
Content-Disposition: inline; filename=jquery.min.js
Content-Type: application/x-javascript; name=jquery.min.js
Content-Location: http://bits.wikimedia.org/skins-1.5/common/jquery.min.js?283-19
Content-Transfer-Encoding: Base64
CihmdW5jdGlvbih3aW5kb3csdW5kZWZpbmVkKXt2YXIgalF1ZXJ5PWZ1bmN0aW9u
KHNlbGVjdG9yLGNvbnRleHQpe3JldHVybiBuZXcgalF1ZXJ5LmZuLmluaXQoc2Vs
ZWN0b3IsY29udGV4dCk7fSxfalF1ZXJ5PXdpbmRvdy5qUXVlcnksXyQ9d2luZG93
LiQsZG9jdW1lbnQ9d2luZG93LmRvY3VtZW50LHJvb3RqUXVlcnkscXVpY2tFeHBy
PS9eW148XSooPFtcd1xXXSs+KVtePl0qJHxeIyhbXHctXSspJC8saXNTaW1wbGU9
L14uW146I1xbXC4sXSokLyxybm90d2hpdGU9L1xTLyxydHJpbT0vXihcc3xcdTAw
QTApK3woXHN8XHUwMEEwKSskL2cscnNpbmdsZVRhZz0vXjwoXHcrKVxzKlwvPz4o
Pzo8XC9cMT4pPyQvLHVzZXJBZ2VudD1uYXZpZ2F0b3IudXNlckFnZW50LGJyb3dz
ZXJNYXRjaCxyZWFkeUJvdW5kPWZhbHNlLHJlYWR5TGlzdD1bXSxET01Db250ZW50
TG9hZGVkLHRvU3RyaW5nPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsaGFzT3du
UHJvcGVydHk9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxwdXNoPUFy
cmF5LnByb3RvdHlwZS5wdXNoLHNsaWNlPUFycmF5LnByb3RvdHlwZS5zbGljZSxp
bmRleE9mPUFycmF5LnByb3RvdHlwZS5pbmRleE9mO2pRdWVyeS5mbj1qUXVlcnku
cHJvdG90eXBlPXtpbml0OmZ1bmN0aW9uKHNlbGVjdG9yLGNvbnRleHQpe3ZhciBt
YXRjaCxlbGVtLHJldCxkb2M7aWYoIXNlbGVjdG9yKXtyZXR1cm4gdGhpczt9Cmlm
KHNlbGVjdG9yLm5vZGVUeXBlKXt0aGlzLmNvbnRleHQ9dGhpc1swXT1zZWxlY3Rv
cjt0aGlzLmxlbmd0aD0xO3JldHVybiB0aGlzO30KaWYoc2VsZWN0b3I9PT0iYm9k
eSImJiFjb250ZXh0KXt0aGlzLmNvbnRleHQ9ZG9jdW1lbnQ7dGhpc1swXT1kb2N1
bWVudC5ib2R5O3RoaXMuc2VsZWN0b3I9ImJvZHkiO3RoaXMubGVuZ3RoPTE7cmV0
dXJuIHRoaXM7fQppZih0eXBlb2Ygc2VsZWN0b3I9PT0ic3RyaW5nIil7bWF0Y2g9
cXVpY2tFeHByLmV4ZWMoc2VsZWN0b3IpO2lmKG1hdGNoJiYobWF0Y2hbMV18fCFj
b250ZXh0KSl7aWYobWF0Y2hbMV0pe2RvYz0oY29udGV4dD9jb250ZXh0Lm93bmVy
RG9jdW1lbnR8fGNvbnRleHQ6ZG9jdW1lbnQpO3JldD1yc2luZ2xlVGFnLmV4ZWMo
c2VsZWN0b3IpO2lmKHJldCl7aWYoalF1ZXJ5LmlzUGxhaW5PYmplY3QoY29udGV4
dCkpe3NlbGVjdG9yPVtkb2N1bWVudC5jcmVhdGVFbGVtZW50KHJldFsxXSldO2pR
dWVyeS5mbi5hdHRyLmNhbGwoc2VsZWN0b3IsY29udGV4dCx0cnVlKTt9ZWxzZXtz
ZWxlY3Rvcj1bZG9jLmNyZWF0ZUVsZW1lbnQocmV0WzFdKV07fX1lbHNle3JldD1i
dWlsZEZyYWdtZW50KFttYXRjaFsxXV0sW2RvY10pO3NlbGVjdG9yPShyZXQuY2Fj
aGVhYmxlP3JldC5mcmFnbWVudC5jbG9uZU5vZGUodHJ1ZSk6cmV0LmZyYWdtZW50
KS5jaGlsZE5vZGVzO30KcmV0dXJuIGpRdWVyeS5tZXJnZSh0aGlzLHNlbGVjdG9y
KTt9ZWxzZXtlbGVtPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG1hdGNoWzJdKTtp
ZihlbGVtKXtpZihlbGVtLmlkIT09bWF0Y2hbMl0pe3JldHVybiByb290alF1ZXJ5
LmZpbmQoc2VsZWN0b3IpO30KdGhpcy5sZW5ndGg9MTt0aGlzWzBdPWVsZW07fQp0
aGlzLmNvbnRleHQ9ZG9jdW1lbnQ7dGhpcy5zZWxlY3Rvcj1zZWxlY3RvcjtyZXR1
cm4gdGhpczt9fWVsc2UgaWYoIWNvbnRleHQmJi9eXHcrJC8udGVzdChzZWxlY3Rv
cikpe3RoaXMuc2VsZWN0b3I9c2VsZWN0b3I7dGhpcy5jb250ZXh0PWRvY3VtZW50
O3NlbGVjdG9yPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKHNlbGVjdG9y
KTtyZXR1cm4galF1ZXJ5Lm1lcmdlKHRoaXMsc2VsZWN0b3IpO31lbHNlIGlmKCFj
b250ZXh0fHxjb250ZXh0LmpxdWVyeSl7cmV0dXJuKGNvbnRleHR8fHJvb3RqUXVl
cnkpLmZpbmQoc2VsZWN0b3IpO31lbHNle3JldHVybiBqUXVlcnkoY29udGV4dCku
ZmluZChzZWxlY3Rvcik7fX1lbHNlIGlmKGpRdWVyeS5pc0Z1bmN0aW9uKHNlbGVj
dG9yKSl7cmV0dXJuIHJvb3RqUXVlcnkucmVhZHkoc2VsZWN0b3IpO30KaWYoc2Vs
ZWN0b3Iuc2VsZWN0b3IhPT11bmRlZmluZWQpe3RoaXMuc2VsZWN0b3I9c2VsZWN0
b3Iuc2VsZWN0b3I7dGhpcy5jb250ZXh0PXNlbGVjdG9yLmNvbnRleHQ7fQpyZXR1
cm4galF1ZXJ5Lm1ha2VBcnJheShzZWxlY3Rvcix0aGlzKTt9LHNlbGVjdG9yOiIi
LGpxdWVyeToiMS40LjIiLGxlbmd0aDowLHNpemU6ZnVuY3Rpb24oKXtyZXR1cm4g
dGhpcy5sZW5ndGg7fSx0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHNsaWNlLmNh
bGwodGhpcywwKTt9LGdldDpmdW5jdGlvbihudW0pe3JldHVybiBudW09PW51bGw/
dGhpcy50b0FycmF5KCk6KG51bTwwP3RoaXMuc2xpY2UobnVtKVswXTp0aGlzW251
bV0pO30scHVzaFN0YWNrOmZ1bmN0aW9uKGVsZW1zLG5hbWUsc2VsZWN0b3Ipe3Zh
ciByZXQ9alF1ZXJ5KCk7aWYoalF1ZXJ5LmlzQXJyYXkoZWxlbXMpKXtwdXNoLmFw
cGx5KHJldCxlbGVtcyk7fWVsc2V7alF1ZXJ5Lm1lcmdlKHJldCxlbGVtcyk7fQpy
ZXQucHJldk9iamVjdD10aGlzO3JldC5jb250ZXh0PXRoaXMuY29udGV4dDtpZihu
YW1lPT09ImZpbmQiKXtyZXQuc2VsZWN0b3I9dGhpcy5zZWxlY3RvcisodGhpcy5z
ZWxlY3Rvcj8iICI6IiIpK3NlbGVjdG9yO31lbHNlIGlmKG5hbWUpe3JldC5zZWxl
Y3Rvcj10aGlzLnNlbGVjdG9yKyIuIituYW1lKyIoIitzZWxlY3RvcisiKSI7fQpy
ZXR1cm4gcmV0O30sZWFjaDpmdW5jdGlvbihjYWxsYmFjayxhcmdzKXtyZXR1cm4g
alF1ZXJ5LmVhY2godGhpcyxjYWxsYmFjayxhcmdzKTt9LHJlYWR5OmZ1bmN0aW9u
KGZuKXtqUXVlcnkuYmluZFJlYWR5KCk7aWYoalF1ZXJ5LmlzUmVhZHkpe2ZuLmNh
bGwoZG9jdW1lbnQsalF1ZXJ5KTt9ZWxzZSBpZihyZWFkeUxpc3Qpe3JlYWR5TGlz
dC5wdXNoKGZuKTt9CnJldHVybiB0aGlzO30sZXE6ZnVuY3Rpb24oaSl7cmV0dXJu
IGk9PT0tMT90aGlzLnNsaWNlKGkpOnRoaXMuc2xpY2UoaSwraSsxKTt9LGZpcnN0
OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoMCk7fSxsYXN0OmZ1bmN0aW9uKCl7
cmV0dXJuIHRoaXMuZXEoLTEpO30sc2xpY2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhp
cy5wdXNoU3RhY2soc2xpY2UuYXBwbHkodGhpcyxhcmd1bWVudHMpLCJzbGljZSIs
c2xpY2UuY2FsbChhcmd1bWVudHMpLmpvaW4oIiwiKSk7fSxtYXA6ZnVuY3Rpb24o
Y2FsbGJhY2spe3JldHVybiB0aGlzLnB1c2hTdGFjayhqUXVlcnkubWFwKHRoaXMs
ZnVuY3Rpb24oZWxlbSxpKXtyZXR1cm4gY2FsbGJhY2suY2FsbChlbGVtLGksZWxl
bSk7fSkpO30sZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJldk9iamVjdHx8
alF1ZXJ5KG51bGwpO30scHVzaDpwdXNoLHNvcnQ6W10uc29ydCxzcGxpY2U6W10u
c3BsaWNlfTtqUXVlcnkuZm4uaW5pdC5wcm90b3R5cGU9alF1ZXJ5LmZuO2pRdWVy
eS5leHRlbmQ9alF1ZXJ5LmZuLmV4dGVuZD1mdW5jdGlvbigpe3ZhciB0YXJnZXQ9
YXJndW1lbnRzWzBdfHx7fSxpPTEsbGVuZ3RoPWFyZ3VtZW50cy5sZW5ndGgsZGVl
cD1mYWxzZSxvcHRpb25zLG5hbWUsc3JjLGNvcHk7aWYodHlwZW9mIHRhcmdldD09
PSJib29sZWFuIil7ZGVlcD10YXJnZXQ7dGFyZ2V0PWFyZ3VtZW50c1sxXXx8e307
aT0yO30KaWYodHlwZW9mIHRhcmdldCE9PSJvYmplY3QiJiYhalF1ZXJ5LmlzRnVu
Y3Rpb24odGFyZ2V0KSl7dGFyZ2V0PXt9O30KaWYobGVuZ3RoPT09aSl7dGFyZ2V0
PXRoaXM7LS1pO30KZm9yKDtpPGxlbmd0aDtpKyspe2lmKChvcHRpb25zPWFyZ3Vt
ZW50c1tpXSkhPW51bGwpe2ZvcihuYW1lIGluIG9wdGlvbnMpe3NyYz10YXJnZXRb
bmFtZV07Y29weT1vcHRpb25zW25hbWVdO2lmKHRhcmdldD09PWNvcHkpe2NvbnRp
bnVlO30KaWYoZGVlcCYmY29weSYmKGpRdWVyeS5pc1BsYWluT2JqZWN0KGNvcHkp
fHxqUXVlcnkuaXNBcnJheShjb3B5KSkpe3ZhciBjbG9uZT1zcmMmJihqUXVlcnku
aXNQbGFpbk9iamVjdChzcmMpfHxqUXVlcnkuaXNBcnJheShzcmMpKT9zcmM6alF1
ZXJ5LmlzQXJyYXkoY29weSk/W106e307dGFyZ2V0W25hbWVdPWpRdWVyeS5leHRl
bmQoZGVlcCxjbG9uZSxjb3B5KTt9ZWxzZSBpZihjb3B5IT09dW5kZWZpbmVkKXt0
YXJnZXRbbmFtZV09Y29weTt9fX19CnJldHVybiB0YXJnZXQ7fTtqUXVlcnkuZXh0
ZW5kKHtub0NvbmZsaWN0OmZ1bmN0aW9uKGRlZXApe3dpbmRvdy4kPV8kO2lmKGRl
ZXApe3dpbmRvdy5qUXVlcnk9X2pRdWVyeTt9CnJldHVybiBqUXVlcnk7fSxpc1Jl
YWR5OmZhbHNlLHJlYWR5OmZ1bmN0aW9uKCl7aWYoIWpRdWVyeS5pc1JlYWR5KXtp
ZighZG9jdW1lbnQuYm9keSl7cmV0dXJuIHNldFRpbWVvdXQoalF1ZXJ5LnJlYWR5
LDEzKTt9CmpRdWVyeS5pc1JlYWR5PXRydWU7aWYocmVhZHlMaXN0KXt2YXIgZm4s
aT0wO3doaWxlKChmbj1yZWFkeUxpc3RbaSsrXSkpe2ZuLmNhbGwoZG9jdW1lbnQs
alF1ZXJ5KTt9CnJlYWR5TGlzdD1udWxsO30KaWYoalF1ZXJ5LmZuLnRyaWdnZXJI
YW5kbGVyKXtqUXVlcnkoZG9jdW1lbnQpLnRyaWdnZXJIYW5kbGVyKCJyZWFkeSIp
O319fSxiaW5kUmVhZHk6ZnVuY3Rpb24oKXtpZihyZWFkeUJvdW5kKXtyZXR1cm47
fQpyZWFkeUJvdW5kPXRydWU7aWYoZG9jdW1lbnQucmVhZHlTdGF0ZT09PSJjb21w
bGV0ZSIpe3JldHVybiBqUXVlcnkucmVhZHkoKTt9CmlmKGRvY3VtZW50LmFkZEV2
ZW50TGlzdGVuZXIpe2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRl
bnRMb2FkZWQiLERPTUNvbnRlbnRMb2FkZWQsZmFsc2UpO3dpbmRvdy5hZGRFdmVu
dExpc3RlbmVyKCJsb2FkIixqUXVlcnkucmVhZHksZmFsc2UpO31lbHNlIGlmKGRv
Y3VtZW50LmF0dGFjaEV2ZW50KXtkb2N1bWVudC5hdHRhY2hFdmVudCgib25yZWFk
eXN0YXRlY2hhbmdlIixET01Db250ZW50TG9hZGVkKTt3aW5kb3cuYXR0YWNoRXZl
bnQoIm9ubG9hZCIsalF1ZXJ5LnJlYWR5KTt2YXIgdG9wbGV2ZWw9ZmFsc2U7dHJ5
e3RvcGxldmVsPXdpbmRvdy5mcmFtZUVsZW1lbnQ9PW51bGw7fWNhdGNoKGUpe30K
aWYoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsJiZ0b3BsZXZlbCl7
ZG9TY3JvbGxDaGVjaygpO319fSxpc0Z1bmN0aW9uOmZ1bmN0aW9uKG9iail7cmV0
dXJuIHRvU3RyaW5nLmNhbGwob2JqKT09PSJbb2JqZWN0IEZ1bmN0aW9uXSI7fSxp
c0FycmF5OmZ1bmN0aW9uKG9iail7cmV0dXJuIHRvU3RyaW5nLmNhbGwob2JqKT09
PSJbb2JqZWN0IEFycmF5XSI7fSxpc1BsYWluT2JqZWN0OmZ1bmN0aW9uKG9iail7
aWYoIW9ianx8dG9TdHJpbmcuY2FsbChvYmopIT09IltvYmplY3QgT2JqZWN0XSJ8
fG9iai5ub2RlVHlwZXx8b2JqLnNldEludGVydmFsKXtyZXR1cm4gZmFsc2U7fQpp
ZihvYmouY29uc3RydWN0b3ImJiFoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwiY29u
c3RydWN0b3IiKSYmIWhhc093blByb3BlcnR5LmNhbGwob2JqLmNvbnN0cnVjdG9y
LnByb3RvdHlwZSwiaXNQcm90b3R5cGVPZiIpKXtyZXR1cm4gZmFsc2U7fQp2YXIg
a2V5O2ZvcihrZXkgaW4gb2JqKXt9CnJldHVybiBrZXk9PT11bmRlZmluZWR8fGhh
c093blByb3BlcnR5LmNhbGwob2JqLGtleSk7fSxpc0VtcHR5T2JqZWN0OmZ1bmN0
aW9uKG9iail7Zm9yKHZhciBuYW1lIGluIG9iail7cmV0dXJuIGZhbHNlO30KcmV0
dXJuIHRydWU7fSxlcnJvcjpmdW5jdGlvbihtc2cpe3Rocm93IG1zZzt9LHBhcnNl
SlNPTjpmdW5jdGlvbihkYXRhKXtpZih0eXBlb2YgZGF0YSE9PSJzdHJpbmcifHwh
ZGF0YSl7cmV0dXJuIG51bGw7fQpkYXRhPWpRdWVyeS50cmltKGRhdGEpO2lmKC9e
W1xdLDp7fVxzXSokLy50ZXN0KGRhdGEucmVwbGFjZSgvXFwoPzpbIlxcXC9iZm5y
dF18dVswLTlhLWZBLUZdezR9KS9nLCJAIikucmVwbGFjZSgvIlteIlxcXG5ccl0q
Inx0cnVlfGZhbHNlfG51bGx8LT9cZCsoPzpcLlxkKik/KD86W2VFXVsrXC1dP1xk
Kyk/L2csIl0iKS5yZXBsYWNlKC8oPzpefDp8LCkoPzpccypcWykrL2csIiIpKSl7
cmV0dXJuIHdpbmRvdy5KU09OJiZ3aW5kb3cuSlNPTi5wYXJzZT93aW5kb3cuSlNP
Ti5wYXJzZShkYXRhKToobmV3IEZ1bmN0aW9uKCJyZXR1cm4gIitkYXRhKSkoKTt9
ZWxzZXtqUXVlcnkuZXJyb3IoIkludmFsaWQgSlNPTjogIitkYXRhKTt9fSxub29w
OmZ1bmN0aW9uKCl7fSxnbG9iYWxFdmFsOmZ1bmN0aW9uKGRhdGEpe2lmKGRhdGEm
JnJub3R3aGl0ZS50ZXN0KGRhdGEpKXt2YXIgaGVhZD1kb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdfHxkb2N1bWVudC5kb2N1bWVudEVsZW1l
bnQsc2NyaXB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO3Njcmlw
dC50eXBlPSJ0ZXh0L2phdmFzY3JpcHQiO2lmKGpRdWVyeS5zdXBwb3J0LnNjcmlw
dEV2YWwpe3NjcmlwdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZShkYXRhKSk7fWVsc2V7c2NyaXB0LnRleHQ9ZGF0YTt9CmhlYWQuaW5zZXJ0QmVm
b3JlKHNjcmlwdCxoZWFkLmZpcnN0Q2hpbGQpO2hlYWQucmVtb3ZlQ2hpbGQoc2Ny
aXB0KTt9fSxub2RlTmFtZTpmdW5jdGlvbihlbGVtLG5hbWUpe3JldHVybiBlbGVt
Lm5vZGVOYW1lJiZlbGVtLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCk9PT1uYW1lLnRv
VXBwZXJDYXNlKCk7fSxlYWNoOmZ1bmN0aW9uKG9iamVjdCxjYWxsYmFjayxhcmdz
KXt2YXIgbmFtZSxpPTAsbGVuZ3RoPW9iamVjdC5sZW5ndGgsaXNPYmo9bGVuZ3Ro
PT09dW5kZWZpbmVkfHxqUXVlcnkuaXNGdW5jdGlvbihvYmplY3QpO2lmKGFyZ3Mp
e2lmKGlzT2JqKXtmb3IobmFtZSBpbiBvYmplY3Qpe2lmKGNhbGxiYWNrLmFwcGx5
KG9iamVjdFtuYW1lXSxhcmdzKT09PWZhbHNlKXticmVhazt9fX1lbHNle2Zvcig7
aTxsZW5ndGg7KXtpZihjYWxsYmFjay5hcHBseShvYmplY3RbaSsrXSxhcmdzKT09
PWZhbHNlKXticmVhazt9fX19ZWxzZXtpZihpc09iail7Zm9yKG5hbWUgaW4gb2Jq
ZWN0KXtpZihjYWxsYmFjay5jYWxsKG9iamVjdFtuYW1lXSxuYW1lLG9iamVjdFtu
YW1lXSk9PT1mYWxzZSl7YnJlYWs7fX19ZWxzZXtmb3IodmFyIHZhbHVlPW9iamVj
dFswXTtpPGxlbmd0aCYmY2FsbGJhY2suY2FsbCh2YWx1ZSxpLHZhbHVlKSE9PWZh
bHNlO3ZhbHVlPW9iamVjdFsrK2ldKXt9fX0KcmV0dXJuIG9iamVjdDt9LHRyaW06
ZnVuY3Rpb24odGV4dCl7cmV0dXJuKHRleHR8fCIiKS5yZXBsYWNlKHJ0cmltLCIi
KTt9LG1ha2VBcnJheTpmdW5jdGlvbihhcnJheSxyZXN1bHRzKXt2YXIgcmV0PXJl
c3VsdHN8fFtdO2lmKGFycmF5IT1udWxsKXtpZihhcnJheS5sZW5ndGg9PW51bGx8
fHR5cGVvZiBhcnJheT09PSJzdHJpbmcifHxqUXVlcnkuaXNGdW5jdGlvbihhcnJh
eSl8fCh0eXBlb2YgYXJyYXkhPT0iZnVuY3Rpb24iJiZhcnJheS5zZXRJbnRlcnZh
bCkpe3B1c2guY2FsbChyZXQsYXJyYXkpO31lbHNle2pRdWVyeS5tZXJnZShyZXQs
YXJyYXkpO319CnJldHVybiByZXQ7fSxpbkFycmF5OmZ1bmN0aW9uKGVsZW0sYXJy
YXkpe2lmKGFycmF5LmluZGV4T2Ype3JldHVybiBhcnJheS5pbmRleE9mKGVsZW0p
O30KZm9yKHZhciBpPTAsbGVuZ3RoPWFycmF5Lmxlbmd0aDtpPGxlbmd0aDtpKysp
e2lmKGFycmF5W2ldPT09ZWxlbSl7cmV0dXJuIGk7fX0KcmV0dXJuLTE7fSxtZXJn
ZTpmdW5jdGlvbihmaXJzdCxzZWNvbmQpe3ZhciBpPWZpcnN0Lmxlbmd0aCxqPTA7
aWYodHlwZW9mIHNlY29uZC5sZW5ndGg9PT0ibnVtYmVyIil7Zm9yKHZhciBsPXNl
Y29uZC5sZW5ndGg7ajxsO2orKyl7Zmlyc3RbaSsrXT1zZWNvbmRbal07fX1lbHNl
e3doaWxlKHNlY29uZFtqXSE9PXVuZGVmaW5lZCl7Zmlyc3RbaSsrXT1zZWNvbmRb
aisrXTt9fQpmaXJzdC5sZW5ndGg9aTtyZXR1cm4gZmlyc3Q7fSxncmVwOmZ1bmN0
aW9uKGVsZW1zLGNhbGxiYWNrLGludil7dmFyIHJldD1bXTtmb3IodmFyIGk9MCxs
ZW5ndGg9ZWxlbXMubGVuZ3RoO2k8bGVuZ3RoO2krKyl7aWYoIWludiE9PSFjYWxs
YmFjayhlbGVtc1tpXSxpKSl7cmV0LnB1c2goZWxlbXNbaV0pO319CnJldHVybiBy
ZXQ7fSxtYXA6ZnVuY3Rpb24oZWxlbXMsY2FsbGJhY2ssYXJnKXt2YXIgcmV0PVtd
LHZhbHVlO2Zvcih2YXIgaT0wLGxlbmd0aD1lbGVtcy5sZW5ndGg7aTxsZW5ndGg7
aSsrKXt2YWx1ZT1jYWxsYmFjayhlbGVtc1tpXSxpLGFyZyk7aWYodmFsdWUhPW51
bGwpe3JldFtyZXQubGVuZ3RoXT12YWx1ZTt9fQpyZXR1cm4gcmV0LmNvbmNhdC5h
cHBseShbXSxyZXQpO30sZ3VpZDoxLHByb3h5OmZ1bmN0aW9uKGZuLHByb3h5LHRo
aXNPYmplY3Qpe2lmKGFyZ3VtZW50cy5sZW5ndGg9PT0yKXtpZih0eXBlb2YgcHJv
eHk9PT0ic3RyaW5nIil7dGhpc09iamVjdD1mbjtmbj10aGlzT2JqZWN0W3Byb3h5
XTtwcm94eT11bmRlZmluZWQ7fWVsc2UgaWYocHJveHkmJiFqUXVlcnkuaXNGdW5j
dGlvbihwcm94eSkpe3RoaXNPYmplY3Q9cHJveHk7cHJveHk9dW5kZWZpbmVkO319
CmlmKCFwcm94eSYmZm4pe3Byb3h5PWZ1bmN0aW9uKCl7cmV0dXJuIGZuLmFwcGx5
KHRoaXNPYmplY3R8fHRoaXMsYXJndW1lbnRzKTt9O30KaWYoZm4pe3Byb3h5Lmd1
aWQ9Zm4uZ3VpZD1mbi5ndWlkfHxwcm94eS5ndWlkfHxqUXVlcnkuZ3VpZCsrO30K
cmV0dXJuIHByb3h5O30sdWFNYXRjaDpmdW5jdGlvbih1YSl7dWE9dWEudG9Mb3dl
ckNhc2UoKTt2YXIgbWF0Y2g9Lyh3ZWJraXQpWyBcL10oW1x3Ll0rKS8uZXhlYyh1
YSl8fC8ob3BlcmEpKD86Lip2ZXJzaW9uKT9bIFwvXShbXHcuXSspLy5leGVjKHVh
KXx8Lyhtc2llKSAoW1x3Ll0rKS8uZXhlYyh1YSl8fCEvY29tcGF0aWJsZS8udGVz
dCh1YSkmJi8obW96aWxsYSkoPzouKj8gcnY6KFtcdy5dKykpPy8uZXhlYyh1YSl8
fFtdO3JldHVybnticm93c2VyOm1hdGNoWzFdfHwiIix2ZXJzaW9uOm1hdGNoWzJd
fHwiMCJ9O30sYnJvd3Nlcjp7fX0pO2Jyb3dzZXJNYXRjaD1qUXVlcnkudWFNYXRj
aCh1c2VyQWdlbnQpO2lmKGJyb3dzZXJNYXRjaC5icm93c2VyKXtqUXVlcnkuYnJv
d3Nlclticm93c2VyTWF0Y2guYnJvd3Nlcl09dHJ1ZTtqUXVlcnkuYnJvd3Nlci52
ZXJzaW9uPWJyb3dzZXJNYXRjaC52ZXJzaW9uO30KaWYoalF1ZXJ5LmJyb3dzZXIu
d2Via2l0KXtqUXVlcnkuYnJvd3Nlci5zYWZhcmk9dHJ1ZTt9CmlmKGluZGV4T2Yp
e2pRdWVyeS5pbkFycmF5PWZ1bmN0aW9uKGVsZW0sYXJyYXkpe3JldHVybiBpbmRl
eE9mLmNhbGwoYXJyYXksZWxlbSk7fTt9CnJvb3RqUXVlcnk9alF1ZXJ5KGRvY3Vt
ZW50KTtpZihkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKXtET01Db250ZW50TG9h
ZGVkPWZ1bmN0aW9uKCl7ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9N
Q29udGVudExvYWRlZCIsRE9NQ29udGVudExvYWRlZCxmYWxzZSk7alF1ZXJ5LnJl
YWR5KCk7fTt9ZWxzZSBpZihkb2N1bWVudC5hdHRhY2hFdmVudCl7RE9NQ29udGVu
dExvYWRlZD1mdW5jdGlvbigpe2lmKGRvY3VtZW50LnJlYWR5U3RhdGU9PT0iY29t
cGxldGUiKXtkb2N1bWVudC5kZXRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdl
IixET01Db250ZW50TG9hZGVkKTtqUXVlcnkucmVhZHkoKTt9fTt9CmZ1bmN0aW9u
IGRvU2Nyb2xsQ2hlY2soKXtpZihqUXVlcnkuaXNSZWFkeSl7cmV0dXJuO30KdHJ5
e2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbCgibGVmdCIpO31jYXRj
aChlcnJvcil7c2V0VGltZW91dChkb1Njcm9sbENoZWNrLDEpO3JldHVybjt9CmpR
dWVyeS5yZWFkeSgpO30KZnVuY3Rpb24gZXZhbFNjcmlwdChpLGVsZW0pe2lmKGVs
ZW0uc3JjKXtqUXVlcnkuYWpheCh7dXJsOmVsZW0uc3JjLGFzeW5jOmZhbHNlLGRh
dGFUeXBlOiJzY3JpcHQifSk7fWVsc2V7alF1ZXJ5Lmdsb2JhbEV2YWwoZWxlbS50
ZXh0fHxlbGVtLnRleHRDb250ZW50fHxlbGVtLmlubmVySFRNTHx8IiIpO30KaWYo
ZWxlbS5wYXJlbnROb2RlKXtlbGVtLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZWxl
bSk7fX0KZnVuY3Rpb24gYWNjZXNzKGVsZW1zLGtleSx2YWx1ZSxleGVjLGZuLHBh
c3Mpe3ZhciBsZW5ndGg9ZWxlbXMubGVuZ3RoO2lmKHR5cGVvZiBrZXk9PT0ib2Jq
ZWN0Iil7Zm9yKHZhciBrIGluIGtleSl7YWNjZXNzKGVsZW1zLGssa2V5W2tdLGV4
ZWMsZm4sdmFsdWUpO30KcmV0dXJuIGVsZW1zO30KaWYodmFsdWUhPT11bmRlZmlu
ZWQpe2V4ZWM9IXBhc3MmJmV4ZWMmJmpRdWVyeS5pc0Z1bmN0aW9uKHZhbHVlKTtm
b3IodmFyIGk9MDtpPGxlbmd0aDtpKyspe2ZuKGVsZW1zW2ldLGtleSxleGVjP3Zh
bHVlLmNhbGwoZWxlbXNbaV0saSxmbihlbGVtc1tpXSxrZXkpKTp2YWx1ZSxwYXNz
KTt9CnJldHVybiBlbGVtczt9CnJldHVybiBsZW5ndGg/Zm4oZWxlbXNbMF0sa2V5
KTp1bmRlZmluZWQ7fQpmdW5jdGlvbiBub3coKXtyZXR1cm4obmV3IERhdGUpLmdl
dFRpbWUoKTt9CihmdW5jdGlvbigpe2pRdWVyeS5zdXBwb3J0PXt9O3ZhciByb290
PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxzY3JpcHQ9ZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgic2NyaXB0IiksZGl2PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpLGlkPSJzY3JpcHQiK25vdygpO2Rpdi5zdHlsZS5kaXNwbGF5PSJub25lIjtk
aXYuaW5uZXJIVE1MPSIgICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0n
L2EnIHN0eWxlPSdjb2xvcjpyZWQ7ZmxvYXQ6bGVmdDtvcGFjaXR5Oi41NTsnPmE8
L2E+PGlucHV0IHR5cGU9J2NoZWNrYm94Jy8+Ijt2YXIgYWxsPWRpdi5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgiKiIpLGE9ZGl2LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJh
IilbMF07aWYoIWFsbHx8IWFsbC5sZW5ndGh8fCFhKXtyZXR1cm47fQpqUXVlcnku
c3VwcG9ydD17bGVhZGluZ1doaXRlc3BhY2U6ZGl2LmZpcnN0Q2hpbGQubm9kZVR5
cGU9PT0zLHRib2R5OiFkaXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRib2R5Iiku
bGVuZ3RoLGh0bWxTZXJpYWxpemU6ISFkaXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
ImxpbmsiKS5sZW5ndGgsc3R5bGU6L3JlZC8udGVzdChhLmdldEF0dHJpYnV0ZSgi
c3R5bGUiKSksaHJlZk5vcm1hbGl6ZWQ6YS5nZXRBdHRyaWJ1dGUoImhyZWYiKT09
PSIvYSIsb3BhY2l0eTovXjAuNTUkLy50ZXN0KGEuc3R5bGUub3BhY2l0eSksY3Nz
RmxvYXQ6ISFhLnN0eWxlLmNzc0Zsb2F0LGNoZWNrT246ZGl2LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJpbnB1dCIpWzBdLnZhbHVlPT09Im9uIixvcHRTZWxlY3RlZDpk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJzZWxlY3QiKS5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKSkuc2VsZWN0ZWQscGFyZW50Tm9k
ZTpkaXYucmVtb3ZlQ2hpbGQoZGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpKSkucGFyZW50Tm9kZT09PW51bGwsZGVsZXRlRXhwYW5k
bzp0cnVlLGNoZWNrQ2xvbmU6ZmFsc2Usc2NyaXB0RXZhbDpmYWxzZSxub0Nsb25l
RXZlbnQ6dHJ1ZSxib3hNb2RlbDpudWxsfTtzY3JpcHQudHlwZT0idGV4dC9qYXZh
c2NyaXB0Ijt0cnl7c2NyaXB0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKCJ3aW5kb3cuIitpZCsiPTE7IikpO31jYXRjaChlKXt9CnJvb3QuaW5z
ZXJ0QmVmb3JlKHNjcmlwdCxyb290LmZpcnN0Q2hpbGQpO2lmKHdpbmRvd1tpZF0p
e2pRdWVyeS5zdXBwb3J0LnNjcmlwdEV2YWw9dHJ1ZTtkZWxldGUgd2luZG93W2lk
XTt9CnRyeXtkZWxldGUgc2NyaXB0LnRlc3Q7fWNhdGNoKGUpe2pRdWVyeS5zdXBw
b3J0LmRlbGV0ZUV4cGFuZG89ZmFsc2U7fQpyb290LnJlbW92ZUNoaWxkKHNjcmlw
dCk7aWYoZGl2LmF0dGFjaEV2ZW50JiZkaXYuZmlyZUV2ZW50KXtkaXYuYXR0YWNo
RXZlbnQoIm9uY2xpY2siLGZ1bmN0aW9uIGNsaWNrKCl7alF1ZXJ5LnN1cHBvcnQu
bm9DbG9uZUV2ZW50PWZhbHNlO2Rpdi5kZXRhY2hFdmVudCgib25jbGljayIsY2xp
Y2spO30pO2Rpdi5jbG9uZU5vZGUodHJ1ZSkuZmlyZUV2ZW50KCJvbmNsaWNrIik7
fQpkaXY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7ZGl2LmlubmVySFRN
TD0iPGlucHV0IHR5cGU9J3JhZGlvJyBuYW1lPSdyYWRpb3Rlc3QnIGNoZWNrZWQ9
J2NoZWNrZWQnLz4iO3ZhciBmcmFnbWVudD1kb2N1bWVudC5jcmVhdGVEb2N1bWVu
dEZyYWdtZW50KCk7ZnJhZ21lbnQuYXBwZW5kQ2hpbGQoZGl2LmZpcnN0Q2hpbGQp
O2pRdWVyeS5zdXBwb3J0LmNoZWNrQ2xvbmU9ZnJhZ21lbnQuY2xvbmVOb2RlKHRy
dWUpLmNsb25lTm9kZSh0cnVlKS5sYXN0Q2hpbGQuY2hlY2tlZDtqUXVlcnkoZnVu
Y3Rpb24oKXt2YXIgZGl2PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2Rp
di5zdHlsZS53aWR0aD1kaXYuc3R5bGUucGFkZGluZ0xlZnQ9IjFweCI7ZG9jdW1l
bnQuYm9keS5hcHBlbmRDaGlsZChkaXYpO2pRdWVyeS5ib3hNb2RlbD1qUXVlcnku
c3VwcG9ydC5ib3hNb2RlbD1kaXYub2Zmc2V0V2lkdGg9PT0yO2RvY3VtZW50LmJv
ZHkucmVtb3ZlQ2hpbGQoZGl2KS5zdHlsZS5kaXNwbGF5PSdub25lJztkaXY9bnVs
bDt9KTt2YXIgZXZlbnRTdXBwb3J0ZWQ9ZnVuY3Rpb24oZXZlbnROYW1lKXt2YXIg
ZWw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7ZXZlbnROYW1lPSJvbiIr
ZXZlbnROYW1lO3ZhciBpc1N1cHBvcnRlZD0oZXZlbnROYW1lIGluIGVsKTtpZigh
aXNTdXBwb3J0ZWQpe2VsLnNldEF0dHJpYnV0ZShldmVudE5hbWUsInJldHVybjsi
KTtpc1N1cHBvcnRlZD10eXBlb2YgZWxbZXZlbnROYW1lXT09PSJmdW5jdGlvbiI7
fQplbD1udWxsO3JldHVybiBpc1N1cHBvcnRlZDt9O2pRdWVyeS5zdXBwb3J0LnN1
Ym1pdEJ1YmJsZXM9ZXZlbnRTdXBwb3J0ZWQoInN1Ym1pdCIpO2pRdWVyeS5zdXBw
b3J0LmNoYW5nZUJ1YmJsZXM9ZXZlbnRTdXBwb3J0ZWQoImNoYW5nZSIpO3Jvb3Q9
c2NyaXB0PWRpdj1hbGw9YT1udWxsO30pKCk7alF1ZXJ5LnByb3BzPXsiZm9yIjoi
aHRtbEZvciIsImNsYXNzIjoiY2xhc3NOYW1lIixyZWFkb25seToicmVhZE9ubHki
LG1heGxlbmd0aDoibWF4TGVuZ3RoIixjZWxsc3BhY2luZzoiY2VsbFNwYWNpbmci
LHJvd3NwYW46InJvd1NwYW4iLGNvbHNwYW46ImNvbFNwYW4iLHRhYmluZGV4OiJ0
YWJJbmRleCIsdXNlbWFwOiJ1c2VNYXAiLGZyYW1lYm9yZGVyOiJmcmFtZUJvcmRl
ciJ9O3ZhciBleHBhbmRvPSJqUXVlcnkiK25vdygpLHV1aWQ9MCx3aW5kb3dEYXRh
PXt9O2pRdWVyeS5leHRlbmQoe2NhY2hlOnt9LGV4cGFuZG86ZXhwYW5kbyxub0Rh
dGE6eyJlbWJlZCI6dHJ1ZSwib2JqZWN0Ijp0cnVlLCJhcHBsZXQiOnRydWV9LGRh
dGE6ZnVuY3Rpb24oZWxlbSxuYW1lLGRhdGEpe2lmKGVsZW0ubm9kZU5hbWUmJmpR
dWVyeS5ub0RhdGFbZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSl7cmV0dXJu
O30KZWxlbT1lbGVtPT13aW5kb3c/d2luZG93RGF0YTplbGVtO3ZhciBpZD1lbGVt
W2V4cGFuZG9dLGNhY2hlPWpRdWVyeS5jYWNoZSx0aGlzQ2FjaGU7aWYoIWlkJiZ0
eXBlb2YgbmFtZT09PSJzdHJpbmciJiZkYXRhPT09dW5kZWZpbmVkKXtyZXR1cm4g
bnVsbDt9CmlmKCFpZCl7aWQ9Kyt1dWlkO30KaWYodHlwZW9mIG5hbWU9PT0ib2Jq
ZWN0Iil7ZWxlbVtleHBhbmRvXT1pZDt0aGlzQ2FjaGU9Y2FjaGVbaWRdPWpRdWVy
eS5leHRlbmQodHJ1ZSx7fSxuYW1lKTt9ZWxzZSBpZighY2FjaGVbaWRdKXtlbGVt
W2V4cGFuZG9dPWlkO2NhY2hlW2lkXT17fTt9CnRoaXNDYWNoZT1jYWNoZVtpZF07
aWYoZGF0YSE9PXVuZGVmaW5lZCl7dGhpc0NhY2hlW25hbWVdPWRhdGE7fQpyZXR1
cm4gdHlwZW9mIG5hbWU9PT0ic3RyaW5nIj90aGlzQ2FjaGVbbmFtZV06dGhpc0Nh
Y2hlO30scmVtb3ZlRGF0YTpmdW5jdGlvbihlbGVtLG5hbWUpe2lmKGVsZW0ubm9k
ZU5hbWUmJmpRdWVyeS5ub0RhdGFbZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgp
XSl7cmV0dXJuO30KZWxlbT1lbGVtPT13aW5kb3c/d2luZG93RGF0YTplbGVtO3Zh
ciBpZD1lbGVtW2V4cGFuZG9dLGNhY2hlPWpRdWVyeS5jYWNoZSx0aGlzQ2FjaGU9
Y2FjaGVbaWRdO2lmKG5hbWUpe2lmKHRoaXNDYWNoZSl7ZGVsZXRlIHRoaXNDYWNo
ZVtuYW1lXTtpZihqUXVlcnkuaXNFbXB0eU9iamVjdCh0aGlzQ2FjaGUpKXtqUXVl
cnkucmVtb3ZlRGF0YShlbGVtKTt9fX1lbHNle2lmKGpRdWVyeS5zdXBwb3J0LmRl
bGV0ZUV4cGFuZG8pe2RlbGV0ZSBlbGVtW2pRdWVyeS5leHBhbmRvXTt9ZWxzZSBp
ZihlbGVtLnJlbW92ZUF0dHJpYnV0ZSl7ZWxlbS5yZW1vdmVBdHRyaWJ1dGUoalF1
ZXJ5LmV4cGFuZG8pO30KZGVsZXRlIGNhY2hlW2lkXTt9fX0pO2pRdWVyeS5mbi5l
eHRlbmQoe2RhdGE6ZnVuY3Rpb24oa2V5LHZhbHVlKXtpZih0eXBlb2Yga2V5PT09
InVuZGVmaW5lZCImJnRoaXMubGVuZ3RoKXtyZXR1cm4galF1ZXJ5LmRhdGEodGhp
c1swXSk7fWVsc2UgaWYodHlwZW9mIGtleT09PSJvYmplY3QiKXtyZXR1cm4gdGhp
cy5lYWNoKGZ1bmN0aW9uKCl7alF1ZXJ5LmRhdGEodGhpcyxrZXkpO30pO30KdmFy
IHBhcnRzPWtleS5zcGxpdCgiLiIpO3BhcnRzWzFdPXBhcnRzWzFdPyIuIitwYXJ0
c1sxXToiIjtpZih2YWx1ZT09PXVuZGVmaW5lZCl7dmFyIGRhdGE9dGhpcy50cmln
Z2VySGFuZGxlcigiZ2V0RGF0YSIrcGFydHNbMV0rIiEiLFtwYXJ0c1swXV0pO2lm
KGRhdGE9PT11bmRlZmluZWQmJnRoaXMubGVuZ3RoKXtkYXRhPWpRdWVyeS5kYXRh
KHRoaXNbMF0sa2V5KTt9CnJldHVybiBkYXRhPT09dW5kZWZpbmVkJiZwYXJ0c1sx
XT90aGlzLmRhdGEocGFydHNbMF0pOmRhdGE7fWVsc2V7cmV0dXJuIHRoaXMudHJp
Z2dlcigic2V0RGF0YSIrcGFydHNbMV0rIiEiLFtwYXJ0c1swXSx2YWx1ZV0pLmVh
Y2goZnVuY3Rpb24oKXtqUXVlcnkuZGF0YSh0aGlzLGtleSx2YWx1ZSk7fSk7fX0s
cmVtb3ZlRGF0YTpmdW5jdGlvbihrZXkpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rp
b24oKXtqUXVlcnkucmVtb3ZlRGF0YSh0aGlzLGtleSk7fSk7fX0pO2pRdWVyeS5l
eHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGVsZW0sdHlwZSxkYXRhKXtpZighZWxlbSl7
cmV0dXJuO30KdHlwZT0odHlwZXx8ImZ4IikrInF1ZXVlIjt2YXIgcT1qUXVlcnku
ZGF0YShlbGVtLHR5cGUpO2lmKCFkYXRhKXtyZXR1cm4gcXx8W107fQppZighcXx8
alF1ZXJ5LmlzQXJyYXkoZGF0YSkpe3E9alF1ZXJ5LmRhdGEoZWxlbSx0eXBlLGpR
dWVyeS5tYWtlQXJyYXkoZGF0YSkpO31lbHNle3EucHVzaChkYXRhKTt9CnJldHVy
biBxO30sZGVxdWV1ZTpmdW5jdGlvbihlbGVtLHR5cGUpe3R5cGU9dHlwZXx8ImZ4
Ijt2YXIgcXVldWU9alF1ZXJ5LnF1ZXVlKGVsZW0sdHlwZSksZm49cXVldWUuc2hp
ZnQoKTtpZihmbj09PSJpbnByb2dyZXNzIil7Zm49cXVldWUuc2hpZnQoKTt9Cmlm
KGZuKXtpZih0eXBlPT09ImZ4Iil7cXVldWUudW5zaGlmdCgiaW5wcm9ncmVzcyIp
O30KZm4uY2FsbChlbGVtLGZ1bmN0aW9uKCl7alF1ZXJ5LmRlcXVldWUoZWxlbSx0
eXBlKTt9KTt9fX0pO2pRdWVyeS5mbi5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKHR5
cGUsZGF0YSl7aWYodHlwZW9mIHR5cGUhPT0ic3RyaW5nIil7ZGF0YT10eXBlO3R5
cGU9ImZ4Ijt9CmlmKGRhdGE9PT11bmRlZmluZWQpe3JldHVybiBqUXVlcnkucXVl
dWUodGhpc1swXSx0eXBlKTt9CnJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oaSxl
bGVtKXt2YXIgcXVldWU9alF1ZXJ5LnF1ZXVlKHRoaXMsdHlwZSxkYXRhKTtpZih0
eXBlPT09ImZ4IiYmcXVldWVbMF0hPT0iaW5wcm9ncmVzcyIpe2pRdWVyeS5kZXF1
ZXVlKHRoaXMsdHlwZSk7fX0pO30sZGVxdWV1ZTpmdW5jdGlvbih0eXBlKXtyZXR1
cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7alF1ZXJ5LmRlcXVldWUodGhpcyx0eXBl
KTt9KTt9LGRlbGF5OmZ1bmN0aW9uKHRpbWUsdHlwZSl7dGltZT1qUXVlcnkuZng/
alF1ZXJ5LmZ4LnNwZWVkc1t0aW1lXXx8dGltZTp0aW1lO3R5cGU9dHlwZXx8ImZ4
IjtyZXR1cm4gdGhpcy5xdWV1ZSh0eXBlLGZ1bmN0aW9uKCl7dmFyIGVsZW09dGhp
cztzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7alF1ZXJ5LmRlcXVldWUoZWxlbSx0eXBl
KTt9LHRpbWUpO30pO30sY2xlYXJRdWV1ZTpmdW5jdGlvbih0eXBlKXtyZXR1cm4g
dGhpcy5xdWV1ZSh0eXBlfHwiZngiLFtdKTt9fSk7dmFyIHJjbGFzcz0vW1xuXHRd
L2cscnNwYWNlPS9ccysvLHJyZXR1cm49L1xyL2cscnNwZWNpYWx1cmw9L2hyZWZ8
c3JjfHN0eWxlLyxydHlwZT0vKGJ1dHRvbnxpbnB1dCkvaSxyZm9jdXNhYmxlPS8o
YnV0dG9ufGlucHV0fG9iamVjdHxzZWxlY3R8dGV4dGFyZWEpL2kscmNsaWNrYWJs
ZT0vXihhfGFyZWEpJC9pLHJyYWRpb2NoZWNrPS9yYWRpb3xjaGVja2JveC87alF1
ZXJ5LmZuLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihuYW1lLHZhbHVlKXtyZXR1cm4g
YWNjZXNzKHRoaXMsbmFtZSx2YWx1ZSx0cnVlLGpRdWVyeS5hdHRyKTt9LHJlbW92
ZUF0dHI6ZnVuY3Rpb24obmFtZSxmbil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlv
bigpe2pRdWVyeS5hdHRyKHRoaXMsbmFtZSwiIik7aWYodGhpcy5ub2RlVHlwZT09
PTEpe3RoaXMucmVtb3ZlQXR0cmlidXRlKG5hbWUpO319KTt9LGFkZENsYXNzOmZ1
bmN0aW9uKHZhbHVlKXtpZihqUXVlcnkuaXNGdW5jdGlvbih2YWx1ZSkpe3JldHVy
biB0aGlzLmVhY2goZnVuY3Rpb24oaSl7dmFyIHNlbGY9alF1ZXJ5KHRoaXMpO3Nl
bGYuYWRkQ2xhc3ModmFsdWUuY2FsbCh0aGlzLGksc2VsZi5hdHRyKCJjbGFzcyIp
KSk7fSk7fQppZih2YWx1ZSYmdHlwZW9mIHZhbHVlPT09InN0cmluZyIpe3ZhciBj
bGFzc05hbWVzPSh2YWx1ZXx8IiIpLnNwbGl0KHJzcGFjZSk7Zm9yKHZhciBpPTAs
bD10aGlzLmxlbmd0aDtpPGw7aSsrKXt2YXIgZWxlbT10aGlzW2ldO2lmKGVsZW0u
bm9kZVR5cGU9PT0xKXtpZighZWxlbS5jbGFzc05hbWUpe2VsZW0uY2xhc3NOYW1l
PXZhbHVlO31lbHNle3ZhciBjbGFzc05hbWU9IiAiK2VsZW0uY2xhc3NOYW1lKyIg
IixzZXRDbGFzcz1lbGVtLmNsYXNzTmFtZTtmb3IodmFyIGM9MCxjbD1jbGFzc05h
bWVzLmxlbmd0aDtjPGNsO2MrKyl7aWYoY2xhc3NOYW1lLmluZGV4T2YoIiAiK2Ns
YXNzTmFtZXNbY10rIiAiKTwwKXtzZXRDbGFzcys9IiAiK2NsYXNzTmFtZXNbY107
fX0KZWxlbS5jbGFzc05hbWU9alF1ZXJ5LnRyaW0oc2V0Q2xhc3MpO319fX0KcmV0
dXJuIHRoaXM7fSxyZW1vdmVDbGFzczpmdW5jdGlvbih2YWx1ZSl7aWYoalF1ZXJ5
LmlzRnVuY3Rpb24odmFsdWUpKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGkp
e3ZhciBzZWxmPWpRdWVyeSh0aGlzKTtzZWxmLnJlbW92ZUNsYXNzKHZhbHVlLmNh
bGwodGhpcyxpLHNlbGYuYXR0cigiY2xhc3MiKSkpO30pO30KaWYoKHZhbHVlJiZ0
eXBlb2YgdmFsdWU9PT0ic3RyaW5nIil8fHZhbHVlPT09dW5kZWZpbmVkKXt2YXIg
Y2xhc3NOYW1lcz0odmFsdWV8fCIiKS5zcGxpdChyc3BhY2UpO2Zvcih2YXIgaT0w
LGw9dGhpcy5sZW5ndGg7aTxsO2krKyl7dmFyIGVsZW09dGhpc1tpXTtpZihlbGVt
Lm5vZGVUeXBlPT09MSYmZWxlbS5jbGFzc05hbWUpe2lmKHZhbHVlKXt2YXIgY2xh
c3NOYW1lPSgiICIrZWxlbS5jbGFzc05hbWUrIiAiKS5yZXBsYWNlKHJjbGFzcywi
ICIpO2Zvcih2YXIgYz0wLGNsPWNsYXNzTmFtZXMubGVuZ3RoO2M8Y2w7YysrKXtj
bGFzc05hbWU9Y2xhc3NOYW1lLnJlcGxhY2UoIiAiK2NsYXNzTmFtZXNbY10rIiAi
LCIgIik7fQplbGVtLmNsYXNzTmFtZT1qUXVlcnkudHJpbShjbGFzc05hbWUpO31l
bHNle2VsZW0uY2xhc3NOYW1lPSIiO319fX0KcmV0dXJuIHRoaXM7fSx0b2dnbGVD
bGFzczpmdW5jdGlvbih2YWx1ZSxzdGF0ZVZhbCl7dmFyIHR5cGU9dHlwZW9mIHZh
bHVlLGlzQm9vbD10eXBlb2Ygc3RhdGVWYWw9PT0iYm9vbGVhbiI7aWYoalF1ZXJ5
LmlzRnVuY3Rpb24odmFsdWUpKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGkp
e3ZhciBzZWxmPWpRdWVyeSh0aGlzKTtzZWxmLnRvZ2dsZUNsYXNzKHZhbHVlLmNh
bGwodGhpcyxpLHNlbGYuYXR0cigiY2xhc3MiKSxzdGF0ZVZhbCksc3RhdGVWYWwp
O30pO30KcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2lmKHR5cGU9PT0ic3Ry
aW5nIil7dmFyIGNsYXNzTmFtZSxpPTAsc2VsZj1qUXVlcnkodGhpcyksc3RhdGU9
c3RhdGVWYWwsY2xhc3NOYW1lcz12YWx1ZS5zcGxpdChyc3BhY2UpO3doaWxlKChj
bGFzc05hbWU9Y2xhc3NOYW1lc1tpKytdKSl7c3RhdGU9aXNCb29sP3N0YXRlOiFz
ZWxmLmhhc0NsYXNzKGNsYXNzTmFtZSk7c2VsZltzdGF0ZT8iYWRkQ2xhc3MiOiJy
ZW1vdmVDbGFzcyJdKGNsYXNzTmFtZSk7fX1lbHNlIGlmKHR5cGU9PT0idW5kZWZp
bmVkInx8dHlwZT09PSJib29sZWFuIil7aWYodGhpcy5jbGFzc05hbWUpe2pRdWVy
eS5kYXRhKHRoaXMsIl9fY2xhc3NOYW1lX18iLHRoaXMuY2xhc3NOYW1lKTt9CnRo
aXMuY2xhc3NOYW1lPXRoaXMuY2xhc3NOYW1lfHx2YWx1ZT09PWZhbHNlPyIiOmpR
dWVyeS5kYXRhKHRoaXMsIl9fY2xhc3NOYW1lX18iKXx8IiI7fX0pO30saGFzQ2xh
c3M6ZnVuY3Rpb24oc2VsZWN0b3Ipe3ZhciBjbGFzc05hbWU9IiAiK3NlbGVjdG9y
KyIgIjtmb3IodmFyIGk9MCxsPXRoaXMubGVuZ3RoO2k8bDtpKyspe2lmKCgiICIr
dGhpc1tpXS5jbGFzc05hbWUrIiAiKS5yZXBsYWNlKHJjbGFzcywiICIpLmluZGV4
T2YoY2xhc3NOYW1lKT4tMSl7cmV0dXJuIHRydWU7fX0KcmV0dXJuIGZhbHNlO30s
dmFsOmZ1bmN0aW9uKHZhbHVlKXtpZih2YWx1ZT09PXVuZGVmaW5lZCl7dmFyIGVs
ZW09dGhpc1swXTtpZihlbGVtKXtpZihqUXVlcnkubm9kZU5hbWUoZWxlbSwib3B0
aW9uIikpe3JldHVybihlbGVtLmF0dHJpYnV0ZXMudmFsdWV8fHt9KS5zcGVjaWZp
ZWQ/ZWxlbS52YWx1ZTplbGVtLnRleHQ7fQppZihqUXVlcnkubm9kZU5hbWUoZWxl
bSwic2VsZWN0Iikpe3ZhciBpbmRleD1lbGVtLnNlbGVjdGVkSW5kZXgsdmFsdWVz
PVtdLG9wdGlvbnM9ZWxlbS5vcHRpb25zLG9uZT1lbGVtLnR5cGU9PT0ic2VsZWN0
LW9uZSI7aWYoaW5kZXg8MCl7cmV0dXJuIG51bGw7fQpmb3IodmFyIGk9b25lP2lu
ZGV4OjAsbWF4PW9uZT9pbmRleCsxOm9wdGlvbnMubGVuZ3RoO2k8bWF4O2krKyl7
dmFyIG9wdGlvbj1vcHRpb25zW2ldO2lmKG9wdGlvbi5zZWxlY3RlZCl7dmFsdWU9
alF1ZXJ5KG9wdGlvbikudmFsKCk7aWYob25lKXtyZXR1cm4gdmFsdWU7fQp2YWx1
ZXMucHVzaCh2YWx1ZSk7fX0KcmV0dXJuIHZhbHVlczt9CmlmKHJyYWRpb2NoZWNr
LnRlc3QoZWxlbS50eXBlKSYmIWpRdWVyeS5zdXBwb3J0LmNoZWNrT24pe3JldHVy
biBlbGVtLmdldEF0dHJpYnV0ZSgidmFsdWUiKT09PW51bGw/Im9uIjplbGVtLnZh
bHVlO30KcmV0dXJuKGVsZW0udmFsdWV8fCIiKS5yZXBsYWNlKHJyZXR1cm4sIiIp
O30KcmV0dXJuIHVuZGVmaW5lZDt9CnZhciBpc0Z1bmN0aW9uPWpRdWVyeS5pc0Z1
bmN0aW9uKHZhbHVlKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGkpe3ZhciBz
ZWxmPWpRdWVyeSh0aGlzKSx2YWw9dmFsdWU7aWYodGhpcy5ub2RlVHlwZSE9PTEp
e3JldHVybjt9CmlmKGlzRnVuY3Rpb24pe3ZhbD12YWx1ZS5jYWxsKHRoaXMsaSxz
ZWxmLnZhbCgpKTt9CmlmKHR5cGVvZiB2YWw9PT0ibnVtYmVyIil7dmFsKz0iIjt9
CmlmKGpRdWVyeS5pc0FycmF5KHZhbCkmJnJyYWRpb2NoZWNrLnRlc3QodGhpcy50
eXBlKSl7dGhpcy5jaGVja2VkPWpRdWVyeS5pbkFycmF5KHNlbGYudmFsKCksdmFs
KT49MDt9ZWxzZSBpZihqUXVlcnkubm9kZU5hbWUodGhpcywic2VsZWN0Iikpe3Zh
ciB2YWx1ZXM9alF1ZXJ5Lm1ha2VBcnJheSh2YWwpO2pRdWVyeSgib3B0aW9uIix0
aGlzKS5lYWNoKGZ1bmN0aW9uKCl7dGhpcy5zZWxlY3RlZD1qUXVlcnkuaW5BcnJh
eShqUXVlcnkodGhpcykudmFsKCksdmFsdWVzKT49MDt9KTtpZighdmFsdWVzLmxl
bmd0aCl7dGhpcy5zZWxlY3RlZEluZGV4PS0xO319ZWxzZXt0aGlzLnZhbHVlPXZh
bDt9fSk7fX0pO2pRdWVyeS5leHRlbmQoe2F0dHJGbjp7dmFsOnRydWUsY3NzOnRy
dWUsaHRtbDp0cnVlLHRleHQ6dHJ1ZSxkYXRhOnRydWUsd2lkdGg6dHJ1ZSxoZWln
aHQ6dHJ1ZSxvZmZzZXQ6dHJ1ZX0sYXR0cjpmdW5jdGlvbihlbGVtLG5hbWUsdmFs
dWUscGFzcyl7aWYoIWVsZW18fGVsZW0ubm9kZVR5cGU9PT0zfHxlbGVtLm5vZGVU
eXBlPT09OCl7cmV0dXJuIHVuZGVmaW5lZDt9CmlmKHBhc3MmJm5hbWUgaW4galF1
ZXJ5LmF0dHJGbil7cmV0dXJuIGpRdWVyeShlbGVtKVtuYW1lXSh2YWx1ZSk7fQp2
YXIgbm90eG1sPWVsZW0ubm9kZVR5cGUhPT0xfHwhalF1ZXJ5LmlzWE1MRG9jKGVs
ZW0pLHNldD12YWx1ZSE9PXVuZGVmaW5lZDtuYW1lPW5vdHhtbCYmalF1ZXJ5LnBy
b3BzW25hbWVdfHxuYW1lO2lmKGVsZW0ubm9kZVR5cGU9PT0xKXt2YXIgc3BlY2lh
bD1yc3BlY2lhbHVybC50ZXN0KG5hbWUpO2lmKG5hbWU9PT0ic2VsZWN0ZWQiJiYh
alF1ZXJ5LnN1cHBvcnQub3B0U2VsZWN0ZWQpe3ZhciBwYXJlbnQ9ZWxlbS5wYXJl
bnROb2RlO2lmKHBhcmVudCl7cGFyZW50LnNlbGVjdGVkSW5kZXg7aWYocGFyZW50
LnBhcmVudE5vZGUpe3BhcmVudC5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXg7fX19
CmlmKG5hbWUgaW4gZWxlbSYmbm90eG1sJiYhc3BlY2lhbCl7aWYoc2V0KXtpZihu
YW1lPT09InR5cGUiJiZydHlwZS50ZXN0KGVsZW0ubm9kZU5hbWUpJiZlbGVtLnBh
cmVudE5vZGUpe2pRdWVyeS5lcnJvcigidHlwZSBwcm9wZXJ0eSBjYW4ndCBiZSBj
aGFuZ2VkIik7fQplbGVtW25hbWVdPXZhbHVlO30KaWYoalF1ZXJ5Lm5vZGVOYW1l
KGVsZW0sImZvcm0iKSYmZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKG5hbWUpKXtyZXR1
cm4gZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKG5hbWUpLm5vZGVWYWx1ZTt9CmlmKG5h
bWU9PT0idGFiSW5kZXgiKXt2YXIgYXR0cmlidXRlTm9kZT1lbGVtLmdldEF0dHJp
YnV0ZU5vZGUoInRhYkluZGV4Iik7cmV0dXJuIGF0dHJpYnV0ZU5vZGUmJmF0dHJp
YnV0ZU5vZGUuc3BlY2lmaWVkP2F0dHJpYnV0ZU5vZGUudmFsdWU6cmZvY3VzYWJs
ZS50ZXN0KGVsZW0ubm9kZU5hbWUpfHxyY2xpY2thYmxlLnRlc3QoZWxlbS5ub2Rl
TmFtZSkmJmVsZW0uaHJlZj8wOnVuZGVmaW5lZDt9CnJldHVybiBlbGVtW25hbWVd
O30KaWYoIWpRdWVyeS5zdXBwb3J0LnN0eWxlJiZub3R4bWwmJm5hbWU9PT0ic3R5
bGUiKXtpZihzZXQpe2VsZW0uc3R5bGUuY3NzVGV4dD0iIit2YWx1ZTt9CnJldHVy
biBlbGVtLnN0eWxlLmNzc1RleHQ7fQppZihzZXQpe2VsZW0uc2V0QXR0cmlidXRl
KG5hbWUsIiIrdmFsdWUpO30KdmFyIGF0dHI9IWpRdWVyeS5zdXBwb3J0LmhyZWZO
b3JtYWxpemVkJiZub3R4bWwmJnNwZWNpYWw/ZWxlbS5nZXRBdHRyaWJ1dGUobmFt
ZSwyKTplbGVtLmdldEF0dHJpYnV0ZShuYW1lKTtyZXR1cm4gYXR0cj09PW51bGw/
dW5kZWZpbmVkOmF0dHI7fQpyZXR1cm4galF1ZXJ5LnN0eWxlKGVsZW0sbmFtZSx2
YWx1ZSk7fX0pO3ZhciBybmFtZXNwYWNlcz0vXC4oLiopJC8sZmNsZWFudXA9ZnVu
Y3Rpb24obm0pe3JldHVybiBubS5yZXBsYWNlKC9bXlx3XHNcLlx8YF0vZyxmdW5j
dGlvbihjaCl7cmV0dXJuIlxcIitjaDt9KTt9O2pRdWVyeS5ldmVudD17YWRkOmZ1
bmN0aW9uKGVsZW0sdHlwZXMsaGFuZGxlcixkYXRhKXtpZihlbGVtLm5vZGVUeXBl
PT09M3x8ZWxlbS5ub2RlVHlwZT09PTgpe3JldHVybjt9CmlmKGVsZW0uc2V0SW50
ZXJ2YWwmJihlbGVtIT09d2luZG93JiYhZWxlbS5mcmFtZUVsZW1lbnQpKXtlbGVt
PXdpbmRvdzt9CnZhciBoYW5kbGVPYmpJbixoYW5kbGVPYmo7aWYoaGFuZGxlci5o
YW5kbGVyKXtoYW5kbGVPYmpJbj1oYW5kbGVyO2hhbmRsZXI9aGFuZGxlT2JqSW4u
aGFuZGxlcjt9CmlmKCFoYW5kbGVyLmd1aWQpe2hhbmRsZXIuZ3VpZD1qUXVlcnku
Z3VpZCsrO30KdmFyIGVsZW1EYXRhPWpRdWVyeS5kYXRhKGVsZW0pO2lmKCFlbGVt
RGF0YSl7cmV0dXJuO30KdmFyIGV2ZW50cz1lbGVtRGF0YS5ldmVudHM9ZWxlbURh
dGEuZXZlbnRzfHx7fSxldmVudEhhbmRsZT1lbGVtRGF0YS5oYW5kbGUsZXZlbnRI
YW5kbGU7aWYoIWV2ZW50SGFuZGxlKXtlbGVtRGF0YS5oYW5kbGU9ZXZlbnRIYW5k
bGU9ZnVuY3Rpb24oKXtyZXR1cm4gdHlwZW9mIGpRdWVyeSE9PSJ1bmRlZmluZWQi
JiYhalF1ZXJ5LmV2ZW50LnRyaWdnZXJlZD9qUXVlcnkuZXZlbnQuaGFuZGxlLmFw
cGx5KGV2ZW50SGFuZGxlLmVsZW0sYXJndW1lbnRzKTp1bmRlZmluZWQ7fTt9CmV2
ZW50SGFuZGxlLmVsZW09ZWxlbTt0eXBlcz10eXBlcy5zcGxpdCgiICIpO3ZhciB0
eXBlLGk9MCxuYW1lc3BhY2VzO3doaWxlKCh0eXBlPXR5cGVzW2krK10pKXtoYW5k
bGVPYmo9aGFuZGxlT2JqSW4/alF1ZXJ5LmV4dGVuZCh7fSxoYW5kbGVPYmpJbik6
e2hhbmRsZXI6aGFuZGxlcixkYXRhOmRhdGF9O2lmKHR5cGUuaW5kZXhPZigiLiIp
Pi0xKXtuYW1lc3BhY2VzPXR5cGUuc3BsaXQoIi4iKTt0eXBlPW5hbWVzcGFjZXMu
c2hpZnQoKTtoYW5kbGVPYmoubmFtZXNwYWNlPW5hbWVzcGFjZXMuc2xpY2UoMCku
c29ydCgpLmpvaW4oIi4iKTt9ZWxzZXtuYW1lc3BhY2VzPVtdO2hhbmRsZU9iai5u
YW1lc3BhY2U9IiI7fQpoYW5kbGVPYmoudHlwZT10eXBlO2hhbmRsZU9iai5ndWlk
PWhhbmRsZXIuZ3VpZDt2YXIgaGFuZGxlcnM9ZXZlbnRzW3R5cGVdLHNwZWNpYWw9
alF1ZXJ5LmV2ZW50LnNwZWNpYWxbdHlwZV18fHt9O2lmKCFoYW5kbGVycyl7aGFu
ZGxlcnM9ZXZlbnRzW3R5cGVdPVtdO2lmKCFzcGVjaWFsLnNldHVwfHxzcGVjaWFs
LnNldHVwLmNhbGwoZWxlbSxkYXRhLG5hbWVzcGFjZXMsZXZlbnRIYW5kbGUpPT09
ZmFsc2Upe2lmKGVsZW0uYWRkRXZlbnRMaXN0ZW5lcil7ZWxlbS5hZGRFdmVudExp
c3RlbmVyKHR5cGUsZXZlbnRIYW5kbGUsZmFsc2UpO31lbHNlIGlmKGVsZW0uYXR0
YWNoRXZlbnQpe2VsZW0uYXR0YWNoRXZlbnQoIm9uIit0eXBlLGV2ZW50SGFuZGxl
KTt9fX0KaWYoc3BlY2lhbC5hZGQpe3NwZWNpYWwuYWRkLmNhbGwoZWxlbSxoYW5k
bGVPYmopO2lmKCFoYW5kbGVPYmouaGFuZGxlci5ndWlkKXtoYW5kbGVPYmouaGFu
ZGxlci5ndWlkPWhhbmRsZXIuZ3VpZDt9fQpoYW5kbGVycy5wdXNoKGhhbmRsZU9i
aik7alF1ZXJ5LmV2ZW50Lmdsb2JhbFt0eXBlXT10cnVlO30KZWxlbT1udWxsO30s
Z2xvYmFsOnt9LHJlbW92ZTpmdW5jdGlvbihlbGVtLHR5cGVzLGhhbmRsZXIscG9z
KXtpZihlbGVtLm5vZGVUeXBlPT09M3x8ZWxlbS5ub2RlVHlwZT09PTgpe3JldHVy
bjt9CnZhciByZXQsdHlwZSxmbixpPTAsYWxsLG5hbWVzcGFjZXMsbmFtZXNwYWNl
LHNwZWNpYWwsZXZlbnRUeXBlLGhhbmRsZU9iaixvcmlnVHlwZSxlbGVtRGF0YT1q
UXVlcnkuZGF0YShlbGVtKSxldmVudHM9ZWxlbURhdGEmJmVsZW1EYXRhLmV2ZW50
cztpZighZWxlbURhdGF8fCFldmVudHMpe3JldHVybjt9CmlmKHR5cGVzJiZ0eXBl
cy50eXBlKXtoYW5kbGVyPXR5cGVzLmhhbmRsZXI7dHlwZXM9dHlwZXMudHlwZTt9
CmlmKCF0eXBlc3x8dHlwZW9mIHR5cGVzPT09InN0cmluZyImJnR5cGVzLmNoYXJB
dCgwKT09PSIuIil7dHlwZXM9dHlwZXN8fCIiO2Zvcih0eXBlIGluIGV2ZW50cyl7
alF1ZXJ5LmV2ZW50LnJlbW92ZShlbGVtLHR5cGUrdHlwZXMpO30KcmV0dXJuO30K
dHlwZXM9dHlwZXMuc3BsaXQoIiAiKTt3aGlsZSgodHlwZT10eXBlc1tpKytdKSl7
b3JpZ1R5cGU9dHlwZTtoYW5kbGVPYmo9bnVsbDthbGw9dHlwZS5pbmRleE9mKCIu
Iik8MDtuYW1lc3BhY2VzPVtdO2lmKCFhbGwpe25hbWVzcGFjZXM9dHlwZS5zcGxp
dCgiLiIpO3R5cGU9bmFtZXNwYWNlcy5zaGlmdCgpO25hbWVzcGFjZT1uZXcgUmVn
RXhwKCIoXnxcXC4pIisKalF1ZXJ5Lm1hcChuYW1lc3BhY2VzLnNsaWNlKDApLnNv
cnQoKSxmY2xlYW51cCkuam9pbigiXFwuKD86LipcXC4pPyIpKyIoXFwufCQpIil9
CmV2ZW50VHlwZT1ldmVudHNbdHlwZV07aWYoIWV2ZW50VHlwZSl7Y29udGludWU7
fQppZighaGFuZGxlcil7Zm9yKHZhciBqPTA7ajxldmVudFR5cGUubGVuZ3RoO2or
Kyl7aGFuZGxlT2JqPWV2ZW50VHlwZVtqXTtpZihhbGx8fG5hbWVzcGFjZS50ZXN0
KGhhbmRsZU9iai5uYW1lc3BhY2UpKXtqUXVlcnkuZXZlbnQucmVtb3ZlKGVsZW0s
b3JpZ1R5cGUsaGFuZGxlT2JqLmhhbmRsZXIsaik7ZXZlbnRUeXBlLnNwbGljZShq
LS0sMSk7fX0KY29udGludWU7fQpzcGVjaWFsPWpRdWVyeS5ldmVudC5zcGVjaWFs
W3R5cGVdfHx7fTtmb3IodmFyIGo9cG9zfHwwO2o8ZXZlbnRUeXBlLmxlbmd0aDtq
Kyspe2hhbmRsZU9iaj1ldmVudFR5cGVbal07aWYoaGFuZGxlci5ndWlkPT09aGFu
ZGxlT2JqLmd1aWQpe2lmKGFsbHx8bmFtZXNwYWNlLnRlc3QoaGFuZGxlT2JqLm5h
bWVzcGFjZSkpe2lmKHBvcz09bnVsbCl7ZXZlbnRUeXBlLnNwbGljZShqLS0sMSk7
fQppZihzcGVjaWFsLnJlbW92ZSl7c3BlY2lhbC5yZW1vdmUuY2FsbChlbGVtLGhh
bmRsZU9iaik7fX0KaWYocG9zIT1udWxsKXticmVhazt9fX0KaWYoZXZlbnRUeXBl
Lmxlbmd0aD09PTB8fHBvcyE9bnVsbCYmZXZlbnRUeXBlLmxlbmd0aD09PTEpe2lm
KCFzcGVjaWFsLnRlYXJkb3dufHxzcGVjaWFsLnRlYXJkb3duLmNhbGwoZWxlbSxu
YW1lc3BhY2VzKT09PWZhbHNlKXtyZW1vdmVFdmVudChlbGVtLHR5cGUsZWxlbURh
dGEuaGFuZGxlKTt9CnJldD1udWxsO2RlbGV0ZSBldmVudHNbdHlwZV07fX0KaWYo
alF1ZXJ5LmlzRW1wdHlPYmplY3QoZXZlbnRzKSl7dmFyIGhhbmRsZT1lbGVtRGF0
YS5oYW5kbGU7aWYoaGFuZGxlKXtoYW5kbGUuZWxlbT1udWxsO30KZGVsZXRlIGVs
ZW1EYXRhLmV2ZW50cztkZWxldGUgZWxlbURhdGEuaGFuZGxlO2lmKGpRdWVyeS5p
c0VtcHR5T2JqZWN0KGVsZW1EYXRhKSl7alF1ZXJ5LnJlbW92ZURhdGEoZWxlbSk7
fX19LHRyaWdnZXI6ZnVuY3Rpb24oZXZlbnQsZGF0YSxlbGVtKXt2YXIgdHlwZT1l
dmVudC50eXBlfHxldmVudCxidWJibGluZz1hcmd1bWVudHNbM107aWYoIWJ1YmJs
aW5nKXtldmVudD10eXBlb2YgZXZlbnQ9PT0ib2JqZWN0Ij9ldmVudFtleHBhbmRv
XT9ldmVudDpqUXVlcnkuZXh0ZW5kKGpRdWVyeS5FdmVudCh0eXBlKSxldmVudCk6
alF1ZXJ5LkV2ZW50KHR5cGUpO2lmKHR5cGUuaW5kZXhPZigiISIpPj0wKXtldmVu
dC50eXBlPXR5cGU9dHlwZS5zbGljZSgwLC0xKTtldmVudC5leGNsdXNpdmU9dHJ1
ZTt9CmlmKCFlbGVtKXtldmVudC5zdG9wUHJvcGFnYXRpb24oKTtpZihqUXVlcnku
ZXZlbnQuZ2xvYmFsW3R5cGVdKXtqUXVlcnkuZWFjaChqUXVlcnkuY2FjaGUsZnVu
Y3Rpb24oKXtpZih0aGlzLmV2ZW50cyYmdGhpcy5ldmVudHNbdHlwZV0pe2pRdWVy
eS5ldmVudC50cmlnZ2VyKGV2ZW50LGRhdGEsdGhpcy5oYW5kbGUuZWxlbSk7fX0p
O319CmlmKCFlbGVtfHxlbGVtLm5vZGVUeXBlPT09M3x8ZWxlbS5ub2RlVHlwZT09
PTgpe3JldHVybiB1bmRlZmluZWQ7fQpldmVudC5yZXN1bHQ9dW5kZWZpbmVkO2V2
ZW50LnRhcmdldD1lbGVtO2RhdGE9alF1ZXJ5Lm1ha2VBcnJheShkYXRhKTtkYXRh
LnVuc2hpZnQoZXZlbnQpO30KZXZlbnQuY3VycmVudFRhcmdldD1lbGVtO3ZhciBo
YW5kbGU9alF1ZXJ5LmRhdGEoZWxlbSwiaGFuZGxlIik7aWYoaGFuZGxlKXtoYW5k
bGUuYXBwbHkoZWxlbSxkYXRhKTt9CnZhciBwYXJlbnQ9ZWxlbS5wYXJlbnROb2Rl
fHxlbGVtLm93bmVyRG9jdW1lbnQ7dHJ5e2lmKCEoZWxlbSYmZWxlbS5ub2RlTmFt
ZSYmalF1ZXJ5Lm5vRGF0YVtlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldKSl7
aWYoZWxlbVsib24iK3R5cGVdJiZlbGVtWyJvbiIrdHlwZV0uYXBwbHkoZWxlbSxk
YXRhKT09PWZhbHNlKXtldmVudC5yZXN1bHQ9ZmFsc2U7fX19Y2F0Y2goZSl7fQpp
ZighZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSYmcGFyZW50KXtqUXVlcnku
ZXZlbnQudHJpZ2dlcihldmVudCxkYXRhLHBhcmVudCx0cnVlKTt9ZWxzZSBpZigh
ZXZlbnQuaXNEZWZhdWx0UHJldmVudGVkKCkpe3ZhciB0YXJnZXQ9ZXZlbnQudGFy
Z2V0LG9sZCxpc0NsaWNrPWpRdWVyeS5ub2RlTmFtZSh0YXJnZXQsImEiKSYmdHlw
ZT09PSJjbGljayIsc3BlY2lhbD1qUXVlcnkuZXZlbnQuc3BlY2lhbFt0eXBlXXx8
e307aWYoKCFzcGVjaWFsLl9kZWZhdWx0fHxzcGVjaWFsLl9kZWZhdWx0LmNhbGwo
ZWxlbSxldmVudCk9PT1mYWxzZSkmJiFpc0NsaWNrJiYhKHRhcmdldCYmdGFyZ2V0
Lm5vZGVOYW1lJiZqUXVlcnkubm9EYXRhW3RhcmdldC5ub2RlTmFtZS50b0xvd2Vy
Q2FzZSgpXSkpe3RyeXtpZih0YXJnZXRbdHlwZV0pe29sZD10YXJnZXRbIm9uIit0
eXBlXTtpZihvbGQpe3RhcmdldFsib24iK3R5cGVdPW51bGw7fQpqUXVlcnkuZXZl
bnQudHJpZ2dlcmVkPXRydWU7dGFyZ2V0W3R5cGVdKCk7fX1jYXRjaChlKXt9Cmlm
KG9sZCl7dGFyZ2V0WyJvbiIrdHlwZV09b2xkO30KalF1ZXJ5LmV2ZW50LnRyaWdn
ZXJlZD1mYWxzZTt9fX0saGFuZGxlOmZ1bmN0aW9uKGV2ZW50KXt2YXIgYWxsLGhh
bmRsZXJzLG5hbWVzcGFjZXMsbmFtZXNwYWNlLGV2ZW50cztldmVudD1hcmd1bWVu
dHNbMF09alF1ZXJ5LmV2ZW50LmZpeChldmVudHx8d2luZG93LmV2ZW50KTtldmVu
dC5jdXJyZW50VGFyZ2V0PXRoaXM7YWxsPWV2ZW50LnR5cGUuaW5kZXhPZigiLiIp
PDAmJiFldmVudC5leGNsdXNpdmU7aWYoIWFsbCl7bmFtZXNwYWNlcz1ldmVudC50
eXBlLnNwbGl0KCIuIik7ZXZlbnQudHlwZT1uYW1lc3BhY2VzLnNoaWZ0KCk7bmFt
ZXNwYWNlPW5ldyBSZWdFeHAoIihefFxcLikiK25hbWVzcGFjZXMuc2xpY2UoMCku
c29ydCgpLmpvaW4oIlxcLig/Oi4qXFwuKT8iKSsiKFxcLnwkKSIpO30KdmFyIGV2
ZW50cz1qUXVlcnkuZGF0YSh0aGlzLCJldmVudHMiKSxoYW5kbGVycz1ldmVudHNb
ZXZlbnQudHlwZV07aWYoZXZlbnRzJiZoYW5kbGVycyl7aGFuZGxlcnM9aGFuZGxl
cnMuc2xpY2UoMCk7Zm9yKHZhciBqPTAsbD1oYW5kbGVycy5sZW5ndGg7ajxsO2or
Kyl7dmFyIGhhbmRsZU9iaj1oYW5kbGVyc1tqXTtpZihhbGx8fG5hbWVzcGFjZS50
ZXN0KGhhbmRsZU9iai5uYW1lc3BhY2UpKXtldmVudC5oYW5kbGVyPWhhbmRsZU9i
ai5oYW5kbGVyO2V2ZW50LmRhdGE9aGFuZGxlT2JqLmRhdGE7ZXZlbnQuaGFuZGxl
T2JqPWhhbmRsZU9iajt2YXIgcmV0PWhhbmRsZU9iai5oYW5kbGVyLmFwcGx5KHRo
aXMsYXJndW1lbnRzKTtpZihyZXQhPT11bmRlZmluZWQpe2V2ZW50LnJlc3VsdD1y
ZXQ7aWYocmV0PT09ZmFsc2Upe2V2ZW50LnByZXZlbnREZWZhdWx0KCk7ZXZlbnQu
c3RvcFByb3BhZ2F0aW9uKCk7fX0KaWYoZXZlbnQuaXNJbW1lZGlhdGVQcm9wYWdh
dGlvblN0b3BwZWQoKSl7YnJlYWs7fX19fQpyZXR1cm4gZXZlbnQucmVzdWx0O30s
cHJvcHM6ImFsdEtleSBhdHRyQ2hhbmdlIGF0dHJOYW1lIGJ1YmJsZXMgYnV0dG9u
IGNhbmNlbGFibGUgY2hhckNvZGUgY2xpZW50WCBjbGllbnRZIGN0cmxLZXkgY3Vy
cmVudFRhcmdldCBkYXRhIGRldGFpbCBldmVudFBoYXNlIGZyb21FbGVtZW50IGhh
bmRsZXIga2V5Q29kZSBsYXllclggbGF5ZXJZIG1ldGFLZXkgbmV3VmFsdWUgb2Zm
c2V0WCBvZmZzZXRZIG9yaWdpbmFsVGFyZ2V0IHBhZ2VYIHBhZ2VZIHByZXZWYWx1
ZSByZWxhdGVkTm9kZSByZWxhdGVkVGFyZ2V0IHNjcmVlblggc2NyZWVuWSBzaGlm
dEtleSBzcmNFbGVtZW50IHRhcmdldCB0b0VsZW1lbnQgdmlldyB3aGVlbERlbHRh
IHdoaWNoIi5zcGxpdCgiICIpLGZpeDpmdW5jdGlvbihldmVudCl7aWYoZXZlbnRb
ZXhwYW5kb10pe3JldHVybiBldmVudDt9CnZhciBvcmlnaW5hbEV2ZW50PWV2ZW50
O2V2ZW50PWpRdWVyeS5FdmVudChvcmlnaW5hbEV2ZW50KTtmb3IodmFyIGk9dGhp
cy5wcm9wcy5sZW5ndGgscHJvcDtpOyl7cHJvcD10aGlzLnByb3BzWy0taV07ZXZl
bnRbcHJvcF09b3JpZ2luYWxFdmVudFtwcm9wXTt9CmlmKCFldmVudC50YXJnZXQp
e2V2ZW50LnRhcmdldD1ldmVudC5zcmNFbGVtZW50fHxkb2N1bWVudDt9CmlmKGV2
ZW50LnRhcmdldC5ub2RlVHlwZT09PTMpe2V2ZW50LnRhcmdldD1ldmVudC50YXJn
ZXQucGFyZW50Tm9kZTt9CmlmKCFldmVudC5yZWxhdGVkVGFyZ2V0JiZldmVudC5m
cm9tRWxlbWVudCl7ZXZlbnQucmVsYXRlZFRhcmdldD1ldmVudC5mcm9tRWxlbWVu
dD09PWV2ZW50LnRhcmdldD9ldmVudC50b0VsZW1lbnQ6ZXZlbnQuZnJvbUVsZW1l
bnQ7fQppZihldmVudC5wYWdlWD09bnVsbCYmZXZlbnQuY2xpZW50WCE9bnVsbCl7
dmFyIGRvYz1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsYm9keT1kb2N1bWVudC5i
b2R5O2V2ZW50LnBhZ2VYPWV2ZW50LmNsaWVudFgrKGRvYyYmZG9jLnNjcm9sbExl
ZnR8fGJvZHkmJmJvZHkuc2Nyb2xsTGVmdHx8MCktKGRvYyYmZG9jLmNsaWVudExl
ZnR8fGJvZHkmJmJvZHkuY2xpZW50TGVmdHx8MCk7ZXZlbnQucGFnZVk9ZXZlbnQu
Y2xpZW50WSsoZG9jJiZkb2Muc2Nyb2xsVG9wfHxib2R5JiZib2R5LnNjcm9sbFRv
cHx8MCktKGRvYyYmZG9jLmNsaWVudFRvcHx8Ym9keSYmYm9keS5jbGllbnRUb3B8
fDApO30KaWYoIWV2ZW50LndoaWNoJiYoKGV2ZW50LmNoYXJDb2RlfHxldmVudC5j
aGFyQ29kZT09PTApP2V2ZW50LmNoYXJDb2RlOmV2ZW50LmtleUNvZGUpKXtldmVu
dC53aGljaD1ldmVudC5jaGFyQ29kZXx8ZXZlbnQua2V5Q29kZTt9CmlmKCFldmVu
dC5tZXRhS2V5JiZldmVudC5jdHJsS2V5KXtldmVudC5tZXRhS2V5PWV2ZW50LmN0
cmxLZXk7fQppZighZXZlbnQud2hpY2gmJmV2ZW50LmJ1dHRvbiE9PXVuZGVmaW5l
ZCl7ZXZlbnQud2hpY2g9KGV2ZW50LmJ1dHRvbiYxPzE6KGV2ZW50LmJ1dHRvbiYy
PzM6KGV2ZW50LmJ1dHRvbiY0PzI6MCkpKTt9CnJldHVybiBldmVudDt9LGd1aWQ6
MUU4LHByb3h5OmpRdWVyeS5wcm94eSxzcGVjaWFsOntyZWFkeTp7c2V0dXA6alF1
ZXJ5LmJpbmRSZWFkeSx0ZWFyZG93bjpqUXVlcnkubm9vcH0sbGl2ZTp7YWRkOmZ1
bmN0aW9uKGhhbmRsZU9iail7alF1ZXJ5LmV2ZW50LmFkZCh0aGlzLGhhbmRsZU9i
ai5vcmlnVHlwZSxqUXVlcnkuZXh0ZW5kKHt9LGhhbmRsZU9iaix7aGFuZGxlcjps
aXZlSGFuZGxlcn0pKTt9LHJlbW92ZTpmdW5jdGlvbihoYW5kbGVPYmope3ZhciBy
ZW1vdmU9dHJ1ZSx0eXBlPWhhbmRsZU9iai5vcmlnVHlwZS5yZXBsYWNlKHJuYW1l
c3BhY2VzLCIiKTtqUXVlcnkuZWFjaChqUXVlcnkuZGF0YSh0aGlzLCJldmVudHMi
KS5saXZlfHxbXSxmdW5jdGlvbigpe2lmKHR5cGU9PT10aGlzLm9yaWdUeXBlLnJl
cGxhY2Uocm5hbWVzcGFjZXMsIiIpKXtyZW1vdmU9ZmFsc2U7cmV0dXJuIGZhbHNl
O319KTtpZihyZW1vdmUpe2pRdWVyeS5ldmVudC5yZW1vdmUodGhpcyxoYW5kbGVP
Ymoub3JpZ1R5cGUsbGl2ZUhhbmRsZXIpO319fSxiZWZvcmV1bmxvYWQ6e3NldHVw
OmZ1bmN0aW9uKGRhdGEsbmFtZXNwYWNlcyxldmVudEhhbmRsZSl7aWYodGhpcy5z
ZXRJbnRlcnZhbCl7dGhpcy5vbmJlZm9yZXVubG9hZD1ldmVudEhhbmRsZTt9CnJl
dHVybiBmYWxzZTt9LHRlYXJkb3duOmZ1bmN0aW9uKG5hbWVzcGFjZXMsZXZlbnRI
YW5kbGUpe2lmKHRoaXMub25iZWZvcmV1bmxvYWQ9PT1ldmVudEhhbmRsZSl7dGhp
cy5vbmJlZm9yZXVubG9hZD1udWxsO319fX19O3ZhciByZW1vdmVFdmVudD1kb2N1
bWVudC5yZW1vdmVFdmVudExpc3RlbmVyP2Z1bmN0aW9uKGVsZW0sdHlwZSxoYW5k
bGUpe2VsZW0ucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLGhhbmRsZSxmYWxzZSk7
fTpmdW5jdGlvbihlbGVtLHR5cGUsaGFuZGxlKXtlbGVtLmRldGFjaEV2ZW50KCJv
biIrdHlwZSxoYW5kbGUpO307alF1ZXJ5LkV2ZW50PWZ1bmN0aW9uKHNyYyl7aWYo
IXRoaXMucHJldmVudERlZmF1bHQpe3JldHVybiBuZXcgalF1ZXJ5LkV2ZW50KHNy
Yyk7fQppZihzcmMmJnNyYy50eXBlKXt0aGlzLm9yaWdpbmFsRXZlbnQ9c3JjO3Ro
aXMudHlwZT1zcmMudHlwZTt9ZWxzZXt0aGlzLnR5cGU9c3JjO30KdGhpcy50aW1l
U3RhbXA9bm93KCk7dGhpc1tleHBhbmRvXT10cnVlO307ZnVuY3Rpb24gcmV0dXJu
RmFsc2UoKXtyZXR1cm4gZmFsc2U7fQpmdW5jdGlvbiByZXR1cm5UcnVlKCl7cmV0
dXJuIHRydWU7fQpqUXVlcnkuRXZlbnQucHJvdG90eXBlPXtwcmV2ZW50RGVmYXVs
dDpmdW5jdGlvbigpe3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPXJldHVyblRydWU7
dmFyIGU9dGhpcy5vcmlnaW5hbEV2ZW50O2lmKCFlKXtyZXR1cm47fQppZihlLnBy
ZXZlbnREZWZhdWx0KXtlLnByZXZlbnREZWZhdWx0KCk7fQplLnJldHVyblZhbHVl
PWZhbHNlO30sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dGhpcy5pc1Byb3Bh
Z2F0aW9uU3RvcHBlZD1yZXR1cm5UcnVlO3ZhciBlPXRoaXMub3JpZ2luYWxFdmVu
dDtpZighZSl7cmV0dXJuO30KaWYoZS5zdG9wUHJvcGFnYXRpb24pe2Uuc3RvcFBy
b3BhZ2F0aW9uKCk7fQplLmNhbmNlbEJ1YmJsZT10cnVlO30sc3RvcEltbWVkaWF0
ZVByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0
aW9uU3RvcHBlZD1yZXR1cm5UcnVlO3RoaXMuc3RvcFByb3BhZ2F0aW9uKCk7fSxp
c0RlZmF1bHRQcmV2ZW50ZWQ6cmV0dXJuRmFsc2UsaXNQcm9wYWdhdGlvblN0b3Bw
ZWQ6cmV0dXJuRmFsc2UsaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ6cmV0
dXJuRmFsc2V9O3ZhciB3aXRoaW5FbGVtZW50PWZ1bmN0aW9uKGV2ZW50KXt2YXIg
cGFyZW50PWV2ZW50LnJlbGF0ZWRUYXJnZXQ7dHJ5e3doaWxlKHBhcmVudCYmcGFy
ZW50IT09dGhpcyl7cGFyZW50PXBhcmVudC5wYXJlbnROb2RlO30KaWYocGFyZW50
IT09dGhpcyl7ZXZlbnQudHlwZT1ldmVudC5kYXRhO2pRdWVyeS5ldmVudC5oYW5k
bGUuYXBwbHkodGhpcyxhcmd1bWVudHMpO319Y2F0Y2goZSl7fX0sZGVsZWdhdGU9
ZnVuY3Rpb24oZXZlbnQpe2V2ZW50LnR5cGU9ZXZlbnQuZGF0YTtqUXVlcnkuZXZl
bnQuaGFuZGxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt9O2pRdWVyeS5lYWNoKHtt
b3VzZWVudGVyOiJtb3VzZW92ZXIiLG1vdXNlbGVhdmU6Im1vdXNlb3V0In0sZnVu
Y3Rpb24ob3JpZyxmaXgpe2pRdWVyeS5ldmVudC5zcGVjaWFsW29yaWddPXtzZXR1
cDpmdW5jdGlvbihkYXRhKXtqUXVlcnkuZXZlbnQuYWRkKHRoaXMsZml4LGRhdGEm
JmRhdGEuc2VsZWN0b3I/ZGVsZWdhdGU6d2l0aGluRWxlbWVudCxvcmlnKTt9LHRl
YXJkb3duOmZ1bmN0aW9uKGRhdGEpe2pRdWVyeS5ldmVudC5yZW1vdmUodGhpcyxm
aXgsZGF0YSYmZGF0YS5zZWxlY3Rvcj9kZWxlZ2F0ZTp3aXRoaW5FbGVtZW50KTt9
fTt9KTtpZighalF1ZXJ5LnN1cHBvcnQuc3VibWl0QnViYmxlcyl7alF1ZXJ5LmV2
ZW50LnNwZWNpYWwuc3VibWl0PXtzZXR1cDpmdW5jdGlvbihkYXRhLG5hbWVzcGFj
ZXMpe2lmKHRoaXMubm9kZU5hbWUudG9Mb3dlckNhc2UoKSE9PSJmb3JtIil7alF1
ZXJ5LmV2ZW50LmFkZCh0aGlzLCJjbGljay5zcGVjaWFsU3VibWl0IixmdW5jdGlv
bihlKXt2YXIgZWxlbT1lLnRhcmdldCx0eXBlPWVsZW0udHlwZTtpZigodHlwZT09
PSJzdWJtaXQifHx0eXBlPT09ImltYWdlIikmJmpRdWVyeShlbGVtKS5jbG9zZXN0
KCJmb3JtIikubGVuZ3RoKXtyZXR1cm4gdHJpZ2dlcigic3VibWl0Iix0aGlzLGFy
Z3VtZW50cyk7fX0pO2pRdWVyeS5ldmVudC5hZGQodGhpcywia2V5cHJlc3Muc3Bl
Y2lhbFN1Ym1pdCIsZnVuY3Rpb24oZSl7dmFyIGVsZW09ZS50YXJnZXQsdHlwZT1l
bGVtLnR5cGU7aWYoKHR5cGU9PT0idGV4dCJ8fHR5cGU9PT0icGFzc3dvcmQiKSYm
alF1ZXJ5KGVsZW0pLmNsb3Nlc3QoImZvcm0iKS5sZW5ndGgmJmUua2V5Q29kZT09
PTEzKXtyZXR1cm4gdHJpZ2dlcigic3VibWl0Iix0aGlzLGFyZ3VtZW50cyk7fX0p
O31lbHNle3JldHVybiBmYWxzZTt9fSx0ZWFyZG93bjpmdW5jdGlvbihuYW1lc3Bh
Y2VzKXtqUXVlcnkuZXZlbnQucmVtb3ZlKHRoaXMsIi5zcGVjaWFsU3VibWl0Iik7
fX07fQppZighalF1ZXJ5LnN1cHBvcnQuY2hhbmdlQnViYmxlcyl7dmFyIGZvcm1F
bGVtcz0vdGV4dGFyZWF8aW5wdXR8c2VsZWN0L2ksY2hhbmdlRmlsdGVycyxnZXRW
YWw9ZnVuY3Rpb24oZWxlbSl7dmFyIHR5cGU9ZWxlbS50eXBlLHZhbD1lbGVtLnZh
bHVlO2lmKHR5cGU9PT0icmFkaW8ifHx0eXBlPT09ImNoZWNrYm94Iil7dmFsPWVs
ZW0uY2hlY2tlZDt9ZWxzZSBpZih0eXBlPT09InNlbGVjdC1tdWx0aXBsZSIpe3Zh
bD1lbGVtLnNlbGVjdGVkSW5kZXg+LTE/alF1ZXJ5Lm1hcChlbGVtLm9wdGlvbnMs
ZnVuY3Rpb24oZWxlbSl7cmV0dXJuIGVsZW0uc2VsZWN0ZWQ7fSkuam9pbigiLSIp
OiIiO31lbHNlIGlmKGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PSJzZWxl
Y3QiKXt2YWw9ZWxlbS5zZWxlY3RlZEluZGV4O30KcmV0dXJuIHZhbDt9LHRlc3RD
aGFuZ2U9ZnVuY3Rpb24gdGVzdENoYW5nZShlKXt2YXIgZWxlbT1lLnRhcmdldCxk
YXRhLHZhbDtpZighZm9ybUVsZW1zLnRlc3QoZWxlbS5ub2RlTmFtZSl8fGVsZW0u
cmVhZE9ubHkpe3JldHVybjt9CmRhdGE9alF1ZXJ5LmRhdGEoZWxlbSwiX2NoYW5n
ZV9kYXRhIik7dmFsPWdldFZhbChlbGVtKTtpZihlLnR5cGUhPT0iZm9jdXNvdXQi
fHxlbGVtLnR5cGUhPT0icmFkaW8iKXtqUXVlcnkuZGF0YShlbGVtLCJfY2hhbmdl
X2RhdGEiLHZhbCk7fQppZihkYXRhPT09dW5kZWZpbmVkfHx2YWw9PT1kYXRhKXty
ZXR1cm47fQppZihkYXRhIT1udWxsfHx2YWwpe2UudHlwZT0iY2hhbmdlIjtyZXR1
cm4galF1ZXJ5LmV2ZW50LnRyaWdnZXIoZSxhcmd1bWVudHNbMV0sZWxlbSk7fX07
alF1ZXJ5LmV2ZW50LnNwZWNpYWwuY2hhbmdlPXtmaWx0ZXJzOntmb2N1c291dDp0
ZXN0Q2hhbmdlLGNsaWNrOmZ1bmN0aW9uKGUpe3ZhciBlbGVtPWUudGFyZ2V0LHR5
cGU9ZWxlbS50eXBlO2lmKHR5cGU9PT0icmFkaW8ifHx0eXBlPT09ImNoZWNrYm94
Inx8ZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09InNlbGVjdCIpe3JldHVy
biB0ZXN0Q2hhbmdlLmNhbGwodGhpcyxlKTt9fSxrZXlkb3duOmZ1bmN0aW9uKGUp
e3ZhciBlbGVtPWUudGFyZ2V0LHR5cGU9ZWxlbS50eXBlO2lmKChlLmtleUNvZGU9
PT0xMyYmZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpIT09InRleHRhcmVhIil8
fChlLmtleUNvZGU9PT0zMiYmKHR5cGU9PT0iY2hlY2tib3gifHx0eXBlPT09InJh
ZGlvIikpfHx0eXBlPT09InNlbGVjdC1tdWx0aXBsZSIpe3JldHVybiB0ZXN0Q2hh
bmdlLmNhbGwodGhpcyxlKTt9fSxiZWZvcmVhY3RpdmF0ZTpmdW5jdGlvbihlKXt2
YXIgZWxlbT1lLnRhcmdldDtqUXVlcnkuZGF0YShlbGVtLCJfY2hhbmdlX2RhdGEi
LGdldFZhbChlbGVtKSk7fX0sc2V0dXA6ZnVuY3Rpb24oZGF0YSxuYW1lc3BhY2Vz
KXtpZih0aGlzLnR5cGU9PT0iZmlsZSIpe3JldHVybiBmYWxzZTt9CmZvcih2YXIg
dHlwZSBpbiBjaGFuZ2VGaWx0ZXJzKXtqUXVlcnkuZXZlbnQuYWRkKHRoaXMsdHlw
ZSsiLnNwZWNpYWxDaGFuZ2UiLGNoYW5nZUZpbHRlcnNbdHlwZV0pO30KcmV0dXJu
IGZvcm1FbGVtcy50ZXN0KHRoaXMubm9kZU5hbWUpO30sdGVhcmRvd246ZnVuY3Rp
b24obmFtZXNwYWNlcyl7alF1ZXJ5LmV2ZW50LnJlbW92ZSh0aGlzLCIuc3BlY2lh
bENoYW5nZSIpO3JldHVybiBmb3JtRWxlbXMudGVzdCh0aGlzLm5vZGVOYW1lKTt9
fTtjaGFuZ2VGaWx0ZXJzPWpRdWVyeS5ldmVudC5zcGVjaWFsLmNoYW5nZS5maWx0
ZXJzO30KZnVuY3Rpb24gdHJpZ2dlcih0eXBlLGVsZW0sYXJncyl7YXJnc1swXS50
eXBlPXR5cGU7cmV0dXJuIGpRdWVyeS5ldmVudC5oYW5kbGUuYXBwbHkoZWxlbSxh
cmdzKTt9CmlmKGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIpe2pRdWVyeS5lYWNo
KHtmb2N1czoiZm9jdXNpbiIsYmx1cjoiZm9jdXNvdXQifSxmdW5jdGlvbihvcmln
LGZpeCl7alF1ZXJ5LmV2ZW50LnNwZWNpYWxbZml4XT17c2V0dXA6ZnVuY3Rpb24o
KXt0aGlzLmFkZEV2ZW50TGlzdGVuZXIob3JpZyxoYW5kbGVyLHRydWUpO30sdGVh
cmRvd246ZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIob3JpZyxo
YW5kbGVyLHRydWUpO319O2Z1bmN0aW9uIGhhbmRsZXIoZSl7ZT1qUXVlcnkuZXZl
bnQuZml4KGUpO2UudHlwZT1maXg7cmV0dXJuIGpRdWVyeS5ldmVudC5oYW5kbGUu
Y2FsbCh0aGlzLGUpO319KTt9CmpRdWVyeS5lYWNoKFsiYmluZCIsIm9uZSJdLGZ1
bmN0aW9uKGksbmFtZSl7alF1ZXJ5LmZuW25hbWVdPWZ1bmN0aW9uKHR5cGUsZGF0
YSxmbil7aWYodHlwZW9mIHR5cGU9PT0ib2JqZWN0Iil7Zm9yKHZhciBrZXkgaW4g
dHlwZSl7dGhpc1tuYW1lXShrZXksZGF0YSx0eXBlW2tleV0sZm4pO30KcmV0dXJu
IHRoaXM7fQppZihqUXVlcnkuaXNGdW5jdGlvbihkYXRhKSl7Zm49ZGF0YTtkYXRh
PXVuZGVmaW5lZDt9CnZhciBoYW5kbGVyPW5hbWU9PT0ib25lIj9qUXVlcnkucHJv
eHkoZm4sZnVuY3Rpb24oZXZlbnQpe2pRdWVyeSh0aGlzKS51bmJpbmQoZXZlbnQs
aGFuZGxlcik7cmV0dXJuIGZuLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt9KTpmbjtp
Zih0eXBlPT09InVubG9hZCImJm5hbWUhPT0ib25lIil7dGhpcy5vbmUodHlwZSxk
YXRhLGZuKTt9ZWxzZXtmb3IodmFyIGk9MCxsPXRoaXMubGVuZ3RoO2k8bDtpKysp
e2pRdWVyeS5ldmVudC5hZGQodGhpc1tpXSx0eXBlLGhhbmRsZXIsZGF0YSk7fX0K
cmV0dXJuIHRoaXM7fTt9KTtqUXVlcnkuZm4uZXh0ZW5kKHt1bmJpbmQ6ZnVuY3Rp
b24odHlwZSxmbil7aWYodHlwZW9mIHR5cGU9PT0ib2JqZWN0IiYmIXR5cGUucHJl
dmVudERlZmF1bHQpe2Zvcih2YXIga2V5IGluIHR5cGUpe3RoaXMudW5iaW5kKGtl
eSx0eXBlW2tleV0pO319ZWxzZXtmb3IodmFyIGk9MCxsPXRoaXMubGVuZ3RoO2k8
bDtpKyspe2pRdWVyeS5ldmVudC5yZW1vdmUodGhpc1tpXSx0eXBlLGZuKTt9fQpy
ZXR1cm4gdGhpczt9LGRlbGVnYXRlOmZ1bmN0aW9uKHNlbGVjdG9yLHR5cGVzLGRh
dGEsZm4pe3JldHVybiB0aGlzLmxpdmUodHlwZXMsZGF0YSxmbixzZWxlY3Rvcik7
fSx1bmRlbGVnYXRlOmZ1bmN0aW9uKHNlbGVjdG9yLHR5cGVzLGZuKXtpZihhcmd1
bWVudHMubGVuZ3RoPT09MCl7cmV0dXJuIHRoaXMudW5iaW5kKCJsaXZlIik7fWVs
c2V7cmV0dXJuIHRoaXMuZGllKHR5cGVzLG51bGwsZm4sc2VsZWN0b3IpO319LHRy
aWdnZXI6ZnVuY3Rpb24odHlwZSxkYXRhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0
aW9uKCl7alF1ZXJ5LmV2ZW50LnRyaWdnZXIodHlwZSxkYXRhLHRoaXMpO30pO30s
dHJpZ2dlckhhbmRsZXI6ZnVuY3Rpb24odHlwZSxkYXRhKXtpZih0aGlzWzBdKXt2
YXIgZXZlbnQ9alF1ZXJ5LkV2ZW50KHR5cGUpO2V2ZW50LnByZXZlbnREZWZhdWx0
KCk7ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7alF1ZXJ5LmV2ZW50LnRyaWdnZXIo
ZXZlbnQsZGF0YSx0aGlzWzBdKTtyZXR1cm4gZXZlbnQucmVzdWx0O319LHRvZ2ds
ZTpmdW5jdGlvbihmbil7dmFyIGFyZ3M9YXJndW1lbnRzLGk9MTt3aGlsZShpPGFy
Z3MubGVuZ3RoKXtqUXVlcnkucHJveHkoZm4sYXJnc1tpKytdKTt9CnJldHVybiB0
aGlzLmNsaWNrKGpRdWVyeS5wcm94eShmbixmdW5jdGlvbihldmVudCl7dmFyIGxh
c3RUb2dnbGU9KGpRdWVyeS5kYXRhKHRoaXMsImxhc3RUb2dnbGUiK2ZuLmd1aWQp
fHwwKSVpO2pRdWVyeS5kYXRhKHRoaXMsImxhc3RUb2dnbGUiK2ZuLmd1aWQsbGFz
dFRvZ2dsZSsxKTtldmVudC5wcmV2ZW50RGVmYXVsdCgpO3JldHVybiBhcmdzW2xh
c3RUb2dnbGVdLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8ZmFsc2U7fSkpO30saG92
ZXI6ZnVuY3Rpb24oZm5PdmVyLGZuT3V0KXtyZXR1cm4gdGhpcy5tb3VzZWVudGVy
KGZuT3ZlcikubW91c2VsZWF2ZShmbk91dHx8Zm5PdmVyKTt9fSk7dmFyIGxpdmVN
YXA9e2ZvY3VzOiJmb2N1c2luIixibHVyOiJmb2N1c291dCIsbW91c2VlbnRlcjoi
bW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCJ9O2pRdWVyeS5lYWNoKFsi
bGl2ZSIsImRpZSJdLGZ1bmN0aW9uKGksbmFtZSl7alF1ZXJ5LmZuW25hbWVdPWZ1
bmN0aW9uKHR5cGVzLGRhdGEsZm4sb3JpZ1NlbGVjdG9yKXt2YXIgdHlwZSxpPTAs
bWF0Y2gsbmFtZXNwYWNlcyxwcmVUeXBlLHNlbGVjdG9yPW9yaWdTZWxlY3Rvcnx8
dGhpcy5zZWxlY3Rvcixjb250ZXh0PW9yaWdTZWxlY3Rvcj90aGlzOmpRdWVyeSh0
aGlzLmNvbnRleHQpO2lmKGpRdWVyeS5pc0Z1bmN0aW9uKGRhdGEpKXtmbj1kYXRh
O2RhdGE9dW5kZWZpbmVkO30KdHlwZXM9KHR5cGVzfHwiIikuc3BsaXQoIiAiKTt3
aGlsZSgodHlwZT10eXBlc1tpKytdKSE9bnVsbCl7bWF0Y2g9cm5hbWVzcGFjZXMu
ZXhlYyh0eXBlKTtuYW1lc3BhY2VzPSIiO2lmKG1hdGNoKXtuYW1lc3BhY2VzPW1h
dGNoWzBdO3R5cGU9dHlwZS5yZXBsYWNlKHJuYW1lc3BhY2VzLCIiKTt9CmlmKHR5
cGU9PT0iaG92ZXIiKXt0eXBlcy5wdXNoKCJtb3VzZWVudGVyIituYW1lc3BhY2Vz
LCJtb3VzZWxlYXZlIituYW1lc3BhY2VzKTtjb250aW51ZTt9CnByZVR5cGU9dHlw
ZTtpZih0eXBlPT09ImZvY3VzInx8dHlwZT09PSJibHVyIil7dHlwZXMucHVzaChs
aXZlTWFwW3R5cGVdK25hbWVzcGFjZXMpO3R5cGU9dHlwZStuYW1lc3BhY2VzO31l
bHNle3R5cGU9KGxpdmVNYXBbdHlwZV18fHR5cGUpK25hbWVzcGFjZXM7fQppZihu
YW1lPT09ImxpdmUiKXtjb250ZXh0LmVhY2goZnVuY3Rpb24oKXtqUXVlcnkuZXZl
bnQuYWRkKHRoaXMsbGl2ZUNvbnZlcnQodHlwZSxzZWxlY3Rvcikse2RhdGE6ZGF0
YSxzZWxlY3RvcjpzZWxlY3RvcixoYW5kbGVyOmZuLG9yaWdUeXBlOnR5cGUsb3Jp
Z0hhbmRsZXI6Zm4scHJlVHlwZTpwcmVUeXBlfSk7fSk7fWVsc2V7Y29udGV4dC51
bmJpbmQobGl2ZUNvbnZlcnQodHlwZSxzZWxlY3RvciksZm4pO319CnJldHVybiB0
aGlzO319KTtmdW5jdGlvbiBsaXZlSGFuZGxlcihldmVudCl7dmFyIHN0b3AsZWxl
bXM9W10sc2VsZWN0b3JzPVtdLGFyZ3M9YXJndW1lbnRzLHJlbGF0ZWQsbWF0Y2gs
aGFuZGxlT2JqLGVsZW0saixpLGwsZGF0YSxldmVudHM9alF1ZXJ5LmRhdGEodGhp
cywiZXZlbnRzIik7aWYoZXZlbnQubGl2ZUZpcmVkPT09dGhpc3x8IWV2ZW50c3x8
IWV2ZW50cy5saXZlfHxldmVudC5idXR0b24mJmV2ZW50LnR5cGU9PT0iY2xpY2si
KXtyZXR1cm47fQpldmVudC5saXZlRmlyZWQ9dGhpczt2YXIgbGl2ZT1ldmVudHMu
bGl2ZS5zbGljZSgwKTtmb3Ioaj0wO2o8bGl2ZS5sZW5ndGg7aisrKXtoYW5kbGVP
Ymo9bGl2ZVtqXTtpZihoYW5kbGVPYmoub3JpZ1R5cGUucmVwbGFjZShybmFtZXNw
YWNlcywiIik9PT1ldmVudC50eXBlKXtzZWxlY3RvcnMucHVzaChoYW5kbGVPYmou
c2VsZWN0b3IpO31lbHNle2xpdmUuc3BsaWNlKGotLSwxKTt9fQptYXRjaD1qUXVl
cnkoZXZlbnQudGFyZ2V0KS5jbG9zZXN0KHNlbGVjdG9ycyxldmVudC5jdXJyZW50
VGFyZ2V0KTtmb3IoaT0wLGw9bWF0Y2gubGVuZ3RoO2k8bDtpKyspe2ZvcihqPTA7
ajxsaXZlLmxlbmd0aDtqKyspe2hhbmRsZU9iaj1saXZlW2pdO2lmKG1hdGNoW2ld
LnNlbGVjdG9yPT09aGFuZGxlT2JqLnNlbGVjdG9yKXtlbGVtPW1hdGNoW2ldLmVs
ZW07cmVsYXRlZD1udWxsO2lmKGhhbmRsZU9iai5wcmVUeXBlPT09Im1vdXNlZW50
ZXIifHxoYW5kbGVPYmoucHJlVHlwZT09PSJtb3VzZWxlYXZlIil7cmVsYXRlZD1q
UXVlcnkoZXZlbnQucmVsYXRlZFRhcmdldCkuY2xvc2VzdChoYW5kbGVPYmouc2Vs
ZWN0b3IpWzBdO30KaWYoIXJlbGF0ZWR8fHJlbGF0ZWQhPT1lbGVtKXtlbGVtcy5w
dXNoKHtlbGVtOmVsZW0saGFuZGxlT2JqOmhhbmRsZU9ian0pO319fX0KZm9yKGk9
MCxsPWVsZW1zLmxlbmd0aDtpPGw7aSsrKXttYXRjaD1lbGVtc1tpXTtldmVudC5j
dXJyZW50VGFyZ2V0PW1hdGNoLmVsZW07ZXZlbnQuZGF0YT1tYXRjaC5oYW5kbGVP
YmouZGF0YTtldmVudC5oYW5kbGVPYmo9bWF0Y2guaGFuZGxlT2JqO2lmKG1hdGNo
LmhhbmRsZU9iai5vcmlnSGFuZGxlci5hcHBseShtYXRjaC5lbGVtLGFyZ3MpPT09
ZmFsc2Upe3N0b3A9ZmFsc2U7YnJlYWs7fX0KcmV0dXJuIHN0b3A7fQpmdW5jdGlv
biBsaXZlQ29udmVydCh0eXBlLHNlbGVjdG9yKXtyZXR1cm4ibGl2ZS4iKyh0eXBl
JiZ0eXBlIT09IioiP3R5cGUrIi4iOiIiKStzZWxlY3Rvci5yZXBsYWNlKC9cLi9n
LCJgIikucmVwbGFjZSgvIC9nLCImIik7fQpqUXVlcnkuZWFjaCgoImJsdXIgZm9j
dXMgZm9jdXNpbiBmb2N1c291dCBsb2FkIHJlc2l6ZSBzY3JvbGwgdW5sb2FkIGNs
aWNrIGRibGNsaWNrICIrIm1vdXNlZG93biBtb3VzZXVwIG1vdXNlbW92ZSBtb3Vz
ZW92ZXIgbW91c2VvdXQgbW91c2VlbnRlciBtb3VzZWxlYXZlICIrImNoYW5nZSBz
ZWxlY3Qgc3VibWl0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgZXJyb3IiKS5zcGxp
dCgiICIpLGZ1bmN0aW9uKGksbmFtZSl7alF1ZXJ5LmZuW25hbWVdPWZ1bmN0aW9u
KGZuKXtyZXR1cm4gZm4/dGhpcy5iaW5kKG5hbWUsZm4pOnRoaXMudHJpZ2dlcihu
YW1lKTt9O2lmKGpRdWVyeS5hdHRyRm4pe2pRdWVyeS5hdHRyRm5bbmFtZV09dHJ1
ZTt9fSk7aWYod2luZG93LmF0dGFjaEV2ZW50JiYhd2luZG93LmFkZEV2ZW50TGlz
dGVuZXIpe3dpbmRvdy5hdHRhY2hFdmVudCgib251bmxvYWQiLGZ1bmN0aW9uKCl7
Zm9yKHZhciBpZCBpbiBqUXVlcnkuY2FjaGUpe2lmKGpRdWVyeS5jYWNoZVtpZF0u
aGFuZGxlKXt0cnl7alF1ZXJ5LmV2ZW50LnJlbW92ZShqUXVlcnkuY2FjaGVbaWRd
LmhhbmRsZS5lbGVtKTt9Y2F0Y2goZSl7fX19fSk7fQooZnVuY3Rpb24oKXt2YXIg
Y2h1bmtlcj0vKCg/OlwoKD86XChbXigpXStcKXxbXigpXSspK1wpfFxbKD86XFtb
XltcXV0qXF18WyciXVteJyJdKlsnIl18W15bXF0nIl0rKStcXXxcXC58W14gPit+
LChcW1xcXSspK3xbPit+XSkoXHMqLFxzKik/KCg/Oi58XHJ8XG4pKikvZyxkb25l
PTAsdG9TdHJpbmc9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxoYXNEdXBsaWNh
dGU9ZmFsc2UsYmFzZUhhc0R1cGxpY2F0ZT10cnVlO1swLDBdLnNvcnQoZnVuY3Rp
b24oKXtiYXNlSGFzRHVwbGljYXRlPWZhbHNlO3JldHVybiAwO30pO3ZhciBTaXp6
bGU9ZnVuY3Rpb24oc2VsZWN0b3IsY29udGV4dCxyZXN1bHRzLHNlZWQpe3Jlc3Vs
dHM9cmVzdWx0c3x8W107dmFyIG9yaWdDb250ZXh0PWNvbnRleHQ9Y29udGV4dHx8
ZG9jdW1lbnQ7aWYoY29udGV4dC5ub2RlVHlwZSE9PTEmJmNvbnRleHQubm9kZVR5
cGUhPT05KXtyZXR1cm5bXTt9CmlmKCFzZWxlY3Rvcnx8dHlwZW9mIHNlbGVjdG9y
IT09InN0cmluZyIpe3JldHVybiByZXN1bHRzO30KdmFyIHBhcnRzPVtdLG0sc2V0
LGNoZWNrU2V0LGV4dHJhLHBydW5lPXRydWUsY29udGV4dFhNTD1pc1hNTChjb250
ZXh0KSxzb0Zhcj1zZWxlY3Rvcjt3aGlsZSgoY2h1bmtlci5leGVjKCIiKSxtPWNo
dW5rZXIuZXhlYyhzb0ZhcikpIT09bnVsbCl7c29GYXI9bVszXTtwYXJ0cy5wdXNo
KG1bMV0pO2lmKG1bMl0pe2V4dHJhPW1bM107YnJlYWs7fX0KaWYocGFydHMubGVu
Z3RoPjEmJm9yaWdQT1MuZXhlYyhzZWxlY3Rvcikpe2lmKHBhcnRzLmxlbmd0aD09
PTImJkV4cHIucmVsYXRpdmVbcGFydHNbMF1dKXtzZXQ9cG9zUHJvY2VzcyhwYXJ0
c1swXStwYXJ0c1sxXSxjb250ZXh0KTt9ZWxzZXtzZXQ9RXhwci5yZWxhdGl2ZVtw
YXJ0c1swXV0/W2NvbnRleHRdOlNpenpsZShwYXJ0cy5zaGlmdCgpLGNvbnRleHQp
O3doaWxlKHBhcnRzLmxlbmd0aCl7c2VsZWN0b3I9cGFydHMuc2hpZnQoKTtpZihF
eHByLnJlbGF0aXZlW3NlbGVjdG9yXSl7c2VsZWN0b3IrPXBhcnRzLnNoaWZ0KCk7
fQpzZXQ9cG9zUHJvY2VzcyhzZWxlY3RvcixzZXQpO319fWVsc2V7aWYoIXNlZWQm
JnBhcnRzLmxlbmd0aD4xJiZjb250ZXh0Lm5vZGVUeXBlPT09OSYmIWNvbnRleHRY
TUwmJkV4cHIubWF0Y2guSUQudGVzdChwYXJ0c1swXSkmJiFFeHByLm1hdGNoLklE
LnRlc3QocGFydHNbcGFydHMubGVuZ3RoLTFdKSl7dmFyIHJldD1TaXp6bGUuZmlu
ZChwYXJ0cy5zaGlmdCgpLGNvbnRleHQsY29udGV4dFhNTCk7Y29udGV4dD1yZXQu
ZXhwcj9TaXp6bGUuZmlsdGVyKHJldC5leHByLHJldC5zZXQpWzBdOnJldC5zZXRb
MF07fQppZihjb250ZXh0KXt2YXIgcmV0PXNlZWQ/e2V4cHI6cGFydHMucG9wKCks
c2V0Om1ha2VBcnJheShzZWVkKX06U2l6emxlLmZpbmQocGFydHMucG9wKCkscGFy
dHMubGVuZ3RoPT09MSYmKHBhcnRzWzBdPT09In4ifHxwYXJ0c1swXT09PSIrIikm
JmNvbnRleHQucGFyZW50Tm9kZT9jb250ZXh0LnBhcmVudE5vZGU6Y29udGV4dCxj
b250ZXh0WE1MKTtzZXQ9cmV0LmV4cHI/U2l6emxlLmZpbHRlcihyZXQuZXhwcixy
ZXQuc2V0KTpyZXQuc2V0O2lmKHBhcnRzLmxlbmd0aD4wKXtjaGVja1NldD1tYWtl
QXJyYXkoc2V0KTt9ZWxzZXtwcnVuZT1mYWxzZTt9CndoaWxlKHBhcnRzLmxlbmd0
aCl7dmFyIGN1cj1wYXJ0cy5wb3AoKSxwb3A9Y3VyO2lmKCFFeHByLnJlbGF0aXZl
W2N1cl0pe2N1cj0iIjt9ZWxzZXtwb3A9cGFydHMucG9wKCk7fQppZihwb3A9PW51
bGwpe3BvcD1jb250ZXh0O30KRXhwci5yZWxhdGl2ZVtjdXJdKGNoZWNrU2V0LHBv
cCxjb250ZXh0WE1MKTt9fWVsc2V7Y2hlY2tTZXQ9cGFydHM9W107fX0KaWYoIWNo
ZWNrU2V0KXtjaGVja1NldD1zZXQ7fQppZighY2hlY2tTZXQpe1NpenpsZS5lcnJv
cihjdXJ8fHNlbGVjdG9yKTt9CmlmKHRvU3RyaW5nLmNhbGwoY2hlY2tTZXQpPT09
IltvYmplY3QgQXJyYXldIil7aWYoIXBydW5lKXtyZXN1bHRzLnB1c2guYXBwbHko
cmVzdWx0cyxjaGVja1NldCk7fWVsc2UgaWYoY29udGV4dCYmY29udGV4dC5ub2Rl
VHlwZT09PTEpe2Zvcih2YXIgaT0wO2NoZWNrU2V0W2ldIT1udWxsO2krKyl7aWYo
Y2hlY2tTZXRbaV0mJihjaGVja1NldFtpXT09PXRydWV8fGNoZWNrU2V0W2ldLm5v
ZGVUeXBlPT09MSYmY29udGFpbnMoY29udGV4dCxjaGVja1NldFtpXSkpKXtyZXN1
bHRzLnB1c2goc2V0W2ldKTt9fX1lbHNle2Zvcih2YXIgaT0wO2NoZWNrU2V0W2ld
IT1udWxsO2krKyl7aWYoY2hlY2tTZXRbaV0mJmNoZWNrU2V0W2ldLm5vZGVUeXBl
PT09MSl7cmVzdWx0cy5wdXNoKHNldFtpXSk7fX19fWVsc2V7bWFrZUFycmF5KGNo
ZWNrU2V0LHJlc3VsdHMpO30KaWYoZXh0cmEpe1NpenpsZShleHRyYSxvcmlnQ29u
dGV4dCxyZXN1bHRzLHNlZWQpO1NpenpsZS51bmlxdWVTb3J0KHJlc3VsdHMpO30K
cmV0dXJuIHJlc3VsdHM7fTtTaXp6bGUudW5pcXVlU29ydD1mdW5jdGlvbihyZXN1
bHRzKXtpZihzb3J0T3JkZXIpe2hhc0R1cGxpY2F0ZT1iYXNlSGFzRHVwbGljYXRl
O3Jlc3VsdHMuc29ydChzb3J0T3JkZXIpO2lmKGhhc0R1cGxpY2F0ZSl7Zm9yKHZh
ciBpPTE7aTxyZXN1bHRzLmxlbmd0aDtpKyspe2lmKHJlc3VsdHNbaV09PT1yZXN1
bHRzW2ktMV0pe3Jlc3VsdHMuc3BsaWNlKGktLSwxKTt9fX19CnJldHVybiByZXN1
bHRzO307U2l6emxlLm1hdGNoZXM9ZnVuY3Rpb24oZXhwcixzZXQpe3JldHVybiBT
aXp6bGUoZXhwcixudWxsLG51bGwsc2V0KTt9O1NpenpsZS5maW5kPWZ1bmN0aW9u
KGV4cHIsY29udGV4dCxpc1hNTCl7dmFyIHNldCxtYXRjaDtpZighZXhwcil7cmV0
dXJuW107fQpmb3IodmFyIGk9MCxsPUV4cHIub3JkZXIubGVuZ3RoO2k8bDtpKysp
e3ZhciB0eXBlPUV4cHIub3JkZXJbaV0sbWF0Y2g7aWYoKG1hdGNoPUV4cHIubGVm
dE1hdGNoW3R5cGVdLmV4ZWMoZXhwcikpKXt2YXIgbGVmdD1tYXRjaFsxXTttYXRj
aC5zcGxpY2UoMSwxKTtpZihsZWZ0LnN1YnN0cihsZWZ0Lmxlbmd0aC0xKSE9PSJc
XCIpe21hdGNoWzFdPShtYXRjaFsxXXx8IiIpLnJlcGxhY2UoL1xcL2csIiIpO3Nl
dD1FeHByLmZpbmRbdHlwZV0obWF0Y2gsY29udGV4dCxpc1hNTCk7aWYoc2V0IT1u
dWxsKXtleHByPWV4cHIucmVwbGFjZShFeHByLm1hdGNoW3R5cGVdLCIiKTticmVh
azt9fX19CmlmKCFzZXQpe3NldD1jb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCIqIik7fQpyZXR1cm57c2V0OnNldCxleHByOmV4cHJ9O307U2l6emxlLmZpbHRl
cj1mdW5jdGlvbihleHByLHNldCxpbnBsYWNlLG5vdCl7dmFyIG9sZD1leHByLHJl
c3VsdD1bXSxjdXJMb29wPXNldCxtYXRjaCxhbnlGb3VuZCxpc1hNTEZpbHRlcj1z
ZXQmJnNldFswXSYmaXNYTUwoc2V0WzBdKTt3aGlsZShleHByJiZzZXQubGVuZ3Ro
KXtmb3IodmFyIHR5cGUgaW4gRXhwci5maWx0ZXIpe2lmKChtYXRjaD1FeHByLmxl
ZnRNYXRjaFt0eXBlXS5leGVjKGV4cHIpKSE9bnVsbCYmbWF0Y2hbMl0pe3ZhciBm
aWx0ZXI9RXhwci5maWx0ZXJbdHlwZV0sZm91bmQsaXRlbSxsZWZ0PW1hdGNoWzFd
O2FueUZvdW5kPWZhbHNlO21hdGNoLnNwbGljZSgxLDEpO2lmKGxlZnQuc3Vic3Ry
KGxlZnQubGVuZ3RoLTEpPT09IlxcIil7Y29udGludWU7fQppZihjdXJMb29wPT09
cmVzdWx0KXtyZXN1bHQ9W107fQppZihFeHByLnByZUZpbHRlclt0eXBlXSl7bWF0
Y2g9RXhwci5wcmVGaWx0ZXJbdHlwZV0obWF0Y2gsY3VyTG9vcCxpbnBsYWNlLHJl
c3VsdCxub3QsaXNYTUxGaWx0ZXIpO2lmKCFtYXRjaCl7YW55Rm91bmQ9Zm91bmQ9
dHJ1ZTt9ZWxzZSBpZihtYXRjaD09PXRydWUpe2NvbnRpbnVlO319CmlmKG1hdGNo
KXtmb3IodmFyIGk9MDsoaXRlbT1jdXJMb29wW2ldKSE9bnVsbDtpKyspe2lmKGl0
ZW0pe2ZvdW5kPWZpbHRlcihpdGVtLG1hdGNoLGksY3VyTG9vcCk7dmFyIHBhc3M9
bm90XiEhZm91bmQ7aWYoaW5wbGFjZSYmZm91bmQhPW51bGwpe2lmKHBhc3Mpe2Fu
eUZvdW5kPXRydWU7fWVsc2V7Y3VyTG9vcFtpXT1mYWxzZTt9fWVsc2UgaWYocGFz
cyl7cmVzdWx0LnB1c2goaXRlbSk7YW55Rm91bmQ9dHJ1ZTt9fX19CmlmKGZvdW5k
IT09dW5kZWZpbmVkKXtpZighaW5wbGFjZSl7Y3VyTG9vcD1yZXN1bHQ7fQpleHBy
PWV4cHIucmVwbGFjZShFeHByLm1hdGNoW3R5cGVdLCIiKTtpZighYW55Rm91bmQp
e3JldHVybltdO30KYnJlYWs7fX19CmlmKGV4cHI9PT1vbGQpe2lmKGFueUZvdW5k
PT1udWxsKXtTaXp6bGUuZXJyb3IoZXhwcik7fWVsc2V7YnJlYWs7fX0Kb2xkPWV4
cHI7fQpyZXR1cm4gY3VyTG9vcDt9O1NpenpsZS5lcnJvcj1mdW5jdGlvbihtc2cp
e3Rocm93IlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIr
bXNnO307dmFyIEV4cHI9U2l6emxlLnNlbGVjdG9ycz17b3JkZXI6WyJJRCIsIk5B
TUUiLCJUQUciXSxtYXRjaDp7SUQ6LyMoKD86W1x3XHUwMGMwLVx1RkZGRi1dfFxc
LikrKS8sQ0xBU1M6L1wuKCg/Oltcd1x1MDBjMC1cdUZGRkYtXXxcXC4pKykvLE5B
TUU6L1xbbmFtZT1bJyJdKigoPzpbXHdcdTAwYzAtXHVGRkZGLV18XFwuKSspWyci
XSpcXS8sQVRUUjovXFtccyooKD86W1x3XHUwMGMwLVx1RkZGRi1dfFxcLikrKVxz
Kig/OihcUz89KVxzKihbJyJdKikoLio/KVwzfClccypcXS8sVEFHOi9eKCg/Oltc
d1x1MDBjMC1cdUZGRkZcKi1dfFxcLikrKS8sQ0hJTEQ6Lzoob25seXxudGh8bGFz
dHxmaXJzdCktY2hpbGQoPzpcKChldmVufG9kZHxbXGRuKy1dKilcKSk/LyxQT1M6
LzoobnRofGVxfGd0fGx0fGZpcnN0fGxhc3R8ZXZlbnxvZGQpKD86XCgoXGQqKVwp
KT8oPz1bXi1dfCQpLyxQU0VVRE86LzooKD86W1x3XHUwMGMwLVx1RkZGRi1dfFxc
LikrKSg/OlwoKFsnIl0/KSgoPzpcKFteXCldK1wpfFteXChcKV0qKSspXDJcKSk/
L30sbGVmdE1hdGNoOnt9LGF0dHJNYXA6eyJjbGFzcyI6ImNsYXNzTmFtZSIsImZv
ciI6Imh0bWxGb3IifSxhdHRySGFuZGxlOntocmVmOmZ1bmN0aW9uKGVsZW0pe3Jl
dHVybiBlbGVtLmdldEF0dHJpYnV0ZSgiaHJlZiIpO319LHJlbGF0aXZlOnsiKyI6
ZnVuY3Rpb24oY2hlY2tTZXQscGFydCl7dmFyIGlzUGFydFN0cj10eXBlb2YgcGFy
dD09PSJzdHJpbmciLGlzVGFnPWlzUGFydFN0ciYmIS9cVy8udGVzdChwYXJ0KSxp
c1BhcnRTdHJOb3RUYWc9aXNQYXJ0U3RyJiYhaXNUYWc7aWYoaXNUYWcpe3BhcnQ9
cGFydC50b0xvd2VyQ2FzZSgpO30KZm9yKHZhciBpPTAsbD1jaGVja1NldC5sZW5n
dGgsZWxlbTtpPGw7aSsrKXtpZigoZWxlbT1jaGVja1NldFtpXSkpe3doaWxlKChl
bGVtPWVsZW0ucHJldmlvdXNTaWJsaW5nKSYmZWxlbS5ub2RlVHlwZSE9PTEpe30K
Y2hlY2tTZXRbaV09aXNQYXJ0U3RyTm90VGFnfHxlbGVtJiZlbGVtLm5vZGVOYW1l
LnRvTG93ZXJDYXNlKCk9PT1wYXJ0P2VsZW18fGZhbHNlOmVsZW09PT1wYXJ0O319
CmlmKGlzUGFydFN0ck5vdFRhZyl7U2l6emxlLmZpbHRlcihwYXJ0LGNoZWNrU2V0
LHRydWUpO319LCI+IjpmdW5jdGlvbihjaGVja1NldCxwYXJ0KXt2YXIgaXNQYXJ0
U3RyPXR5cGVvZiBwYXJ0PT09InN0cmluZyI7aWYoaXNQYXJ0U3RyJiYhL1xXLy50
ZXN0KHBhcnQpKXtwYXJ0PXBhcnQudG9Mb3dlckNhc2UoKTtmb3IodmFyIGk9MCxs
PWNoZWNrU2V0Lmxlbmd0aDtpPGw7aSsrKXt2YXIgZWxlbT1jaGVja1NldFtpXTtp
ZihlbGVtKXt2YXIgcGFyZW50PWVsZW0ucGFyZW50Tm9kZTtjaGVja1NldFtpXT1w
YXJlbnQubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXBhcnQ/cGFyZW50OmZhbHNl
O319fWVsc2V7Zm9yKHZhciBpPTAsbD1jaGVja1NldC5sZW5ndGg7aTxsO2krKyl7
dmFyIGVsZW09Y2hlY2tTZXRbaV07aWYoZWxlbSl7Y2hlY2tTZXRbaV09aXNQYXJ0
U3RyP2VsZW0ucGFyZW50Tm9kZTplbGVtLnBhcmVudE5vZGU9PT1wYXJ0O319Cmlm
KGlzUGFydFN0cil7U2l6emxlLmZpbHRlcihwYXJ0LGNoZWNrU2V0LHRydWUpO319
fSwiIjpmdW5jdGlvbihjaGVja1NldCxwYXJ0LGlzWE1MKXt2YXIgZG9uZU5hbWU9
ZG9uZSsrLGNoZWNrRm49ZGlyQ2hlY2s7aWYodHlwZW9mIHBhcnQ9PT0ic3RyaW5n
IiYmIS9cVy8udGVzdChwYXJ0KSl7dmFyIG5vZGVDaGVjaz1wYXJ0PXBhcnQudG9M
b3dlckNhc2UoKTtjaGVja0ZuPWRpck5vZGVDaGVjazt9CmNoZWNrRm4oInBhcmVu
dE5vZGUiLHBhcnQsZG9uZU5hbWUsY2hlY2tTZXQsbm9kZUNoZWNrLGlzWE1MKTt9
LCJ+IjpmdW5jdGlvbihjaGVja1NldCxwYXJ0LGlzWE1MKXt2YXIgZG9uZU5hbWU9
ZG9uZSsrLGNoZWNrRm49ZGlyQ2hlY2s7aWYodHlwZW9mIHBhcnQ9PT0ic3RyaW5n
IiYmIS9cVy8udGVzdChwYXJ0KSl7dmFyIG5vZGVDaGVjaz1wYXJ0PXBhcnQudG9M
b3dlckNhc2UoKTtjaGVja0ZuPWRpck5vZGVDaGVjazt9CmNoZWNrRm4oInByZXZp
b3VzU2libGluZyIscGFydCxkb25lTmFtZSxjaGVja1NldCxub2RlQ2hlY2ssaXNY
TUwpO319LGZpbmQ6e0lEOmZ1bmN0aW9uKG1hdGNoLGNvbnRleHQsaXNYTUwpe2lm
KHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRCeUlkIT09InVuZGVmaW5lZCImJiFp
c1hNTCl7dmFyIG09Y29udGV4dC5nZXRFbGVtZW50QnlJZChtYXRjaFsxXSk7cmV0
dXJuIG0/W21dOltdO319LE5BTUU6ZnVuY3Rpb24obWF0Y2gsY29udGV4dCl7aWYo
dHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudHNCeU5hbWUhPT0idW5kZWZpbmVkIil7
dmFyIHJldD1bXSxyZXN1bHRzPWNvbnRleHQuZ2V0RWxlbWVudHNCeU5hbWUobWF0
Y2hbMV0pO2Zvcih2YXIgaT0wLGw9cmVzdWx0cy5sZW5ndGg7aTxsO2krKyl7aWYo
cmVzdWx0c1tpXS5nZXRBdHRyaWJ1dGUoIm5hbWUiKT09PW1hdGNoWzFdKXtyZXQu
cHVzaChyZXN1bHRzW2ldKTt9fQpyZXR1cm4gcmV0Lmxlbmd0aD09PTA/bnVsbDpy
ZXQ7fX0sVEFHOmZ1bmN0aW9uKG1hdGNoLGNvbnRleHQpe3JldHVybiBjb250ZXh0
LmdldEVsZW1lbnRzQnlUYWdOYW1lKG1hdGNoWzFdKTt9fSxwcmVGaWx0ZXI6e0NM
QVNTOmZ1bmN0aW9uKG1hdGNoLGN1ckxvb3AsaW5wbGFjZSxyZXN1bHQsbm90LGlz
WE1MKXttYXRjaD0iICIrbWF0Y2hbMV0ucmVwbGFjZSgvXFwvZywiIikrIiAiO2lm
KGlzWE1MKXtyZXR1cm4gbWF0Y2g7fQpmb3IodmFyIGk9MCxlbGVtOyhlbGVtPWN1
ckxvb3BbaV0pIT1udWxsO2krKyl7aWYoZWxlbSl7aWYobm90XihlbGVtLmNsYXNz
TmFtZSYmKCIgIitlbGVtLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UoL1tcdFxuXS9n
LCIgIikuaW5kZXhPZihtYXRjaCk+PTApKXtpZighaW5wbGFjZSl7cmVzdWx0LnB1
c2goZWxlbSk7fX1lbHNlIGlmKGlucGxhY2Upe2N1ckxvb3BbaV09ZmFsc2U7fX19
CnJldHVybiBmYWxzZTt9LElEOmZ1bmN0aW9uKG1hdGNoKXtyZXR1cm4gbWF0Y2hb
MV0ucmVwbGFjZSgvXFwvZywiIik7fSxUQUc6ZnVuY3Rpb24obWF0Y2gsY3VyTG9v
cCl7cmV0dXJuIG1hdGNoWzFdLnRvTG93ZXJDYXNlKCk7fSxDSElMRDpmdW5jdGlv
bihtYXRjaCl7aWYobWF0Y2hbMV09PT0ibnRoIil7dmFyIHRlc3Q9LygtPykoXGQq
KW4oKD86XCt8LSk/XGQqKS8uZXhlYyhtYXRjaFsyXT09PSJldmVuIiYmIjJuInx8
bWF0Y2hbMl09PT0ib2RkIiYmIjJuKzEifHwhL1xELy50ZXN0KG1hdGNoWzJdKSYm
IjBuKyIrbWF0Y2hbMl18fG1hdGNoWzJdKTttYXRjaFsyXT0odGVzdFsxXSsodGVz
dFsyXXx8MSkpLTA7bWF0Y2hbM109dGVzdFszXS0wO30KbWF0Y2hbMF09ZG9uZSsr
O3JldHVybiBtYXRjaDt9LEFUVFI6ZnVuY3Rpb24obWF0Y2gsY3VyTG9vcCxpbnBs
YWNlLHJlc3VsdCxub3QsaXNYTUwpe3ZhciBuYW1lPW1hdGNoWzFdLnJlcGxhY2Uo
L1xcL2csIiIpO2lmKCFpc1hNTCYmRXhwci5hdHRyTWFwW25hbWVdKXttYXRjaFsx
XT1FeHByLmF0dHJNYXBbbmFtZV07fQppZihtYXRjaFsyXT09PSJ+PSIpe21hdGNo
WzRdPSIgIittYXRjaFs0XSsiICI7fQpyZXR1cm4gbWF0Y2g7fSxQU0VVRE86ZnVu
Y3Rpb24obWF0Y2gsY3VyTG9vcCxpbnBsYWNlLHJlc3VsdCxub3Qpe2lmKG1hdGNo
WzFdPT09Im5vdCIpe2lmKChjaHVua2VyLmV4ZWMobWF0Y2hbM10pfHwiIikubGVu
Z3RoPjF8fC9eXHcvLnRlc3QobWF0Y2hbM10pKXttYXRjaFszXT1TaXp6bGUobWF0
Y2hbM10sbnVsbCxudWxsLGN1ckxvb3ApO31lbHNle3ZhciByZXQ9U2l6emxlLmZp
bHRlcihtYXRjaFszXSxjdXJMb29wLGlucGxhY2UsdHJ1ZV5ub3QpO2lmKCFpbnBs
YWNlKXtyZXN1bHQucHVzaC5hcHBseShyZXN1bHQscmV0KTt9CnJldHVybiBmYWxz
ZTt9fWVsc2UgaWYoRXhwci5tYXRjaC5QT1MudGVzdChtYXRjaFswXSl8fEV4cHIu
bWF0Y2guQ0hJTEQudGVzdChtYXRjaFswXSkpe3JldHVybiB0cnVlO30KcmV0dXJu
IG1hdGNoO30sUE9TOmZ1bmN0aW9uKG1hdGNoKXttYXRjaC51bnNoaWZ0KHRydWUp
O3JldHVybiBtYXRjaDt9fSxmaWx0ZXJzOntlbmFibGVkOmZ1bmN0aW9uKGVsZW0p
e3JldHVybiBlbGVtLmRpc2FibGVkPT09ZmFsc2UmJmVsZW0udHlwZSE9PSJoaWRk
ZW4iO30sZGlzYWJsZWQ6ZnVuY3Rpb24oZWxlbSl7cmV0dXJuIGVsZW0uZGlzYWJs
ZWQ9PT10cnVlO30sY2hlY2tlZDpmdW5jdGlvbihlbGVtKXtyZXR1cm4gZWxlbS5j
aGVja2VkPT09dHJ1ZTt9LHNlbGVjdGVkOmZ1bmN0aW9uKGVsZW0pe2VsZW0ucGFy
ZW50Tm9kZS5zZWxlY3RlZEluZGV4O3JldHVybiBlbGVtLnNlbGVjdGVkPT09dHJ1
ZTt9LHBhcmVudDpmdW5jdGlvbihlbGVtKXtyZXR1cm4hIWVsZW0uZmlyc3RDaGls
ZDt9LGVtcHR5OmZ1bmN0aW9uKGVsZW0pe3JldHVybiFlbGVtLmZpcnN0Q2hpbGQ7
fSxoYXM6ZnVuY3Rpb24oZWxlbSxpLG1hdGNoKXtyZXR1cm4hIVNpenpsZShtYXRj
aFszXSxlbGVtKS5sZW5ndGg7fSxoZWFkZXI6ZnVuY3Rpb24oZWxlbSl7cmV0dXJu
L2hcZC9pLnRlc3QoZWxlbS5ub2RlTmFtZSk7fSx0ZXh0OmZ1bmN0aW9uKGVsZW0p
e3JldHVybiJ0ZXh0Ij09PWVsZW0udHlwZTt9LHJhZGlvOmZ1bmN0aW9uKGVsZW0p
e3JldHVybiJyYWRpbyI9PT1lbGVtLnR5cGU7fSxjaGVja2JveDpmdW5jdGlvbihl
bGVtKXtyZXR1cm4iY2hlY2tib3giPT09ZWxlbS50eXBlO30sZmlsZTpmdW5jdGlv
bihlbGVtKXtyZXR1cm4iZmlsZSI9PT1lbGVtLnR5cGU7fSxwYXNzd29yZDpmdW5j
dGlvbihlbGVtKXtyZXR1cm4icGFzc3dvcmQiPT09ZWxlbS50eXBlO30sc3VibWl0
OmZ1bmN0aW9uKGVsZW0pe3JldHVybiJzdWJtaXQiPT09ZWxlbS50eXBlO30saW1h
Z2U6ZnVuY3Rpb24oZWxlbSl7cmV0dXJuImltYWdlIj09PWVsZW0udHlwZTt9LHJl
c2V0OmZ1bmN0aW9uKGVsZW0pe3JldHVybiJyZXNldCI9PT1lbGVtLnR5cGU7fSxi
dXR0b246ZnVuY3Rpb24oZWxlbSl7cmV0dXJuImJ1dHRvbiI9PT1lbGVtLnR5cGV8
fGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PSJidXR0b24iO30saW5wdXQ6
ZnVuY3Rpb24oZWxlbSl7cmV0dXJuL2lucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0
b24vaS50ZXN0KGVsZW0ubm9kZU5hbWUpO319LHNldEZpbHRlcnM6e2ZpcnN0OmZ1
bmN0aW9uKGVsZW0saSl7cmV0dXJuIGk9PT0wO30sbGFzdDpmdW5jdGlvbihlbGVt
LGksbWF0Y2gsYXJyYXkpe3JldHVybiBpPT09YXJyYXkubGVuZ3RoLTE7fSxldmVu
OmZ1bmN0aW9uKGVsZW0saSl7cmV0dXJuIGklMj09PTA7fSxvZGQ6ZnVuY3Rpb24o
ZWxlbSxpKXtyZXR1cm4gaSUyPT09MTt9LGx0OmZ1bmN0aW9uKGVsZW0saSxtYXRj
aCl7cmV0dXJuIGk8bWF0Y2hbM10tMDt9LGd0OmZ1bmN0aW9uKGVsZW0saSxtYXRj
aCl7cmV0dXJuIGk+bWF0Y2hbM10tMDt9LG50aDpmdW5jdGlvbihlbGVtLGksbWF0
Y2gpe3JldHVybiBtYXRjaFszXS0wPT09aTt9LGVxOmZ1bmN0aW9uKGVsZW0saSxt
YXRjaCl7cmV0dXJuIG1hdGNoWzNdLTA9PT1pO319LGZpbHRlcjp7UFNFVURPOmZ1
bmN0aW9uKGVsZW0sbWF0Y2gsaSxhcnJheSl7dmFyIG5hbWU9bWF0Y2hbMV0sZmls
dGVyPUV4cHIuZmlsdGVyc1tuYW1lXTtpZihmaWx0ZXIpe3JldHVybiBmaWx0ZXIo
ZWxlbSxpLG1hdGNoLGFycmF5KTt9ZWxzZSBpZihuYW1lPT09ImNvbnRhaW5zIil7
cmV0dXJuKGVsZW0udGV4dENvbnRlbnR8fGVsZW0uaW5uZXJUZXh0fHxnZXRUZXh0
KFtlbGVtXSl8fCIiKS5pbmRleE9mKG1hdGNoWzNdKT49MDt9ZWxzZSBpZihuYW1l
PT09Im5vdCIpe3ZhciBub3Q9bWF0Y2hbM107Zm9yKHZhciBpPTAsbD1ub3QubGVu
Z3RoO2k8bDtpKyspe2lmKG5vdFtpXT09PWVsZW0pe3JldHVybiBmYWxzZTt9fQpy
ZXR1cm4gdHJ1ZTt9ZWxzZXtTaXp6bGUuZXJyb3IoIlN5bnRheCBlcnJvciwgdW5y
ZWNvZ25pemVkIGV4cHJlc3Npb246ICIrbmFtZSk7fX0sQ0hJTEQ6ZnVuY3Rpb24o
ZWxlbSxtYXRjaCl7dmFyIHR5cGU9bWF0Y2hbMV0sbm9kZT1lbGVtO3N3aXRjaCh0
eXBlKXtjYXNlJ29ubHknOmNhc2UnZmlyc3QnOndoaWxlKChub2RlPW5vZGUucHJl
dmlvdXNTaWJsaW5nKSl7aWYobm9kZS5ub2RlVHlwZT09PTEpe3JldHVybiBmYWxz
ZTt9fQppZih0eXBlPT09ImZpcnN0Iil7cmV0dXJuIHRydWU7fQpub2RlPWVsZW07
Y2FzZSdsYXN0Jzp3aGlsZSgobm9kZT1ub2RlLm5leHRTaWJsaW5nKSl7aWYobm9k
ZS5ub2RlVHlwZT09PTEpe3JldHVybiBmYWxzZTt9fQpyZXR1cm4gdHJ1ZTtjYXNl
J250aCc6dmFyIGZpcnN0PW1hdGNoWzJdLGxhc3Q9bWF0Y2hbM107aWYoZmlyc3Q9
PT0xJiZsYXN0PT09MCl7cmV0dXJuIHRydWU7fQp2YXIgZG9uZU5hbWU9bWF0Y2hb
MF0scGFyZW50PWVsZW0ucGFyZW50Tm9kZTtpZihwYXJlbnQmJihwYXJlbnQuc2l6
Y2FjaGUhPT1kb25lTmFtZXx8IWVsZW0ubm9kZUluZGV4KSl7dmFyIGNvdW50PTA7
Zm9yKG5vZGU9cGFyZW50LmZpcnN0Q2hpbGQ7bm9kZTtub2RlPW5vZGUubmV4dFNp
Ymxpbmcpe2lmKG5vZGUubm9kZVR5cGU9PT0xKXtub2RlLm5vZGVJbmRleD0rK2Nv
dW50O319CnBhcmVudC5zaXpjYWNoZT1kb25lTmFtZTt9CnZhciBkaWZmPWVsZW0u
bm9kZUluZGV4LWxhc3Q7aWYoZmlyc3Q9PT0wKXtyZXR1cm4gZGlmZj09PTA7fWVs
c2V7cmV0dXJuKGRpZmYlZmlyc3Q9PT0wJiZkaWZmL2ZpcnN0Pj0wKTt9fX0sSUQ6
ZnVuY3Rpb24oZWxlbSxtYXRjaCl7cmV0dXJuIGVsZW0ubm9kZVR5cGU9PT0xJiZl
bGVtLmdldEF0dHJpYnV0ZSgiaWQiKT09PW1hdGNoO30sVEFHOmZ1bmN0aW9uKGVs
ZW0sbWF0Y2gpe3JldHVybihtYXRjaD09PSIqIiYmZWxlbS5ub2RlVHlwZT09PTEp
fHxlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1tYXRjaDt9LENMQVNTOmZ1
bmN0aW9uKGVsZW0sbWF0Y2gpe3JldHVybigiICIrKGVsZW0uY2xhc3NOYW1lfHxl
bGVtLmdldEF0dHJpYnV0ZSgiY2xhc3MiKSkrIiAiKS5pbmRleE9mKG1hdGNoKT4t
MTt9LEFUVFI6ZnVuY3Rpb24oZWxlbSxtYXRjaCl7dmFyIG5hbWU9bWF0Y2hbMV0s
cmVzdWx0PUV4cHIuYXR0ckhhbmRsZVtuYW1lXT9FeHByLmF0dHJIYW5kbGVbbmFt
ZV0oZWxlbSk6ZWxlbVtuYW1lXSE9bnVsbD9lbGVtW25hbWVdOmVsZW0uZ2V0QXR0
cmlidXRlKG5hbWUpLHZhbHVlPXJlc3VsdCsiIix0eXBlPW1hdGNoWzJdLGNoZWNr
PW1hdGNoWzRdO3JldHVybiByZXN1bHQ9PW51bGw/dHlwZT09PSIhPSI6dHlwZT09
PSI9Ij92YWx1ZT09PWNoZWNrOnR5cGU9PT0iKj0iP3ZhbHVlLmluZGV4T2YoY2hl
Y2spPj0wOnR5cGU9PT0ifj0iPygiICIrdmFsdWUrIiAiKS5pbmRleE9mKGNoZWNr
KT49MDohY2hlY2s/dmFsdWUmJnJlc3VsdCE9PWZhbHNlOnR5cGU9PT0iIT0iP3Zh
bHVlIT09Y2hlY2s6dHlwZT09PSJePSI/dmFsdWUuaW5kZXhPZihjaGVjayk9PT0w
OnR5cGU9PT0iJD0iP3ZhbHVlLnN1YnN0cih2YWx1ZS5sZW5ndGgtY2hlY2subGVu
Z3RoKT09PWNoZWNrOnR5cGU9PT0ifD0iP3ZhbHVlPT09Y2hlY2t8fHZhbHVlLnN1
YnN0cigwLGNoZWNrLmxlbmd0aCsxKT09PWNoZWNrKyItIjpmYWxzZTt9LFBPUzpm
dW5jdGlvbihlbGVtLG1hdGNoLGksYXJyYXkpe3ZhciBuYW1lPW1hdGNoWzJdLGZp
bHRlcj1FeHByLnNldEZpbHRlcnNbbmFtZV07aWYoZmlsdGVyKXtyZXR1cm4gZmls
dGVyKGVsZW0saSxtYXRjaCxhcnJheSk7fX19fTt2YXIgb3JpZ1BPUz1FeHByLm1h
dGNoLlBPUztmb3IodmFyIHR5cGUgaW4gRXhwci5tYXRjaCl7RXhwci5tYXRjaFt0
eXBlXT1uZXcgUmVnRXhwKEV4cHIubWF0Y2hbdHlwZV0uc291cmNlKy8oPyFbXlxb
XSpcXSkoPyFbXlwoXSpcKSkvLnNvdXJjZSk7RXhwci5sZWZ0TWF0Y2hbdHlwZV09
bmV3IFJlZ0V4cCgvKF4oPzoufFxyfFxuKSo/KS8uc291cmNlK0V4cHIubWF0Y2hb
dHlwZV0uc291cmNlLnJlcGxhY2UoL1xcKFxkKykvZyxmdW5jdGlvbihhbGwsbnVt
KXtyZXR1cm4iXFwiKyhudW0tMCsxKTt9KSk7fQp2YXIgbWFrZUFycmF5PWZ1bmN0
aW9uKGFycmF5LHJlc3VsdHMpe2FycmF5PUFycmF5LnByb3RvdHlwZS5zbGljZS5j
YWxsKGFycmF5LDApO2lmKHJlc3VsdHMpe3Jlc3VsdHMucHVzaC5hcHBseShyZXN1
bHRzLGFycmF5KTtyZXR1cm4gcmVzdWx0czt9CnJldHVybiBhcnJheTt9O3RyeXtB
cnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChkb2N1bWVudC5kb2N1bWVudEVsZW1l
bnQuY2hpbGROb2RlcywwKVswXS5ub2RlVHlwZTt9Y2F0Y2goZSl7bWFrZUFycmF5
PWZ1bmN0aW9uKGFycmF5LHJlc3VsdHMpe3ZhciByZXQ9cmVzdWx0c3x8W107aWYo
dG9TdHJpbmcuY2FsbChhcnJheSk9PT0iW29iamVjdCBBcnJheV0iKXtBcnJheS5w
cm90b3R5cGUucHVzaC5hcHBseShyZXQsYXJyYXkpO31lbHNle2lmKHR5cGVvZiBh
cnJheS5sZW5ndGg9PT0ibnVtYmVyIil7Zm9yKHZhciBpPTAsbD1hcnJheS5sZW5n
dGg7aTxsO2krKyl7cmV0LnB1c2goYXJyYXlbaV0pO319ZWxzZXtmb3IodmFyIGk9
MDthcnJheVtpXTtpKyspe3JldC5wdXNoKGFycmF5W2ldKTt9fX0KcmV0dXJuIHJl
dDt9O30KdmFyIHNvcnRPcmRlcjtpZihkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQu
Y29tcGFyZURvY3VtZW50UG9zaXRpb24pe3NvcnRPcmRlcj1mdW5jdGlvbihhLGIp
e2lmKCFhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9ufHwhYi5jb21wYXJlRG9jdW1l
bnRQb3NpdGlvbil7aWYoYT09Yil7aGFzRHVwbGljYXRlPXRydWU7fQpyZXR1cm4g
YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbj8tMToxO30KdmFyIHJldD1hLmNvbXBh
cmVEb2N1bWVudFBvc2l0aW9uKGIpJjQ/LTE6YT09PWI/MDoxO2lmKHJldD09PTAp
e2hhc0R1cGxpY2F0ZT10cnVlO30KcmV0dXJuIHJldDt9O31lbHNlIGlmKCJzb3Vy
Y2VJbmRleCJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpe3NvcnRPcmRlcj1m
dW5jdGlvbihhLGIpe2lmKCFhLnNvdXJjZUluZGV4fHwhYi5zb3VyY2VJbmRleCl7
aWYoYT09Yil7aGFzRHVwbGljYXRlPXRydWU7fQpyZXR1cm4gYS5zb3VyY2VJbmRl
eD8tMToxO30KdmFyIHJldD1hLnNvdXJjZUluZGV4LWIuc291cmNlSW5kZXg7aWYo
cmV0PT09MCl7aGFzRHVwbGljYXRlPXRydWU7fQpyZXR1cm4gcmV0O307fWVsc2Ug
aWYoZG9jdW1lbnQuY3JlYXRlUmFuZ2Upe3NvcnRPcmRlcj1mdW5jdGlvbihhLGIp
e2lmKCFhLm93bmVyRG9jdW1lbnR8fCFiLm93bmVyRG9jdW1lbnQpe2lmKGE9PWIp
e2hhc0R1cGxpY2F0ZT10cnVlO30KcmV0dXJuIGEub3duZXJEb2N1bWVudD8tMTox
O30KdmFyIGFSYW5nZT1hLm93bmVyRG9jdW1lbnQuY3JlYXRlUmFuZ2UoKSxiUmFu
Z2U9Yi5vd25lckRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7YVJhbmdlLnNldFN0YXJ0
KGEsMCk7YVJhbmdlLnNldEVuZChhLDApO2JSYW5nZS5zZXRTdGFydChiLDApO2JS
YW5nZS5zZXRFbmQoYiwwKTt2YXIgcmV0PWFSYW5nZS5jb21wYXJlQm91bmRhcnlQ
b2ludHMoUmFuZ2UuU1RBUlRfVE9fRU5ELGJSYW5nZSk7aWYocmV0PT09MCl7aGFz
RHVwbGljYXRlPXRydWU7fQpyZXR1cm4gcmV0O307fQpmdW5jdGlvbiBnZXRUZXh0
KGVsZW1zKXt2YXIgcmV0PSIiLGVsZW07Zm9yKHZhciBpPTA7ZWxlbXNbaV07aSsr
KXtlbGVtPWVsZW1zW2ldO2lmKGVsZW0ubm9kZVR5cGU9PT0zfHxlbGVtLm5vZGVU
eXBlPT09NCl7cmV0Kz1lbGVtLm5vZGVWYWx1ZTt9ZWxzZSBpZihlbGVtLm5vZGVU
eXBlIT09OCl7cmV0Kz1nZXRUZXh0KGVsZW0uY2hpbGROb2Rlcyk7fX0KcmV0dXJu
IHJldDt9CihmdW5jdGlvbigpe3ZhciBmb3JtPWRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImRpdiIpLGlkPSJzY3JpcHQiKyhuZXcgRGF0ZSkuZ2V0VGltZSgpO2Zvcm0u
aW5uZXJIVE1MPSI8YSBuYW1lPSciK2lkKyInLz4iO3ZhciByb290PWRvY3VtZW50
LmRvY3VtZW50RWxlbWVudDtyb290Lmluc2VydEJlZm9yZShmb3JtLHJvb3QuZmly
c3RDaGlsZCk7aWYoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpKXtFeHByLmZp
bmQuSUQ9ZnVuY3Rpb24obWF0Y2gsY29udGV4dCxpc1hNTCl7aWYodHlwZW9mIGNv
bnRleHQuZ2V0RWxlbWVudEJ5SWQhPT0idW5kZWZpbmVkIiYmIWlzWE1MKXt2YXIg
bT1jb250ZXh0LmdldEVsZW1lbnRCeUlkKG1hdGNoWzFdKTtyZXR1cm4gbT9tLmlk
PT09bWF0Y2hbMV18fHR5cGVvZiBtLmdldEF0dHJpYnV0ZU5vZGUhPT0idW5kZWZp
bmVkIiYmbS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpLm5vZGVWYWx1ZT09PW1hdGNo
WzFdP1ttXTp1bmRlZmluZWQ6W107fX07RXhwci5maWx0ZXIuSUQ9ZnVuY3Rpb24o
ZWxlbSxtYXRjaCl7dmFyIG5vZGU9dHlwZW9mIGVsZW0uZ2V0QXR0cmlidXRlTm9k
ZSE9PSJ1bmRlZmluZWQiJiZlbGVtLmdldEF0dHJpYnV0ZU5vZGUoImlkIik7cmV0
dXJuIGVsZW0ubm9kZVR5cGU9PT0xJiZub2RlJiZub2RlLm5vZGVWYWx1ZT09PW1h
dGNoO307fQpyb290LnJlbW92ZUNoaWxkKGZvcm0pO3Jvb3Q9Zm9ybT1udWxsO30p
KCk7KGZ1bmN0aW9uKCl7dmFyIGRpdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTtkaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlQ29tbWVudCgiIikp
O2lmKGRpdi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aD4wKXtFeHBy
LmZpbmQuVEFHPWZ1bmN0aW9uKG1hdGNoLGNvbnRleHQpe3ZhciByZXN1bHRzPWNv
bnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUobWF0Y2hbMV0pO2lmKG1hdGNoWzFd
PT09IioiKXt2YXIgdG1wPVtdO2Zvcih2YXIgaT0wO3Jlc3VsdHNbaV07aSsrKXtp
ZihyZXN1bHRzW2ldLm5vZGVUeXBlPT09MSl7dG1wLnB1c2gocmVzdWx0c1tpXSk7
fX0KcmVzdWx0cz10bXA7fQpyZXR1cm4gcmVzdWx0czt9O30KZGl2LmlubmVySFRN
TD0iPGEgaHJlZj0nIyc+PC9hPiI7aWYoZGl2LmZpcnN0Q2hpbGQmJnR5cGVvZiBk
aXYuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUhPT0idW5kZWZpbmVkIiYmZGl2LmZp
cnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJocmVmIikhPT0iIyIpe0V4cHIuYXR0ckhh
bmRsZS5ocmVmPWZ1bmN0aW9uKGVsZW0pe3JldHVybiBlbGVtLmdldEF0dHJpYnV0
ZSgiaHJlZiIsMik7fTt9CmRpdj1udWxsO30pKCk7aWYoZG9jdW1lbnQucXVlcnlT
ZWxlY3RvckFsbCl7KGZ1bmN0aW9uKCl7dmFyIG9sZFNpenpsZT1TaXp6bGUsZGl2
PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2Rpdi5pbm5lckhUTUw9Ijxw
IGNsYXNzPSdURVNUJz48L3A+IjtpZihkaXYucXVlcnlTZWxlY3RvckFsbCYmZGl2
LnF1ZXJ5U2VsZWN0b3JBbGwoIi5URVNUIikubGVuZ3RoPT09MCl7cmV0dXJuO30K
U2l6emxlPWZ1bmN0aW9uKHF1ZXJ5LGNvbnRleHQsZXh0cmEsc2VlZCl7Y29udGV4
dD1jb250ZXh0fHxkb2N1bWVudDtpZighc2VlZCYmY29udGV4dC5ub2RlVHlwZT09
PTkmJiFpc1hNTChjb250ZXh0KSl7dHJ5e3JldHVybiBtYWtlQXJyYXkoY29udGV4
dC5xdWVyeVNlbGVjdG9yQWxsKHF1ZXJ5KSxleHRyYSk7fWNhdGNoKGUpe319CnJl
dHVybiBvbGRTaXp6bGUocXVlcnksY29udGV4dCxleHRyYSxzZWVkKTt9O2Zvcih2
YXIgcHJvcCBpbiBvbGRTaXp6bGUpe1NpenpsZVtwcm9wXT1vbGRTaXp6bGVbcHJv
cF07fQpkaXY9bnVsbDt9KSgpO30KKGZ1bmN0aW9uKCl7dmFyIGRpdj1kb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTtkaXYuaW5uZXJIVE1MPSI8ZGl2IGNsYXNz
PSd0ZXN0IGUnPjwvZGl2PjxkaXYgY2xhc3M9J3Rlc3QnPjwvZGl2PiI7aWYoIWRp
di5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lfHxkaXYuZ2V0RWxlbWVudHNCeUNsYXNz
TmFtZSgiZSIpLmxlbmd0aD09PTApe3JldHVybjt9CmRpdi5sYXN0Q2hpbGQuY2xh
c3NOYW1lPSJlIjtpZihkaXYuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiZSIpLmxl
bmd0aD09PTEpe3JldHVybjt9CkV4cHIub3JkZXIuc3BsaWNlKDEsMCwiQ0xBU1Mi
KTtFeHByLmZpbmQuQ0xBU1M9ZnVuY3Rpb24obWF0Y2gsY29udGV4dCxpc1hNTCl7
aWYodHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSE9PSJ1bmRl
ZmluZWQiJiYhaXNYTUwpe3JldHVybiBjb250ZXh0LmdldEVsZW1lbnRzQnlDbGFz
c05hbWUobWF0Y2hbMV0pO319O2Rpdj1udWxsO30pKCk7ZnVuY3Rpb24gZGlyTm9k
ZUNoZWNrKGRpcixjdXIsZG9uZU5hbWUsY2hlY2tTZXQsbm9kZUNoZWNrLGlzWE1M
KXtmb3IodmFyIGk9MCxsPWNoZWNrU2V0Lmxlbmd0aDtpPGw7aSsrKXt2YXIgZWxl
bT1jaGVja1NldFtpXTtpZihlbGVtKXtlbGVtPWVsZW1bZGlyXTt2YXIgbWF0Y2g9
ZmFsc2U7d2hpbGUoZWxlbSl7aWYoZWxlbS5zaXpjYWNoZT09PWRvbmVOYW1lKXtt
YXRjaD1jaGVja1NldFtlbGVtLnNpenNldF07YnJlYWs7fQppZihlbGVtLm5vZGVU
eXBlPT09MSYmIWlzWE1MKXtlbGVtLnNpemNhY2hlPWRvbmVOYW1lO2VsZW0uc2l6
c2V0PWk7fQppZihlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1jdXIpe21h
dGNoPWVsZW07YnJlYWs7fQplbGVtPWVsZW1bZGlyXTt9CmNoZWNrU2V0W2ldPW1h
dGNoO319fQpmdW5jdGlvbiBkaXJDaGVjayhkaXIsY3VyLGRvbmVOYW1lLGNoZWNr
U2V0LG5vZGVDaGVjayxpc1hNTCl7Zm9yKHZhciBpPTAsbD1jaGVja1NldC5sZW5n
dGg7aTxsO2krKyl7dmFyIGVsZW09Y2hlY2tTZXRbaV07aWYoZWxlbSl7ZWxlbT1l
bGVtW2Rpcl07dmFyIG1hdGNoPWZhbHNlO3doaWxlKGVsZW0pe2lmKGVsZW0uc2l6
Y2FjaGU9PT1kb25lTmFtZSl7bWF0Y2g9Y2hlY2tTZXRbZWxlbS5zaXpzZXRdO2Jy
ZWFrO30KaWYoZWxlbS5ub2RlVHlwZT09PTEpe2lmKCFpc1hNTCl7ZWxlbS5zaXpj
YWNoZT1kb25lTmFtZTtlbGVtLnNpenNldD1pO30KaWYodHlwZW9mIGN1ciE9PSJz
dHJpbmciKXtpZihlbGVtPT09Y3VyKXttYXRjaD10cnVlO2JyZWFrO319ZWxzZSBp
ZihTaXp6bGUuZmlsdGVyKGN1cixbZWxlbV0pLmxlbmd0aD4wKXttYXRjaD1lbGVt
O2JyZWFrO319CmVsZW09ZWxlbVtkaXJdO30KY2hlY2tTZXRbaV09bWF0Y2g7fX19
CnZhciBjb250YWlucz1kb2N1bWVudC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbj9m
dW5jdGlvbihhLGIpe3JldHVybiEhKGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24o
YikmMTYpO306ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYSE9PWImJihhLmNvbnRhaW5z
P2EuY29udGFpbnMoYik6dHJ1ZSk7fTt2YXIgaXNYTUw9ZnVuY3Rpb24oZWxlbSl7
dmFyIGRvY3VtZW50RWxlbWVudD0oZWxlbT9lbGVtLm93bmVyRG9jdW1lbnR8fGVs
ZW06MCkuZG9jdW1lbnRFbGVtZW50O3JldHVybiBkb2N1bWVudEVsZW1lbnQ/ZG9j
dW1lbnRFbGVtZW50Lm5vZGVOYW1lIT09IkhUTUwiOmZhbHNlO307dmFyIHBvc1By
b2Nlc3M9ZnVuY3Rpb24oc2VsZWN0b3IsY29udGV4dCl7dmFyIHRtcFNldD1bXSxs
YXRlcj0iIixtYXRjaCxyb290PWNvbnRleHQubm9kZVR5cGU/W2NvbnRleHRdOmNv
bnRleHQ7d2hpbGUoKG1hdGNoPUV4cHIubWF0Y2guUFNFVURPLmV4ZWMoc2VsZWN0
b3IpKSl7bGF0ZXIrPW1hdGNoWzBdO3NlbGVjdG9yPXNlbGVjdG9yLnJlcGxhY2Uo
RXhwci5tYXRjaC5QU0VVRE8sIiIpO30Kc2VsZWN0b3I9RXhwci5yZWxhdGl2ZVtz
ZWxlY3Rvcl0/c2VsZWN0b3IrIioiOnNlbGVjdG9yO2Zvcih2YXIgaT0wLGw9cm9v
dC5sZW5ndGg7aTxsO2krKyl7U2l6emxlKHNlbGVjdG9yLHJvb3RbaV0sdG1wU2V0
KTt9CnJldHVybiBTaXp6bGUuZmlsdGVyKGxhdGVyLHRtcFNldCk7fTtqUXVlcnku
ZmluZD1TaXp6bGU7alF1ZXJ5LmV4cHI9U2l6emxlLnNlbGVjdG9ycztqUXVlcnku
ZXhwclsiOiJdPWpRdWVyeS5leHByLmZpbHRlcnM7alF1ZXJ5LnVuaXF1ZT1TaXp6
bGUudW5pcXVlU29ydDtqUXVlcnkudGV4dD1nZXRUZXh0O2pRdWVyeS5pc1hNTERv
Yz1pc1hNTDtqUXVlcnkuY29udGFpbnM9Y29udGFpbnM7cmV0dXJuO3dpbmRvdy5T
aXp6bGU9U2l6emxlO30pKCk7dmFyIHJ1bnRpbD0vVW50aWwkLyxycGFyZW50c3By
ZXY9L14oPzpwYXJlbnRzfHByZXZVbnRpbHxwcmV2QWxsKS8scm11bHRpc2VsZWN0
b3I9LywvLHNsaWNlPUFycmF5LnByb3RvdHlwZS5zbGljZTt2YXIgd2lubm93PWZ1
bmN0aW9uKGVsZW1lbnRzLHF1YWxpZmllcixrZWVwKXtpZihqUXVlcnkuaXNGdW5j
dGlvbihxdWFsaWZpZXIpKXtyZXR1cm4galF1ZXJ5LmdyZXAoZWxlbWVudHMsZnVu
Y3Rpb24oZWxlbSxpKXtyZXR1cm4hIXF1YWxpZmllci5jYWxsKGVsZW0saSxlbGVt
KT09PWtlZXA7fSk7fWVsc2UgaWYocXVhbGlmaWVyLm5vZGVUeXBlKXtyZXR1cm4g
alF1ZXJ5LmdyZXAoZWxlbWVudHMsZnVuY3Rpb24oZWxlbSxpKXtyZXR1cm4oZWxl
bT09PXF1YWxpZmllcik9PT1rZWVwO30pO31lbHNlIGlmKHR5cGVvZiBxdWFsaWZp
ZXI9PT0ic3RyaW5nIil7dmFyIGZpbHRlcmVkPWpRdWVyeS5ncmVwKGVsZW1lbnRz
LGZ1bmN0aW9uKGVsZW0pe3JldHVybiBlbGVtLm5vZGVUeXBlPT09MTt9KTtpZihp
c1NpbXBsZS50ZXN0KHF1YWxpZmllcikpe3JldHVybiBqUXVlcnkuZmlsdGVyKHF1
YWxpZmllcixmaWx0ZXJlZCwha2VlcCk7fWVsc2V7cXVhbGlmaWVyPWpRdWVyeS5m
aWx0ZXIocXVhbGlmaWVyLGZpbHRlcmVkKTt9fQpyZXR1cm4galF1ZXJ5LmdyZXAo
ZWxlbWVudHMsZnVuY3Rpb24oZWxlbSxpKXtyZXR1cm4oalF1ZXJ5LmluQXJyYXko
ZWxlbSxxdWFsaWZpZXIpPj0wKT09PWtlZXA7fSk7fTtqUXVlcnkuZm4uZXh0ZW5k
KHtmaW5kOmZ1bmN0aW9uKHNlbGVjdG9yKXt2YXIgcmV0PXRoaXMucHVzaFN0YWNr
KCIiLCJmaW5kIixzZWxlY3RvciksbGVuZ3RoPTA7Zm9yKHZhciBpPTAsbD10aGlz
Lmxlbmd0aDtpPGw7aSsrKXtsZW5ndGg9cmV0Lmxlbmd0aDtqUXVlcnkuZmluZChz
ZWxlY3Rvcix0aGlzW2ldLHJldCk7aWYoaT4wKXtmb3IodmFyIG49bGVuZ3RoO248
cmV0Lmxlbmd0aDtuKyspe2Zvcih2YXIgcj0wO3I8bGVuZ3RoO3IrKyl7aWYocmV0
W3JdPT09cmV0W25dKXtyZXQuc3BsaWNlKG4tLSwxKTticmVhazt9fX19fQpyZXR1
cm4gcmV0O30saGFzOmZ1bmN0aW9uKHRhcmdldCl7dmFyIHRhcmdldHM9alF1ZXJ5
KHRhcmdldCk7cmV0dXJuIHRoaXMuZmlsdGVyKGZ1bmN0aW9uKCl7Zm9yKHZhciBp
PTAsbD10YXJnZXRzLmxlbmd0aDtpPGw7aSsrKXtpZihqUXVlcnkuY29udGFpbnMo
dGhpcyx0YXJnZXRzW2ldKSl7cmV0dXJuIHRydWU7fX19KTt9LG5vdDpmdW5jdGlv
bihzZWxlY3Rvcil7cmV0dXJuIHRoaXMucHVzaFN0YWNrKHdpbm5vdyh0aGlzLHNl
bGVjdG9yLGZhbHNlKSwibm90IixzZWxlY3Rvcik7fSxmaWx0ZXI6ZnVuY3Rpb24o
c2VsZWN0b3Ipe3JldHVybiB0aGlzLnB1c2hTdGFjayh3aW5ub3codGhpcyxzZWxl
Y3Rvcix0cnVlKSwiZmlsdGVyIixzZWxlY3Rvcik7fSxpczpmdW5jdGlvbihzZWxl
Y3Rvcil7cmV0dXJuISFzZWxlY3RvciYmalF1ZXJ5LmZpbHRlcihzZWxlY3Rvcix0
aGlzKS5sZW5ndGg+MDt9LGNsb3Nlc3Q6ZnVuY3Rpb24oc2VsZWN0b3JzLGNvbnRl
eHQpe2lmKGpRdWVyeS5pc0FycmF5KHNlbGVjdG9ycykpe3ZhciByZXQ9W10sY3Vy
PXRoaXNbMF0sbWF0Y2gsbWF0Y2hlcz17fSxzZWxlY3RvcjtpZihjdXImJnNlbGVj
dG9ycy5sZW5ndGgpe2Zvcih2YXIgaT0wLGw9c2VsZWN0b3JzLmxlbmd0aDtpPGw7
aSsrKXtzZWxlY3Rvcj1zZWxlY3RvcnNbaV07aWYoIW1hdGNoZXNbc2VsZWN0b3Jd
KXttYXRjaGVzW3NlbGVjdG9yXT1qUXVlcnkuZXhwci5tYXRjaC5QT1MudGVzdChz
ZWxlY3Rvcik/alF1ZXJ5KHNlbGVjdG9yLGNvbnRleHR8fHRoaXMuY29udGV4dCk6
c2VsZWN0b3I7fX0Kd2hpbGUoY3VyJiZjdXIub3duZXJEb2N1bWVudCYmY3VyIT09
Y29udGV4dCl7Zm9yKHNlbGVjdG9yIGluIG1hdGNoZXMpe21hdGNoPW1hdGNoZXNb
c2VsZWN0b3JdO2lmKG1hdGNoLmpxdWVyeT9tYXRjaC5pbmRleChjdXIpPi0xOmpR
dWVyeShjdXIpLmlzKG1hdGNoKSl7cmV0LnB1c2goe3NlbGVjdG9yOnNlbGVjdG9y
LGVsZW06Y3VyfSk7ZGVsZXRlIG1hdGNoZXNbc2VsZWN0b3JdO319CmN1cj1jdXIu
cGFyZW50Tm9kZTt9fQpyZXR1cm4gcmV0O30KdmFyIHBvcz1qUXVlcnkuZXhwci5t
YXRjaC5QT1MudGVzdChzZWxlY3RvcnMpP2pRdWVyeShzZWxlY3RvcnMsY29udGV4
dHx8dGhpcy5jb250ZXh0KTpudWxsO3JldHVybiB0aGlzLm1hcChmdW5jdGlvbihp
LGN1cil7d2hpbGUoY3VyJiZjdXIub3duZXJEb2N1bWVudCYmY3VyIT09Y29udGV4
dCl7aWYocG9zP3Bvcy5pbmRleChjdXIpPi0xOmpRdWVyeShjdXIpLmlzKHNlbGVj
dG9ycykpe3JldHVybiBjdXI7fQpjdXI9Y3VyLnBhcmVudE5vZGU7fQpyZXR1cm4g
bnVsbDt9KTt9LGluZGV4OmZ1bmN0aW9uKGVsZW0pe2lmKCFlbGVtfHx0eXBlb2Yg
ZWxlbT09PSJzdHJpbmciKXtyZXR1cm4galF1ZXJ5LmluQXJyYXkodGhpc1swXSxl
bGVtP2pRdWVyeShlbGVtKTp0aGlzLnBhcmVudCgpLmNoaWxkcmVuKCkpO30KcmV0
dXJuIGpRdWVyeS5pbkFycmF5KGVsZW0uanF1ZXJ5P2VsZW1bMF06ZWxlbSx0aGlz
KTt9LGFkZDpmdW5jdGlvbihzZWxlY3Rvcixjb250ZXh0KXt2YXIgc2V0PXR5cGVv
ZiBzZWxlY3Rvcj09PSJzdHJpbmciP2pRdWVyeShzZWxlY3Rvcixjb250ZXh0fHx0
aGlzLmNvbnRleHQpOmpRdWVyeS5tYWtlQXJyYXkoc2VsZWN0b3IpLGFsbD1qUXVl
cnkubWVyZ2UodGhpcy5nZXQoKSxzZXQpO3JldHVybiB0aGlzLnB1c2hTdGFjayhp
c0Rpc2Nvbm5lY3RlZChzZXRbMF0pfHxpc0Rpc2Nvbm5lY3RlZChhbGxbMF0pP2Fs
bDpqUXVlcnkudW5pcXVlKGFsbCkpO30sYW5kU2VsZjpmdW5jdGlvbigpe3JldHVy
biB0aGlzLmFkZCh0aGlzLnByZXZPYmplY3QpO319KTtmdW5jdGlvbiBpc0Rpc2Nv
bm5lY3RlZChub2RlKXtyZXR1cm4hbm9kZXx8IW5vZGUucGFyZW50Tm9kZXx8bm9k
ZS5wYXJlbnROb2RlLm5vZGVUeXBlPT09MTE7fQpqUXVlcnkuZWFjaCh7cGFyZW50
OmZ1bmN0aW9uKGVsZW0pe3ZhciBwYXJlbnQ9ZWxlbS5wYXJlbnROb2RlO3JldHVy
biBwYXJlbnQmJnBhcmVudC5ub2RlVHlwZSE9PTExP3BhcmVudDpudWxsO30scGFy
ZW50czpmdW5jdGlvbihlbGVtKXtyZXR1cm4galF1ZXJ5LmRpcihlbGVtLCJwYXJl
bnROb2RlIik7fSxwYXJlbnRzVW50aWw6ZnVuY3Rpb24oZWxlbSxpLHVudGlsKXty
ZXR1cm4galF1ZXJ5LmRpcihlbGVtLCJwYXJlbnROb2RlIix1bnRpbCk7fSxuZXh0
OmZ1bmN0aW9uKGVsZW0pe3JldHVybiBqUXVlcnkubnRoKGVsZW0sMiwibmV4dFNp
YmxpbmciKTt9LHByZXY6ZnVuY3Rpb24oZWxlbSl7cmV0dXJuIGpRdWVyeS5udGgo
ZWxlbSwyLCJwcmV2aW91c1NpYmxpbmciKTt9LG5leHRBbGw6ZnVuY3Rpb24oZWxl
bSl7cmV0dXJuIGpRdWVyeS5kaXIoZWxlbSwibmV4dFNpYmxpbmciKTt9LHByZXZB
bGw6ZnVuY3Rpb24oZWxlbSl7cmV0dXJuIGpRdWVyeS5kaXIoZWxlbSwicHJldmlv
dXNTaWJsaW5nIik7fSxuZXh0VW50aWw6ZnVuY3Rpb24oZWxlbSxpLHVudGlsKXty
ZXR1cm4galF1ZXJ5LmRpcihlbGVtLCJuZXh0U2libGluZyIsdW50aWwpO30scHJl
dlVudGlsOmZ1bmN0aW9uKGVsZW0saSx1bnRpbCl7cmV0dXJuIGpRdWVyeS5kaXIo
ZWxlbSwicHJldmlvdXNTaWJsaW5nIix1bnRpbCk7fSxzaWJsaW5nczpmdW5jdGlv
bihlbGVtKXtyZXR1cm4galF1ZXJ5LnNpYmxpbmcoZWxlbS5wYXJlbnROb2RlLmZp
cnN0Q2hpbGQsZWxlbSk7fSxjaGlsZHJlbjpmdW5jdGlvbihlbGVtKXtyZXR1cm4g
alF1ZXJ5LnNpYmxpbmcoZWxlbS5maXJzdENoaWxkKTt9LGNvbnRlbnRzOmZ1bmN0
aW9uKGVsZW0pe3JldHVybiBqUXVlcnkubm9kZU5hbWUoZWxlbSwiaWZyYW1lIik/
ZWxlbS5jb250ZW50RG9jdW1lbnR8fGVsZW0uY29udGVudFdpbmRvdy5kb2N1bWVu
dDpqUXVlcnkubWFrZUFycmF5KGVsZW0uY2hpbGROb2Rlcyk7fX0sZnVuY3Rpb24o
bmFtZSxmbil7alF1ZXJ5LmZuW25hbWVdPWZ1bmN0aW9uKHVudGlsLHNlbGVjdG9y
KXt2YXIgcmV0PWpRdWVyeS5tYXAodGhpcyxmbix1bnRpbCk7aWYoIXJ1bnRpbC50
ZXN0KG5hbWUpKXtzZWxlY3Rvcj11bnRpbDt9CmlmKHNlbGVjdG9yJiZ0eXBlb2Yg
c2VsZWN0b3I9PT0ic3RyaW5nIil7cmV0PWpRdWVyeS5maWx0ZXIoc2VsZWN0b3Is
cmV0KTt9CnJldD10aGlzLmxlbmd0aD4xP2pRdWVyeS51bmlxdWUocmV0KTpyZXQ7
aWYoKHRoaXMubGVuZ3RoPjF8fHJtdWx0aXNlbGVjdG9yLnRlc3Qoc2VsZWN0b3Ip
KSYmcnBhcmVudHNwcmV2LnRlc3QobmFtZSkpe3JldD1yZXQucmV2ZXJzZSgpO30K
cmV0dXJuIHRoaXMucHVzaFN0YWNrKHJldCxuYW1lLHNsaWNlLmNhbGwoYXJndW1l
bnRzKS5qb2luKCIsIikpO307fSk7alF1ZXJ5LmV4dGVuZCh7ZmlsdGVyOmZ1bmN0
aW9uKGV4cHIsZWxlbXMsbm90KXtpZihub3Qpe2V4cHI9Ijpub3QoIitleHByKyIp
Ijt9CnJldHVybiBqUXVlcnkuZmluZC5tYXRjaGVzKGV4cHIsZWxlbXMpO30sZGly
OmZ1bmN0aW9uKGVsZW0sZGlyLHVudGlsKXt2YXIgbWF0Y2hlZD1bXSxjdXI9ZWxl
bVtkaXJdO3doaWxlKGN1ciYmY3VyLm5vZGVUeXBlIT09OSYmKHVudGlsPT09dW5k
ZWZpbmVkfHxjdXIubm9kZVR5cGUhPT0xfHwhalF1ZXJ5KGN1cikuaXModW50aWwp
KSl7aWYoY3VyLm5vZGVUeXBlPT09MSl7bWF0Y2hlZC5wdXNoKGN1cik7fQpjdXI9
Y3VyW2Rpcl07fQpyZXR1cm4gbWF0Y2hlZDt9LG50aDpmdW5jdGlvbihjdXIscmVz
dWx0LGRpcixlbGVtKXtyZXN1bHQ9cmVzdWx0fHwxO3ZhciBudW09MDtmb3IoO2N1
cjtjdXI9Y3VyW2Rpcl0pe2lmKGN1ci5ub2RlVHlwZT09PTEmJisrbnVtPT09cmVz
dWx0KXticmVhazt9fQpyZXR1cm4gY3VyO30sc2libGluZzpmdW5jdGlvbihuLGVs
ZW0pe3ZhciByPVtdO2Zvcig7bjtuPW4ubmV4dFNpYmxpbmcpe2lmKG4ubm9kZVR5
cGU9PT0xJiZuIT09ZWxlbSl7ci5wdXNoKG4pO319CnJldHVybiByO319KTt2YXIg
cmlubGluZWpRdWVyeT0vIGpRdWVyeVxkKz0iKD86XGQrfG51bGwpIi9nLHJsZWFk
aW5nV2hpdGVzcGFjZT0vXlxzKy8scnhodG1sVGFnPS8oPChbXHc6XSspW14+XSo/
KVwvPi9nLHJzZWxmQ2xvc2luZz0vXig/OmFyZWF8YnJ8Y29sfGVtYmVkfGhyfGlt
Z3xpbnB1dHxsaW5rfG1ldGF8cGFyYW0pJC9pLHJ0YWdOYW1lPS88KFtcdzpdKykv
LHJ0Ym9keT0vPHRib2R5L2kscmh0bWw9Lzx8JiM/XHcrOy8scm5vY2FjaGU9Lzxz
Y3JpcHR8PG9iamVjdHw8ZW1iZWR8PG9wdGlvbnw8c3R5bGUvaSxyY2hlY2tlZD0v
Y2hlY2tlZFxzKig/OltePV18PVxzKi5jaGVja2VkLikvaSxmY2xvc2VUYWc9ZnVu
Y3Rpb24oYWxsLGZyb250LHRhZyl7cmV0dXJuIHJzZWxmQ2xvc2luZy50ZXN0KHRh
Zyk/YWxsOmZyb250KyI+PC8iK3RhZysiPiI7fSx3cmFwTWFwPXtvcHRpb246WzEs
IjxzZWxlY3QgbXVsdGlwbGU9J211bHRpcGxlJz4iLCI8L3NlbGVjdD4iXSxsZWdl
bmQ6WzEsIjxmaWVsZHNldD4iLCI8L2ZpZWxkc2V0PiJdLHRoZWFkOlsxLCI8dGFi
bGU+IiwiPC90YWJsZT4iXSx0cjpbMiwiPHRhYmxlPjx0Ym9keT4iLCI8L3Rib2R5
PjwvdGFibGU+Il0sdGQ6WzMsIjx0YWJsZT48dGJvZHk+PHRyPiIsIjwvdHI+PC90
Ym9keT48L3RhYmxlPiJdLGNvbDpbMiwiPHRhYmxlPjx0Ym9keT48L3Rib2R5Pjxj
b2xncm91cD4iLCI8L2NvbGdyb3VwPjwvdGFibGU+Il0sYXJlYTpbMSwiPG1hcD4i
LCI8L21hcD4iXSxfZGVmYXVsdDpbMCwiIiwiIl19O3dyYXBNYXAub3B0Z3JvdXA9
d3JhcE1hcC5vcHRpb247d3JhcE1hcC50Ym9keT13cmFwTWFwLnRmb290PXdyYXBN
YXAuY29sZ3JvdXA9d3JhcE1hcC5jYXB0aW9uPXdyYXBNYXAudGhlYWQ7d3JhcE1h
cC50aD13cmFwTWFwLnRkO2lmKCFqUXVlcnkuc3VwcG9ydC5odG1sU2VyaWFsaXpl
KXt3cmFwTWFwLl9kZWZhdWx0PVsxLCJkaXY8ZGl2PiIsIjwvZGl2PiJdO30KalF1
ZXJ5LmZuLmV4dGVuZCh7dGV4dDpmdW5jdGlvbih0ZXh0KXtpZihqUXVlcnkuaXNG
dW5jdGlvbih0ZXh0KSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihpKXt2YXIg
c2VsZj1qUXVlcnkodGhpcyk7c2VsZi50ZXh0KHRleHQuY2FsbCh0aGlzLGksc2Vs
Zi50ZXh0KCkpKTt9KTt9CmlmKHR5cGVvZiB0ZXh0IT09Im9iamVjdCImJnRleHQh
PT11bmRlZmluZWQpe3JldHVybiB0aGlzLmVtcHR5KCkuYXBwZW5kKCh0aGlzWzBd
JiZ0aGlzWzBdLm93bmVyRG9jdW1lbnR8fGRvY3VtZW50KS5jcmVhdGVUZXh0Tm9k
ZSh0ZXh0KSk7fQpyZXR1cm4galF1ZXJ5LnRleHQodGhpcyk7fSx3cmFwQWxsOmZ1
bmN0aW9uKGh0bWwpe2lmKGpRdWVyeS5pc0Z1bmN0aW9uKGh0bWwpKXtyZXR1cm4g
dGhpcy5lYWNoKGZ1bmN0aW9uKGkpe2pRdWVyeSh0aGlzKS53cmFwQWxsKGh0bWwu
Y2FsbCh0aGlzLGkpKTt9KTt9CmlmKHRoaXNbMF0pe3ZhciB3cmFwPWpRdWVyeSho
dG1sLHRoaXNbMF0ub3duZXJEb2N1bWVudCkuZXEoMCkuY2xvbmUodHJ1ZSk7aWYo
dGhpc1swXS5wYXJlbnROb2RlKXt3cmFwLmluc2VydEJlZm9yZSh0aGlzWzBdKTt9
CndyYXAubWFwKGZ1bmN0aW9uKCl7dmFyIGVsZW09dGhpczt3aGlsZShlbGVtLmZp
cnN0Q2hpbGQmJmVsZW0uZmlyc3RDaGlsZC5ub2RlVHlwZT09PTEpe2VsZW09ZWxl
bS5maXJzdENoaWxkO30KcmV0dXJuIGVsZW07fSkuYXBwZW5kKHRoaXMpO30KcmV0
dXJuIHRoaXM7fSx3cmFwSW5uZXI6ZnVuY3Rpb24oaHRtbCl7aWYoalF1ZXJ5Lmlz
RnVuY3Rpb24oaHRtbCkpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oaSl7alF1
ZXJ5KHRoaXMpLndyYXBJbm5lcihodG1sLmNhbGwodGhpcyxpKSk7fSk7fQpyZXR1
cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIHNlbGY9alF1ZXJ5KHRoaXMpLGNv
bnRlbnRzPXNlbGYuY29udGVudHMoKTtpZihjb250ZW50cy5sZW5ndGgpe2NvbnRl
bnRzLndyYXBBbGwoaHRtbCk7fWVsc2V7c2VsZi5hcHBlbmQoaHRtbCk7fX0pO30s
d3JhcDpmdW5jdGlvbihodG1sKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7
alF1ZXJ5KHRoaXMpLndyYXBBbGwoaHRtbCk7fSk7fSx1bndyYXA6ZnVuY3Rpb24o
KXtyZXR1cm4gdGhpcy5wYXJlbnQoKS5lYWNoKGZ1bmN0aW9uKCl7aWYoIWpRdWVy
eS5ub2RlTmFtZSh0aGlzLCJib2R5Iikpe2pRdWVyeSh0aGlzKS5yZXBsYWNlV2l0
aCh0aGlzLmNoaWxkTm9kZXMpO319KS5lbmQoKTt9LGFwcGVuZDpmdW5jdGlvbigp
e3JldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cyx0cnVlLGZ1bmN0aW9uKGVs
ZW0pe2lmKHRoaXMubm9kZVR5cGU9PT0xKXt0aGlzLmFwcGVuZENoaWxkKGVsZW0p
O319KTt9LHByZXBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChh
cmd1bWVudHMsdHJ1ZSxmdW5jdGlvbihlbGVtKXtpZih0aGlzLm5vZGVUeXBlPT09
MSl7dGhpcy5pbnNlcnRCZWZvcmUoZWxlbSx0aGlzLmZpcnN0Q2hpbGQpO319KTt9
LGJlZm9yZTpmdW5jdGlvbigpe2lmKHRoaXNbMF0mJnRoaXNbMF0ucGFyZW50Tm9k
ZSl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZhbHNlLGZ1bmN0aW9u
KGVsZW0pe3RoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZWxlbSx0aGlzKTt9
KTt9ZWxzZSBpZihhcmd1bWVudHMubGVuZ3RoKXt2YXIgc2V0PWpRdWVyeShhcmd1
bWVudHNbMF0pO3NldC5wdXNoLmFwcGx5KHNldCx0aGlzLnRvQXJyYXkoKSk7cmV0
dXJuIHRoaXMucHVzaFN0YWNrKHNldCwiYmVmb3JlIixhcmd1bWVudHMpO319LGFm
dGVyOmZ1bmN0aW9uKCl7aWYodGhpc1swXSYmdGhpc1swXS5wYXJlbnROb2RlKXty
ZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZmFsc2UsZnVuY3Rpb24oZWxl
bSl7dGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlbGVtLHRoaXMubmV4dFNp
YmxpbmcpO30pO31lbHNlIGlmKGFyZ3VtZW50cy5sZW5ndGgpe3ZhciBzZXQ9dGhp
cy5wdXNoU3RhY2sodGhpcywiYWZ0ZXIiLGFyZ3VtZW50cyk7c2V0LnB1c2guYXBw
bHkoc2V0LGpRdWVyeShhcmd1bWVudHNbMF0pLnRvQXJyYXkoKSk7cmV0dXJuIHNl
dDt9fSxyZW1vdmU6ZnVuY3Rpb24oc2VsZWN0b3Isa2VlcERhdGEpe2Zvcih2YXIg
aT0wLGVsZW07KGVsZW09dGhpc1tpXSkhPW51bGw7aSsrKXtpZighc2VsZWN0b3J8
fGpRdWVyeS5maWx0ZXIoc2VsZWN0b3IsW2VsZW1dKS5sZW5ndGgpe2lmKCFrZWVw
RGF0YSYmZWxlbS5ub2RlVHlwZT09PTEpe2pRdWVyeS5jbGVhbkRhdGEoZWxlbS5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpKTtqUXVlcnkuY2xlYW5EYXRhKFtlbGVt
XSk7fQppZihlbGVtLnBhcmVudE5vZGUpe2VsZW0ucGFyZW50Tm9kZS5yZW1vdmVD
aGlsZChlbGVtKTt9fX0KcmV0dXJuIHRoaXM7fSxlbXB0eTpmdW5jdGlvbigpe2Zv
cih2YXIgaT0wLGVsZW07KGVsZW09dGhpc1tpXSkhPW51bGw7aSsrKXtpZihlbGVt
Lm5vZGVUeXBlPT09MSl7alF1ZXJ5LmNsZWFuRGF0YShlbGVtLmdldEVsZW1lbnRz
QnlUYWdOYW1lKCIqIikpO30Kd2hpbGUoZWxlbS5maXJzdENoaWxkKXtlbGVtLnJl
bW92ZUNoaWxkKGVsZW0uZmlyc3RDaGlsZCk7fX0KcmV0dXJuIHRoaXM7fSxjbG9u
ZTpmdW5jdGlvbihldmVudHMpe3ZhciByZXQ9dGhpcy5tYXAoZnVuY3Rpb24oKXtp
ZighalF1ZXJ5LnN1cHBvcnQubm9DbG9uZUV2ZW50JiYhalF1ZXJ5LmlzWE1MRG9j
KHRoaXMpKXt2YXIgaHRtbD10aGlzLm91dGVySFRNTCxvd25lckRvY3VtZW50PXRo
aXMub3duZXJEb2N1bWVudDtpZighaHRtbCl7dmFyIGRpdj1vd25lckRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2Rpdi5hcHBlbmRDaGlsZCh0aGlzLmNsb25l
Tm9kZSh0cnVlKSk7aHRtbD1kaXYuaW5uZXJIVE1MO30KcmV0dXJuIGpRdWVyeS5j
bGVhbihbaHRtbC5yZXBsYWNlKHJpbmxpbmVqUXVlcnksIiIpLnJlcGxhY2UoLz0o
W149Iic+XHNdK1wvKT4vZywnPSIkMSI+JykucmVwbGFjZShybGVhZGluZ1doaXRl
c3BhY2UsIiIpXSxvd25lckRvY3VtZW50KVswXTt9ZWxzZXtyZXR1cm4gdGhpcy5j
bG9uZU5vZGUodHJ1ZSk7fX0pO2lmKGV2ZW50cz09PXRydWUpe2Nsb25lQ29weUV2
ZW50KHRoaXMscmV0KTtjbG9uZUNvcHlFdmVudCh0aGlzLmZpbmQoIioiKSxyZXQu
ZmluZCgiKiIpKTt9CnJldHVybiByZXQ7fSxodG1sOmZ1bmN0aW9uKHZhbHVlKXtp
Zih2YWx1ZT09PXVuZGVmaW5lZCl7cmV0dXJuIHRoaXNbMF0mJnRoaXNbMF0ubm9k
ZVR5cGU9PT0xP3RoaXNbMF0uaW5uZXJIVE1MLnJlcGxhY2UocmlubGluZWpRdWVy
eSwiIik6bnVsbDt9ZWxzZSBpZih0eXBlb2YgdmFsdWU9PT0ic3RyaW5nIiYmIXJu
b2NhY2hlLnRlc3QodmFsdWUpJiYoalF1ZXJ5LnN1cHBvcnQubGVhZGluZ1doaXRl
c3BhY2V8fCFybGVhZGluZ1doaXRlc3BhY2UudGVzdCh2YWx1ZSkpJiYhd3JhcE1h
cFsocnRhZ05hbWUuZXhlYyh2YWx1ZSl8fFsiIiwiIl0pWzFdLnRvTG93ZXJDYXNl
KCldKXt2YWx1ZT12YWx1ZS5yZXBsYWNlKHJ4aHRtbFRhZyxmY2xvc2VUYWcpO3Ry
eXtmb3IodmFyIGk9MCxsPXRoaXMubGVuZ3RoO2k8bDtpKyspe2lmKHRoaXNbaV0u
bm9kZVR5cGU9PT0xKXtqUXVlcnkuY2xlYW5EYXRhKHRoaXNbaV0uZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoIioiKSk7dGhpc1tpXS5pbm5lckhUTUw9dmFsdWU7fX19Y2F0
Y2goZSl7dGhpcy5lbXB0eSgpLmFwcGVuZCh2YWx1ZSk7fX1lbHNlIGlmKGpRdWVy
eS5pc0Z1bmN0aW9uKHZhbHVlKSl7dGhpcy5lYWNoKGZ1bmN0aW9uKGkpe3ZhciBz
ZWxmPWpRdWVyeSh0aGlzKSxvbGQ9c2VsZi5odG1sKCk7c2VsZi5lbXB0eSgpLmFw
cGVuZChmdW5jdGlvbigpe3JldHVybiB2YWx1ZS5jYWxsKHRoaXMsaSxvbGQpO30p
O30pO31lbHNle3RoaXMuZW1wdHkoKS5hcHBlbmQodmFsdWUpO30KcmV0dXJuIHRo
aXM7fSxyZXBsYWNlV2l0aDpmdW5jdGlvbih2YWx1ZSl7aWYodGhpc1swXSYmdGhp
c1swXS5wYXJlbnROb2RlKXtpZihqUXVlcnkuaXNGdW5jdGlvbih2YWx1ZSkpe3Jl
dHVybiB0aGlzLmVhY2goZnVuY3Rpb24oaSl7dmFyIHNlbGY9alF1ZXJ5KHRoaXMp
LG9sZD1zZWxmLmh0bWwoKTtzZWxmLnJlcGxhY2VXaXRoKHZhbHVlLmNhbGwodGhp
cyxpLG9sZCkpO30pO30KaWYodHlwZW9mIHZhbHVlIT09InN0cmluZyIpe3ZhbHVl
PWpRdWVyeSh2YWx1ZSkuZGV0YWNoKCk7fQpyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0
aW9uKCl7dmFyIG5leHQ9dGhpcy5uZXh0U2libGluZyxwYXJlbnQ9dGhpcy5wYXJl
bnROb2RlO2pRdWVyeSh0aGlzKS5yZW1vdmUoKTtpZihuZXh0KXtqUXVlcnkobmV4
dCkuYmVmb3JlKHZhbHVlKTt9ZWxzZXtqUXVlcnkocGFyZW50KS5hcHBlbmQodmFs
dWUpO319KTt9ZWxzZXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soalF1ZXJ5KGpRdWVy
eS5pc0Z1bmN0aW9uKHZhbHVlKT92YWx1ZSgpOnZhbHVlKSwicmVwbGFjZVdpdGgi
LHZhbHVlKTt9fSxkZXRhY2g6ZnVuY3Rpb24oc2VsZWN0b3Ipe3JldHVybiB0aGlz
LnJlbW92ZShzZWxlY3Rvcix0cnVlKTt9LGRvbU1hbmlwOmZ1bmN0aW9uKGFyZ3Ms
dGFibGUsY2FsbGJhY2spe3ZhciByZXN1bHRzLGZpcnN0LHZhbHVlPWFyZ3NbMF0s
c2NyaXB0cz1bXSxmcmFnbWVudCxwYXJlbnQ7aWYoIWpRdWVyeS5zdXBwb3J0LmNo
ZWNrQ2xvbmUmJmFyZ3VtZW50cy5sZW5ndGg9PT0zJiZ0eXBlb2YgdmFsdWU9PT0i
c3RyaW5nIiYmcmNoZWNrZWQudGVzdCh2YWx1ZSkpe3JldHVybiB0aGlzLmVhY2go
ZnVuY3Rpb24oKXtqUXVlcnkodGhpcykuZG9tTWFuaXAoYXJncyx0YWJsZSxjYWxs
YmFjayx0cnVlKTt9KTt9CmlmKGpRdWVyeS5pc0Z1bmN0aW9uKHZhbHVlKSl7cmV0
dXJuIHRoaXMuZWFjaChmdW5jdGlvbihpKXt2YXIgc2VsZj1qUXVlcnkodGhpcyk7
YXJnc1swXT12YWx1ZS5jYWxsKHRoaXMsaSx0YWJsZT9zZWxmLmh0bWwoKTp1bmRl
ZmluZWQpO3NlbGYuZG9tTWFuaXAoYXJncyx0YWJsZSxjYWxsYmFjayk7fSk7fQpp
Zih0aGlzWzBdKXtwYXJlbnQ9dmFsdWUmJnZhbHVlLnBhcmVudE5vZGU7aWYoalF1
ZXJ5LnN1cHBvcnQucGFyZW50Tm9kZSYmcGFyZW50JiZwYXJlbnQubm9kZVR5cGU9
PT0xMSYmcGFyZW50LmNoaWxkTm9kZXMubGVuZ3RoPT09dGhpcy5sZW5ndGgpe3Jl
c3VsdHM9e2ZyYWdtZW50OnBhcmVudH07fWVsc2V7cmVzdWx0cz1idWlsZEZyYWdt
ZW50KGFyZ3MsdGhpcyxzY3JpcHRzKTt9CmZyYWdtZW50PXJlc3VsdHMuZnJhZ21l
bnQ7aWYoZnJhZ21lbnQuY2hpbGROb2Rlcy5sZW5ndGg9PT0xKXtmaXJzdD1mcmFn
bWVudD1mcmFnbWVudC5maXJzdENoaWxkO31lbHNle2ZpcnN0PWZyYWdtZW50LmZp
cnN0Q2hpbGQ7fQppZihmaXJzdCl7dGFibGU9dGFibGUmJmpRdWVyeS5ub2RlTmFt
ZShmaXJzdCwidHIiKTtmb3IodmFyIGk9MCxsPXRoaXMubGVuZ3RoO2k8bDtpKysp
e2NhbGxiYWNrLmNhbGwodGFibGU/cm9vdCh0aGlzW2ldLGZpcnN0KTp0aGlzW2ld
LGk+MHx8cmVzdWx0cy5jYWNoZWFibGV8fHRoaXMubGVuZ3RoPjE/ZnJhZ21lbnQu
Y2xvbmVOb2RlKHRydWUpOmZyYWdtZW50KTt9fQppZihzY3JpcHRzLmxlbmd0aCl7
alF1ZXJ5LmVhY2goc2NyaXB0cyxldmFsU2NyaXB0KTt9fQpyZXR1cm4gdGhpcztm
dW5jdGlvbiByb290KGVsZW0sY3VyKXtyZXR1cm4galF1ZXJ5Lm5vZGVOYW1lKGVs
ZW0sInRhYmxlIik/KGVsZW0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRib2R5Iilb
MF18fGVsZW0uYXBwZW5kQ2hpbGQoZWxlbS5vd25lckRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoInRib2R5IikpKTplbGVtO319fSk7ZnVuY3Rpb24gY2xvbmVDb3B5RXZl
bnQob3JpZyxyZXQpe3ZhciBpPTA7cmV0LmVhY2goZnVuY3Rpb24oKXtpZih0aGlz
Lm5vZGVOYW1lIT09KG9yaWdbaV0mJm9yaWdbaV0ubm9kZU5hbWUpKXtyZXR1cm47
fQp2YXIgb2xkRGF0YT1qUXVlcnkuZGF0YShvcmlnW2krK10pLGN1ckRhdGE9alF1
ZXJ5LmRhdGEodGhpcyxvbGREYXRhKSxldmVudHM9b2xkRGF0YSYmb2xkRGF0YS5l
dmVudHM7aWYoZXZlbnRzKXtkZWxldGUgY3VyRGF0YS5oYW5kbGU7Y3VyRGF0YS5l
dmVudHM9e307Zm9yKHZhciB0eXBlIGluIGV2ZW50cyl7Zm9yKHZhciBoYW5kbGVy
IGluIGV2ZW50c1t0eXBlXSl7alF1ZXJ5LmV2ZW50LmFkZCh0aGlzLHR5cGUsZXZl
bnRzW3R5cGVdW2hhbmRsZXJdLGV2ZW50c1t0eXBlXVtoYW5kbGVyXS5kYXRhKTt9
fX19KTt9CmZ1bmN0aW9uIGJ1aWxkRnJhZ21lbnQoYXJncyxub2RlcyxzY3JpcHRz
KXt2YXIgZnJhZ21lbnQsY2FjaGVhYmxlLGNhY2hlcmVzdWx0cyxkb2M9KG5vZGVz
JiZub2Rlc1swXT9ub2Rlc1swXS5vd25lckRvY3VtZW50fHxub2Rlc1swXTpkb2N1
bWVudCk7aWYoYXJncy5sZW5ndGg9PT0xJiZ0eXBlb2YgYXJnc1swXT09PSJzdHJp
bmciJiZhcmdzWzBdLmxlbmd0aDw1MTImJmRvYz09PWRvY3VtZW50JiYhcm5vY2Fj
aGUudGVzdChhcmdzWzBdKSYmKGpRdWVyeS5zdXBwb3J0LmNoZWNrQ2xvbmV8fCFy
Y2hlY2tlZC50ZXN0KGFyZ3NbMF0pKSl7Y2FjaGVhYmxlPXRydWU7Y2FjaGVyZXN1
bHRzPWpRdWVyeS5mcmFnbWVudHNbYXJnc1swXV07aWYoY2FjaGVyZXN1bHRzKXtp
ZihjYWNoZXJlc3VsdHMhPT0xKXtmcmFnbWVudD1jYWNoZXJlc3VsdHM7fX19Cmlm
KCFmcmFnbWVudCl7ZnJhZ21lbnQ9ZG9jLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQo
KTtqUXVlcnkuY2xlYW4oYXJncyxkb2MsZnJhZ21lbnQsc2NyaXB0cyk7fQppZihj
YWNoZWFibGUpe2pRdWVyeS5mcmFnbWVudHNbYXJnc1swXV09Y2FjaGVyZXN1bHRz
P2ZyYWdtZW50OjE7fQpyZXR1cm57ZnJhZ21lbnQ6ZnJhZ21lbnQsY2FjaGVhYmxl
OmNhY2hlYWJsZX07fQpqUXVlcnkuZnJhZ21lbnRzPXt9O2pRdWVyeS5lYWNoKHth
cHBlbmRUbzoiYXBwZW5kIixwcmVwZW5kVG86InByZXBlbmQiLGluc2VydEJlZm9y
ZToiYmVmb3JlIixpbnNlcnRBZnRlcjoiYWZ0ZXIiLHJlcGxhY2VBbGw6InJlcGxh
Y2VXaXRoIn0sZnVuY3Rpb24obmFtZSxvcmlnaW5hbCl7alF1ZXJ5LmZuW25hbWVd
PWZ1bmN0aW9uKHNlbGVjdG9yKXt2YXIgcmV0PVtdLGluc2VydD1qUXVlcnkoc2Vs
ZWN0b3IpLHBhcmVudD10aGlzLmxlbmd0aD09PTEmJnRoaXNbMF0ucGFyZW50Tm9k
ZTtpZihwYXJlbnQmJnBhcmVudC5ub2RlVHlwZT09PTExJiZwYXJlbnQuY2hpbGRO
b2Rlcy5sZW5ndGg9PT0xJiZpbnNlcnQubGVuZ3RoPT09MSl7aW5zZXJ0W29yaWdp
bmFsXSh0aGlzWzBdKTtyZXR1cm4gdGhpczt9ZWxzZXtmb3IodmFyIGk9MCxsPWlu
c2VydC5sZW5ndGg7aTxsO2krKyl7dmFyIGVsZW1zPShpPjA/dGhpcy5jbG9uZSh0
cnVlKTp0aGlzKS5nZXQoKTtqUXVlcnkuZm5bb3JpZ2luYWxdLmFwcGx5KGpRdWVy
eShpbnNlcnRbaV0pLGVsZW1zKTtyZXQ9cmV0LmNvbmNhdChlbGVtcyk7fQpyZXR1
cm4gdGhpcy5wdXNoU3RhY2socmV0LG5hbWUsaW5zZXJ0LnNlbGVjdG9yKTt9fTt9
KTtqUXVlcnkuZXh0ZW5kKHtjbGVhbjpmdW5jdGlvbihlbGVtcyxjb250ZXh0LGZy
YWdtZW50LHNjcmlwdHMpe2NvbnRleHQ9Y29udGV4dHx8ZG9jdW1lbnQ7aWYodHlw
ZW9mIGNvbnRleHQuY3JlYXRlRWxlbWVudD09PSJ1bmRlZmluZWQiKXtjb250ZXh0
PWNvbnRleHQub3duZXJEb2N1bWVudHx8Y29udGV4dFswXSYmY29udGV4dFswXS5v
d25lckRvY3VtZW50fHxkb2N1bWVudDt9CnZhciByZXQ9W107Zm9yKHZhciBpPTAs
ZWxlbTsoZWxlbT1lbGVtc1tpXSkhPW51bGw7aSsrKXtpZih0eXBlb2YgZWxlbT09
PSJudW1iZXIiKXtlbGVtKz0iIjt9CmlmKCFlbGVtKXtjb250aW51ZTt9CmlmKHR5
cGVvZiBlbGVtPT09InN0cmluZyImJiFyaHRtbC50ZXN0KGVsZW0pKXtlbGVtPWNv
bnRleHQuY3JlYXRlVGV4dE5vZGUoZWxlbSk7fWVsc2UgaWYodHlwZW9mIGVsZW09
PT0ic3RyaW5nIil7ZWxlbT1lbGVtLnJlcGxhY2UocnhodG1sVGFnLGZjbG9zZVRh
Zyk7dmFyIHRhZz0ocnRhZ05hbWUuZXhlYyhlbGVtKXx8WyIiLCIiXSlbMV0udG9M
b3dlckNhc2UoKSx3cmFwPXdyYXBNYXBbdGFnXXx8d3JhcE1hcC5fZGVmYXVsdCxk
ZXB0aD13cmFwWzBdLGRpdj1jb250ZXh0LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2Rp
di5pbm5lckhUTUw9d3JhcFsxXStlbGVtK3dyYXBbMl07d2hpbGUoZGVwdGgtLSl7
ZGl2PWRpdi5sYXN0Q2hpbGQ7fQppZighalF1ZXJ5LnN1cHBvcnQudGJvZHkpe3Zh
ciBoYXNCb2R5PXJ0Ym9keS50ZXN0KGVsZW0pLHRib2R5PXRhZz09PSJ0YWJsZSIm
JiFoYXNCb2R5P2Rpdi5maXJzdENoaWxkJiZkaXYuZmlyc3RDaGlsZC5jaGlsZE5v
ZGVzOndyYXBbMV09PT0iPHRhYmxlPiImJiFoYXNCb2R5P2Rpdi5jaGlsZE5vZGVz
OltdO2Zvcih2YXIgaj10Ym9keS5sZW5ndGgtMTtqPj0wOy0tail7aWYoalF1ZXJ5
Lm5vZGVOYW1lKHRib2R5W2pdLCJ0Ym9keSIpJiYhdGJvZHlbal0uY2hpbGROb2Rl
cy5sZW5ndGgpe3Rib2R5W2pdLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGJvZHlb
al0pO319fQppZighalF1ZXJ5LnN1cHBvcnQubGVhZGluZ1doaXRlc3BhY2UmJnJs
ZWFkaW5nV2hpdGVzcGFjZS50ZXN0KGVsZW0pKXtkaXYuaW5zZXJ0QmVmb3JlKGNv
bnRleHQuY3JlYXRlVGV4dE5vZGUocmxlYWRpbmdXaGl0ZXNwYWNlLmV4ZWMoZWxl
bSlbMF0pLGRpdi5maXJzdENoaWxkKTt9CmVsZW09ZGl2LmNoaWxkTm9kZXM7fQpp
ZihlbGVtLm5vZGVUeXBlKXtyZXQucHVzaChlbGVtKTt9ZWxzZXtyZXQ9alF1ZXJ5
Lm1lcmdlKHJldCxlbGVtKTt9fQppZihmcmFnbWVudCl7Zm9yKHZhciBpPTA7cmV0
W2ldO2krKyl7aWYoc2NyaXB0cyYmalF1ZXJ5Lm5vZGVOYW1lKHJldFtpXSwic2Ny
aXB0IikmJighcmV0W2ldLnR5cGV8fHJldFtpXS50eXBlLnRvTG93ZXJDYXNlKCk9
PT0idGV4dC9qYXZhc2NyaXB0Iikpe3NjcmlwdHMucHVzaChyZXRbaV0ucGFyZW50
Tm9kZT9yZXRbaV0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChyZXRbaV0pOnJldFtp
XSk7fWVsc2V7aWYocmV0W2ldLm5vZGVUeXBlPT09MSl7cmV0LnNwbGljZS5hcHBs
eShyZXQsW2krMSwwXS5jb25jYXQoalF1ZXJ5Lm1ha2VBcnJheShyZXRbaV0uZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpKSkpO30KZnJhZ21lbnQuYXBwZW5k
Q2hpbGQocmV0W2ldKTt9fX0KcmV0dXJuIHJldDt9LGNsZWFuRGF0YTpmdW5jdGlv
bihlbGVtcyl7dmFyIGRhdGEsaWQsY2FjaGU9alF1ZXJ5LmNhY2hlLHNwZWNpYWw9
alF1ZXJ5LmV2ZW50LnNwZWNpYWwsZGVsZXRlRXhwYW5kbz1qUXVlcnkuc3VwcG9y
dC5kZWxldGVFeHBhbmRvO2Zvcih2YXIgaT0wLGVsZW07KGVsZW09ZWxlbXNbaV0p
IT1udWxsO2krKyl7aWQ9ZWxlbVtqUXVlcnkuZXhwYW5kb107aWYoaWQpe2RhdGE9
Y2FjaGVbaWRdO2lmKGRhdGEuZXZlbnRzKXtmb3IodmFyIHR5cGUgaW4gZGF0YS5l
dmVudHMpe2lmKHNwZWNpYWxbdHlwZV0pe2pRdWVyeS5ldmVudC5yZW1vdmUoZWxl
bSx0eXBlKTt9ZWxzZXtyZW1vdmVFdmVudChlbGVtLHR5cGUsZGF0YS5oYW5kbGUp
O319fQppZihkZWxldGVFeHBhbmRvKXtkZWxldGUgZWxlbVtqUXVlcnkuZXhwYW5k
b107fWVsc2UgaWYoZWxlbS5yZW1vdmVBdHRyaWJ1dGUpe2VsZW0ucmVtb3ZlQXR0
cmlidXRlKGpRdWVyeS5leHBhbmRvKTt9CmRlbGV0ZSBjYWNoZVtpZF07fX19fSk7
dmFyIHJleGNsdWRlPS96LT9pbmRleHxmb250LT93ZWlnaHR8b3BhY2l0eXx6b29t
fGxpbmUtP2hlaWdodC9pLHJhbHBoYT0vYWxwaGFcKFteKV0qXCkvLHJvcGFjaXR5
PS9vcGFjaXR5PShbXildKikvLHJmbG9hdD0vZmxvYXQvaSxyZGFzaEFscGhhPS8t
KFthLXpdKS9pZyxydXBwZXI9LyhbQS1aXSkvZyxybnVtcHg9L14tP1xkKyg/OnB4
KT8kL2kscm51bT0vXi0/XGQvLGNzc1Nob3c9e3Bvc2l0aW9uOiJhYnNvbHV0ZSIs
dmlzaWJpbGl0eToiaGlkZGVuIixkaXNwbGF5OiJibG9jayJ9LGNzc1dpZHRoPVsi
TGVmdCIsIlJpZ2h0Il0sY3NzSGVpZ2h0PVsiVG9wIiwiQm90dG9tIl0sZ2V0Q29t
cHV0ZWRTdHlsZT1kb2N1bWVudC5kZWZhdWx0VmlldyYmZG9jdW1lbnQuZGVmYXVs
dFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSxzdHlsZUZsb2F0PWpRdWVyeS5zdXBwb3J0
LmNzc0Zsb2F0PyJjc3NGbG9hdCI6InN0eWxlRmxvYXQiLGZjYW1lbENhc2U9ZnVu
Y3Rpb24oYWxsLGxldHRlcil7cmV0dXJuIGxldHRlci50b1VwcGVyQ2FzZSgpO307
alF1ZXJ5LmZuLmNzcz1mdW5jdGlvbihuYW1lLHZhbHVlKXtyZXR1cm4gYWNjZXNz
KHRoaXMsbmFtZSx2YWx1ZSx0cnVlLGZ1bmN0aW9uKGVsZW0sbmFtZSx2YWx1ZSl7
aWYodmFsdWU9PT11bmRlZmluZWQpe3JldHVybiBqUXVlcnkuY3VyQ1NTKGVsZW0s
bmFtZSk7fQppZih0eXBlb2YgdmFsdWU9PT0ibnVtYmVyIiYmIXJleGNsdWRlLnRl
c3QobmFtZSkpe3ZhbHVlKz0icHgiO30KalF1ZXJ5LnN0eWxlKGVsZW0sbmFtZSx2
YWx1ZSk7fSk7fTtqUXVlcnkuZXh0ZW5kKHtzdHlsZTpmdW5jdGlvbihlbGVtLG5h
bWUsdmFsdWUpe2lmKCFlbGVtfHxlbGVtLm5vZGVUeXBlPT09M3x8ZWxlbS5ub2Rl
VHlwZT09PTgpe3JldHVybiB1bmRlZmluZWQ7fQppZigobmFtZT09PSJ3aWR0aCJ8
fG5hbWU9PT0iaGVpZ2h0IikmJnBhcnNlRmxvYXQodmFsdWUpPDApe3ZhbHVlPXVu
ZGVmaW5lZDt9CnZhciBzdHlsZT1lbGVtLnN0eWxlfHxlbGVtLHNldD12YWx1ZSE9
PXVuZGVmaW5lZDtpZighalF1ZXJ5LnN1cHBvcnQub3BhY2l0eSYmbmFtZT09PSJv
cGFjaXR5Iil7aWYoc2V0KXtzdHlsZS56b29tPTE7dmFyIG9wYWNpdHk9cGFyc2VJ
bnQodmFsdWUsMTApKyIiPT09Ik5hTiI/IiI6ImFscGhhKG9wYWNpdHk9Iit2YWx1
ZSoxMDArIikiO3ZhciBmaWx0ZXI9c3R5bGUuZmlsdGVyfHxqUXVlcnkuY3VyQ1NT
KGVsZW0sImZpbHRlciIpfHwiIjtzdHlsZS5maWx0ZXI9cmFscGhhLnRlc3QoZmls
dGVyKT9maWx0ZXIucmVwbGFjZShyYWxwaGEsb3BhY2l0eSk6b3BhY2l0eTt9CnJl
dHVybiBzdHlsZS5maWx0ZXImJnN0eWxlLmZpbHRlci5pbmRleE9mKCJvcGFjaXR5
PSIpPj0wPyhwYXJzZUZsb2F0KHJvcGFjaXR5LmV4ZWMoc3R5bGUuZmlsdGVyKVsx
XSkvMTAwKSsiIjoiIjt9CmlmKHJmbG9hdC50ZXN0KG5hbWUpKXtuYW1lPXN0eWxl
RmxvYXQ7fQpuYW1lPW5hbWUucmVwbGFjZShyZGFzaEFscGhhLGZjYW1lbENhc2Up
O2lmKHNldCl7c3R5bGVbbmFtZV09dmFsdWU7fQpyZXR1cm4gc3R5bGVbbmFtZV07
fSxjc3M6ZnVuY3Rpb24oZWxlbSxuYW1lLGZvcmNlLGV4dHJhKXtpZihuYW1lPT09
IndpZHRoInx8bmFtZT09PSJoZWlnaHQiKXt2YXIgdmFsLHByb3BzPWNzc1Nob3cs
d2hpY2g9bmFtZT09PSJ3aWR0aCI/Y3NzV2lkdGg6Y3NzSGVpZ2h0O2Z1bmN0aW9u
IGdldFdIKCl7dmFsPW5hbWU9PT0id2lkdGgiP2VsZW0ub2Zmc2V0V2lkdGg6ZWxl
bS5vZmZzZXRIZWlnaHQ7aWYoZXh0cmE9PT0iYm9yZGVyIil7cmV0dXJuO30KalF1
ZXJ5LmVhY2god2hpY2gsZnVuY3Rpb24oKXtpZighZXh0cmEpe3ZhbC09cGFyc2VG
bG9hdChqUXVlcnkuY3VyQ1NTKGVsZW0sInBhZGRpbmciK3RoaXMsdHJ1ZSkpfHww
O30KaWYoZXh0cmE9PT0ibWFyZ2luIil7dmFsKz1wYXJzZUZsb2F0KGpRdWVyeS5j
dXJDU1MoZWxlbSwibWFyZ2luIit0aGlzLHRydWUpKXx8MDt9ZWxzZXt2YWwtPXBh
cnNlRmxvYXQoalF1ZXJ5LmN1ckNTUyhlbGVtLCJib3JkZXIiK3RoaXMrIldpZHRo
Iix0cnVlKSl8fDA7fX0pO30KaWYoZWxlbS5vZmZzZXRXaWR0aCE9PTApe2dldFdI
KCk7fWVsc2V7alF1ZXJ5LnN3YXAoZWxlbSxwcm9wcyxnZXRXSCk7fQpyZXR1cm4g
TWF0aC5tYXgoMCxNYXRoLnJvdW5kKHZhbCkpO30KcmV0dXJuIGpRdWVyeS5jdXJD
U1MoZWxlbSxuYW1lLGZvcmNlKTt9LGN1ckNTUzpmdW5jdGlvbihlbGVtLG5hbWUs
Zm9yY2Upe3ZhciByZXQsc3R5bGU9ZWxlbS5zdHlsZSxmaWx0ZXI7aWYoIWpRdWVy
eS5zdXBwb3J0Lm9wYWNpdHkmJm5hbWU9PT0ib3BhY2l0eSImJmVsZW0uY3VycmVu
dFN0eWxlKXtyZXQ9cm9wYWNpdHkudGVzdChlbGVtLmN1cnJlbnRTdHlsZS5maWx0
ZXJ8fCIiKT8ocGFyc2VGbG9hdChSZWdFeHAuJDEpLzEwMCkrIiI6IiI7cmV0dXJu
IHJldD09PSIiPyIxIjpyZXQ7fQppZihyZmxvYXQudGVzdChuYW1lKSl7bmFtZT1z
dHlsZUZsb2F0O30KaWYoIWZvcmNlJiZzdHlsZSYmc3R5bGVbbmFtZV0pe3JldD1z
dHlsZVtuYW1lXTt9ZWxzZSBpZihnZXRDb21wdXRlZFN0eWxlKXtpZihyZmxvYXQu
dGVzdChuYW1lKSl7bmFtZT0iZmxvYXQiO30KbmFtZT1uYW1lLnJlcGxhY2UocnVw
cGVyLCItJDEiKS50b0xvd2VyQ2FzZSgpO3ZhciBkZWZhdWx0Vmlldz1lbGVtLm93
bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc7aWYoIWRlZmF1bHRWaWV3KXtyZXR1cm4g
bnVsbDt9CnZhciBjb21wdXRlZFN0eWxlPWRlZmF1bHRWaWV3LmdldENvbXB1dGVk
U3R5bGUoZWxlbSxudWxsKTtpZihjb21wdXRlZFN0eWxlKXtyZXQ9Y29tcHV0ZWRT
dHlsZS5nZXRQcm9wZXJ0eVZhbHVlKG5hbWUpO30KaWYobmFtZT09PSJvcGFjaXR5
IiYmcmV0PT09IiIpe3JldD0iMSI7fX1lbHNlIGlmKGVsZW0uY3VycmVudFN0eWxl
KXt2YXIgY2FtZWxDYXNlPW5hbWUucmVwbGFjZShyZGFzaEFscGhhLGZjYW1lbENh
c2UpO3JldD1lbGVtLmN1cnJlbnRTdHlsZVtuYW1lXXx8ZWxlbS5jdXJyZW50U3R5
bGVbY2FtZWxDYXNlXTtpZighcm51bXB4LnRlc3QocmV0KSYmcm51bS50ZXN0KHJl
dCkpe3ZhciBsZWZ0PXN0eWxlLmxlZnQscnNMZWZ0PWVsZW0ucnVudGltZVN0eWxl
LmxlZnQ7ZWxlbS5ydW50aW1lU3R5bGUubGVmdD1lbGVtLmN1cnJlbnRTdHlsZS5s
ZWZ0O3N0eWxlLmxlZnQ9Y2FtZWxDYXNlPT09ImZvbnRTaXplIj8iMWVtIjoocmV0
fHwwKTtyZXQ9c3R5bGUucGl4ZWxMZWZ0KyJweCI7c3R5bGUubGVmdD1sZWZ0O2Vs
ZW0ucnVudGltZVN0eWxlLmxlZnQ9cnNMZWZ0O319CnJldHVybiByZXQ7fSxzd2Fw
OmZ1bmN0aW9uKGVsZW0sb3B0aW9ucyxjYWxsYmFjayl7dmFyIG9sZD17fTtmb3Io
dmFyIG5hbWUgaW4gb3B0aW9ucyl7b2xkW25hbWVdPWVsZW0uc3R5bGVbbmFtZV07
ZWxlbS5zdHlsZVtuYW1lXT1vcHRpb25zW25hbWVdO30KY2FsbGJhY2suY2FsbChl
bGVtKTtmb3IodmFyIG5hbWUgaW4gb3B0aW9ucyl7ZWxlbS5zdHlsZVtuYW1lXT1v
bGRbbmFtZV07fX19KTtpZihqUXVlcnkuZXhwciYmalF1ZXJ5LmV4cHIuZmlsdGVy
cyl7alF1ZXJ5LmV4cHIuZmlsdGVycy5oaWRkZW49ZnVuY3Rpb24oZWxlbSl7dmFy
IHdpZHRoPWVsZW0ub2Zmc2V0V2lkdGgsaGVpZ2h0PWVsZW0ub2Zmc2V0SGVpZ2h0
LHNraXA9ZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09InRyIjtyZXR1cm4g
d2lkdGg9PT0wJiZoZWlnaHQ9PT0wJiYhc2tpcD90cnVlOndpZHRoPjAmJmhlaWdo
dD4wJiYhc2tpcD9mYWxzZTpqUXVlcnkuY3VyQ1NTKGVsZW0sImRpc3BsYXkiKT09
PSJub25lIjt9O2pRdWVyeS5leHByLmZpbHRlcnMudmlzaWJsZT1mdW5jdGlvbihl
bGVtKXtyZXR1cm4halF1ZXJ5LmV4cHIuZmlsdGVycy5oaWRkZW4oZWxlbSk7fTt9
CnZhciBqc2M9bm93KCkscnNjcmlwdD0vPHNjcmlwdCgufFxzKSo/XC9zY3JpcHQ+
L2dpLHJzZWxlY3RUZXh0YXJlYT0vc2VsZWN0fHRleHRhcmVhL2kscmlucHV0PS9j
b2xvcnxkYXRlfGRhdGV0aW1lfGVtYWlsfGhpZGRlbnxtb250aHxudW1iZXJ8cGFz
c3dvcmR8cmFuZ2V8c2VhcmNofHRlbHx0ZXh0fHRpbWV8dXJsfHdlZWsvaSxqc3Jl
PS89XD8oJnwkKS8scnF1ZXJ5PS9cPy8scnRzPS8oXD98JilfPS4qPygmfCQpLyxy
dXJsPS9eKFx3KzopP1wvXC8oW15cLz8jXSspLyxyMjA9LyUyMC9nLF9sb2FkPWpR
dWVyeS5mbi5sb2FkO2pRdWVyeS5mbi5leHRlbmQoe2xvYWQ6ZnVuY3Rpb24odXJs
LHBhcmFtcyxjYWxsYmFjayl7aWYodHlwZW9mIHVybCE9PSJzdHJpbmciKXtyZXR1
cm4gX2xvYWQuY2FsbCh0aGlzLHVybCk7fWVsc2UgaWYoIXRoaXMubGVuZ3RoKXty
ZXR1cm4gdGhpczt9CnZhciBvZmY9dXJsLmluZGV4T2YoIiAiKTtpZihvZmY+PTAp
e3ZhciBzZWxlY3Rvcj11cmwuc2xpY2Uob2ZmLHVybC5sZW5ndGgpO3VybD11cmwu
c2xpY2UoMCxvZmYpO30KdmFyIHR5cGU9IkdFVCI7aWYocGFyYW1zKXtpZihqUXVl
cnkuaXNGdW5jdGlvbihwYXJhbXMpKXtjYWxsYmFjaz1wYXJhbXM7cGFyYW1zPW51
bGw7fWVsc2UgaWYodHlwZW9mIHBhcmFtcz09PSJvYmplY3QiKXtwYXJhbXM9alF1
ZXJ5LnBhcmFtKHBhcmFtcyxqUXVlcnkuYWpheFNldHRpbmdzLnRyYWRpdGlvbmFs
KTt0eXBlPSJQT1NUIjt9fQp2YXIgc2VsZj10aGlzO2pRdWVyeS5hamF4KHt1cmw6
dXJsLHR5cGU6dHlwZSxkYXRhVHlwZToiaHRtbCIsZGF0YTpwYXJhbXMsY29tcGxl
dGU6ZnVuY3Rpb24ocmVzLHN0YXR1cyl7aWYoc3RhdHVzPT09InN1Y2Nlc3MifHxz
dGF0dXM9PT0ibm90bW9kaWZpZWQiKXtzZWxmLmh0bWwoc2VsZWN0b3I/alF1ZXJ5
KCI8ZGl2IC8+IikuYXBwZW5kKHJlcy5yZXNwb25zZVRleHQucmVwbGFjZShyc2Ny
aXB0LCIiKSkuZmluZChzZWxlY3Rvcik6cmVzLnJlc3BvbnNlVGV4dCk7fQppZihj
YWxsYmFjayl7c2VsZi5lYWNoKGNhbGxiYWNrLFtyZXMucmVzcG9uc2VUZXh0LHN0
YXR1cyxyZXNdKTt9fX0pO3JldHVybiB0aGlzO30sc2VyaWFsaXplOmZ1bmN0aW9u
KCl7cmV0dXJuIGpRdWVyeS5wYXJhbSh0aGlzLnNlcmlhbGl6ZUFycmF5KCkpO30s
c2VyaWFsaXplQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rp
b24oKXtyZXR1cm4gdGhpcy5lbGVtZW50cz9qUXVlcnkubWFrZUFycmF5KHRoaXMu
ZWxlbWVudHMpOnRoaXM7fSkuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu
bmFtZSYmIXRoaXMuZGlzYWJsZWQmJih0aGlzLmNoZWNrZWR8fHJzZWxlY3RUZXh0
YXJlYS50ZXN0KHRoaXMubm9kZU5hbWUpfHxyaW5wdXQudGVzdCh0aGlzLnR5cGUp
KTt9KS5tYXAoZnVuY3Rpb24oaSxlbGVtKXt2YXIgdmFsPWpRdWVyeSh0aGlzKS52
YWwoKTtyZXR1cm4gdmFsPT1udWxsP251bGw6alF1ZXJ5LmlzQXJyYXkodmFsKT9q
UXVlcnkubWFwKHZhbCxmdW5jdGlvbih2YWwsaSl7cmV0dXJue25hbWU6ZWxlbS5u
YW1lLHZhbHVlOnZhbH07fSk6e25hbWU6ZWxlbS5uYW1lLHZhbHVlOnZhbH07fSku
Z2V0KCk7fX0pO2pRdWVyeS5lYWNoKCJhamF4U3RhcnQgYWpheFN0b3AgYWpheENv
bXBsZXRlIGFqYXhFcnJvciBhamF4U3VjY2VzcyBhamF4U2VuZCIuc3BsaXQoIiAi
KSxmdW5jdGlvbihpLG8pe2pRdWVyeS5mbltvXT1mdW5jdGlvbihmKXtyZXR1cm4g
dGhpcy5iaW5kKG8sZik7fTt9KTtqUXVlcnkuZXh0ZW5kKHtnZXQ6ZnVuY3Rpb24o
dXJsLGRhdGEsY2FsbGJhY2ssdHlwZSl7aWYoalF1ZXJ5LmlzRnVuY3Rpb24oZGF0
YSkpe3R5cGU9dHlwZXx8Y2FsbGJhY2s7Y2FsbGJhY2s9ZGF0YTtkYXRhPW51bGw7
fQpyZXR1cm4galF1ZXJ5LmFqYXgoe3R5cGU6IkdFVCIsdXJsOnVybCxkYXRhOmRh
dGEsc3VjY2VzczpjYWxsYmFjayxkYXRhVHlwZTp0eXBlfSk7fSxnZXRTY3JpcHQ6
ZnVuY3Rpb24odXJsLGNhbGxiYWNrKXtyZXR1cm4galF1ZXJ5LmdldCh1cmwsbnVs
bCxjYWxsYmFjaywic2NyaXB0Iik7fSxnZXRKU09OOmZ1bmN0aW9uKHVybCxkYXRh
LGNhbGxiYWNrKXtyZXR1cm4galF1ZXJ5LmdldCh1cmwsZGF0YSxjYWxsYmFjaywi
anNvbiIpO30scG9zdDpmdW5jdGlvbih1cmwsZGF0YSxjYWxsYmFjayx0eXBlKXtp
ZihqUXVlcnkuaXNGdW5jdGlvbihkYXRhKSl7dHlwZT10eXBlfHxjYWxsYmFjaztj
YWxsYmFjaz1kYXRhO2RhdGE9e307fQpyZXR1cm4galF1ZXJ5LmFqYXgoe3R5cGU6
IlBPU1QiLHVybDp1cmwsZGF0YTpkYXRhLHN1Y2Nlc3M6Y2FsbGJhY2ssZGF0YVR5
cGU6dHlwZX0pO30sYWpheFNldHVwOmZ1bmN0aW9uKHNldHRpbmdzKXtqUXVlcnku
ZXh0ZW5kKGpRdWVyeS5hamF4U2V0dGluZ3Msc2V0dGluZ3MpO30sYWpheFNldHRp
bmdzOnt1cmw6bG9jYXRpb24uaHJlZixnbG9iYWw6dHJ1ZSx0eXBlOiJHRVQiLGNv
bnRlbnRUeXBlOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiLHBy
b2Nlc3NEYXRhOnRydWUsYXN5bmM6dHJ1ZSx4aHI6d2luZG93LlhNTEh0dHBSZXF1
ZXN0JiYod2luZG93LmxvY2F0aW9uLnByb3RvY29sIT09ImZpbGU6Inx8IXdpbmRv
dy5BY3RpdmVYT2JqZWN0KT9mdW5jdGlvbigpe3JldHVybiBuZXcgd2luZG93LlhN
TEh0dHBSZXF1ZXN0KCk7fTpmdW5jdGlvbigpe3RyeXtyZXR1cm4gbmV3IHdpbmRv
dy5BY3RpdmVYT2JqZWN0KCJNaWNyb3NvZnQuWE1MSFRUUCIpO31jYXRjaChlKXt9
fSxhY2NlcHRzOnt4bWw6ImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWwiLGh0bWw6
InRleHQvaHRtbCIsc2NyaXB0OiJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9u
L2phdmFzY3JpcHQiLGpzb246ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvamF2YXNj
cmlwdCIsdGV4dDoidGV4dC9wbGFpbiIsX2RlZmF1bHQ6IiovKiJ9fSxsYXN0TW9k
aWZpZWQ6e30sZXRhZzp7fSxhamF4OmZ1bmN0aW9uKG9yaWdTZXR0aW5ncyl7dmFy
IHM9alF1ZXJ5LmV4dGVuZCh0cnVlLHt9LGpRdWVyeS5hamF4U2V0dGluZ3Msb3Jp
Z1NldHRpbmdzKTt2YXIganNvbnAsc3RhdHVzLGRhdGEsY2FsbGJhY2tDb250ZXh0
PW9yaWdTZXR0aW5ncyYmb3JpZ1NldHRpbmdzLmNvbnRleHR8fHMsdHlwZT1zLnR5
cGUudG9VcHBlckNhc2UoKTtpZihzLmRhdGEmJnMucHJvY2Vzc0RhdGEmJnR5cGVv
ZiBzLmRhdGEhPT0ic3RyaW5nIil7cy5kYXRhPWpRdWVyeS5wYXJhbShzLmRhdGEs
cy50cmFkaXRpb25hbCk7fQppZihzLmRhdGFUeXBlPT09Impzb25wIil7aWYodHlw
ZT09PSJHRVQiKXtpZighanNyZS50ZXN0KHMudXJsKSl7cy51cmwrPShycXVlcnku
dGVzdChzLnVybCk/IiYiOiI/IikrKHMuanNvbnB8fCJjYWxsYmFjayIpKyI9PyI7
fX1lbHNlIGlmKCFzLmRhdGF8fCFqc3JlLnRlc3Qocy5kYXRhKSl7cy5kYXRhPShz
LmRhdGE/cy5kYXRhKyImIjoiIikrKHMuanNvbnB8fCJjYWxsYmFjayIpKyI9PyI7
fQpzLmRhdGFUeXBlPSJqc29uIjt9CmlmKHMuZGF0YVR5cGU9PT0ianNvbiImJihz
LmRhdGEmJmpzcmUudGVzdChzLmRhdGEpfHxqc3JlLnRlc3Qocy51cmwpKSl7anNv
bnA9cy5qc29ucENhbGxiYWNrfHwoImpzb25wIitqc2MrKyk7aWYocy5kYXRhKXtz
LmRhdGE9KHMuZGF0YSsiIikucmVwbGFjZShqc3JlLCI9Iitqc29ucCsiJDEiKTt9
CnMudXJsPXMudXJsLnJlcGxhY2UoanNyZSwiPSIranNvbnArIiQxIik7cy5kYXRh
VHlwZT0ic2NyaXB0Ijt3aW5kb3dbanNvbnBdPXdpbmRvd1tqc29ucF18fGZ1bmN0
aW9uKHRtcCl7ZGF0YT10bXA7c3VjY2VzcygpO2NvbXBsZXRlKCk7d2luZG93W2pz
b25wXT11bmRlZmluZWQ7dHJ5e2RlbGV0ZSB3aW5kb3dbanNvbnBdO31jYXRjaChl
KXt9CmlmKGhlYWQpe2hlYWQucmVtb3ZlQ2hpbGQoc2NyaXB0KTt9fTt9CmlmKHMu
ZGF0YVR5cGU9PT0ic2NyaXB0IiYmcy5jYWNoZT09PW51bGwpe3MuY2FjaGU9ZmFs
c2U7fQppZihzLmNhY2hlPT09ZmFsc2UmJnR5cGU9PT0iR0VUIil7dmFyIHRzPW5v
dygpO3ZhciByZXQ9cy51cmwucmVwbGFjZShydHMsIiQxXz0iK3RzKyIkMiIpO3Mu
dXJsPXJldCsoKHJldD09PXMudXJsKT8ocnF1ZXJ5LnRlc3Qocy51cmwpPyImIjoi
PyIpKyJfPSIrdHM6IiIpO30KaWYocy5kYXRhJiZ0eXBlPT09IkdFVCIpe3MudXJs
Kz0ocnF1ZXJ5LnRlc3Qocy51cmwpPyImIjoiPyIpK3MuZGF0YTt9CmlmKHMuZ2xv
YmFsJiYhalF1ZXJ5LmFjdGl2ZSsrKXtqUXVlcnkuZXZlbnQudHJpZ2dlcigiYWph
eFN0YXJ0Iik7fQp2YXIgcGFydHM9cnVybC5leGVjKHMudXJsKSxyZW1vdGU9cGFy
dHMmJihwYXJ0c1sxXSYmcGFydHNbMV0hPT1sb2NhdGlvbi5wcm90b2NvbHx8cGFy
dHNbMl0hPT1sb2NhdGlvbi5ob3N0KTtpZihzLmRhdGFUeXBlPT09InNjcmlwdCIm
JnR5cGU9PT0iR0VUIiYmcmVtb3RlKXt2YXIgaGVhZD1kb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdfHxkb2N1bWVudC5kb2N1bWVudEVsZW1l
bnQ7dmFyIHNjcmlwdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtz
Y3JpcHQuc3JjPXMudXJsO2lmKHMuc2NyaXB0Q2hhcnNldCl7c2NyaXB0LmNoYXJz
ZXQ9cy5zY3JpcHRDaGFyc2V0O30KaWYoIWpzb25wKXt2YXIgZG9uZT1mYWxzZTtz
Y3JpcHQub25sb2FkPXNjcmlwdC5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24o
KXtpZighZG9uZSYmKCF0aGlzLnJlYWR5U3RhdGV8fHRoaXMucmVhZHlTdGF0ZT09
PSJsb2FkZWQifHx0aGlzLnJlYWR5U3RhdGU9PT0iY29tcGxldGUiKSl7ZG9uZT10
cnVlO3N1Y2Nlc3MoKTtjb21wbGV0ZSgpO3NjcmlwdC5vbmxvYWQ9c2NyaXB0Lm9u
cmVhZHlzdGF0ZWNoYW5nZT1udWxsO2lmKGhlYWQmJnNjcmlwdC5wYXJlbnROb2Rl
KXtoZWFkLnJlbW92ZUNoaWxkKHNjcmlwdCk7fX19O30KaGVhZC5pbnNlcnRCZWZv
cmUoc2NyaXB0LGhlYWQuZmlyc3RDaGlsZCk7cmV0dXJuIHVuZGVmaW5lZDt9CnZh
ciByZXF1ZXN0RG9uZT1mYWxzZTt2YXIgeGhyPXMueGhyKCk7aWYoIXhocil7cmV0
dXJuO30KaWYocy51c2VybmFtZSl7eGhyLm9wZW4odHlwZSxzLnVybCxzLmFzeW5j
LHMudXNlcm5hbWUscy5wYXNzd29yZCk7fWVsc2V7eGhyLm9wZW4odHlwZSxzLnVy
bCxzLmFzeW5jKTt9CnRyeXtpZihzLmRhdGF8fG9yaWdTZXR0aW5ncyYmb3JpZ1Nl
dHRpbmdzLmNvbnRlbnRUeXBlKXt4aHIuc2V0UmVxdWVzdEhlYWRlcigiQ29udGVu
dC1UeXBlIixzLmNvbnRlbnRUeXBlKTt9CmlmKHMuaWZNb2RpZmllZCl7aWYoalF1
ZXJ5Lmxhc3RNb2RpZmllZFtzLnVybF0pe3hoci5zZXRSZXF1ZXN0SGVhZGVyKCJJ
Zi1Nb2RpZmllZC1TaW5jZSIsalF1ZXJ5Lmxhc3RNb2RpZmllZFtzLnVybF0pO30K
aWYoalF1ZXJ5LmV0YWdbcy51cmxdKXt4aHIuc2V0UmVxdWVzdEhlYWRlcigiSWYt
Tm9uZS1NYXRjaCIsalF1ZXJ5LmV0YWdbcy51cmxdKTt9fQppZighcmVtb3RlKXt4
aHIuc2V0UmVxdWVzdEhlYWRlcigiWC1SZXF1ZXN0ZWQtV2l0aCIsIlhNTEh0dHBS
ZXF1ZXN0Iik7fQp4aHIuc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0IixzLmRhdGFU
eXBlJiZzLmFjY2VwdHNbcy5kYXRhVHlwZV0/cy5hY2NlcHRzW3MuZGF0YVR5cGVd
KyIsICovKiI6cy5hY2NlcHRzLl9kZWZhdWx0KTt9Y2F0Y2goZSl7fQppZihzLmJl
Zm9yZVNlbmQmJnMuYmVmb3JlU2VuZC5jYWxsKGNhbGxiYWNrQ29udGV4dCx4aHIs
cyk9PT1mYWxzZSl7aWYocy5nbG9iYWwmJiEtLWpRdWVyeS5hY3RpdmUpe2pRdWVy
eS5ldmVudC50cmlnZ2VyKCJhamF4U3RvcCIpO30KeGhyLmFib3J0KCk7cmV0dXJu
IGZhbHNlO30KaWYocy5nbG9iYWwpe3RyaWdnZXIoImFqYXhTZW5kIixbeGhyLHNd
KTt9CnZhciBvbnJlYWR5c3RhdGVjaGFuZ2U9eGhyLm9ucmVhZHlzdGF0ZWNoYW5n
ZT1mdW5jdGlvbihpc1RpbWVvdXQpe2lmKCF4aHJ8fHhoci5yZWFkeVN0YXRlPT09
MHx8aXNUaW1lb3V0PT09ImFib3J0Iil7aWYoIXJlcXVlc3REb25lKXtjb21wbGV0
ZSgpO30KcmVxdWVzdERvbmU9dHJ1ZTtpZih4aHIpe3hoci5vbnJlYWR5c3RhdGVj
aGFuZ2U9alF1ZXJ5Lm5vb3A7fX1lbHNlIGlmKCFyZXF1ZXN0RG9uZSYmeGhyJiYo
eGhyLnJlYWR5U3RhdGU9PT00fHxpc1RpbWVvdXQ9PT0idGltZW91dCIpKXtyZXF1
ZXN0RG9uZT10cnVlO3hoci5vbnJlYWR5c3RhdGVjaGFuZ2U9alF1ZXJ5Lm5vb3A7
c3RhdHVzPWlzVGltZW91dD09PSJ0aW1lb3V0Ij8idGltZW91dCI6IWpRdWVyeS5o
dHRwU3VjY2Vzcyh4aHIpPyJlcnJvciI6cy5pZk1vZGlmaWVkJiZqUXVlcnkuaHR0
cE5vdE1vZGlmaWVkKHhocixzLnVybCk/Im5vdG1vZGlmaWVkIjoic3VjY2VzcyI7
dmFyIGVyck1zZztpZihzdGF0dXM9PT0ic3VjY2VzcyIpe3RyeXtkYXRhPWpRdWVy
eS5odHRwRGF0YSh4aHIscy5kYXRhVHlwZSxzKTt9Y2F0Y2goZXJyKXtzdGF0dXM9
InBhcnNlcmVycm9yIjtlcnJNc2c9ZXJyO319CmlmKHN0YXR1cz09PSJzdWNjZXNz
Inx8c3RhdHVzPT09Im5vdG1vZGlmaWVkIil7aWYoIWpzb25wKXtzdWNjZXNzKCk7
fX1lbHNle2pRdWVyeS5oYW5kbGVFcnJvcihzLHhocixzdGF0dXMsZXJyTXNnKTt9
CmNvbXBsZXRlKCk7aWYoaXNUaW1lb3V0PT09InRpbWVvdXQiKXt4aHIuYWJvcnQo
KTt9CmlmKHMuYXN5bmMpe3hocj1udWxsO319fTt0cnl7dmFyIG9sZEFib3J0PXho
ci5hYm9ydDt4aHIuYWJvcnQ9ZnVuY3Rpb24oKXtpZih4aHIpe29sZEFib3J0LmNh
bGwoeGhyKTt9Cm9ucmVhZHlzdGF0ZWNoYW5nZSgiYWJvcnQiKTt9O31jYXRjaChl
KXt9CmlmKHMuYXN5bmMmJnMudGltZW91dD4wKXtzZXRUaW1lb3V0KGZ1bmN0aW9u
KCl7aWYoeGhyJiYhcmVxdWVzdERvbmUpe29ucmVhZHlzdGF0ZWNoYW5nZSgidGlt
ZW91dCIpO319LHMudGltZW91dCk7fQp0cnl7eGhyLnNlbmQodHlwZT09PSJQT1NU
Inx8dHlwZT09PSJQVVQifHx0eXBlPT09IkRFTEVURSI/cy5kYXRhOm51bGwpO31j
YXRjaChlKXtqUXVlcnkuaGFuZGxlRXJyb3Iocyx4aHIsbnVsbCxlKTtjb21wbGV0
ZSgpO30KaWYoIXMuYXN5bmMpe29ucmVhZHlzdGF0ZWNoYW5nZSgpO30KZnVuY3Rp
b24gc3VjY2Vzcygpe2lmKHMuc3VjY2Vzcyl7cy5zdWNjZXNzLmNhbGwoY2FsbGJh
Y2tDb250ZXh0LGRhdGEsc3RhdHVzLHhocik7fQppZihzLmdsb2JhbCl7dHJpZ2dl
cigiYWpheFN1Y2Nlc3MiLFt4aHIsc10pO319CmZ1bmN0aW9uIGNvbXBsZXRlKCl7
aWYocy5jb21wbGV0ZSl7cy5jb21wbGV0ZS5jYWxsKGNhbGxiYWNrQ29udGV4dCx4
aHIsc3RhdHVzKTt9CmlmKHMuZ2xvYmFsKXt0cmlnZ2VyKCJhamF4Q29tcGxldGUi
LFt4aHIsc10pO30KaWYocy5nbG9iYWwmJiEtLWpRdWVyeS5hY3RpdmUpe2pRdWVy
eS5ldmVudC50cmlnZ2VyKCJhamF4U3RvcCIpO319CmZ1bmN0aW9uIHRyaWdnZXIo
dHlwZSxhcmdzKXsocy5jb250ZXh0P2pRdWVyeShzLmNvbnRleHQpOmpRdWVyeS5l
dmVudCkudHJpZ2dlcih0eXBlLGFyZ3MpO30KcmV0dXJuIHhocjt9LGhhbmRsZUVy
cm9yOmZ1bmN0aW9uKHMseGhyLHN0YXR1cyxlKXtpZihzLmVycm9yKXtzLmVycm9y
LmNhbGwocy5jb250ZXh0fHxzLHhocixzdGF0dXMsZSk7fQppZihzLmdsb2JhbCl7
KHMuY29udGV4dD9qUXVlcnkocy5jb250ZXh0KTpqUXVlcnkuZXZlbnQpLnRyaWdn
ZXIoImFqYXhFcnJvciIsW3hocixzLGVdKTt9fSxhY3RpdmU6MCxodHRwU3VjY2Vz
czpmdW5jdGlvbih4aHIpe3RyeXtyZXR1cm4heGhyLnN0YXR1cyYmbG9jYXRpb24u
cHJvdG9jb2w9PT0iZmlsZToifHwoeGhyLnN0YXR1cz49MjAwJiZ4aHIuc3RhdHVz
PDMwMCl8fHhoci5zdGF0dXM9PT0zMDR8fHhoci5zdGF0dXM9PT0xMjIzfHx4aHIu
c3RhdHVzPT09MDt9Y2F0Y2goZSl7fQpyZXR1cm4gZmFsc2U7fSxodHRwTm90TW9k
aWZpZWQ6ZnVuY3Rpb24oeGhyLHVybCl7dmFyIGxhc3RNb2RpZmllZD14aHIuZ2V0
UmVzcG9uc2VIZWFkZXIoIkxhc3QtTW9kaWZpZWQiKSxldGFnPXhoci5nZXRSZXNw
b25zZUhlYWRlcigiRXRhZyIpO2lmKGxhc3RNb2RpZmllZCl7alF1ZXJ5Lmxhc3RN
b2RpZmllZFt1cmxdPWxhc3RNb2RpZmllZDt9CmlmKGV0YWcpe2pRdWVyeS5ldGFn
W3VybF09ZXRhZzt9CnJldHVybiB4aHIuc3RhdHVzPT09MzA0fHx4aHIuc3RhdHVz
PT09MDt9LGh0dHBEYXRhOmZ1bmN0aW9uKHhocix0eXBlLHMpe3ZhciBjdD14aHIu
Z2V0UmVzcG9uc2VIZWFkZXIoImNvbnRlbnQtdHlwZSIpfHwiIix4bWw9dHlwZT09
PSJ4bWwifHwhdHlwZSYmY3QuaW5kZXhPZigieG1sIik+PTAsZGF0YT14bWw/eGhy
LnJlc3BvbnNlWE1MOnhoci5yZXNwb25zZVRleHQ7aWYoeG1sJiZkYXRhLmRvY3Vt
ZW50RWxlbWVudC5ub2RlTmFtZT09PSJwYXJzZXJlcnJvciIpe2pRdWVyeS5lcnJv
cigicGFyc2VyZXJyb3IiKTt9CmlmKHMmJnMuZGF0YUZpbHRlcil7ZGF0YT1zLmRh
dGFGaWx0ZXIoZGF0YSx0eXBlKTt9CmlmKHR5cGVvZiBkYXRhPT09InN0cmluZyIp
e2lmKHR5cGU9PT0ianNvbiJ8fCF0eXBlJiZjdC5pbmRleE9mKCJqc29uIik+PTAp
e2RhdGE9alF1ZXJ5LnBhcnNlSlNPTihkYXRhKTt9ZWxzZSBpZih0eXBlPT09InNj
cmlwdCJ8fCF0eXBlJiZjdC5pbmRleE9mKCJqYXZhc2NyaXB0Iik+PTApe2pRdWVy
eS5nbG9iYWxFdmFsKGRhdGEpO319CnJldHVybiBkYXRhO30scGFyYW06ZnVuY3Rp
b24oYSx0cmFkaXRpb25hbCl7dmFyIHM9W107aWYodHJhZGl0aW9uYWw9PT11bmRl
ZmluZWQpe3RyYWRpdGlvbmFsPWpRdWVyeS5hamF4U2V0dGluZ3MudHJhZGl0aW9u
YWw7fQppZihqUXVlcnkuaXNBcnJheShhKXx8YS5qcXVlcnkpe2pRdWVyeS5lYWNo
KGEsZnVuY3Rpb24oKXthZGQodGhpcy5uYW1lLHRoaXMudmFsdWUpO30pO31lbHNl
e2Zvcih2YXIgcHJlZml4IGluIGEpe2J1aWxkUGFyYW1zKHByZWZpeCxhW3ByZWZp
eF0pO319CnJldHVybiBzLmpvaW4oIiYiKS5yZXBsYWNlKHIyMCwiKyIpO2Z1bmN0
aW9uIGJ1aWxkUGFyYW1zKHByZWZpeCxvYmope2lmKGpRdWVyeS5pc0FycmF5KG9i
aikpe2pRdWVyeS5lYWNoKG9iaixmdW5jdGlvbihpLHYpe2lmKHRyYWRpdGlvbmFs
fHwvXFtcXSQvLnRlc3QocHJlZml4KSl7YWRkKHByZWZpeCx2KTt9ZWxzZXtidWls
ZFBhcmFtcyhwcmVmaXgrIlsiKyh0eXBlb2Ygdj09PSJvYmplY3QifHxqUXVlcnku
aXNBcnJheSh2KT9pOiIiKSsiXSIsdik7fX0pO31lbHNlIGlmKCF0cmFkaXRpb25h
bCYmb2JqIT1udWxsJiZ0eXBlb2Ygb2JqPT09Im9iamVjdCIpe2pRdWVyeS5lYWNo
KG9iaixmdW5jdGlvbihrLHYpe2J1aWxkUGFyYW1zKHByZWZpeCsiWyIraysiXSIs
dik7fSk7fWVsc2V7YWRkKHByZWZpeCxvYmopO319CmZ1bmN0aW9uIGFkZChrZXks
dmFsdWUpe3ZhbHVlPWpRdWVyeS5pc0Z1bmN0aW9uKHZhbHVlKT92YWx1ZSgpOnZh
bHVlO3Nbcy5sZW5ndGhdPWVuY29kZVVSSUNvbXBvbmVudChrZXkpKyI9IitlbmNv
ZGVVUklDb21wb25lbnQodmFsdWUpO319fSk7dmFyIGVsZW1kaXNwbGF5PXt9LHJm
eHR5cGVzPS90b2dnbGV8c2hvd3xoaWRlLyxyZnhudW09L14oWystXT0pPyhbXGQr
LS5dKykoLiopJC8sdGltZXJJZCxmeEF0dHJzPVtbImhlaWdodCIsIm1hcmdpblRv
cCIsIm1hcmdpbkJvdHRvbSIsInBhZGRpbmdUb3AiLCJwYWRkaW5nQm90dG9tIl0s
WyJ3aWR0aCIsIm1hcmdpbkxlZnQiLCJtYXJnaW5SaWdodCIsInBhZGRpbmdMZWZ0
IiwicGFkZGluZ1JpZ2h0Il0sWyJvcGFjaXR5Il1dO2pRdWVyeS5mbi5leHRlbmQo
e3Nob3c6ZnVuY3Rpb24oc3BlZWQsY2FsbGJhY2spe2lmKHNwZWVkfHxzcGVlZD09
PTApe3JldHVybiB0aGlzLmFuaW1hdGUoZ2VuRngoInNob3ciLDMpLHNwZWVkLGNh
bGxiYWNrKTt9ZWxzZXtmb3IodmFyIGk9MCxsPXRoaXMubGVuZ3RoO2k8bDtpKysp
e3ZhciBvbGQ9alF1ZXJ5LmRhdGEodGhpc1tpXSwib2xkZGlzcGxheSIpO3RoaXNb
aV0uc3R5bGUuZGlzcGxheT1vbGR8fCIiO2lmKGpRdWVyeS5jc3ModGhpc1tpXSwi
ZGlzcGxheSIpPT09Im5vbmUiKXt2YXIgbm9kZU5hbWU9dGhpc1tpXS5ub2RlTmFt
ZSxkaXNwbGF5O2lmKGVsZW1kaXNwbGF5W25vZGVOYW1lXSl7ZGlzcGxheT1lbGVt
ZGlzcGxheVtub2RlTmFtZV07fWVsc2V7dmFyIGVsZW09alF1ZXJ5KCI8Iitub2Rl
TmFtZSsiIC8+IikuYXBwZW5kVG8oImJvZHkiKTtkaXNwbGF5PWVsZW0uY3NzKCJk
aXNwbGF5Iik7aWYoZGlzcGxheT09PSJub25lIil7ZGlzcGxheT0iYmxvY2siO30K
ZWxlbS5yZW1vdmUoKTtlbGVtZGlzcGxheVtub2RlTmFtZV09ZGlzcGxheTt9CmpR
dWVyeS5kYXRhKHRoaXNbaV0sIm9sZGRpc3BsYXkiLGRpc3BsYXkpO319CmZvcih2
YXIgaj0wLGs9dGhpcy5sZW5ndGg7ajxrO2orKyl7dGhpc1tqXS5zdHlsZS5kaXNw
bGF5PWpRdWVyeS5kYXRhKHRoaXNbal0sIm9sZGRpc3BsYXkiKXx8IiI7fQpyZXR1
cm4gdGhpczt9fSxoaWRlOmZ1bmN0aW9uKHNwZWVkLGNhbGxiYWNrKXtpZihzcGVl
ZHx8c3BlZWQ9PT0wKXtyZXR1cm4gdGhpcy5hbmltYXRlKGdlbkZ4KCJoaWRlIiwz
KSxzcGVlZCxjYWxsYmFjayk7fWVsc2V7Zm9yKHZhciBpPTAsbD10aGlzLmxlbmd0
aDtpPGw7aSsrKXt2YXIgb2xkPWpRdWVyeS5kYXRhKHRoaXNbaV0sIm9sZGRpc3Bs
YXkiKTtpZighb2xkJiZvbGQhPT0ibm9uZSIpe2pRdWVyeS5kYXRhKHRoaXNbaV0s
Im9sZGRpc3BsYXkiLGpRdWVyeS5jc3ModGhpc1tpXSwiZGlzcGxheSIpKTt9fQpm
b3IodmFyIGo9MCxrPXRoaXMubGVuZ3RoO2o8aztqKyspe3RoaXNbal0uc3R5bGUu
ZGlzcGxheT0ibm9uZSI7fQpyZXR1cm4gdGhpczt9fSxfdG9nZ2xlOmpRdWVyeS5m
bi50b2dnbGUsdG9nZ2xlOmZ1bmN0aW9uKGZuLGZuMil7dmFyIGJvb2w9dHlwZW9m
IGZuPT09ImJvb2xlYW4iO2lmKGpRdWVyeS5pc0Z1bmN0aW9uKGZuKSYmalF1ZXJ5
LmlzRnVuY3Rpb24oZm4yKSl7dGhpcy5fdG9nZ2xlLmFwcGx5KHRoaXMsYXJndW1l
bnRzKTt9ZWxzZSBpZihmbj09bnVsbHx8Ym9vbCl7dGhpcy5lYWNoKGZ1bmN0aW9u
KCl7dmFyIHN0YXRlPWJvb2w/Zm46alF1ZXJ5KHRoaXMpLmlzKCI6aGlkZGVuIik7
alF1ZXJ5KHRoaXMpW3N0YXRlPyJzaG93IjoiaGlkZSJdKCk7fSk7fWVsc2V7dGhp
cy5hbmltYXRlKGdlbkZ4KCJ0b2dnbGUiLDMpLGZuLGZuMik7fQpyZXR1cm4gdGhp
czt9LGZhZGVUbzpmdW5jdGlvbihzcGVlZCx0byxjYWxsYmFjayl7cmV0dXJuIHRo
aXMuZmlsdGVyKCI6aGlkZGVuIikuY3NzKCJvcGFjaXR5IiwwKS5zaG93KCkuZW5k
KCkuYW5pbWF0ZSh7b3BhY2l0eTp0b30sc3BlZWQsY2FsbGJhY2spO30sYW5pbWF0
ZTpmdW5jdGlvbihwcm9wLHNwZWVkLGVhc2luZyxjYWxsYmFjayl7dmFyIG9wdGFs
bD1qUXVlcnkuc3BlZWQoc3BlZWQsZWFzaW5nLGNhbGxiYWNrKTtpZihqUXVlcnku
aXNFbXB0eU9iamVjdChwcm9wKSl7cmV0dXJuIHRoaXMuZWFjaChvcHRhbGwuY29t
cGxldGUpO30KcmV0dXJuIHRoaXNbb3B0YWxsLnF1ZXVlPT09ZmFsc2U/ImVhY2gi
OiJxdWV1ZSJdKGZ1bmN0aW9uKCl7dmFyIG9wdD1qUXVlcnkuZXh0ZW5kKHt9LG9w
dGFsbCkscCxoaWRkZW49dGhpcy5ub2RlVHlwZT09PTEmJmpRdWVyeSh0aGlzKS5p
cygiOmhpZGRlbiIpLHNlbGY9dGhpcztmb3IocCBpbiBwcm9wKXt2YXIgbmFtZT1w
LnJlcGxhY2UocmRhc2hBbHBoYSxmY2FtZWxDYXNlKTtpZihwIT09bmFtZSl7cHJv
cFtuYW1lXT1wcm9wW3BdO2RlbGV0ZSBwcm9wW3BdO3A9bmFtZTt9CmlmKHByb3Bb
cF09PT0iaGlkZSImJmhpZGRlbnx8cHJvcFtwXT09PSJzaG93IiYmIWhpZGRlbil7
cmV0dXJuIG9wdC5jb21wbGV0ZS5jYWxsKHRoaXMpO30KaWYoKHA9PT0iaGVpZ2h0
Inx8cD09PSJ3aWR0aCIpJiZ0aGlzLnN0eWxlKXtvcHQuZGlzcGxheT1qUXVlcnku
Y3NzKHRoaXMsImRpc3BsYXkiKTtvcHQub3ZlcmZsb3c9dGhpcy5zdHlsZS5vdmVy
Zmxvdzt9CmlmKGpRdWVyeS5pc0FycmF5KHByb3BbcF0pKXsob3B0LnNwZWNpYWxF
YXNpbmc9b3B0LnNwZWNpYWxFYXNpbmd8fHt9KVtwXT1wcm9wW3BdWzFdO3Byb3Bb
cF09cHJvcFtwXVswXTt9fQppZihvcHQub3ZlcmZsb3chPW51bGwpe3RoaXMuc3R5
bGUub3ZlcmZsb3c9ImhpZGRlbiI7fQpvcHQuY3VyQW5pbT1qUXVlcnkuZXh0ZW5k
KHt9LHByb3ApO2pRdWVyeS5lYWNoKHByb3AsZnVuY3Rpb24obmFtZSx2YWwpe3Zh
ciBlPW5ldyBqUXVlcnkuZngoc2VsZixvcHQsbmFtZSk7aWYocmZ4dHlwZXMudGVz
dCh2YWwpKXtlW3ZhbD09PSJ0b2dnbGUiP2hpZGRlbj8ic2hvdyI6ImhpZGUiOnZh
bF0ocHJvcCk7fWVsc2V7dmFyIHBhcnRzPXJmeG51bS5leGVjKHZhbCksc3RhcnQ9
ZS5jdXIodHJ1ZSl8fDA7aWYocGFydHMpe3ZhciBlbmQ9cGFyc2VGbG9hdChwYXJ0
c1syXSksdW5pdD1wYXJ0c1szXXx8InB4IjtpZih1bml0IT09InB4Iil7c2VsZi5z
dHlsZVtuYW1lXT0oZW5kfHwxKSt1bml0O3N0YXJ0PSgoZW5kfHwxKS9lLmN1cih0
cnVlKSkqc3RhcnQ7c2VsZi5zdHlsZVtuYW1lXT1zdGFydCt1bml0O30KaWYocGFy
dHNbMV0pe2VuZD0oKHBhcnRzWzFdPT09Ii09Ij8tMToxKSplbmQpK3N0YXJ0O30K
ZS5jdXN0b20oc3RhcnQsZW5kLHVuaXQpO31lbHNle2UuY3VzdG9tKHN0YXJ0LHZh
bCwiIik7fX19KTtyZXR1cm4gdHJ1ZTt9KTt9LHN0b3A6ZnVuY3Rpb24oY2xlYXJR
dWV1ZSxnb3RvRW5kKXt2YXIgdGltZXJzPWpRdWVyeS50aW1lcnM7aWYoY2xlYXJR
dWV1ZSl7dGhpcy5xdWV1ZShbXSk7fQp0aGlzLmVhY2goZnVuY3Rpb24oKXtmb3Io
dmFyIGk9dGltZXJzLmxlbmd0aC0xO2k+PTA7aS0tKXtpZih0aW1lcnNbaV0uZWxl
bT09PXRoaXMpe2lmKGdvdG9FbmQpe3RpbWVyc1tpXSh0cnVlKTt9CnRpbWVycy5z
cGxpY2UoaSwxKTt9fX0pO2lmKCFnb3RvRW5kKXt0aGlzLmRlcXVldWUoKTt9CnJl
dHVybiB0aGlzO319KTtqUXVlcnkuZWFjaCh7c2xpZGVEb3duOmdlbkZ4KCJzaG93
IiwxKSxzbGlkZVVwOmdlbkZ4KCJoaWRlIiwxKSxzbGlkZVRvZ2dsZTpnZW5GeCgi
dG9nZ2xlIiwxKSxmYWRlSW46e29wYWNpdHk6InNob3cifSxmYWRlT3V0OntvcGFj
aXR5OiJoaWRlIn19LGZ1bmN0aW9uKG5hbWUscHJvcHMpe2pRdWVyeS5mbltuYW1l
XT1mdW5jdGlvbihzcGVlZCxjYWxsYmFjayl7cmV0dXJuIHRoaXMuYW5pbWF0ZShw
cm9wcyxzcGVlZCxjYWxsYmFjayk7fTt9KTtqUXVlcnkuZXh0ZW5kKHtzcGVlZDpm
dW5jdGlvbihzcGVlZCxlYXNpbmcsZm4pe3ZhciBvcHQ9c3BlZWQmJnR5cGVvZiBz
cGVlZD09PSJvYmplY3QiP3NwZWVkOntjb21wbGV0ZTpmbnx8IWZuJiZlYXNpbmd8
fGpRdWVyeS5pc0Z1bmN0aW9uKHNwZWVkKSYmc3BlZWQsZHVyYXRpb246c3BlZWQs
ZWFzaW5nOmZuJiZlYXNpbmd8fGVhc2luZyYmIWpRdWVyeS5pc0Z1bmN0aW9uKGVh
c2luZykmJmVhc2luZ307b3B0LmR1cmF0aW9uPWpRdWVyeS5meC5vZmY/MDp0eXBl
b2Ygb3B0LmR1cmF0aW9uPT09Im51bWJlciI/b3B0LmR1cmF0aW9uOmpRdWVyeS5m
eC5zcGVlZHNbb3B0LmR1cmF0aW9uXXx8alF1ZXJ5LmZ4LnNwZWVkcy5fZGVmYXVs
dDtvcHQub2xkPW9wdC5jb21wbGV0ZTtvcHQuY29tcGxldGU9ZnVuY3Rpb24oKXtp
ZihvcHQucXVldWUhPT1mYWxzZSl7alF1ZXJ5KHRoaXMpLmRlcXVldWUoKTt9Cmlm
KGpRdWVyeS5pc0Z1bmN0aW9uKG9wdC5vbGQpKXtvcHQub2xkLmNhbGwodGhpcyk7
fX07cmV0dXJuIG9wdDt9LGVhc2luZzp7bGluZWFyOmZ1bmN0aW9uKHAsbixmaXJz
dE51bSxkaWZmKXtyZXR1cm4gZmlyc3ROdW0rZGlmZipwO30sc3dpbmc6ZnVuY3Rp
b24ocCxuLGZpcnN0TnVtLGRpZmYpe3JldHVybigoLU1hdGguY29zKHAqTWF0aC5Q
SSkvMikrMC41KSpkaWZmK2ZpcnN0TnVtO319LHRpbWVyczpbXSxmeDpmdW5jdGlv
bihlbGVtLG9wdGlvbnMscHJvcCl7dGhpcy5vcHRpb25zPW9wdGlvbnM7dGhpcy5l
bGVtPWVsZW07dGhpcy5wcm9wPXByb3A7aWYoIW9wdGlvbnMub3JpZyl7b3B0aW9u
cy5vcmlnPXt9O319fSk7alF1ZXJ5LmZ4LnByb3RvdHlwZT17dXBkYXRlOmZ1bmN0
aW9uKCl7aWYodGhpcy5vcHRpb25zLnN0ZXApe3RoaXMub3B0aW9ucy5zdGVwLmNh
bGwodGhpcy5lbGVtLHRoaXMubm93LHRoaXMpO30KKGpRdWVyeS5meC5zdGVwW3Ro
aXMucHJvcF18fGpRdWVyeS5meC5zdGVwLl9kZWZhdWx0KSh0aGlzKTtpZigodGhp
cy5wcm9wPT09ImhlaWdodCJ8fHRoaXMucHJvcD09PSJ3aWR0aCIpJiZ0aGlzLmVs
ZW0uc3R5bGUpe3RoaXMuZWxlbS5zdHlsZS5kaXNwbGF5PSJibG9jayI7fX0sY3Vy
OmZ1bmN0aW9uKGZvcmNlKXtpZih0aGlzLmVsZW1bdGhpcy5wcm9wXSE9bnVsbCYm
KCF0aGlzLmVsZW0uc3R5bGV8fHRoaXMuZWxlbS5zdHlsZVt0aGlzLnByb3BdPT1u
dWxsKSl7cmV0dXJuIHRoaXMuZWxlbVt0aGlzLnByb3BdO30KdmFyIHI9cGFyc2VG
bG9hdChqUXVlcnkuY3NzKHRoaXMuZWxlbSx0aGlzLnByb3AsZm9yY2UpKTtyZXR1
cm4gciYmcj4tMTAwMDA/cjpwYXJzZUZsb2F0KGpRdWVyeS5jdXJDU1ModGhpcy5l
bGVtLHRoaXMucHJvcCkpfHwwO30sY3VzdG9tOmZ1bmN0aW9uKGZyb20sdG8sdW5p
dCl7dGhpcy5zdGFydFRpbWU9bm93KCk7dGhpcy5zdGFydD1mcm9tO3RoaXMuZW5k
PXRvO3RoaXMudW5pdD11bml0fHx0aGlzLnVuaXR8fCJweCI7dGhpcy5ub3c9dGhp
cy5zdGFydDt0aGlzLnBvcz10aGlzLnN0YXRlPTA7dmFyIHNlbGY9dGhpcztmdW5j
dGlvbiB0KGdvdG9FbmQpe3JldHVybiBzZWxmLnN0ZXAoZ290b0VuZCk7fQp0LmVs
ZW09dGhpcy5lbGVtO2lmKHQoKSYmalF1ZXJ5LnRpbWVycy5wdXNoKHQpJiYhdGlt
ZXJJZCl7dGltZXJJZD1zZXRJbnRlcnZhbChqUXVlcnkuZngudGljaywxMyk7fX0s
c2hvdzpmdW5jdGlvbigpe3RoaXMub3B0aW9ucy5vcmlnW3RoaXMucHJvcF09alF1
ZXJ5LnN0eWxlKHRoaXMuZWxlbSx0aGlzLnByb3ApO3RoaXMub3B0aW9ucy5zaG93
PXRydWU7dGhpcy5jdXN0b20odGhpcy5wcm9wPT09IndpZHRoInx8dGhpcy5wcm9w
PT09ImhlaWdodCI/MTowLHRoaXMuY3VyKCkpO2pRdWVyeSh0aGlzLmVsZW0pLnNo
b3coKTt9LGhpZGU6ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMub3JpZ1t0aGlzLnBy
b3BdPWpRdWVyeS5zdHlsZSh0aGlzLmVsZW0sdGhpcy5wcm9wKTt0aGlzLm9wdGlv
bnMuaGlkZT10cnVlO3RoaXMuY3VzdG9tKHRoaXMuY3VyKCksMCk7fSxzdGVwOmZ1
bmN0aW9uKGdvdG9FbmQpe3ZhciB0PW5vdygpLGRvbmU9dHJ1ZTtpZihnb3RvRW5k
fHx0Pj10aGlzLm9wdGlvbnMuZHVyYXRpb24rdGhpcy5zdGFydFRpbWUpe3RoaXMu
bm93PXRoaXMuZW5kO3RoaXMucG9zPXRoaXMuc3RhdGU9MTt0aGlzLnVwZGF0ZSgp
O3RoaXMub3B0aW9ucy5jdXJBbmltW3RoaXMucHJvcF09dHJ1ZTtmb3IodmFyIGkg
aW4gdGhpcy5vcHRpb25zLmN1ckFuaW0pe2lmKHRoaXMub3B0aW9ucy5jdXJBbmlt
W2ldIT09dHJ1ZSl7ZG9uZT1mYWxzZTt9fQppZihkb25lKXtpZih0aGlzLm9wdGlv
bnMuZGlzcGxheSE9bnVsbCl7dGhpcy5lbGVtLnN0eWxlLm92ZXJmbG93PXRoaXMu
b3B0aW9ucy5vdmVyZmxvdzt2YXIgb2xkPWpRdWVyeS5kYXRhKHRoaXMuZWxlbSwi
b2xkZGlzcGxheSIpO3RoaXMuZWxlbS5zdHlsZS5kaXNwbGF5PW9sZD9vbGQ6dGhp
cy5vcHRpb25zLmRpc3BsYXk7aWYoalF1ZXJ5LmNzcyh0aGlzLmVsZW0sImRpc3Bs
YXkiKT09PSJub25lIil7dGhpcy5lbGVtLnN0eWxlLmRpc3BsYXk9ImJsb2NrIjt9
fQppZih0aGlzLm9wdGlvbnMuaGlkZSl7alF1ZXJ5KHRoaXMuZWxlbSkuaGlkZSgp
O30KaWYodGhpcy5vcHRpb25zLmhpZGV8fHRoaXMub3B0aW9ucy5zaG93KXtmb3Io
dmFyIHAgaW4gdGhpcy5vcHRpb25zLmN1ckFuaW0pe2pRdWVyeS5zdHlsZSh0aGlz
LmVsZW0scCx0aGlzLm9wdGlvbnMub3JpZ1twXSk7fX0KdGhpcy5vcHRpb25zLmNv
bXBsZXRlLmNhbGwodGhpcy5lbGVtKTt9CnJldHVybiBmYWxzZTt9ZWxzZXt2YXIg
bj10LXRoaXMuc3RhcnRUaW1lO3RoaXMuc3RhdGU9bi90aGlzLm9wdGlvbnMuZHVy
YXRpb247dmFyIHNwZWNpYWxFYXNpbmc9dGhpcy5vcHRpb25zLnNwZWNpYWxFYXNp
bmcmJnRoaXMub3B0aW9ucy5zcGVjaWFsRWFzaW5nW3RoaXMucHJvcF07dmFyIGRl
ZmF1bHRFYXNpbmc9dGhpcy5vcHRpb25zLmVhc2luZ3x8KGpRdWVyeS5lYXNpbmcu
c3dpbmc/InN3aW5nIjoibGluZWFyIik7dGhpcy5wb3M9alF1ZXJ5LmVhc2luZ1tz
cGVjaWFsRWFzaW5nfHxkZWZhdWx0RWFzaW5nXSh0aGlzLnN0YXRlLG4sMCwxLHRo
aXMub3B0aW9ucy5kdXJhdGlvbik7dGhpcy5ub3c9dGhpcy5zdGFydCsoKHRoaXMu
ZW5kLXRoaXMuc3RhcnQpKnRoaXMucG9zKTt0aGlzLnVwZGF0ZSgpO30KcmV0dXJu
IHRydWU7fX07alF1ZXJ5LmV4dGVuZChqUXVlcnkuZngse3RpY2s6ZnVuY3Rpb24o
KXt2YXIgdGltZXJzPWpRdWVyeS50aW1lcnM7Zm9yKHZhciBpPTA7aTx0aW1lcnMu
bGVuZ3RoO2krKyl7aWYoIXRpbWVyc1tpXSgpKXt0aW1lcnMuc3BsaWNlKGktLSwx
KTt9fQppZighdGltZXJzLmxlbmd0aCl7alF1ZXJ5LmZ4LnN0b3AoKTt9fSxzdG9w
OmZ1bmN0aW9uKCl7Y2xlYXJJbnRlcnZhbCh0aW1lcklkKTt0aW1lcklkPW51bGw7
fSxzcGVlZHM6e3Nsb3c6NjAwLGZhc3Q6MjAwLF9kZWZhdWx0OjQwMH0sc3RlcDp7
b3BhY2l0eTpmdW5jdGlvbihmeCl7alF1ZXJ5LnN0eWxlKGZ4LmVsZW0sIm9wYWNp
dHkiLGZ4Lm5vdyk7fSxfZGVmYXVsdDpmdW5jdGlvbihmeCl7aWYoZnguZWxlbS5z
dHlsZSYmZnguZWxlbS5zdHlsZVtmeC5wcm9wXSE9bnVsbCl7ZnguZWxlbS5zdHls
ZVtmeC5wcm9wXT0oZngucHJvcD09PSJ3aWR0aCJ8fGZ4LnByb3A9PT0iaGVpZ2h0
Ij9NYXRoLm1heCgwLGZ4Lm5vdyk6Zngubm93KStmeC51bml0O31lbHNle2Z4LmVs
ZW1bZngucHJvcF09Zngubm93O319fX0pO2lmKGpRdWVyeS5leHByJiZqUXVlcnku
ZXhwci5maWx0ZXJzKXtqUXVlcnkuZXhwci5maWx0ZXJzLmFuaW1hdGVkPWZ1bmN0
aW9uKGVsZW0pe3JldHVybiBqUXVlcnkuZ3JlcChqUXVlcnkudGltZXJzLGZ1bmN0
aW9uKGZuKXtyZXR1cm4gZWxlbT09PWZuLmVsZW07fSkubGVuZ3RoO307fQpmdW5j
dGlvbiBnZW5GeCh0eXBlLG51bSl7dmFyIG9iaj17fTtqUXVlcnkuZWFjaChmeEF0
dHJzLmNvbmNhdC5hcHBseShbXSxmeEF0dHJzLnNsaWNlKDAsbnVtKSksZnVuY3Rp
b24oKXtvYmpbdGhpc109dHlwZTt9KTtyZXR1cm4gb2JqO30KaWYoImdldEJvdW5k
aW5nQ2xpZW50UmVjdCJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpe2pRdWVy
eS5mbi5vZmZzZXQ9ZnVuY3Rpb24ob3B0aW9ucyl7dmFyIGVsZW09dGhpc1swXTtp
ZihvcHRpb25zKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGkpe2pRdWVyeS5v
ZmZzZXQuc2V0T2Zmc2V0KHRoaXMsb3B0aW9ucyxpKTt9KTt9CmlmKCFlbGVtfHwh
ZWxlbS5vd25lckRvY3VtZW50KXtyZXR1cm4gbnVsbDt9CmlmKGVsZW09PT1lbGVt
Lm93bmVyRG9jdW1lbnQuYm9keSl7cmV0dXJuIGpRdWVyeS5vZmZzZXQuYm9keU9m
ZnNldChlbGVtKTt9CnZhciBib3g9ZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3Qo
KSxkb2M9ZWxlbS5vd25lckRvY3VtZW50LGJvZHk9ZG9jLmJvZHksZG9jRWxlbT1k
b2MuZG9jdW1lbnRFbGVtZW50LGNsaWVudFRvcD1kb2NFbGVtLmNsaWVudFRvcHx8
Ym9keS5jbGllbnRUb3B8fDAsY2xpZW50TGVmdD1kb2NFbGVtLmNsaWVudExlZnR8
fGJvZHkuY2xpZW50TGVmdHx8MCx0b3A9Ym94LnRvcCsoc2VsZi5wYWdlWU9mZnNl
dHx8alF1ZXJ5LnN1cHBvcnQuYm94TW9kZWwmJmRvY0VsZW0uc2Nyb2xsVG9wfHxi
b2R5LnNjcm9sbFRvcCktY2xpZW50VG9wLGxlZnQ9Ym94LmxlZnQrKHNlbGYucGFn
ZVhPZmZzZXR8fGpRdWVyeS5zdXBwb3J0LmJveE1vZGVsJiZkb2NFbGVtLnNjcm9s
bExlZnR8fGJvZHkuc2Nyb2xsTGVmdCktY2xpZW50TGVmdDtyZXR1cm57dG9wOnRv
cCxsZWZ0OmxlZnR9O307fWVsc2V7alF1ZXJ5LmZuLm9mZnNldD1mdW5jdGlvbihv
cHRpb25zKXt2YXIgZWxlbT10aGlzWzBdO2lmKG9wdGlvbnMpe3JldHVybiB0aGlz
LmVhY2goZnVuY3Rpb24oaSl7alF1ZXJ5Lm9mZnNldC5zZXRPZmZzZXQodGhpcyxv
cHRpb25zLGkpO30pO30KaWYoIWVsZW18fCFlbGVtLm93bmVyRG9jdW1lbnQpe3Jl
dHVybiBudWxsO30KaWYoZWxlbT09PWVsZW0ub3duZXJEb2N1bWVudC5ib2R5KXty
ZXR1cm4galF1ZXJ5Lm9mZnNldC5ib2R5T2Zmc2V0KGVsZW0pO30KalF1ZXJ5Lm9m
ZnNldC5pbml0aWFsaXplKCk7dmFyIG9mZnNldFBhcmVudD1lbGVtLm9mZnNldFBh
cmVudCxwcmV2T2Zmc2V0UGFyZW50PWVsZW0sZG9jPWVsZW0ub3duZXJEb2N1bWVu
dCxjb21wdXRlZFN0eWxlLGRvY0VsZW09ZG9jLmRvY3VtZW50RWxlbWVudCxib2R5
PWRvYy5ib2R5LGRlZmF1bHRWaWV3PWRvYy5kZWZhdWx0VmlldyxwcmV2Q29tcHV0
ZWRTdHlsZT1kZWZhdWx0Vmlldz9kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxl
KGVsZW0sbnVsbCk6ZWxlbS5jdXJyZW50U3R5bGUsdG9wPWVsZW0ub2Zmc2V0VG9w
LGxlZnQ9ZWxlbS5vZmZzZXRMZWZ0O3doaWxlKChlbGVtPWVsZW0ucGFyZW50Tm9k
ZSkmJmVsZW0hPT1ib2R5JiZlbGVtIT09ZG9jRWxlbSl7aWYoalF1ZXJ5Lm9mZnNl
dC5zdXBwb3J0c0ZpeGVkUG9zaXRpb24mJnByZXZDb21wdXRlZFN0eWxlLnBvc2l0
aW9uPT09ImZpeGVkIil7YnJlYWs7fQpjb21wdXRlZFN0eWxlPWRlZmF1bHRWaWV3
P2RlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWxlbSxudWxsKTplbGVtLmN1
cnJlbnRTdHlsZTt0b3AtPWVsZW0uc2Nyb2xsVG9wO2xlZnQtPWVsZW0uc2Nyb2xs
TGVmdDtpZihlbGVtPT09b2Zmc2V0UGFyZW50KXt0b3ArPWVsZW0ub2Zmc2V0VG9w
O2xlZnQrPWVsZW0ub2Zmc2V0TGVmdDtpZihqUXVlcnkub2Zmc2V0LmRvZXNOb3RB
ZGRCb3JkZXImJiEoalF1ZXJ5Lm9mZnNldC5kb2VzQWRkQm9yZGVyRm9yVGFibGVB
bmRDZWxscyYmL150KGFibGV8ZHxoKSQvaS50ZXN0KGVsZW0ubm9kZU5hbWUpKSl7
dG9wKz1wYXJzZUZsb2F0KGNvbXB1dGVkU3R5bGUuYm9yZGVyVG9wV2lkdGgpfHww
O2xlZnQrPXBhcnNlRmxvYXQoY29tcHV0ZWRTdHlsZS5ib3JkZXJMZWZ0V2lkdGgp
fHwwO30KcHJldk9mZnNldFBhcmVudD1vZmZzZXRQYXJlbnQsb2Zmc2V0UGFyZW50
PWVsZW0ub2Zmc2V0UGFyZW50O30KaWYoalF1ZXJ5Lm9mZnNldC5zdWJ0cmFjdHNC
b3JkZXJGb3JPdmVyZmxvd05vdFZpc2libGUmJmNvbXB1dGVkU3R5bGUub3ZlcmZs
b3chPT0idmlzaWJsZSIpe3RvcCs9cGFyc2VGbG9hdChjb21wdXRlZFN0eWxlLmJv
cmRlclRvcFdpZHRoKXx8MDtsZWZ0Kz1wYXJzZUZsb2F0KGNvbXB1dGVkU3R5bGUu
Ym9yZGVyTGVmdFdpZHRoKXx8MDt9CnByZXZDb21wdXRlZFN0eWxlPWNvbXB1dGVk
U3R5bGU7fQppZihwcmV2Q29tcHV0ZWRTdHlsZS5wb3NpdGlvbj09PSJyZWxhdGl2
ZSJ8fHByZXZDb21wdXRlZFN0eWxlLnBvc2l0aW9uPT09InN0YXRpYyIpe3RvcCs9
Ym9keS5vZmZzZXRUb3A7bGVmdCs9Ym9keS5vZmZzZXRMZWZ0O30KaWYoalF1ZXJ5
Lm9mZnNldC5zdXBwb3J0c0ZpeGVkUG9zaXRpb24mJnByZXZDb21wdXRlZFN0eWxl
LnBvc2l0aW9uPT09ImZpeGVkIil7dG9wKz1NYXRoLm1heChkb2NFbGVtLnNjcm9s
bFRvcCxib2R5LnNjcm9sbFRvcCk7bGVmdCs9TWF0aC5tYXgoZG9jRWxlbS5zY3Jv
bGxMZWZ0LGJvZHkuc2Nyb2xsTGVmdCk7fQpyZXR1cm57dG9wOnRvcCxsZWZ0Omxl
ZnR9O307fQpqUXVlcnkub2Zmc2V0PXtpbml0aWFsaXplOmZ1bmN0aW9uKCl7dmFy
IGJvZHk9ZG9jdW1lbnQuYm9keSxjb250YWluZXI9ZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2IiksaW5uZXJEaXYsY2hlY2tEaXYsdGFibGUsdGQsYm9keU1hcmdp
blRvcD1wYXJzZUZsb2F0KGpRdWVyeS5jdXJDU1MoYm9keSwibWFyZ2luVG9wIix0
cnVlKSl8fDAsaHRtbD0iPGRpdiBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7dG9w
OjA7bGVmdDowO21hcmdpbjowO2JvcmRlcjo1cHggc29saWQgIzAwMDtwYWRkaW5n
OjA7d2lkdGg6MXB4O2hlaWdodDoxcHg7Jz48ZGl2PjwvZGl2PjwvZGl2Pjx0YWJs
ZSBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO21hcmdpbjow
O2JvcmRlcjo1cHggc29saWQgIzAwMDtwYWRkaW5nOjA7d2lkdGg6MXB4O2hlaWdo
dDoxcHg7JyBjZWxscGFkZGluZz0nMCcgY2VsbHNwYWNpbmc9JzAnPjx0cj48dGQ+
PC90ZD48L3RyPjwvdGFibGU+IjtqUXVlcnkuZXh0ZW5kKGNvbnRhaW5lci5zdHls
ZSx7cG9zaXRpb246ImFic29sdXRlIix0b3A6MCxsZWZ0OjAsbWFyZ2luOjAsYm9y
ZGVyOjAsd2lkdGg6IjFweCIsaGVpZ2h0OiIxcHgiLHZpc2liaWxpdHk6ImhpZGRl
biJ9KTtjb250YWluZXIuaW5uZXJIVE1MPWh0bWw7Ym9keS5pbnNlcnRCZWZvcmUo
Y29udGFpbmVyLGJvZHkuZmlyc3RDaGlsZCk7aW5uZXJEaXY9Y29udGFpbmVyLmZp
cnN0Q2hpbGQ7Y2hlY2tEaXY9aW5uZXJEaXYuZmlyc3RDaGlsZDt0ZD1pbm5lckRp
di5uZXh0U2libGluZy5maXJzdENoaWxkLmZpcnN0Q2hpbGQ7dGhpcy5kb2VzTm90
QWRkQm9yZGVyPShjaGVja0Rpdi5vZmZzZXRUb3AhPT01KTt0aGlzLmRvZXNBZGRC
b3JkZXJGb3JUYWJsZUFuZENlbGxzPSh0ZC5vZmZzZXRUb3A9PT01KTtjaGVja0Rp
di5zdHlsZS5wb3NpdGlvbj0iZml4ZWQiLGNoZWNrRGl2LnN0eWxlLnRvcD0iMjBw
eCI7dGhpcy5zdXBwb3J0c0ZpeGVkUG9zaXRpb249KGNoZWNrRGl2Lm9mZnNldFRv
cD09PTIwfHxjaGVja0Rpdi5vZmZzZXRUb3A9PT0xNSk7Y2hlY2tEaXYuc3R5bGUu
cG9zaXRpb249Y2hlY2tEaXYuc3R5bGUudG9wPSIiO2lubmVyRGl2LnN0eWxlLm92
ZXJmbG93PSJoaWRkZW4iLGlubmVyRGl2LnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2
ZSI7dGhpcy5zdWJ0cmFjdHNCb3JkZXJGb3JPdmVyZmxvd05vdFZpc2libGU9KGNo
ZWNrRGl2Lm9mZnNldFRvcD09PS01KTt0aGlzLmRvZXNOb3RJbmNsdWRlTWFyZ2lu
SW5Cb2R5T2Zmc2V0PShib2R5Lm9mZnNldFRvcCE9PWJvZHlNYXJnaW5Ub3ApO2Jv
ZHkucmVtb3ZlQ2hpbGQoY29udGFpbmVyKTtib2R5PWNvbnRhaW5lcj1pbm5lckRp
dj1jaGVja0Rpdj10YWJsZT10ZD1udWxsO2pRdWVyeS5vZmZzZXQuaW5pdGlhbGl6
ZT1qUXVlcnkubm9vcDt9LGJvZHlPZmZzZXQ6ZnVuY3Rpb24oYm9keSl7dmFyIHRv
cD1ib2R5Lm9mZnNldFRvcCxsZWZ0PWJvZHkub2Zmc2V0TGVmdDtqUXVlcnkub2Zm
c2V0LmluaXRpYWxpemUoKTtpZihqUXVlcnkub2Zmc2V0LmRvZXNOb3RJbmNsdWRl
TWFyZ2luSW5Cb2R5T2Zmc2V0KXt0b3ArPXBhcnNlRmxvYXQoalF1ZXJ5LmN1ckNT
Uyhib2R5LCJtYXJnaW5Ub3AiLHRydWUpKXx8MDtsZWZ0Kz1wYXJzZUZsb2F0KGpR
dWVyeS5jdXJDU1MoYm9keSwibWFyZ2luTGVmdCIsdHJ1ZSkpfHwwO30KcmV0dXJu
e3RvcDp0b3AsbGVmdDpsZWZ0fTt9LHNldE9mZnNldDpmdW5jdGlvbihlbGVtLG9w
dGlvbnMsaSl7aWYoL3N0YXRpYy8udGVzdChqUXVlcnkuY3VyQ1NTKGVsZW0sInBv
c2l0aW9uIikpKXtlbGVtLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSI7fQp2YXIg
Y3VyRWxlbT1qUXVlcnkoZWxlbSksY3VyT2Zmc2V0PWN1ckVsZW0ub2Zmc2V0KCks
Y3VyVG9wPXBhcnNlSW50KGpRdWVyeS5jdXJDU1MoZWxlbSwidG9wIix0cnVlKSwx
MCl8fDAsY3VyTGVmdD1wYXJzZUludChqUXVlcnkuY3VyQ1NTKGVsZW0sImxlZnQi
LHRydWUpLDEwKXx8MDtpZihqUXVlcnkuaXNGdW5jdGlvbihvcHRpb25zKSl7b3B0
aW9ucz1vcHRpb25zLmNhbGwoZWxlbSxpLGN1ck9mZnNldCk7fQp2YXIgcHJvcHM9
e3RvcDoob3B0aW9ucy50b3AtY3VyT2Zmc2V0LnRvcCkrY3VyVG9wLGxlZnQ6KG9w
dGlvbnMubGVmdC1jdXJPZmZzZXQubGVmdCkrY3VyTGVmdH07aWYoInVzaW5nImlu
IG9wdGlvbnMpe29wdGlvbnMudXNpbmcuY2FsbChlbGVtLHByb3BzKTt9ZWxzZXtj
dXJFbGVtLmNzcyhwcm9wcyk7fX19O2pRdWVyeS5mbi5leHRlbmQoe3Bvc2l0aW9u
OmZ1bmN0aW9uKCl7aWYoIXRoaXNbMF0pe3JldHVybiBudWxsO30KdmFyIGVsZW09
dGhpc1swXSxvZmZzZXRQYXJlbnQ9dGhpcy5vZmZzZXRQYXJlbnQoKSxvZmZzZXQ9
dGhpcy5vZmZzZXQoKSxwYXJlbnRPZmZzZXQ9L15ib2R5fGh0bWwkL2kudGVzdChv
ZmZzZXRQYXJlbnRbMF0ubm9kZU5hbWUpP3t0b3A6MCxsZWZ0OjB9Om9mZnNldFBh
cmVudC5vZmZzZXQoKTtvZmZzZXQudG9wLT1wYXJzZUZsb2F0KGpRdWVyeS5jdXJD
U1MoZWxlbSwibWFyZ2luVG9wIix0cnVlKSl8fDA7b2Zmc2V0LmxlZnQtPXBhcnNl
RmxvYXQoalF1ZXJ5LmN1ckNTUyhlbGVtLCJtYXJnaW5MZWZ0Iix0cnVlKSl8fDA7
cGFyZW50T2Zmc2V0LnRvcCs9cGFyc2VGbG9hdChqUXVlcnkuY3VyQ1NTKG9mZnNl
dFBhcmVudFswXSwiYm9yZGVyVG9wV2lkdGgiLHRydWUpKXx8MDtwYXJlbnRPZmZz
ZXQubGVmdCs9cGFyc2VGbG9hdChqUXVlcnkuY3VyQ1NTKG9mZnNldFBhcmVudFsw
XSwiYm9yZGVyTGVmdFdpZHRoIix0cnVlKSl8fDA7cmV0dXJue3RvcDpvZmZzZXQu
dG9wLXBhcmVudE9mZnNldC50b3AsbGVmdDpvZmZzZXQubGVmdC1wYXJlbnRPZmZz
ZXQubGVmdH07fSxvZmZzZXRQYXJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5t
YXAoZnVuY3Rpb24oKXt2YXIgb2Zmc2V0UGFyZW50PXRoaXMub2Zmc2V0UGFyZW50
fHxkb2N1bWVudC5ib2R5O3doaWxlKG9mZnNldFBhcmVudCYmKCEvXmJvZHl8aHRt
bCQvaS50ZXN0KG9mZnNldFBhcmVudC5ub2RlTmFtZSkmJmpRdWVyeS5jc3Mob2Zm
c2V0UGFyZW50LCJwb3NpdGlvbiIpPT09InN0YXRpYyIpKXtvZmZzZXRQYXJlbnQ9
b2Zmc2V0UGFyZW50Lm9mZnNldFBhcmVudDt9CnJldHVybiBvZmZzZXRQYXJlbnQ7
fSk7fX0pO2pRdWVyeS5lYWNoKFsiTGVmdCIsIlRvcCJdLGZ1bmN0aW9uKGksbmFt
ZSl7dmFyIG1ldGhvZD0ic2Nyb2xsIituYW1lO2pRdWVyeS5mblttZXRob2RdPWZ1
bmN0aW9uKHZhbCl7dmFyIGVsZW09dGhpc1swXSx3aW47aWYoIWVsZW0pe3JldHVy
biBudWxsO30KaWYodmFsIT09dW5kZWZpbmVkKXtyZXR1cm4gdGhpcy5lYWNoKGZ1
bmN0aW9uKCl7d2luPWdldFdpbmRvdyh0aGlzKTtpZih3aW4pe3dpbi5zY3JvbGxU
byghaT92YWw6alF1ZXJ5KHdpbikuc2Nyb2xsTGVmdCgpLGk/dmFsOmpRdWVyeSh3
aW4pLnNjcm9sbFRvcCgpKTt9ZWxzZXt0aGlzW21ldGhvZF09dmFsO319KTt9ZWxz
ZXt3aW49Z2V0V2luZG93KGVsZW0pO3JldHVybiB3aW4/KCJwYWdlWE9mZnNldCJp
biB3aW4pP3dpbltpPyJwYWdlWU9mZnNldCI6InBhZ2VYT2Zmc2V0Il06alF1ZXJ5
LnN1cHBvcnQuYm94TW9kZWwmJndpbi5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRb
bWV0aG9kXXx8d2luLmRvY3VtZW50LmJvZHlbbWV0aG9kXTplbGVtW21ldGhvZF07
fX07fSk7ZnVuY3Rpb24gZ2V0V2luZG93KGVsZW0pe3JldHVybigic2Nyb2xsVG8i
aW4gZWxlbSYmZWxlbS5kb2N1bWVudCk/ZWxlbTplbGVtLm5vZGVUeXBlPT09OT9l
bGVtLmRlZmF1bHRWaWV3fHxlbGVtLnBhcmVudFdpbmRvdzpmYWxzZTt9CmpRdWVy
eS5lYWNoKFsiSGVpZ2h0IiwiV2lkdGgiXSxmdW5jdGlvbihpLG5hbWUpe3ZhciB0
eXBlPW5hbWUudG9Mb3dlckNhc2UoKTtqUXVlcnkuZm5bImlubmVyIituYW1lXT1m
dW5jdGlvbigpe3JldHVybiB0aGlzWzBdP2pRdWVyeS5jc3ModGhpc1swXSx0eXBl
LGZhbHNlLCJwYWRkaW5nIik6bnVsbDt9O2pRdWVyeS5mblsib3V0ZXIiK25hbWVd
PWZ1bmN0aW9uKG1hcmdpbil7cmV0dXJuIHRoaXNbMF0/alF1ZXJ5LmNzcyh0aGlz
WzBdLHR5cGUsZmFsc2UsbWFyZ2luPyJtYXJnaW4iOiJib3JkZXIiKTpudWxsO307
alF1ZXJ5LmZuW3R5cGVdPWZ1bmN0aW9uKHNpemUpe3ZhciBlbGVtPXRoaXNbMF07
aWYoIWVsZW0pe3JldHVybiBzaXplPT1udWxsP251bGw6dGhpczt9CmlmKGpRdWVy
eS5pc0Z1bmN0aW9uKHNpemUpKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGkp
e3ZhciBzZWxmPWpRdWVyeSh0aGlzKTtzZWxmW3R5cGVdKHNpemUuY2FsbCh0aGlz
LGksc2VsZlt0eXBlXSgpKSk7fSk7fQpyZXR1cm4oInNjcm9sbFRvImluIGVsZW0m
JmVsZW0uZG9jdW1lbnQpP2VsZW0uZG9jdW1lbnQuY29tcGF0TW9kZT09PSJDU1Mx
Q29tcGF0IiYmZWxlbS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIr
bmFtZV18fGVsZW0uZG9jdW1lbnQuYm9keVsiY2xpZW50IituYW1lXTooZWxlbS5u
b2RlVHlwZT09PTkpP01hdGgubWF4KGVsZW0uZG9jdW1lbnRFbGVtZW50WyJjbGll
bnQiK25hbWVdLGVsZW0uYm9keVsic2Nyb2xsIituYW1lXSxlbGVtLmRvY3VtZW50
RWxlbWVudFsic2Nyb2xsIituYW1lXSxlbGVtLmJvZHlbIm9mZnNldCIrbmFtZV0s
ZWxlbS5kb2N1bWVudEVsZW1lbnRbIm9mZnNldCIrbmFtZV0pOnNpemU9PT11bmRl
ZmluZWQ/alF1ZXJ5LmNzcyhlbGVtLHR5cGUpOnRoaXMuY3NzKHR5cGUsdHlwZW9m
IHNpemU9PT0ic3RyaW5nIj9zaXplOihwYXJzZUludChzaXplKXx8MCkrInB4Iik7
fTt9KTt3aW5kb3cualF1ZXJ5PXdpbmRvdy4kPWpRdWVyeTt9KSh3aW5kb3cpOyRq
PWpRdWVyeS5ub0NvbmZsaWN0KCk7
------------CQ4wAorH1dcm6byte6AhmR
Content-Disposition: inline; filename=ajax.js
Content-Type: application/x-javascript; name=ajax.js
Content-Location: http://bits.wikimedia.org/skins-1.5/common/ajax.js?283-19
Content-Transfer-Encoding: Base64
Ly8gcmVtb3RlIHNjcmlwdGluZyBsaWJyYXJ5Ci8vIChjKSBjb3B5cmlnaHQgMjAw
NSBtb2Rlcm5tZXRob2QsIGluYwp2YXIgc2FqYXhfZGVidWdfbW9kZSA9IGZhbHNl
Owp2YXIgc2FqYXhfcmVxdWVzdF90eXBlID0gIkdFVCI7CgovKioKKiBpZiBzYWph
eF9kZWJ1Z19tb2RlIGlzIHRydWUsIHRoaXMgZnVuY3Rpb24gb3V0cHV0cyBnaXZl
biB0aGUgbWVzc2FnZSBpbnRvIAoqIHRoZSBlbGVtZW50IHdpdGggaWQgPSBzYWph
eF9kZWJ1ZzsgaWYgbm8gc3VjaCBlbGVtZW50IGV4aXN0cyBpbiB0aGUgZG9jdW1l
bnQsIAoqIGl0IGlzIGluamVjdGVkLgoqLwpmdW5jdGlvbiBzYWpheF9kZWJ1Zyh0
ZXh0KSB7CglpZiAoIXNhamF4X2RlYnVnX21vZGUpIHJldHVybiBmYWxzZTsKCgl2
YXIgZT0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhamF4X2RlYnVnJyk7CgoJ
aWYgKCFlKSB7CgkJZT0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicCIpOwoJCWUu
Y2xhc3NOYW1lPSAnc2FqYXhfZGVidWcnOwoJCWUuaWQ9ICdzYWpheF9kZWJ1Zyc7
CgoJCXZhciBiPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIp
WzBdOwoKCQlpZiAoYi5maXJzdENoaWxkKSBiLmluc2VydEJlZm9yZShlLCBiLmZp
cnN0Q2hpbGQpOwoJCWVsc2UgYi5hcHBlbmRDaGlsZChlKTsKCX0KCgl2YXIgbT0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CgltLmFwcGVuZENoaWxkKCBk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZSggdGV4dCApICk7CgoJZS5hcHBlbmRDaGls
ZCggbSApOwoKCXJldHVybiB0cnVlOwp9CgovKioKKiBjb21wYXRpYmlsaXR5IHdy
YXBwZXIgZm9yIGNyZWF0aW5nIGEgbmV3IFhNTEh0dHBSZXF1ZXN0IG9iamVjdC4K
Ki8KZnVuY3Rpb24gc2FqYXhfaW5pdF9vYmplY3QoKSB7CglzYWpheF9kZWJ1Zygi
c2FqYXhfaW5pdF9vYmplY3QoKSBjYWxsZWQuLiIpCgl2YXIgQTsKCXRyeSB7CgkJ
Ly8gVHJ5IHRoZSBuZXcgc3R5bGUgYmVmb3JlIEFjdGl2ZVggc28gd2UgZG9uJ3QK
CQkvLyB1bm5lY2Vzc2FyaWx5IHRyaWdnZXIgd2FybmluZ3MgaW4gSUUgNyB3aGVu
CgkJLy8gc2V0IHRvIHByb21wdCBhYm91dCBBY3RpdmVYIHVzYWdlCgkJQSA9IG5l
dyBYTUxIdHRwUmVxdWVzdCgpOwoJfSBjYXRjaCAoZSkgewoJCXRyeSB7CgkJCUE9
bmV3IEFjdGl2ZVhPYmplY3QoIk1zeG1sMi5YTUxIVFRQIik7CgkJfSBjYXRjaCAo
ZSkgewoJCQl0cnkgewoJCQkJQT1uZXcgQWN0aXZlWE9iamVjdCgiTWljcm9zb2Z0
LlhNTEhUVFAiKTsKCQkJfSBjYXRjaCAob2MpIHsKCQkJCUE9bnVsbDsKCQkJfQoJ
CX0KCX0KCWlmICghQSkKCQlzYWpheF9kZWJ1ZygiQ291bGQgbm90IGNyZWF0ZSBj
b25uZWN0aW9uIG9iamVjdC4iKTsKCglyZXR1cm4gQTsKfQoKLyoqCiogUGVyZm9y
bSBhbiBhamF4IGNhbGwgdG8gbWVkaWF3aWtpLiBDYWxscyBhcmUgaGFuZGVsZWQg
YnkgQWpheERpc3BhdGNoZXIucGhwCiogICBmdW5jX25hbWUgLSB0aGUgbmFtZSBv
ZiB0aGUgZnVuY3Rpb24gdG8gY2FsbC4gTXVzdCBiZSByZWdpc3RlcmVkIGluICR3
Z0FqYXhFeHBvcnRMaXN0CiogICBhcmdzIC0gYW4gYXJyYXkgb2YgYXJndW1lbnRz
IHRvIHRoYXQgZnVuY3Rpb24KKiAgIHRhcmdldCAtIHRoZSB0YXJnZXQgdGhhdCB3
aWxsIGhhbmRsZSB0aGUgcmVzdWx0IG9mIHRoZSBjYWxsLiBJZiB0aGlzIGlzIGEg
ZnVuY3Rpb24sCiogICAgICAgICAgICBpZiB3aWxsIGJlIGNhbGxlZCB3aXRoIHRo
ZSBYTUxIdHRwUmVxdWVzdCBhcyBhIHBhcmFtZXRlcjsgaWYgaXQncyBhbiBpbnB1
dAoqICAgICAgICAgICAgZWxlbWVudCwgaXRzIHZhbHVlIHdpbGwgYmUgc2V0IHRv
IHRoZSByZXN1bHRUZXh0OyBpZiBpdCdzIGFub3RoZXIgdHlwZSBvZgoqICAgICAg
ICAgICAgZWxlbWVudCwgaXRzIGlubmVySFRNTCB3aWxsIGJlIHNldCB0byB0aGUg
cmVzdWx0VGV4dC4KKgoqIEV4YW1wbGU6CiogICAgc2FqYXhfZG9fY2FsbCgnZG9G
b28nLCBbMSwgMiwgM10sIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaG93Rm9v
IikpOwoqCiogVGhpcyB3aWxsIGNhbGwgdGhlIGRvRm9vIGZ1bmN0aW9uIHZpYSBN
ZWRpYVdpa2kncyBBamF4RGlzcGF0Y2hlciwgd2l0aAoqICgxLCAyLCAzKSBhcyB0
aGUgcGFyYW1ldGVyIGxpc3QsIGFuZCB3aWxsIHNob3cgdGhlIHJlc3VsdCBpbiB0
aGUgZWxlbWVudAoqIHdpdGggaWQgPSBzaG93Rm9vCiovCmZ1bmN0aW9uIHNhamF4
X2RvX2NhbGwoZnVuY19uYW1lLCBhcmdzLCB0YXJnZXQpIHsKCXZhciBpLCB4LCBu
OwoJdmFyIHVyaTsKCXZhciBwb3N0X2RhdGE7Cgl1cmkgPSB3Z1NlcnZlciArCgkJ
KCh3Z1NjcmlwdCA9PSBudWxsKSA/ICh3Z1NjcmlwdFBhdGggKyAiL2luZGV4LnBo
cCIpIDogd2dTY3JpcHQpICsKCQkiP2FjdGlvbj1hamF4IjsKCWlmIChzYWpheF9y
ZXF1ZXN0X3R5cGUgPT0gIkdFVCIpIHsKCQlpZiAodXJpLmluZGV4T2YoIj8iKSA9
PSAtMSkKCQkJdXJpID0gdXJpICsgIj9ycz0iICsgZW5jb2RlVVJJQ29tcG9uZW50
KGZ1bmNfbmFtZSk7CgkJZWxzZQoJCQl1cmkgPSB1cmkgKyAiJnJzPSIgKyBlbmNv
ZGVVUklDb21wb25lbnQoZnVuY19uYW1lKTsKCQlmb3IgKGkgPSAwOyBpIDwgYXJn
cy5sZW5ndGg7IGkrKykKCQkJdXJpID0gdXJpICsgIiZyc2FyZ3NbXT0iICsgZW5j
b2RlVVJJQ29tcG9uZW50KGFyZ3NbaV0pOwoJCS8vdXJpID0gdXJpICsgIiZyc3Ju
ZD0iICsgbmV3IERhdGUoKS5nZXRUaW1lKCk7CgkJcG9zdF9kYXRhID0gbnVsbDsK
CX0gZWxzZSB7CgkJcG9zdF9kYXRhID0gInJzPSIgKyBlbmNvZGVVUklDb21wb25l
bnQoZnVuY19uYW1lKTsKCQlmb3IgKGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkr
KykKCQkJcG9zdF9kYXRhID0gcG9zdF9kYXRhICsgIiZyc2FyZ3NbXT0iICsgZW5j
b2RlVVJJQ29tcG9uZW50KGFyZ3NbaV0pOwoJfQoJeCA9IHNhamF4X2luaXRfb2Jq
ZWN0KCk7CglpZiAoIXgpIHsKCQlhbGVydCgiQUpBWCBub3Qgc3VwcG9ydGVkIik7
CgkJcmV0dXJuIGZhbHNlOwoJfQoKCXRyeSB7CgkJeC5vcGVuKHNhamF4X3JlcXVl
c3RfdHlwZSwgdXJpLCB0cnVlKTsKCX0gY2F0Y2ggKGUpIHsKCQlpZiAod2luZG93
LmxvY2F0aW9uLmhvc3RuYW1lID09ICJsb2NhbGhvc3QiKSB7CgkJCWFsZXJ0KCJZ
b3VyIGJyb3dzZXIgYmxvY2tzIFhNTEh0dHBSZXF1ZXN0IHRvICdsb2NhbGhvc3Qn
LCB0cnkgdXNpbmcgYSByZWFsIGhvc3RuYW1lIGZvciBkZXZlbG9wbWVudC90ZXN0
aW5nLiIpOwoJCX0KCQl0aHJvdyBlOwoJfQoJaWYgKHNhamF4X3JlcXVlc3RfdHlw
ZSA9PSAiUE9TVCIpIHsKCQl4LnNldFJlcXVlc3RIZWFkZXIoIk1ldGhvZCIsICJQ
T1NUICIgKyB1cmkgKyAiIEhUVFAvMS4xIik7CgkJeC5zZXRSZXF1ZXN0SGVhZGVy
KCJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNv
ZGVkIik7Cgl9Cgl4LnNldFJlcXVlc3RIZWFkZXIoIlByYWdtYSIsICJjYWNoZT15
ZXMiKTsKCXguc2V0UmVxdWVzdEhlYWRlcigiQ2FjaGUtQ29udHJvbCIsICJuby10
cmFuc2Zvcm0iKTsKCXgub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKSB7
CgkJaWYgKHgucmVhZHlTdGF0ZSAhPSA0KQoJCQlyZXR1cm47CgoJCXNhamF4X2Rl
YnVnKCJyZWNlaXZlZCAoIiArIHguc3RhdHVzICsgIiAiICsgeC5zdGF0dXNUZXh0
ICsgIikgIiArIHgucmVzcG9uc2VUZXh0KTsKCgkJLy9pZiAoeC5zdGF0dXMgIT0g
MjAwKQoJCS8vCWFsZXJ0KCJFcnJvcjogIiArIHguc3RhdHVzICsgIiAiICsgeC5z
dGF0dXNUZXh0ICsgIjogIiArIHgucmVzcG9uc2VUZXh0KTsKCQkvL2Vsc2UKCgkJ
aWYgKCB0eXBlb2YoIHRhcmdldCApID09ICdmdW5jdGlvbicgKSB7CgkJCXRhcmdl
dCggeCApOwoJCX0KCQllbHNlIGlmICggdHlwZW9mKCB0YXJnZXQgKSA9PSAnb2Jq
ZWN0JyApIHsKCQkJaWYgKCB0YXJnZXQudGFnTmFtZSA9PSAnSU5QVVQnICkgewoJ
CQkJaWYgKHguc3RhdHVzID09IDIwMCkgdGFyZ2V0LnZhbHVlPSB4LnJlc3BvbnNl
VGV4dDsKCQkJCS8vZWxzZSBhbGVydCgiRXJyb3I6ICIgKyB4LnN0YXR1cyArICIg
IiArIHguc3RhdHVzVGV4dCArICIgKCIgKyB4LnJlc3BvbnNlVGV4dCArICIpIik7
CgkJCX0KCQkJZWxzZSB7CgkJCQlpZiAoeC5zdGF0dXMgPT0gMjAwKSB0YXJnZXQu
aW5uZXJIVE1MID0geC5yZXNwb25zZVRleHQ7CgkJCQllbHNlIHRhcmdldC5pbm5l
ckhUTUw9ICI8ZGl2IGNsYXNzPSdlcnJvcic+RXJyb3I6ICIgKyB4LnN0YXR1cyAr
ICIgIiArIHguc3RhdHVzVGV4dCArICIgKCIgKyB4LnJlc3BvbnNlVGV4dCArICIp
PC9kaXY+IjsKCQkJfQoJCX0KCQllbHNlIHsKCQkJYWxlcnQoImJhZCB0YXJnZXQg
Zm9yIHNhamF4X2RvX2NhbGw6IG5vdCBhIGZ1bmN0aW9uIG9yIG9iamVjdDogIiAr
IHRhcmdldCk7CgkJfQoKCQlyZXR1cm47Cgl9CgoJc2FqYXhfZGVidWcoZnVuY19u
YW1lICsgIiB1cmkgPSAiICsgdXJpICsgIiAvIHBvc3QgPSAiICsgcG9zdF9kYXRh
KTsKCXguc2VuZChwb3N0X2RhdGEpOwoJc2FqYXhfZGVidWcoZnVuY19uYW1lICsg
IiB3YWl0aW5nLi4iKTsKCWRlbGV0ZSB4OwoKCXJldHVybiB0cnVlOwp9CgovKioK
ICogQHJldHVybiBib29sZWFuIHdoZXRoZXIgdGhlIGJyb3dzZXIgc3VwcG9ydHMg
WE1MSHR0cFJlcXVlc3QKICovCmZ1bmN0aW9uIHdmU3VwcG9ydHNBamF4KCkgewoJ
dmFyIHJlcXVlc3QgPSBzYWpheF9pbml0X29iamVjdCgpOwoJdmFyIHN1cHBvcnRz
QWpheCA9IHJlcXVlc3QgPyB0cnVlIDogZmFsc2U7CglkZWxldGUgcmVxdWVzdDsK
CXJldHVybiBzdXBwb3J0c0FqYXg7Cn0KCg==
------------CQ4wAorH1dcm6byte6AhmR
Content-Disposition: inline; filename=mwsuggest.js
Content-Type: application/x-javascript; name=mwsuggest.js
Content-Location: http://bits.wikimedia.org/skins-1.5/common/mwsuggest.js?283-19
Content-Transfer-Encoding: Base64
LyoKICogT3BlblNlYXJjaCBhamF4IHN1Z2dlc3Rpb24gZW5naW5lIGZvciBNZWRp
YVdpa2kKICoKICogdXNlcyBjb3JlIE1lZGlhV2lraSBvcGVuIHNlYXJjaCBzdXBw
b3J0IHRvIGZldGNoIHN1Z2dlc3Rpb25zCiAqIGFuZCBzaG93IHRoZW0gYmVsb3cg
c2VhcmNoIGJveGVzIGFuZCBvdGhlciBpbnB1dHMKICoKICogYnkgUm9iZXJ0IFN0
b2puaWMgKEFwcmlsIDIwMDgpCiAqLwoKLy8gc2VhcmNoX2JveF9pZCAtPiBSZXN1
bHRzIG9iamVjdAp2YXIgb3NfbWFwID0ge307Ci8vIGNhY2hlZCBkYXRhLCB1cmwg
LT4ganNvbl90ZXh0CnZhciBvc19jYWNoZSA9IHt9OwovLyBnbG9iYWwgdmFyaWFi
bGVzIGZvciBzdWdnZXN0X2tleXByZXNzCnZhciBvc19jdXJfa2V5cHJlc3NlZCA9
IDA7CnZhciBvc19rZXlwcmVzc2VkX2NvdW50ID0gMDsKLy8gdHlwZTogVGltZXIK
dmFyIG9zX3RpbWVyID0gbnVsbDsKLy8gdGllIG1vdXNlZG93bi91cCBldmVudHMK
dmFyIG9zX21vdXNlX3ByZXNzZWQgPSBmYWxzZTsKdmFyIG9zX21vdXNlX251bSA9
IC0xOwovLyBpZiB0cnVlLCB0aGUgbGFzdCBjaGFuZ2Ugd2FzIG1hZGUgYnkgbW91
c2UgKGFuZCBub3Qga2V5Ym9hcmQpCnZhciBvc19tb3VzZV9tb3ZlZCA9IGZhbHNl
OwovLyBkZWxheSBiZXR3ZWVuIGtleXByZXNzIGFuZCBzdWdnZXN0aW9uIChpbiBt
cykKdmFyIG9zX3NlYXJjaF90aW1lb3V0ID0gMjUwOwovLyB0aGVzZSBwYWlycyBv
ZiBpbnB1dHMvZm9ybXMgd2lsbCBiZSBhdXRvbG9hZGVkIGF0IHN0YXJ0dXAKdmFy
IG9zX2F1dG9sb2FkX2lucHV0cyA9IG5ldyBBcnJheSgnc2VhcmNoSW5wdXQnLCAn
c2VhcmNoSW5wdXQyJywgJ3Bvd2VyU2VhcmNoVGV4dCcsICdzZWFyY2hUZXh0Jyk7
CnZhciBvc19hdXRvbG9hZF9mb3JtcyA9IG5ldyBBcnJheSgnc2VhcmNoZm9ybScs
ICdzZWFyY2hmb3JtMicsICdwb3dlcnNlYXJjaCcsICdzZWFyY2gnICk7Ci8vIGlm
IHdlIHN0b3BwZWQgdGhlIHNlcnZpY2UKdmFyIG9zX2lzX3N0b3BwZWQgPSBmYWxz
ZTsKLy8gbWF4IGxpbmVzIHRvIHNob3cgaW4gc3VnZ2VzdCB0YWJsZQp2YXIgb3Nf
bWF4X2xpbmVzX3Blcl9zdWdnZXN0ID0gNzsKLy8gbnVtYmVyIG9mIHN0ZXBzIHRv
IGFuaW1hdGUgZXhwYW5zaW9uL2NvbnRyYWN0aW9uIG9mIGNvbnRhaW5lciB3aWR0
aAp2YXIgb3NfYW5pbWF0aW9uX3N0ZXBzID0gNjsKLy8gbnVtIG9mIHBpeGVscyBv
ZiBzbWFsbGVzdCBzdGVwCnZhciBvc19hbmltYXRpb25fbWluX3N0ZXAgPSAyOwov
LyBkZWxheSBiZXR3ZWVuIHN0ZXBzIChpbiBtcykKdmFyIG9zX2FuaW1hdGlvbl9k
ZWxheSA9IDMwOwovLyBtYXggd2lkdGggb2YgY29udGFpbmVyIGluIHBlcmNlbnQg
b2Ygbm9ybWFsIHNpemUgKDEgPT0gMTAwJSkKdmFyIG9zX2NvbnRhaW5lcl9tYXhf
d2lkdGggPSAyOwovLyBjdXJyZW50bHkgYWN0aXZlIGFuaW1hdGlvbiB0aW1lcgp2
YXIgb3NfYW5pbWF0aW9uX3RpbWVyID0gbnVsbDsKLyoqCiAqIDxkYXRhbGlzdD4g
aXMgYSBuZXcgSFRNTDUgZWxlbWVudCB0aGF0IGFsbG93cyB5b3UgdG8gbWFudWFs
bHkgc3VwcGx5CiAqIHN1Z2dlc3Rpb24gbGlzdHMgYW5kIGhhdmUgdGhlbSByZW5k
ZXJlZCBhY2NvcmRpbmcgdG8gdGhlIHJpZ2h0IHBsYXRmb3JtCiAqIGNvbnZlbnRp
b25zLiAgSG93ZXZlciwgdGhlIG9ubHkgc2hpcHBpbmcgYnJvd3NlciBhcyBvZiBl
YXJseSAyMDEwIGlzIE9wZXJhLAogKiBhbmQgdGhhdCBoYXMgYSBmYXRhbCBwcm9i
bGVtOiB0aGUgc3VnZ2VzdGlvbiBsYWdzIGJlaGluZCB3aGF0IHRoZSB1c2VyIHR5
cGVzCiAqIGJ5IG9uZSBrZXlwcmVzcy4gIChSZXBvcnRlZCBhcyBEU0stMjc2ODcw
IHRvIE9wZXJhJ3Mgc2VjcmV0IGJ1ZyB0cmFja2VyLikKICogVGhlIGNvZGUgaGVy
ZSBvdGhlcndpc2Ugc2VlbXMgdG8gd29yaywgdGhvdWdoLCBzbyB0aGlzIGNhbiBi
ZSBmbGlwcGVkIG9uCiAqIChtYXliZSB3aXRoIGEgVUEgY2hlY2spIHdoZW4gc29t
ZSBicm93c2VyIGhhcyBhIGJldHRlciBpbXBsZW1lbnRhdGlvbi4KICovCi8vIHZh
ciBvc191c2VfZGF0YWxpc3QgPSAnbGlzdCcgaW4gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCggJ2lucHV0JyApOwp2YXIgb3NfdXNlX2RhdGFsaXN0ID0gZmFsc2U7Cgov
KiogVGltZW91dCB0aW1lciBjbGFzcyB0aGF0IHdpbGwgZmV0Y2ggdGhlIHJlc3Vs
dHMgKi8KZnVuY3Rpb24gb3NfVGltZXIoIGlkLCByLCBxdWVyeSApIHsKCXRoaXMu
aWQgPSBpZDsKCXRoaXMuciA9IHI7Cgl0aGlzLnF1ZXJ5ID0gcXVlcnk7Cn0KCi8q
KiBQcm9wZXJ0eSBjbGFzcyBmb3Igc2luZ2xlIHNlYXJjaCBib3ggKi8KZnVuY3Rp
b24gb3NfUmVzdWx0cyggbmFtZSwgZm9ybW5hbWUgKSB7Cgl0aGlzLnNlYXJjaGZv
cm0gPSBmb3JtbmFtZTsgLy8gaWQgb2YgdGhlIHNlYXJjaGZvcm0KCXRoaXMuc2Vh
cmNoYm94ID0gbmFtZTsgLy8gaWQgb2YgdGhlIHNlYXJjaGJveAoJdGhpcy5jb250
YWluZXIgPSBuYW1lICsgJ1N1Z2dlc3QnOyAvLyBkaXYgdGhhdCBob2xkcyByZXN1
bHRzCgl0aGlzLnJlc3VsdFRhYmxlID0gbmFtZSArICdSZXN1bHQnOyAvLyBpZCBi
YXNlIGZvciB0aGUgcmVzdWx0IHRhYmxlICgrbnVtID0gdGFibGUgcm93KQoJdGhp
cy5yZXN1bHRUZXh0ID0gbmFtZSArICdSZXN1bHRUZXh0JzsgLy8gaWQgYmFzZSBm
b3IgdGhlIHNwYW5zIHdpdGhpbiByZXN1bHQgdGFibGVzICgrbnVtKQoJdGhpcy50
b2dnbGUgPSBuYW1lICsgJ1RvZ2dsZSc7IC8vIGRpdiB0aGF0IGhhcyB0aGUgdG9n
Z2xlIChlbmFibGUvZGlzYWJsZSkgbGluawoJdGhpcy5xdWVyeSA9IG51bGw7IC8v
IGxhc3QgcHJvY2Vzc2VkIHF1ZXJ5Cgl0aGlzLnJlc3VsdHMgPSBudWxsOyAgLy8g
cGFyc2VkIHRpdGxlcwoJdGhpcy5yZXN1bHRDb3VudCA9IDA7IC8vIG51bWJlciBv
ZiByZXN1bHRzCgl0aGlzLm9yaWdpbmFsID0gbnVsbDsgLy8gcXVlcnkgdGhhdCB1
c2VyIGVudGVyZWQKCXRoaXMuc2VsZWN0ZWQgPSAtMTsgLy8gd2hpY2ggcmVzdWx0
IGlzIHNlbGVjdGVkCgl0aGlzLmNvbnRhaW5lckNvdW50ID0gMDsgLy8gbnVtYmVy
IG9mIHJlc3VsdHMgdmlzaWJsZSBpbiBjb250YWluZXIKCXRoaXMuY29udGFpbmVy
Um93ID0gMDsgLy8gaGVpZ2h0IG9mIHJlc3VsdCBmaWVsZCBpbiB0aGUgY29udGFp
bmVyCgl0aGlzLmNvbnRhaW5lclRvdGFsID0gMDsgLy8gdG90YWwgaGVpZ2h0IG9m
IHRoZSBjb250YWluZXIgd2lsbCBhbGwgcmVzdWx0cwoJdGhpcy52aXNpYmxlID0g
ZmFsc2U7IC8vIGlmIGNvbnRhaW5lciBpcyB2aXNpYmxlCgl0aGlzLnN0YXlIaWRk
ZW4gPSBmYWxzZTsgLy8gZG9uJ3QgdHJ5IHRvIHNob3cgaWYgbG9zdCBmb2N1cwp9
CgovKiogVGltZXIgdXNlciB0byBhbmltYXRlIGV4cGFuc2lvbi9jb250cmFjdGlv
biBvZiBjb250YWluZXIgd2lkdGggKi8KZnVuY3Rpb24gb3NfQW5pbWF0aW9uVGlt
ZXIoIHIsIHRhcmdldCApIHsKCXRoaXMuciA9IHI7Cgl2YXIgY3VycmVudCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHIuY29udGFpbmVyKS5vZmZzZXRXaWR0aDsK
CXRoaXMuaW5jID0gTWF0aC5yb3VuZCggKCB0YXJnZXQgLSBjdXJyZW50ICkgLyBv
c19hbmltYXRpb25fc3RlcHMgKTsKCWlmKCB0aGlzLmluYyA8IG9zX2FuaW1hdGlv
bl9taW5fc3RlcCAmJiB0aGlzLmluYyA+PTAgKSB7CgkJdGhpcy5pbmMgPSBvc19h
bmltYXRpb25fbWluX3N0ZXA7IC8vIG1pbmltYWwgYW5pbWF0aW9uIHN0ZXAKCX0K
CWlmKCB0aGlzLmluYyA+IC1vc19hbmltYXRpb25fbWluX3N0ZXAgJiYgdGhpcy5p
bmMgPCAwICkgewoJCXRoaXMuaW5jID0gLW9zX2FuaW1hdGlvbl9taW5fc3RlcDsK
CX0KCXRoaXMudGFyZ2V0ID0gdGFyZ2V0Owp9CgovKioqKioqKioqKioqKioqKioq
CiAqIEluaXRpYWxpemF0aW9uCiAqKioqKioqKioqKioqKioqKiovCgovKiogSW5p
dGlhbGl6YXRpb24sIGNhbGwgdXBvbiBwYWdlIG9ubG9hZCAqLwpmdW5jdGlvbiBv
c19NV1N1Z2dlc3RJbml0KCkgewoJZm9yKCBpID0gMDsgaSA8IG9zX2F1dG9sb2Fk
X2lucHV0cy5sZW5ndGg7IGkrKyApIHsKCQl2YXIgaWQgPSBvc19hdXRvbG9hZF9p
bnB1dHNbaV07CgkJdmFyIGZvcm0gPSBvc19hdXRvbG9hZF9mb3Jtc1tpXTsKCQll
bGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIGlkICk7CgkJaWYoIGVs
ZW1lbnQgIT0gbnVsbCApIHsKCQkJb3NfaW5pdEhhbmRsZXJzKCBpZCwgZm9ybSwg
ZWxlbWVudCApOwoJCX0KCX0KfQoKLyoqIEluaXQgUmVzdWx0IG9iamVjdHMgYW5k
IGV2ZW50IGhhbmRsZXJzICovCmZ1bmN0aW9uIG9zX2luaXRIYW5kbGVycyggbmFt
ZSwgZm9ybW5hbWUsIGVsZW1lbnQgKSB7Cgl2YXIgciA9IG5ldyBvc19SZXN1bHRz
KCBuYW1lLCBmb3JtbmFtZSApOwoJLy8gZXZlbnQgaGFuZGxlcgoJb3NfaG9va0V2
ZW50KCBlbGVtZW50LCAna2V5dXAnLCBmdW5jdGlvbiggZXZlbnQgKSB7IG9zX2V2
ZW50S2V5dXAoIGV2ZW50ICk7IH0gKTsKCW9zX2hvb2tFdmVudCggZWxlbWVudCwg
J2tleWRvd24nLCBmdW5jdGlvbiggZXZlbnQgKSB7IG9zX2V2ZW50S2V5ZG93bigg
ZXZlbnQgKTsgfSApOwoJb3NfaG9va0V2ZW50KCBlbGVtZW50LCAna2V5cHJlc3Mn
LCBmdW5jdGlvbiggZXZlbnQgKSB7IG9zX2V2ZW50S2V5cHJlc3MoIGV2ZW50ICk7
IH0gKTsKCWlmICggIW9zX3VzZV9kYXRhbGlzdCApIHsKCQkvLyBUaGVzZSBhcmUg
bmVlZGVkIGZvciB0aGUgZGl2IGhhY2sgdG8gaGlkZSBpdCBpZiB0aGUgdXNlciBi
bHVycy4KCQlvc19ob29rRXZlbnQoIGVsZW1lbnQsICdibHVyJywgZnVuY3Rpb24o
IGV2ZW50ICkgeyBvc19ldmVudEJsdXIoIGV2ZW50ICk7IH0gKTsKCQlvc19ob29r
RXZlbnQoIGVsZW1lbnQsICdmb2N1cycsIGZ1bmN0aW9uKCBldmVudCApIHsgb3Nf
ZXZlbnRGb2N1cyggZXZlbnQgKTsgfSApOwoJCS8vIFdlIGRvbid0IHdhbnQgYnJv
d3NlciBhdXRvLXN1Z2dlc3Rpb25zIGludGVyZmVyaW5nIHdpdGggb3VyIGRpdiwg
YnV0CgkJLy8gYXV0b2NvbXBsZXRlIG11c3QgYmUgb24gZm9yIGRhdGFsaXN0IHRv
IHdvcmsgKGF0IGxlYXN0IGluIE9wZXJhCgkJLy8gMTAuMTApLgoJCWVsZW1lbnQu
c2V0QXR0cmlidXRlKCAnYXV0b2NvbXBsZXRlJywgJ29mZicgKTsKCX0KCS8vIHN0
b3BwaW5nIGhhbmRsZXIKCW9zX2hvb2tFdmVudCggZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoIGZvcm1uYW1lICksICdzdWJtaXQnLCBmdW5jdGlvbiggZXZlbnQgKSB7
IHJldHVybiBvc19ldmVudE9uc3VibWl0KCBldmVudCApOyB9ICk7Cglvc19tYXBb
bmFtZV0gPSByOwoJLy8gdG9nZ2xlIGxpbmsKCWlmKCBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCggci50b2dnbGUgKSA9PSBudWxsICkgewoJCS8vIFRPRE86IGRpc2Fi
bGUgdGhpcyB3aGlsZSB3ZSBmaWd1cmUgb3V0IGEgd2F5IGZvciB0aGlzIHRvIHdv
cmsgaW4gYWxsIGJyb3dzZXJzCgkJLyogaWYoIG5hbWUgPT0gJ3NlYXJjaElucHV0
JyApIHsKCQkJLy8gc3BlY2lhbCBjYXNlOiBwbGFjZSBhYm92ZSB0aGUgbWFpbiBz
ZWFyY2ggYm94CgkJCXZhciB0ID0gb3NfY3JlYXRlVG9nZ2xlKCByLCAnb3Mtc3Vn
Z2VzdC10b2dnbGUnICk7CgkJCXZhciBzZWFyY2hCb2R5ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoICdzZWFyY2hCb2R5JyApOwoJCQl2YXIgZmlyc3QgPSBzZWFy
Y2hCb2R5LnBhcmVudE5vZGUuZmlyc3RDaGlsZC5uZXh0U2libGluZy5hcHBlbmRD
aGlsZCh0KTsKCQl9IGVsc2UgewoJCQkvLyBkZWZhdWx0OiBwbGFjZSBiZWxvdyBz
ZWFyY2ggYm94IHRvIHRoZSByaWdodAoJCQl2YXIgdCA9IG9zX2NyZWF0ZVRvZ2ds
ZSggciwgJ29zLXN1Z2dlc3QtdG9nZ2xlLWRlZicgKTsKCQkJdmFyIHRvcCA9IGVs
ZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQ7CgkJCXZhciBs
ZWZ0ID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aDsK
CQkJdC5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7CgkJCXQuc3R5bGUudG9w
ID0gdG9wICsgJ3B4JzsKCQkJdC5zdHlsZS5sZWZ0ID0gbGVmdCArICdweCc7CgkJ
CWVsZW1lbnQucGFyZW50Tm9kZS5hcHBlbmRDaGlsZCggdCApOwoJCQkvLyBvbmx5
IG5vdyB3aWR0aCBnZXRzIGNhbGN1bGF0ZWQsIHNoaWZ0IHJpZ2h0CgkJCWxlZnQg
LT0gdC5vZmZzZXRXaWR0aDsKCQkJdC5zdHlsZS5sZWZ0ID0gbGVmdCArICdweCc7
CgkJCXQuc3R5bGUudmlzaWJpbGl0eSA9ICd2aXNpYmxlJzsKCQl9ICovCgl9Cgp9
CgpmdW5jdGlvbiBvc19ob29rRXZlbnQoIGVsZW1lbnQsIGhvb2tOYW1lLCBob29r
RnVuY3QgKSB7CglpZiAoIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lciApIHsKCQll
bGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIGhvb2tOYW1lLCBob29rRnVuY3QsIGZh
bHNlICk7Cgl9IGVsc2UgaWYgKCB3aW5kb3cuYXR0YWNoRXZlbnQgKSB7CgkJZWxl
bWVudC5hdHRhY2hFdmVudCggJ29uJyArIGhvb2tOYW1lLCBob29rRnVuY3QgKTsK
CX0KfQoKLyoqKioqKioqKioqKioqKioqKioqCiAqICBLZXlib2FyZCBldmVudHMK
ICoqKioqKioqKioqKioqKioqKioqLwoKLyoqIEV2ZW50IGhhbmRsZXIgdGhhdCB3
aWxsIGZldGNoIHJlc3VsdHMgb24ga2V5dXAgKi8KZnVuY3Rpb24gb3NfZXZlbnRL
ZXl1cCggZSApIHsKCXZhciB0YXJnID0gb3NfZ2V0VGFyZ2V0KCBlICk7Cgl2YXIg
ciA9IG9zX21hcFt0YXJnLmlkXTsKCWlmKCByID09IG51bGwgKSB7CgkJcmV0dXJu
OyAvLyBub3Qgb3VyIGV2ZW50Cgl9CgoJLy8gc29tZSBicm93c2VycyB3b24ndCBn
ZW5lcmF0ZSBrZXlwcmVzc2VkIGZvciBhcnJvdyBrZXlzLCBjYXRjaCBpdAoJaWYo
IG9zX2tleXByZXNzZWRfY291bnQgPT0gMCApIHsKCQlvc19wcm9jZXNzS2V5KCBy
LCBvc19jdXJfa2V5cHJlc3NlZCwgdGFyZyApOwoJfQoJdmFyIHF1ZXJ5ID0gdGFy
Zy52YWx1ZTsKCW9zX2ZldGNoUmVzdWx0cyggciwgcXVlcnksIG9zX3NlYXJjaF90
aW1lb3V0ICk7Cn0KCi8qKiBjYXRjaCBhcnJvd3MgdXAvZG93biBhbmQgZXNjYXBl
IHRvIGhpZGUgdGhlIHN1Z2dlc3Rpb25zICovCmZ1bmN0aW9uIG9zX3Byb2Nlc3NL
ZXkoIHIsIGtleXByZXNzZWQsIHRhcmcgKSB7CglpZiAoIGtleXByZXNzZWQgPT0g
NDAgJiYgIXIudmlzaWJsZSAmJiBvc190aW1lciA9PSBudWxsICkgewoJCS8vIElm
IHRoZSB1c2VyIGhpdHMgdGhlIGRvd24gYXJyb3csIGZldGNoIHJlc3VsdHMgaW1t
ZWRpYXRlbHkgaWYgbm9uZQoJCS8vIGFyZSBhbHJlYWR5IGRpc3BsYXllZC4KCQly
LnF1ZXJ5ID0gJyc7CgkJb3NfZmV0Y2hSZXN1bHRzKCByLCB0YXJnLnZhbHVlLCAw
ICk7Cgl9CgkvLyBPdGhlcndpc2UsIGlmIHdlJ3JlIG5vdCB1c2luZyBkYXRhbGlz
dCwgd2UgbmVlZCB0byBoYW5kbGUgc2Nyb2xsaW5nIGFuZAoJLy8gc28gb24uCglp
ZiAoIG9zX3VzZV9kYXRhbGlzdCApIHsKCQlyZXR1cm47Cgl9CglpZiAoIGtleXBy
ZXNzZWQgPT0gNDAgKSB7IC8vIEFycm93IERvd24KCQlpZiAoIHIudmlzaWJsZSAp
IHsKCQkJb3NfY2hhbmdlSGlnaGxpZ2h0KCByLCByLnNlbGVjdGVkLCByLnNlbGVj
dGVkICsgMSwgdHJ1ZSApOwoJCX0KCX0gZWxzZSBpZiAoIGtleXByZXNzZWQgPT0g
MzggKSB7IC8vIEFycm93IFVwCgkJaWYgKCByLnZpc2libGUgKSB7CgkJCW9zX2No
YW5nZUhpZ2hsaWdodCggciwgci5zZWxlY3RlZCwgci5zZWxlY3RlZCAtIDEsIHRy
dWUgKTsKCQl9Cgl9IGVsc2UgaWYoIGtleXByZXNzZWQgPT0gMjcgKSB7IC8vIEVz
Y2FwZQoJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCByLnNlYXJjaGJveCApLnZh
bHVlID0gci5vcmlnaW5hbDsKCQlyLnF1ZXJ5ID0gci5vcmlnaW5hbDsKCQlvc19o
aWRlUmVzdWx0cyggciApOwoJfSBlbHNlIGlmKCByLnF1ZXJ5ICE9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCByLnNlYXJjaGJveCApLnZhbHVlICkgewoJCS8vIG9z
X2hpZGVSZXN1bHRzKCByICk7IC8vIGRvbid0IHNob3cgb2xkIHN1Z2dlc3Rpb25z
Cgl9Cn0KCi8qKiBXaGVuIGtleXMgaXMgaGVsZCBkb3duIHVzZSBhIHRpbWVyIHRv
IG91dHB1dCByZWd1bGFyIGV2ZW50cyAqLwpmdW5jdGlvbiBvc19ldmVudEtleXBy
ZXNzKCBlICkgewoJdmFyIHRhcmcgPSBvc19nZXRUYXJnZXQoIGUgKTsKCXZhciBy
ID0gb3NfbWFwW3RhcmcuaWRdOwoJaWYoIHIgPT0gbnVsbCApIHsKCQlyZXR1cm47
IC8vIG5vdCBvdXIgZXZlbnQKCX0KCgl2YXIga2V5cHJlc3NlZCA9IG9zX2N1cl9r
ZXlwcmVzc2VkOwoKCW9zX2tleXByZXNzZWRfY291bnQrKzsKCW9zX3Byb2Nlc3NL
ZXkoIHIsIGtleXByZXNzZWQsIHRhcmcgKTsKfQoKLyoqIENhdGNoIHRoZSBrZXkg
Y29kZSAoRmlyZWZveCBidWcpICovCmZ1bmN0aW9uIG9zX2V2ZW50S2V5ZG93bigg
ZSApIHsKCWlmICggIWUgKSB7CgkJZSA9IHdpbmRvdy5ldmVudDsKCX0KCXZhciB0
YXJnID0gb3NfZ2V0VGFyZ2V0KCBlICk7Cgl2YXIgciA9IG9zX21hcFt0YXJnLmlk
XTsKCWlmKCByID09IG51bGwgKSB7CgkJcmV0dXJuOyAvLyBub3Qgb3VyIGV2ZW50
Cgl9CgoJb3NfbW91c2VfbW92ZWQgPSBmYWxzZTsKCglvc19jdXJfa2V5cHJlc3Nl
ZCA9ICggZS5rZXlDb2RlID09IHVuZGVmaW5lZCApID8gZS53aGljaCA6IGUua2V5
Q29kZTsKCW9zX2tleXByZXNzZWRfY291bnQgPSAwOwp9CgoKLyoqIFdoZW4gdGhl
IGZvcm0gaXMgc3VibWl0dGVkIGhpZGUgZXZlcnl0aGluZywgY2FuY2VsIHVwZGF0
ZXMuLi4gKi8KZnVuY3Rpb24gb3NfZXZlbnRPbnN1Ym1pdCggZSApIHsKCXZhciB0
YXJnID0gb3NfZ2V0VGFyZ2V0KCBlICk7CgoJb3NfaXNfc3RvcHBlZCA9IHRydWU7
CgkvLyBraWxsIHRpbWVkIHJlcXVlc3RzCglpZiggb3NfdGltZXIgIT0gbnVsbCAm
JiBvc190aW1lci5pZCAhPSBudWxsICkgewoJCWNsZWFyVGltZW91dCggb3NfdGlt
ZXIuaWQgKTsKCQlvc190aW1lciA9IG51bGw7Cgl9CgkvLyBIaWRlIGFsbCBzdWdn
ZXN0aW9ucwoJZm9yKCBpID0gMDsgaSA8IG9zX2F1dG9sb2FkX2lucHV0cy5sZW5n
dGg7IGkrKyApIHsKCQl2YXIgciA9IG9zX21hcFtvc19hdXRvbG9hZF9pbnB1dHNb
aV1dOwoJCWlmKCByICE9IG51bGwgKSB7CgkJCXZhciBiID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoIHIuc2VhcmNoZm9ybSApOwoJCQlpZiggYiAhPSBudWxsICYm
IGIgPT0gdGFyZyApIHsKCQkJCS8vIHNldCBxdWVyeSB2YWx1ZSBzbyB0aGUgaGFu
ZGxlciB3b24ndCB0cnkgdG8gZmV0Y2ggYWRkaXRpb25hbCByZXN1bHRzCgkJCQly
LnF1ZXJ5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIHIuc2VhcmNoYm94ICku
dmFsdWU7CgkJCX0KCQkJb3NfaGlkZVJlc3VsdHMoIHIgKTsKCQl9Cgl9CglyZXR1
cm4gdHJ1ZTsKfQoKCgovKiogSGlkZSByZXN1bHRzIGZyb20gdGhlIHVzZXIsIGVp
dGhlciBtYWtpbmcgdGhlIGRpdiB2aXNpYmlsaXR5PWhpZGRlbiBvcgogKiBkZXRh
Y2hpbmcgdGhlIGRhdGFsaXN0IGZyb20gdGhlIGlucHV0LiAqLwpmdW5jdGlvbiBv
c19oaWRlUmVzdWx0cyggciApIHsKCWlmICggb3NfdXNlX2RhdGFsaXN0ICkgewoJ
CWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCByLnNlYXJjaGJveCApLnNldEF0dHJp
YnV0ZSggJ2xpc3QnLCAnJyApOwoJfSBlbHNlIHsKCQl2YXIgYyA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCByLmNvbnRhaW5lciApOwoJCWlmICggYyAhPSBudWxs
ICkgewoJCQljLnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJzsKCQl9Cgl9Cgly
LnZpc2libGUgPSBmYWxzZTsKCXIuc2VsZWN0ZWQgPSAtMTsKfQoKZnVuY3Rpb24g
b3NfZGVjb2RlVmFsdWUoIHZhbHVlICkgewoJaWYgKCBkZWNvZGVVUklDb21wb25l
bnQgKSB7CgkJcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudCggdmFsdWUgKTsKCX0K
CWlmKCB1bmVzY2FwZSApIHsKCQlyZXR1cm4gdW5lc2NhcGUoIHZhbHVlICk7Cgl9
CglyZXR1cm4gbnVsbDsKfQoKZnVuY3Rpb24gb3NfZW5jb2RlUXVlcnkoIHZhbHVl
ICkgewoJaWYgKCBlbmNvZGVVUklDb21wb25lbnQgKSB7CgkJcmV0dXJuIGVuY29k
ZVVSSUNvbXBvbmVudCggdmFsdWUgKTsKCX0KCWlmKCBlc2NhcGUgKSB7CgkJcmV0
dXJuIGVzY2FwZSggdmFsdWUgKTsKCX0KCXJldHVybiBudWxsOwp9CgovKiogSGFu
ZGxlcyBkYXRhIGZyb20gWE1MSHR0cFJlcXVlc3QsIGFuZCB1cGRhdGVzIHRoZSBz
dWdnZXN0IHJlc3VsdHMgKi8KZnVuY3Rpb24gb3NfdXBkYXRlUmVzdWx0cyggciwg
cXVlcnksIHRleHQsIGNhY2hlS2V5ICkgewoJb3NfY2FjaGVbY2FjaGVLZXldID0g
dGV4dDsKCXIucXVlcnkgPSBxdWVyeTsKCXIub3JpZ2luYWwgPSBxdWVyeTsKCWlm
KCB0ZXh0ID09ICcnICkgewoJCXIucmVzdWx0cyA9IG51bGw7CgkJci5yZXN1bHRD
b3VudCA9IDA7CgkJb3NfaGlkZVJlc3VsdHMoIHIgKTsKCX0gZWxzZSB7CgkJdHJ5
IHsKCQkJdmFyIHAgPSBldmFsKCAnKCcgKyB0ZXh0ICsgJyknICk7IC8vIHNpbXBs
ZSBqc29uIHBhcnNlLCBjb3VsZCBkbyBhIHNhZmVyIG9uZQoJCQlpZiggcC5sZW5n
dGggPCAyIHx8IHBbMV0ubGVuZ3RoID09IDAgKSB7CgkJCQlyLnJlc3VsdHMgPSBu
dWxsOwoJCQkJci5yZXN1bHRDb3VudCA9IDA7CgkJCQlvc19oaWRlUmVzdWx0cygg
ciApOwoJCQkJcmV0dXJuOwoJCQl9CgkJCWlmICggb3NfdXNlX2RhdGFsaXN0ICkg
ewoJCQkJb3Nfc2V0dXBEYXRhbGlzdCggciwgcFsxXSApOwoJCQl9IGVsc2UgewoJ
CQkJb3Nfc2V0dXBEaXYoIHIsIHBbMV0gKTsKCQkJfQoJCX0gY2F0Y2goIGUgKSB7
CgkJCS8vIGJhZCByZXNwb25zZSBmcm9tIHNlcnZlciBvciBzdWNoCgkJCW9zX2hp
ZGVSZXN1bHRzKCByICk7CgkJCW9zX2NhY2hlW2NhY2hlS2V5XSA9IG51bGw7CgkJ
fQoJfQp9CgovKioKICogQ3JlYXRlIGFuZCBwb3B1bGF0ZSBhIDxkYXRhbGlzdD4u
CiAqCiAqIEBwYXJhbSByICAgICAgIG9zX1Jlc3VsdCBvYmplY3QKICogQHBhcmFt
IHJlc3VsdHMgQXJyYXkgb2YgdGhlIG5ldyByZXN1bHRzIHRvIHJlcGxhY2UgZXhp
c3Rpbmcgb25lcwogKi8KZnVuY3Rpb24gb3Nfc2V0dXBEYXRhbGlzdCggciwgcmVz
dWx0cyApIHsKCXZhciBzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIHIuc2Vh
cmNoYm94ICk7Cgl2YXIgYyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCByLmNv
bnRhaW5lciApOwoJaWYgKCBjID09IG51bGwgKSB7CgkJYyA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoICdkYXRhbGlzdCcgKTsKCQljLnNldEF0dHJpYnV0ZSggJ2lk
Jywgci5jb250YWluZXIgKTsKCQlkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKCBj
ICk7Cgl9IGVsc2UgewoJCWMuaW5uZXJIVE1MID0gJyc7Cgl9CglzLnNldEF0dHJp
YnV0ZSggJ2xpc3QnLCByLmNvbnRhaW5lciApOwoKCXIucmVzdWx0cyA9IG5ldyBB
cnJheSgpOwoJci5yZXN1bHRDb3VudCA9IHJlc3VsdHMubGVuZ3RoOwoJci52aXNp
YmxlID0gdHJ1ZTsKCWZvciAoIGkgPSAwOyBpIDwgcmVzdWx0cy5sZW5ndGg7IGkr
KyApIHsKCQl2YXIgdGl0bGUgPSBvc19kZWNvZGVWYWx1ZSggcmVzdWx0c1tpXSAp
OwoJCXZhciBvcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAnb3B0aW9uJyAp
OwoJCW9wdC52YWx1ZSA9IHRpdGxlOwoJCXIucmVzdWx0c1tpXSA9IHRpdGxlOwoJ
CWMuYXBwZW5kQ2hpbGQoIG9wdCApOwoJfQp9CgovKiogRmV0Y2ggbmFtZXNwYWNl
cyBmcm9tIGNoZWNrYm94ZXMgb3IgaGlkZGVuIGZpZWxkcyBpbiB0aGUgc2VhcmNo
IGZvcm0sCiAgICBpZiBub25lIGRlZmluZWQgdXNlIHdnU2VhcmNoTmFtZXNwYWNl
cyBnbG9iYWwgKi8KZnVuY3Rpb24gb3NfZ2V0TmFtZXNwYWNlcyggciApIHsKCXZh
ciBuYW1lc3BhY2VzID0gJyc7Cgl2YXIgZWxlbWVudHMgPSBkb2N1bWVudC5mb3Jt
c1tyLnNlYXJjaGZvcm1dLmVsZW1lbnRzOwoJZm9yKCBpID0gMDsgaSA8IGVsZW1l
bnRzLmxlbmd0aDsgaSsrICkgewoJCXZhciBuYW1lID0gZWxlbWVudHNbaV0ubmFt
ZTsKCQlpZiggdHlwZW9mIG5hbWUgIT0gJ3VuZGVmaW5lZCcgJiYgbmFtZS5sZW5n
dGggPiAyICYmIG5hbWVbMF0gPT0gJ24nICYmCgkJCW5hbWVbMV0gPT0gJ3MnICYm
ICgKCQkJCSggZWxlbWVudHNbaV0udHlwZSA9PSAnY2hlY2tib3gnICYmIGVsZW1l
bnRzW2ldLmNoZWNrZWQgKSB8fAoJCQkJKCBlbGVtZW50c1tpXS50eXBlID09ICdo
aWRkZW4nICYmIGVsZW1lbnRzW2ldLnZhbHVlID09ICcxJyApCgkJCSkKCQkpIHsK
CQkJaWYoIG5hbWVzcGFjZXMgIT0gJycgKSB7CgkJCQluYW1lc3BhY2VzICs9ICd8
JzsKCQkJfQoJCQluYW1lc3BhY2VzICs9IG5hbWUuc3Vic3RyaW5nKCAyICk7CgkJ
fQoJfQoJaWYoIG5hbWVzcGFjZXMgPT0gJycgKSB7CgkJbmFtZXNwYWNlcyA9IHdn
U2VhcmNoTmFtZXNwYWNlcy5qb2luKCd8Jyk7Cgl9CglyZXR1cm4gbmFtZXNwYWNl
czsKfQoKLyoqIFVwZGF0ZSByZXN1bHRzIGlmIHVzZXIgaGFzbid0IGFscmVhZHkg
dHlwZWQgc29tZXRoaW5nIGVsc2UgKi8KZnVuY3Rpb24gb3NfdXBkYXRlSWZSZWxl
dmFudCggciwgcXVlcnksIHRleHQsIGNhY2hlS2V5ICkgewoJdmFyIHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCggci5zZWFyY2hib3ggKTsKCWlmKCB0ICE9IG51
bGwgJiYgdC52YWx1ZSA9PSBxdWVyeSApIHsgLy8gY2hlY2sgaWYgcmVzcG9uc2Ug
aXMgc3RpbGwgcmVsZXZhbnQKCQlvc191cGRhdGVSZXN1bHRzKCByLCBxdWVyeSwg
dGV4dCwgY2FjaGVLZXkgKTsKCX0KCXIucXVlcnkgPSBxdWVyeTsKfQoKLyoqIEZl
dGNoIHJlc3VsdHMgYWZ0ZXIgc29tZSB0aW1lb3V0ICovCmZ1bmN0aW9uIG9zX2Rl
bGF5ZWRGZXRjaCgpIHsKCWlmKCBvc190aW1lciA9PSBudWxsICkgewoJCXJldHVy
bjsKCX0KCXZhciByID0gb3NfdGltZXIucjsKCXZhciBxdWVyeSA9IG9zX3RpbWVy
LnF1ZXJ5OwoJb3NfdGltZXIgPSBudWxsOwoJdmFyIHBhdGggPSB3Z01XU3VnZ2Vz
dFRlbXBsYXRlLnJlcGxhY2UoICJ7bmFtZXNwYWNlc30iLCBvc19nZXROYW1lc3Bh
Y2VzKCByICkgKQoJCQkJCQkJCQkucmVwbGFjZSggIntkYm5hbWV9Iiwgd2dEQm5h
bWUgKQoJCQkJCQkJCQkucmVwbGFjZSggIntzZWFyY2hUZXJtc30iLCBvc19lbmNv
ZGVRdWVyeSggcXVlcnkgKSApOwoKCS8vIHRyeSB0byBnZXQgZnJvbSBjYWNoZSwg
aWYgbm90IGZldGNoIHVzaW5nIGFqYXgKCXZhciBjYWNoZWQgPSBvc19jYWNoZVtw
YXRoXTsKCWlmKCBjYWNoZWQgIT0gbnVsbCAmJiBjYWNoZWQgIT0gdW5kZWZpbmVk
ICkgewoJCW9zX3VwZGF0ZUlmUmVsZXZhbnQoIHIsIHF1ZXJ5LCBjYWNoZWQsIHBh
dGggKTsKCX0gZWxzZSB7CgkJdmFyIHhtbGh0dHAgPSBzYWpheF9pbml0X29iamVj
dCgpOwoJCWlmKCB4bWxodHRwICkgewoJCQl0cnkgewoJCQkJeG1saHR0cC5vcGVu
KCAnR0VUJywgcGF0aCwgdHJ1ZSApOwoJCQkJeG1saHR0cC5vbnJlYWR5c3RhdGVj
aGFuZ2UgPSBmdW5jdGlvbigpIHsKCQkJCQlpZiAoIHhtbGh0dHAucmVhZHlTdGF0
ZSA9PSA0ICYmIHR5cGVvZiBvc191cGRhdGVJZlJlbGV2YW50ID09ICdmdW5jdGlv
bicgKSB7CgkJCQkJCW9zX3VwZGF0ZUlmUmVsZXZhbnQoIHIsIHF1ZXJ5LCB4bWxo
dHRwLnJlc3BvbnNlVGV4dCwgcGF0aCApOwoJCQkJCX0KCQkJCX07CgkJCQl4bWxo
dHRwLnNlbmQoIG51bGwgKTsKCQkJfSBjYXRjaCAoIGUgKSB7CgkJCQlpZiAoIHdp
bmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PSAnbG9jYWxob3N0JyApIHsKCQkJCQlh
bGVydCggIllvdXIgYnJvd3NlciBibG9ja3MgWE1MSHR0cFJlcXVlc3QgdG8gJ2xv
Y2FsaG9zdCcsIHRyeSB1c2luZyBhIHJlYWwgaG9zdG5hbWUgZm9yIGRldmVsb3Bt
ZW50L3Rlc3RpbmcuIiApOwoJCQkJfQoJCQkJdGhyb3cgZTsKCQkJfQoJCX0KCX0K
fQoKLyoqIEluaXQgdGltZWQgdXBkYXRlIHZpYSBvc19kZWxheWVkVXBkYXRlKCkg
Ki8KZnVuY3Rpb24gb3NfZmV0Y2hSZXN1bHRzKCByLCBxdWVyeSwgdGltZW91dCAp
IHsKCWlmKCBxdWVyeSA9PSAnJyApIHsKCQlyLnF1ZXJ5ID0gJyc7CgkJb3NfaGlk
ZVJlc3VsdHMoIHIgKTsKCQlyZXR1cm47Cgl9IGVsc2UgaWYoIHF1ZXJ5ID09IHIu
cXVlcnkgKSB7CgkJcmV0dXJuOyAvLyBubyBjaGFuZ2UKCX0KCglvc19pc19zdG9w
cGVkID0gZmFsc2U7IC8vIG1ha2Ugc3VyZSB3ZSdyZSBydW5uaW5nCgoJLy8gY2Fu
Y2VsIGFueSBwZW5kaW5nIGZldGNoZXMKCWlmKCBvc190aW1lciAhPSBudWxsICYm
IG9zX3RpbWVyLmlkICE9IG51bGwgKSB7CgkJY2xlYXJUaW1lb3V0KCBvc190aW1l
ci5pZCApOwoJfQoJLy8gc2NoZWR1bGUgZGVsYXllZCBmZXRjaGluZyBvZiByZXN1
bHRzCglpZiggdGltZW91dCAhPSAwICkgewoJCW9zX3RpbWVyID0gbmV3IG9zX1Rp
bWVyKCBzZXRUaW1lb3V0KCAib3NfZGVsYXllZEZldGNoKCkiLCB0aW1lb3V0ICks
IHIsIHF1ZXJ5ICk7Cgl9IGVsc2UgewoJCW9zX3RpbWVyID0gbmV3IG9zX1RpbWVy
KCBudWxsLCByLCBxdWVyeSApOwoJCW9zX2RlbGF5ZWRGZXRjaCgpOyAvLyBkbyBp
dCBub3chCgl9Cn0KCi8qKiBGaW5kIGV2ZW50IHRhcmdldCAqLwpmdW5jdGlvbiBv
c19nZXRUYXJnZXQoIGUgKSB7CglpZiAoICFlICkgewoJCWUgPSB3aW5kb3cuZXZl
bnQ7Cgl9CglpZiAoIGUudGFyZ2V0ICkgewoJCXJldHVybiBlLnRhcmdldDsKCX0g
ZWxzZSBpZiAoIGUuc3JjRWxlbWVudCApIHsKCQlyZXR1cm4gZS5zcmNFbGVtZW50
OwoJfSBlbHNlIHsKCQlyZXR1cm4gbnVsbDsKCX0KfQoKLyoqIENoZWNrIGlmIHgg
aXMgYSB2YWxpZCBpbnRlZ2VyICovCmZ1bmN0aW9uIG9zX2lzTnVtYmVyKCB4ICkg
ewoJaWYoIHggPT0gJycgfHwgaXNOYU4oIHggKSApIHsKCQlyZXR1cm4gZmFsc2U7
Cgl9Cglmb3IoIHZhciBpID0gMDsgaSA8IHgubGVuZ3RoOyBpKysgKSB7CgkJdmFy
IGMgPSB4LmNoYXJBdCggaSApOwoJCWlmKCAhKCBjID49ICcwJyAmJiBjIDw9ICc5
JyApICkgewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoJfQoJcmV0dXJuIHRydWU7Cn0K
Ci8qKiBDYWxsIHRoaXMgdG8gZW5hYmxlIHN1Z2dlc3Rpb25zIG9uIGlucHV0IChp
ZD1pbnB1dElkKSwgb24gYSBmb3JtIChuYW1lPWZvcm1OYW1lKSAqLwpmdW5jdGlv
biBvc19lbmFibGVTdWdnZXN0aW9uc09uKCBpbnB1dElkLCBmb3JtTmFtZSApIHsK
CW9zX2luaXRIYW5kbGVycyggaW5wdXRJZCwgZm9ybU5hbWUsIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCBpbnB1dElkICkgKTsKfQoKLyoqIENhbGwgdGhpcyB0byBk
aXNhYmxlIHN1Z2dlc3Rpb3Mgb24gaW5wdXQgYm94IChpZD1pbnB1dElkKSAqLwpm
dW5jdGlvbiBvc19kaXNhYmxlU3VnZ2VzdGlvbnNPbiggaW5wdXRJZCApIHsKCXIg
PSBvc19tYXBbaW5wdXRJZF07CglpZiggciAhPSBudWxsICkgewoJCS8vIGNhbmNl
bC9oaWRlIHJlc3VsdHMKCQlvc190aW1lciA9IG51bGw7CgkJb3NfaGlkZVJlc3Vs
dHMoIHIgKTsKCQkvLyB0dXJuIGF1dG9jb21wbGV0ZSBvbiAhCgkJZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoIGlucHV0SWQgKS5zZXRBdHRyaWJ1dGUoICdhdXRvY29t
cGxldGUnLCAnb24nICk7CgkJLy8gcmVtb3ZlIGRlc2NyaXB0b3IKCQlvc19tYXBb
aW5wdXRJZF0gPSBudWxsOwoJfQoKCS8vIFJlbW92ZSB0aGUgZWxlbWVudCBmcm9t
IHRoZSBvc19hdXRvbG9hZF8qIGFycmF5cwoJdmFyIGluZGV4ID0gb3NfYXV0b2xv
YWRfaW5wdXRzLmluZGV4T2YoIGlucHV0SWQgKTsKCWlmICggaW5kZXggPj0gMCAp
IHsKCQlvc19hdXRvbG9hZF9pbnB1dHNbaW5kZXhdID0gb3NfYXV0b2xvYWRfZm9y
bXNbaW5kZXhdID0gJyc7Cgl9Cn0KCi8qKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioKICogRGl2LW9ubHkgZnVuY3Rpb25zIChp
cnJlbGV2YW50IGZvciBkYXRhbGlzdCkKICoqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKi8KCi8qKiBFdmVudDogbG9zcyBvZiBm
b2N1cyBvZiBpbnB1dCBib3ggKi8KZnVuY3Rpb24gb3NfZXZlbnRCbHVyKCBlICkg
ewoJdmFyIHRhcmcgPSBvc19nZXRUYXJnZXQoIGUgKTsKCXZhciByID0gb3NfbWFw
W3RhcmcuaWRdOwoJaWYoIHIgPT0gbnVsbCApIHsKCQlyZXR1cm47IC8vIG5vdCBv
dXIgZXZlbnQKCX0KCWlmKCAhb3NfbW91c2VfcHJlc3NlZCApIHsKCQlvc19oaWRl
UmVzdWx0cyggciApOwoJCS8vIGZvcmNlIGNhbnZhcyB0byBzdGF5IGhpZGRlbgoJ
CXIuc3RheUhpZGRlbiA9IHRydWU7CgkJLy8gY2FuY2VsIGFueSBwZW5kaW5nIGZl
dGNoZXMKCQlpZiggb3NfdGltZXIgIT0gbnVsbCAmJiBvc190aW1lci5pZCAhPSBu
dWxsICkgewoJCQljbGVhclRpbWVvdXQoIG9zX3RpbWVyLmlkICk7CgkJfQoJCW9z
X3RpbWVyID0gbnVsbDsKCX0KfQoKLyoqIEV2ZW50OiBmb2N1cyAoY2F0Y2ggb25s
eSB3aGVuIHN0b3BwZWQpICovCmZ1bmN0aW9uIG9zX2V2ZW50Rm9jdXMoIGUgKSB7
Cgl2YXIgdGFyZyA9IG9zX2dldFRhcmdldCggZSApOwoJdmFyIHIgPSBvc19tYXBb
dGFyZy5pZF07CglpZiggciA9PSBudWxsICkgewoJCXJldHVybjsgLy8gbm90IG91
ciBldmVudAoJfQoJci5zdGF5SGlkZGVuID0gZmFsc2U7Cn0KCi8qKgogKiBDcmVh
dGUgYW5kIHBvcHVsYXRlIGEgPGRpdj4sIGZvciBub24tPGRhdGFsaXN0Pi1zdXBw
b3J0aW5nIGJyb3dzZXJzLgogKgogKiBAcGFyYW0gciAgICAgICBvc19SZXN1bHQg
b2JqZWN0CiAqIEBwYXJhbSByZXN1bHRzIEFycmF5IG9mIHRoZSBuZXcgcmVzdWx0
cyB0byByZXBsYWNlIGV4aXN0aW5nIG9uZXMKICovCmZ1bmN0aW9uIG9zX3NldHVw
RGl2KCByLCByZXN1bHRzICkgewoJdmFyIGMgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCggci5jb250YWluZXIgKTsKCWlmICggYyA9PSBudWxsICkgewoJCWMgPSBv
c19jcmVhdGVDb250YWluZXIoIHIgKTsKCX0KCWMuaW5uZXJIVE1MID0gb3NfY3Jl
YXRlUmVzdWx0VGFibGUoIHIsIHJlc3VsdHMgKTsKCS8vIGluaXQgY29udGFpbmVy
IHRhYmxlIHNpemVzCgl2YXIgdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCBy
LnJlc3VsdFRhYmxlICk7CglyLmNvbnRhaW5lclRvdGFsID0gdC5vZmZzZXRIZWln
aHQ7CglyLmNvbnRhaW5lclJvdyA9IHQub2Zmc2V0SGVpZ2h0IC8gci5yZXN1bHRD
b3VudDsKCW9zX2ZpdENvbnRhaW5lciggciApOwoJb3NfdHJpbVJlc3VsdFRleHQo
IHIgKTsKCW9zX3Nob3dSZXN1bHRzKCByICk7Cn0KCi8qKiBDcmVhdGUgdGhlIHJl
c3VsdCB0YWJsZSB0byBiZSBwbGFjZWQgaW4gdGhlIGNvbnRhaW5lciBkaXYgKi8K
ZnVuY3Rpb24gb3NfY3JlYXRlUmVzdWx0VGFibGUoIHIsIHJlc3VsdHMgKSB7Cgl2
YXIgYyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCByLmNvbnRhaW5lciApOwoJ
dmFyIHdpZHRoID0gYy5vZmZzZXRXaWR0aCAtIG9zX29wZXJhV2lkdGhGaXgoIGMu
b2Zmc2V0V2lkdGggKTsKCXZhciBodG1sID0gJzx0YWJsZSBjbGFzcz0ib3Mtc3Vn
Z2VzdC1yZXN1bHRzIiBpZD0iJyArIHIucmVzdWx0VGFibGUgKyAnIiBzdHlsZT0i
d2lkdGg6ICcgKyB3aWR0aCArICdweDsiPic7CglyLnJlc3VsdHMgPSBuZXcgQXJy
YXkoKTsKCXIucmVzdWx0Q291bnQgPSByZXN1bHRzLmxlbmd0aDsKCWZvciggaSA9
IDA7IGkgPCByZXN1bHRzLmxlbmd0aDsgaSsrICkgewoJCXZhciB0aXRsZSA9IG9z
X2RlY29kZVZhbHVlKCByZXN1bHRzW2ldICk7CgkJci5yZXN1bHRzW2ldID0gdGl0
bGU7CgkJaHRtbCArPSAnPHRyPjx0ZCBjbGFzcz0ib3Mtc3VnZ2VzdC1yZXN1bHQi
IGlkPSInICsgci5yZXN1bHRUYWJsZSArIGkgKyAnIj48c3BhbiBpZD0iJyArIHIu
cmVzdWx0VGV4dCArIGkgKyAnIj4nICsgdGl0bGUgKyAnPC9zcGFuPjwvdGQ+PC90
cj4nOwoJfQoJaHRtbCArPSAnPC90YWJsZT4nOwoJcmV0dXJuIGh0bWw7Cn0KCi8q
KiBTaG93IHJlc3VsdHMgZGl2ICovCmZ1bmN0aW9uIG9zX3Nob3dSZXN1bHRzKCBy
ICkgewoJaWYoIG9zX2lzX3N0b3BwZWQgKSB7CgkJcmV0dXJuOwoJfQoJaWYoIHIu
c3RheUhpZGRlbiApIHsKCQlyZXR1cm47Cgl9Cglvc19maXRDb250YWluZXIoIHIg
KTsKCXZhciBjID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIHIuY29udGFpbmVy
ICk7CglyLnNlbGVjdGVkID0gLTE7CglpZiggYyAhPSBudWxsICkgewoJCWMuc2Ny
b2xsVG9wID0gMDsKCQljLnN0eWxlLnZpc2liaWxpdHkgPSAndmlzaWJsZSc7CgkJ
ci52aXNpYmxlID0gdHJ1ZTsKCX0KfQoKZnVuY3Rpb24gb3Nfb3BlcmFXaWR0aEZp
eCggeCApIHsKCS8vIEZvciBicm93c2VycyB0aGF0IGRvbid0IHVuZGVyc3RhbmQg
b3ZlcmZsb3cteCwgZXN0aW1hdGUgc2Nyb2xsYmFyIHdpZHRoCglpZiggdHlwZW9m
IGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3dYICE9ICdzdHJpbmcnICkgewoJ
CXJldHVybiAzMDsKCX0KCXJldHVybiAwOwp9CgovKiogQnJvd2VyLWRlcGVuZGVu
dCBmdW5jdGlvbnMgdG8gZmluZCB3aW5kb3cgaW5uZXIgc2l6ZSwgYW5kIHNjcm9s
bCBzdGF0dXMgKi8KZnVuY3Rpb24gZl9jbGllbnRXaWR0aCgpIHsKCXJldHVybiBm
X2ZpbHRlclJlc3VsdHMoCgkJd2luZG93LmlubmVyV2lkdGggPyB3aW5kb3cuaW5u
ZXJXaWR0aCA6IDAsCgkJZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ID8gZG9jdW1l
bnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoIDogMCwKCQlkb2N1bWVudC5i
b2R5ID8gZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCA6IDAKCSk7Cn0KCmZ1bmN0
aW9uIGZfY2xpZW50SGVpZ2h0KCkgewoJcmV0dXJuIGZfZmlsdGVyUmVzdWx0cygK
CQl3aW5kb3cuaW5uZXJIZWlnaHQgPyB3aW5kb3cuaW5uZXJIZWlnaHQgOiAwLAoJ
CWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCA/IGRvY3VtZW50LmRvY3VtZW50RWxl
bWVudC5jbGllbnRIZWlnaHQgOiAwLAoJCWRvY3VtZW50LmJvZHkgPyBkb2N1bWVu
dC5ib2R5LmNsaWVudEhlaWdodCA6IDAKCSk7Cn0KCmZ1bmN0aW9uIGZfc2Nyb2xs
TGVmdCgpIHsKCXJldHVybiBmX2ZpbHRlclJlc3VsdHMoCgkJd2luZG93LnBhZ2VY
T2Zmc2V0ID8gd2luZG93LnBhZ2VYT2Zmc2V0IDogMCwKCQlkb2N1bWVudC5kb2N1
bWVudEVsZW1lbnQgPyBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVm
dCA6IDAsCgkJZG9jdW1lbnQuYm9keSA/IGRvY3VtZW50LmJvZHkuc2Nyb2xsTGVm
dCA6IDAKCSk7Cn0KCmZ1bmN0aW9uIGZfc2Nyb2xsVG9wKCkgewoJcmV0dXJuIGZf
ZmlsdGVyUmVzdWx0cygKCQl3aW5kb3cucGFnZVlPZmZzZXQgPyB3aW5kb3cucGFn
ZVlPZmZzZXQgOiAwLAoJCWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCA/IGRvY3Vt
ZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgOiAwLAoJCWRvY3VtZW50LmJv
ZHkgPyBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCA6IDAKCSk7Cn0KCmZ1bmN0aW9u
IGZfZmlsdGVyUmVzdWx0cyggbl93aW4sIG5fZG9jZWwsIG5fYm9keSApIHsKCXZh
ciBuX3Jlc3VsdCA9IG5fd2luID8gbl93aW4gOiAwOwoJaWYgKCBuX2RvY2VsICYm
ICggIW5fcmVzdWx0IHx8ICggbl9yZXN1bHQgPiBuX2RvY2VsICkgKSApIHsKCQlu
X3Jlc3VsdCA9IG5fZG9jZWw7Cgl9CglyZXR1cm4gbl9ib2R5ICYmICggIW5fcmVz
dWx0IHx8ICggbl9yZXN1bHQgPiBuX2JvZHkgKSApID8gbl9ib2R5IDogbl9yZXN1
bHQ7Cn0KCi8qKiBHZXQgdGhlIGhlaWdodCBhdmFpbGFibGUgZm9yIHRoZSByZXN1
bHRzIGNvbnRhaW5lciAqLwpmdW5jdGlvbiBvc19hdmFpbGFibGVIZWlnaHQoIHIg
KSB7Cgl2YXIgYWJzVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIHIuY29u
dGFpbmVyICkuc3R5bGUudG9wOwoJdmFyIHB4ID0gYWJzVG9wLmxhc3RJbmRleE9m
KCAncHgnICk7CglpZiggcHggPiAwICkgewoJCWFic1RvcCA9IGFic1RvcC5zdWJz
dHJpbmcoIDAsIHB4ICk7Cgl9CglyZXR1cm4gZl9jbGllbnRIZWlnaHQoKSAtICgg
YWJzVG9wIC0gZl9zY3JvbGxUb3AoKSApOwp9CgovKiogR2V0IGVsZW1lbnQgYWJz
b2x1dGUgcG9zaXRpb24ge2xlZnQsdG9wfSAqLwpmdW5jdGlvbiBvc19nZXRFbGVt
ZW50UG9zaXRpb24oIGVsZW1JRCApIHsKCXZhciBvZmZzZXRUcmFpbCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCBlbGVtSUQgKTsKCXZhciBvZmZzZXRMZWZ0ID0g
MDsKCXZhciBvZmZzZXRUb3AgPSAwOwoJd2hpbGUgKCBvZmZzZXRUcmFpbCApIHsK
CQlvZmZzZXRMZWZ0ICs9IG9mZnNldFRyYWlsLm9mZnNldExlZnQ7CgkJb2Zmc2V0
VG9wICs9IG9mZnNldFRyYWlsLm9mZnNldFRvcDsKCQlvZmZzZXRUcmFpbCA9IG9m
ZnNldFRyYWlsLm9mZnNldFBhcmVudDsKCX0KCWlmICggbmF2aWdhdG9yLnVzZXJB
Z2VudC5pbmRleE9mKCdNYWMnKSAhPSAtMSAmJiB0eXBlb2YgZG9jdW1lbnQuYm9k
eS5sZWZ0TWFyZ2luICE9ICd1bmRlZmluZWQnICkgewoJCW9mZnNldExlZnQgKz0g
ZG9jdW1lbnQuYm9keS5sZWZ0TWFyZ2luOwoJCW9mZnNldFRvcCArPSBkb2N1bWVu
dC5ib2R5LnRvcE1hcmdpbjsKCX0KCXJldHVybiB7IGxlZnQ6b2Zmc2V0TGVmdCwg
dG9wOm9mZnNldFRvcCB9Owp9CgovKiogQ3JlYXRlIHRoZSBjb250YWluZXIgZGl2
IHRoYXQgd2lsbCBob2xkIHRoZSBzdWdnZXN0ZWQgdGl0bGVzICovCmZ1bmN0aW9u
IG9zX2NyZWF0ZUNvbnRhaW5lciggciApIHsKCXZhciBjID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCggJ2RpdicgKTsKCXZhciBzID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoIHIuc2VhcmNoYm94ICk7Cgl2YXIgcG9zID0gb3NfZ2V0RWxlbWVudFBv
c2l0aW9uKCByLnNlYXJjaGJveCApOwoJdmFyIGxlZnQgPSBwb3MubGVmdDsKCXZh
ciB0b3AgPSBwb3MudG9wICsgcy5vZmZzZXRIZWlnaHQ7CgljLmNsYXNzTmFtZSA9
ICdvcy1zdWdnZXN0JzsKCWMuc2V0QXR0cmlidXRlKCAnaWQnLCByLmNvbnRhaW5l
ciApOwoJZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCggYyApOwoKCS8vIGR5bmFt
aWNhbGx5IGdlbmVyYXRlZCBzdHlsZSBwYXJhbXMKCS8vIElFIHdvcmthcm91bmQs
IGNhbm5vdCBleHBsaWNpdGVseSBzZXQgInN0eWxlIiBhdHRyaWJ1dGUKCWMgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCggci5jb250YWluZXIgKTsKCWMuc3R5bGUu
dG9wID0gdG9wICsgJ3B4JzsKCWMuc3R5bGUubGVmdCA9IGxlZnQgKyAncHgnOwoJ
Yy5zdHlsZS53aWR0aCA9IHMub2Zmc2V0V2lkdGggKyAncHgnOwoKCS8vIG1vdXNl
IGV2ZW50IGhhbmRsZXJzCgljLm9ubW91c2VvdmVyID0gZnVuY3Rpb24oIGV2ZW50
ICkgeyBvc19ldmVudE1vdXNlb3Zlciggci5zZWFyY2hib3gsIGV2ZW50ICk7IH07
CgljLm9ubW91c2Vtb3ZlID0gZnVuY3Rpb24oIGV2ZW50ICkgeyBvc19ldmVudE1v
dXNlbW92ZSggci5zZWFyY2hib3gsIGV2ZW50ICk7IH07CgljLm9ubW91c2Vkb3du
ID0gZnVuY3Rpb24oIGV2ZW50ICkgeyByZXR1cm4gb3NfZXZlbnRNb3VzZWRvd24o
IHIuc2VhcmNoYm94LCBldmVudCApOyB9OwoJYy5vbm1vdXNldXAgPSBmdW5jdGlv
biggZXZlbnQgKSB7IG9zX2V2ZW50TW91c2V1cCggci5zZWFyY2hib3gsIGV2ZW50
ICk7IH07CglyZXR1cm4gYzsKfQoKLyoqIGNoYW5nZSBjb250YWluZXIgaGVpZ2h0
IHRvIGZpdCB0byBzY3JlZW4gKi8KZnVuY3Rpb24gb3NfZml0Q29udGFpbmVyKCBy
ICkgewoJdmFyIGMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCggci5jb250YWlu
ZXIgKTsKCXZhciBoID0gb3NfYXZhaWxhYmxlSGVpZ2h0KCByICkgLSAyMDsKCXZh
ciBpbmMgPSByLmNvbnRhaW5lclJvdzsKCWggPSBwYXJzZUludCggaCAvIGluYyAp
ICogaW5jOwoJaWYoIGggPCAoIDIgKiBpbmMgKSAmJiByLnJlc3VsdENvdW50ID4g
MSApIHsgLy8gbWluOiB0d28gcmVzdWx0cwoJCWggPSAyICogaW5jOwoJfQoJaWYo
ICggaCAvIGluYyApID4gb3NfbWF4X2xpbmVzX3Blcl9zdWdnZXN0ICkgewoJCWgg
PSBpbmMgKiBvc19tYXhfbGluZXNfcGVyX3N1Z2dlc3Q7Cgl9CglpZiggaCA8IHIu
Y29udGFpbmVyVG90YWwgKSB7CgkJYy5zdHlsZS5oZWlnaHQgPSBoICsgJ3B4JzsK
CQlyLmNvbnRhaW5lckNvdW50ID0gcGFyc2VJbnQoIE1hdGgucm91bmQoIGggLyBp
bmMgKSApOwoJfSBlbHNlIHsKCQljLnN0eWxlLmhlaWdodCA9IHIuY29udGFpbmVy
VG90YWwgKyAncHgnOwoJCXIuY29udGFpbmVyQ291bnQgPSByLnJlc3VsdENvdW50
OwoJfQp9CgovKiogSWYgc29tZSBlbnRyaWVzIGFyZSBsb25nZXIgdGhhbiB0aGUg
Ym94LCByZXBsYWNlIHRleHQgd2l0aCAiLi4uIiAqLwpmdW5jdGlvbiBvc190cmlt
UmVzdWx0VGV4dCggciApIHsKCS8vIGZpbmQgbWF4IHdpZHRoLCBmaXJzdCBzZWUg
aWYgd2UgY291bGQgZXhwYW5kIHRoZSBjb250YWluZXIgdG8gZml0IGl0Cgl2YXIg
bWF4VyA9IDA7Cglmb3IoIHZhciBpID0gMDsgaSA8IHIucmVzdWx0Q291bnQ7IGkr
KyApIHsKCQl2YXIgZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCByLnJlc3Vs
dFRleHQgKyBpICk7CgkJaWYoIGUub2Zmc2V0V2lkdGggPiBtYXhXICkgewoJCQlt
YXhXID0gZS5vZmZzZXRXaWR0aDsKCQl9Cgl9Cgl2YXIgdyA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCByLmNvbnRhaW5lciApLm9mZnNldFdpZHRoOwoJdmFyIGZp
eCA9IDA7CglpZiggci5jb250YWluZXJDb3VudCA8IHIucmVzdWx0Q291bnQgKSB7
CgkJZml4ID0gMjA7IC8vIGdpdmUgMjBweCBmb3Igc2Nyb2xsYmFyCgl9IGVsc2Ug
ewoJCWZpeCA9IG9zX29wZXJhV2lkdGhGaXgoIHcgKTsKCX0KCWlmKCBmaXggPCA0
ICkgewoJCWZpeCA9IDQ7IC8vIGJhc2ljIHBhZGRpbmcKCX0KCW1heFcgKz0gZml4
OwoKCS8vIHJlc2l6ZSBjb250YWluZXIgdG8gZml0IG1vcmUgZGF0YSBpZiBwZXJt
aXR0ZWQKCXZhciBub3JtVyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCByLnNl
YXJjaGJveCApLm9mZnNldFdpZHRoOwoJdmFyIHByb3AgPSBtYXhXIC8gbm9ybVc7
CglpZiggcHJvcCA+IG9zX2NvbnRhaW5lcl9tYXhfd2lkdGggKSB7CgkJcHJvcCA9
IG9zX2NvbnRhaW5lcl9tYXhfd2lkdGg7Cgl9IGVsc2UgaWYoIHByb3AgPCAxICkg
ewoJCXByb3AgPSAxOwoJfQoJdmFyIG5ld1cgPSBNYXRoLnJvdW5kKCBub3JtVyAq
IHByb3AgKTsKCWlmKCB3ICE9IG5ld1cgKSB7CgkJdyA9IG5ld1c7CgkJaWYoIG9z
X2FuaW1hdGlvbl90aW1lciAhPSBudWxsICkgewoJCQljbGVhckludGVydmFsKCBv
c19hbmltYXRpb25fdGltZXIuaWQgKTsKCQl9CgkJb3NfYW5pbWF0aW9uX3RpbWVy
ID0gbmV3IG9zX0FuaW1hdGlvblRpbWVyKCByLCB3ICk7CgkJb3NfYW5pbWF0aW9u
X3RpbWVyLmlkID0gc2V0SW50ZXJ2YWwoICJvc19hbmltYXRlQ2hhbmdlV2lkdGgo
KSIsIG9zX2FuaW1hdGlvbl9kZWxheSApOwoJCXcgLT0gZml4OyAvLyB0aGlzIG11
Y2ggaXMgcmVzZXJ2ZWQKCX0KCgkvLyB0cmltIHJlc3VsdHMKCWlmKCB3IDwgMTAg
KSB7CgkJcmV0dXJuOwoJfQoJZm9yKCB2YXIgaSA9IDA7IGkgPCByLnJlc3VsdENv
dW50OyBpKysgKSB7CgkJdmFyIGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgg
ci5yZXN1bHRUZXh0ICsgaSApOwoJCXZhciByZXBsYWNlID0gMTsKCQl2YXIgbGFz
dFcgPSBlLm9mZnNldFdpZHRoICsgMTsKCQl2YXIgaXRlcmF0aW9uID0gMDsKCQl2
YXIgY2hhbmdlZFRleHQgPSBmYWxzZTsKCQl3aGlsZSggZS5vZmZzZXRXaWR0aCA+
IHcgJiYgKCBlLm9mZnNldFdpZHRoIDwgbGFzdFcgfHwgaXRlcmF0aW9uIDwgMiAp
ICkgewoJCQljaGFuZ2VkVGV4dCA9IHRydWU7CgkJCWxhc3RXID0gZS5vZmZzZXRX
aWR0aDsKCQkJdmFyIGwgPSBlLmlubmVySFRNTDsKCQkJZS5pbm5lckhUTUwgPSBs
LnN1YnN0cmluZyggMCwgbC5sZW5ndGggLSByZXBsYWNlICkgKyAnLi4uJzsKCQkJ
aXRlcmF0aW9uKys7CgkJCXJlcGxhY2UgPSA0OyAvLyBob3cgbWFueSBjaGFycyB0
byByZXBsYWNlCgkJfQoJCWlmKCBjaGFuZ2VkVGV4dCApIHsKCQkJLy8gc2hvdyBo
aW50IGZvciB0cmltbWVkIHRpdGxlcwoJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCggci5yZXN1bHRUYWJsZSArIGkgKS5zZXRBdHRyaWJ1dGUoICd0aXRsZScsIHIu
cmVzdWx0c1tpXSApOwoJCX0KCX0KfQoKLyoqIEludm9rZWQgb24gdGltZXIgdG8g
YW5pbWF0ZSBjaGFuZ2UgaW4gY29udGFpbmVyIHdpZHRoICovCmZ1bmN0aW9uIG9z
X2FuaW1hdGVDaGFuZ2VXaWR0aCgpIHsKCXZhciByID0gb3NfYW5pbWF0aW9uX3Rp
bWVyLnI7Cgl2YXIgYyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCByLmNvbnRh
aW5lciApOwoJdmFyIHcgPSBjLm9mZnNldFdpZHRoOwoJdmFyIG5vcm1XID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoIHIuc2VhcmNoYm94ICkub2Zmc2V0V2lkdGg7
Cgl2YXIgbm9ybUwgPSBvc19nZXRFbGVtZW50UG9zaXRpb24oIHIuc2VhcmNoYm94
ICkubGVmdDsKCXZhciBpbmMgPSBvc19hbmltYXRpb25fdGltZXIuaW5jOwoJdmFy
IHRhcmdldCA9IG9zX2FuaW1hdGlvbl90aW1lci50YXJnZXQ7Cgl2YXIgbncgPSB3
ICsgaW5jOwoJaWYoICggaW5jID4gMCAmJiBudyA+PSB0YXJnZXQgKSB8fCAoIGlu
YyA8PSAwICYmIG53IDw9IHRhcmdldCApICkgewoJCS8vIGZpbmlzaGVkICEKCQlj
LnN0eWxlLndpZHRoID0gdGFyZ2V0ICsgJ3B4JzsKCQljbGVhckludGVydmFsKCBv
c19hbmltYXRpb25fdGltZXIuaWQgKTsKCQlvc19hbmltYXRpb25fdGltZXIgPSBu
dWxsOwoJfSBlbHNlIHsKCQkvLyBpbi1wcm9ncmVzcwoJCWMuc3R5bGUud2lkdGgg
PSBudyArICdweCc7CgkJaWYoIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5kaXIg
PT0gJ3J0bCcgKSB7CgkJCWMuc3R5bGUubGVmdCA9ICggbm9ybUwgKyBub3JtVyAr
ICggdGFyZ2V0IC0gbncgKSAtIG9zX2FuaW1hdGlvbl90aW1lci50YXJnZXQgLSAx
ICkgKyAncHgnOwoJCX0KCX0KfQoKLyoqIENoYW5nZSB0aGUgaGlnaGxpZ2h0ZWQg
cm93IChpLmUuIHN1Z2dlc3Rpb24pLCBmcm9tIHBvc2l0aW9uIGN1ciB0byBuZXh0
ICovCmZ1bmN0aW9uIG9zX2NoYW5nZUhpZ2hsaWdodCggciwgY3VyLCBuZXh0LCB1
cGRhdGVTZWFyY2hCb3ggKSB7CglpZiAoIG5leHQgPj0gci5yZXN1bHRDb3VudCAp
IHsKCQluZXh0ID0gci5yZXN1bHRDb3VudCAtIDE7Cgl9CglpZiAoIG5leHQgPCAt
MSApIHsKCQluZXh0ID0gLTE7Cgl9CglyLnNlbGVjdGVkID0gbmV4dDsKCWlmICgg
Y3VyID09IG5leHQgKSB7CgkJcmV0dXJuOyAvLyBub3RoaW5nIHRvIGRvLgoJfQoK
CWlmKCBjdXIgPj0gMCApIHsKCQl2YXIgY3VyUm93ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoIHIucmVzdWx0VGFibGUgKyBjdXIgKTsKCQlpZiggY3VyUm93ICE9
IG51bGwgKSB7CgkJCWN1clJvdy5jbGFzc05hbWUgPSAnb3Mtc3VnZ2VzdC1yZXN1
bHQnOwoJCX0KCX0KCXZhciBuZXdUZXh0OwoJaWYoIG5leHQgPj0gMCApIHsKCQl2
YXIgbmV4dFJvdyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCByLnJlc3VsdFRh
YmxlICsgbmV4dCApOwoJCWlmKCBuZXh0Um93ICE9IG51bGwgKSB7CgkJCW5leHRS
b3cuY2xhc3NOYW1lID0gb3NfSGlnaGxpZ2h0Q2xhc3MoKTsKCQl9CgkJbmV3VGV4
dCA9IHIucmVzdWx0c1tuZXh0XTsKCX0gZWxzZSB7CgkJbmV3VGV4dCA9IHIub3Jp
Z2luYWw7Cgl9CgoJLy8gYWRqdXN0IHRoZSBzY3JvbGxiYXIgaWYgYW55CglpZigg
ci5jb250YWluZXJDb3VudCA8IHIucmVzdWx0Q291bnQgKSB7CgkJdmFyIGMgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCggci5jb250YWluZXIgKTsKCQl2YXIgdlN0
YXJ0ID0gYy5zY3JvbGxUb3AgLyByLmNvbnRhaW5lclJvdzsKCQl2YXIgdkVuZCA9
IHZTdGFydCArIHIuY29udGFpbmVyQ291bnQ7CgkJaWYoIG5leHQgPCB2U3RhcnQg
KSB7CgkJCWMuc2Nyb2xsVG9wID0gbmV4dCAqIHIuY29udGFpbmVyUm93OwoJCX0g
ZWxzZSBpZiggbmV4dCA+PSB2RW5kICkgewoJCQljLnNjcm9sbFRvcCA9ICggbmV4
dCAtIHIuY29udGFpbmVyQ291bnQgKyAxICkgKiByLmNvbnRhaW5lclJvdzsKCQl9
Cgl9CgoJLy8gdXBkYXRlIHRoZSBjb250ZW50cyBvZiB0aGUgc2VhcmNoIGJveAoJ
aWYoIHVwZGF0ZVNlYXJjaEJveCApIHsKCQlvc191cGRhdGVTZWFyY2hRdWVyeSgg
ciwgbmV3VGV4dCApOwoJfQp9CgpmdW5jdGlvbiBvc19IaWdobGlnaHRDbGFzcygp
IHsKCXZhciBtYXRjaCA9IG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL0FwcGxl
V2ViS2l0XC8oXGQrKS8pOwoJaWYgKCBtYXRjaCApIHsKCQl2YXIgd2ViS2l0VmVy
c2lvbiA9IHBhcnNlSW50KCBtYXRjaFsxXSApOwoJCWlmICggd2ViS2l0VmVyc2lv
biA8IDUyMyApIHsKCQkJLy8gQ1NTIHN5c3RlbSBoaWdobGlnaHQgY29sb3JzIGJy
b2tlbiBvbiBvbGQgU2FmYXJpCgkJCS8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02MTI5CgkJCS8vIFNhZmFyaSAzLjAuNCwgMy4xIGtu
b3duIG9rCgkJCXJldHVybiAnb3Mtc3VnZ2VzdC1yZXN1bHQtaGwtd2Via2l0JzsK
CQl9Cgl9CglyZXR1cm4gJ29zLXN1Z2dlc3QtcmVzdWx0LWhsJzsKfQoKZnVuY3Rp
b24gb3NfdXBkYXRlU2VhcmNoUXVlcnkoIHIsIG5ld1RleHQgKSB7Cglkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCggci5zZWFyY2hib3ggKS52YWx1ZSA9IG5ld1RleHQ7
CglyLnF1ZXJ5ID0gbmV3VGV4dDsKfQoKCi8qKioqKioqKioqKioqKioqKioqKgog
KiAgTW91c2UgZXZlbnRzCiAqKioqKioqKioqKioqKioqKioqKi8KCi8qKiBNb3Vz
ZSBvdmVyIHRoZSBjb250YWluZXIgKi8KZnVuY3Rpb24gb3NfZXZlbnRNb3VzZW92
ZXIoIHNyY0lkLCBlICkgewoJdmFyIHRhcmcgPSBvc19nZXRUYXJnZXQoIGUgKTsK
CXZhciByID0gb3NfbWFwW3NyY0lkXTsKCWlmKCByID09IG51bGwgfHwgIW9zX21v
dXNlX21vdmVkICkgewoJCXJldHVybjsgLy8gbm90IG91ciBldmVudAoJfQoJdmFy
IG51bSA9IG9zX2dldE51bWJlclN1ZmZpeCggdGFyZy5pZCApOwoJaWYoIG51bSA+
PSAwICkgewoJCW9zX2NoYW5nZUhpZ2hsaWdodCggciwgci5zZWxlY3RlZCwgbnVt
LCBmYWxzZSApOwoJfQp9CgovKiBHZXQgcm93IHdoZXJlIHRoZSBldmVudCBvY2N1
cmVkIChmcm9tIGl0cyBpZCkgKi8KZnVuY3Rpb24gb3NfZ2V0TnVtYmVyU3VmZml4
KCBpZCApIHsKCXZhciBudW0gPSBpZC5zdWJzdHJpbmcoIGlkLmxlbmd0aCAtIDIg
KTsKCWlmKCAhKCBudW0uY2hhckF0KCAwICkgPj0gJzAnICYmIG51bS5jaGFyQXQo
IDAgKSA8PSAnOScgKSApIHsKCQludW0gPSBudW0uc3Vic3RyaW5nKCAxICk7Cgl9
CglpZiggb3NfaXNOdW1iZXIoIG51bSApICkgewoJCXJldHVybiBwYXJzZUludCgg
bnVtICk7Cgl9IGVsc2UgewoJCXJldHVybiAtMTsKCX0KfQoKLyoqIFNhdmUgbW91
c2UgbW92ZSBhcyBsYXN0IGFjdGlvbiAqLwpmdW5jdGlvbiBvc19ldmVudE1vdXNl
bW92ZSggc3JjSWQsIGUgKSB7Cglvc19tb3VzZV9tb3ZlZCA9IHRydWU7Cn0KCi8q
KiBNb3VzZSBidXR0b24gaGVsZCBkb3duLCByZWdpc3RlciBwb3NzaWJsZSBjbGlj
ayAqLwpmdW5jdGlvbiBvc19ldmVudE1vdXNlZG93biggc3JjSWQsIGUgKSB7Cgl2
YXIgdGFyZyA9IG9zX2dldFRhcmdldCggZSApOwoJdmFyIHIgPSBvc19tYXBbc3Jj
SWRdOwoJaWYoIHIgPT0gbnVsbCApIHsKCQlyZXR1cm47IC8vIG5vdCBvdXIgZXZl
bnQKCX0KCXZhciBudW0gPSBvc19nZXROdW1iZXJTdWZmaXgoIHRhcmcuaWQgKTsK
Cglvc19tb3VzZV9wcmVzc2VkID0gdHJ1ZTsKCWlmKCBudW0gPj0gMCApIHsKCQlv
c19tb3VzZV9udW0gPSBudW07CgkJLy8gb3NfdXBkYXRlU2VhcmNoUXVlcnkoIHIs
IHIucmVzdWx0c1tudW1dICk7Cgl9CgkvLyBrZWVwIHRoZSBmb2N1cyBvbiB0aGUg
c2VhcmNoIGZpZWxkCglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCggci5zZWFyY2hi
b3ggKS5mb2N1cygpOwoKCXJldHVybiBmYWxzZTsgLy8gcHJldmVudHMgc2VsZWN0
aW9uCn0KCi8qKiBNb3VzZSBidXR0b24gcmVsZWFzZWQsIGNoZWNrIGZvciBjbGlj
ayBvbiBzb21lIHJvdyAqLwpmdW5jdGlvbiBvc19ldmVudE1vdXNldXAoIHNyY0lk
LCBlICkgewoJdmFyIHRhcmcgPSBvc19nZXRUYXJnZXQoIGUgKTsKCXZhciByID0g
b3NfbWFwW3NyY0lkXTsKCWlmKCByID09IG51bGwgKSB7CgkJcmV0dXJuOyAvLyBu
b3Qgb3VyIGV2ZW50Cgl9Cgl2YXIgbnVtID0gb3NfZ2V0TnVtYmVyU3VmZml4KCB0
YXJnLmlkICk7CgoJaWYoIG51bSA+PSAwICYmIG9zX21vdXNlX251bSA9PSBudW0g
KSB7CgkJb3NfdXBkYXRlU2VhcmNoUXVlcnkoIHIsIHIucmVzdWx0c1tudW1dICk7
CgkJb3NfaGlkZVJlc3VsdHMoIHIgKTsKCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCggci5zZWFyY2hmb3JtICkuc3VibWl0KCk7Cgl9Cglvc19tb3VzZV9wcmVzc2Vk
ID0gZmFsc2U7CgkvLyBrZWVwIHRoZSBmb2N1cyBvbiB0aGUgc2VhcmNoIGZpZWxk
Cglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCggci5zZWFyY2hib3ggKS5mb2N1cygp
Owp9CgovKiogVG9nZ2xlIHN0dWZmIHNlZW1zIHRvIGJlIGRlYWQgY29kZT8gKi8K
Ci8qKiBSZXR1cm4gdGhlIHNwYW4gZWxlbWVudCB0aGF0IGNvbnRhaW5zIHRoZSB0
b2dnbGUgbGluayAqLwpmdW5jdGlvbiBvc19jcmVhdGVUb2dnbGUoIHIsIGNsYXNz
TmFtZSApIHsKCXZhciB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggJ3NwYW4n
ICk7Cgl0LmNsYXNzTmFtZSA9IGNsYXNzTmFtZTsKCXQuc2V0QXR0cmlidXRlKCAn
aWQnLCByLnRvZ2dsZSApOwoJdmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCAnYScgKTsKCWxpbmsuc2V0QXR0cmlidXRlKCAnaHJlZicsICdqYXZhc2Ny
aXB0OnZvaWQoMCk7JyApOwoJbGluay5vbmNsaWNrID0gZnVuY3Rpb24oKSB7IG9z
X3RvZ2dsZSggci5zZWFyY2hib3gsIHIuc2VhcmNoZm9ybSApOyB9OwoJdmFyIG1z
ZyA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCB3Z01XU3VnZ2VzdE1lc3NhZ2Vz
WzBdICk7CglsaW5rLmFwcGVuZENoaWxkKCBtc2cgKTsKCXQuYXBwZW5kQ2hpbGQo
IGxpbmsgKTsKCXJldHVybiB0Owp9CgovKiogQ2FsbCB3aGVuIHVzZXIgY2xpY2tz
IG9uIHNvbWUgb2YgdGhlIHRvZ2dsZSBsaW5rcyAqLwpmdW5jdGlvbiBvc190b2dn
bGUoIGlucHV0SWQsIGZvcm1OYW1lICkgewoJciA9IG9zX21hcFtpbnB1dElkXTsK
CXZhciBtc2cgPSAnJzsKCWlmKCByID09IG51bGwgKSB7CgkJb3NfZW5hYmxlU3Vn
Z2VzdGlvbnNPbiggaW5wdXRJZCwgZm9ybU5hbWUgKTsKCQlyID0gb3NfbWFwW2lu
cHV0SWRdOwoJCW1zZyA9IHdnTVdTdWdnZXN0TWVzc2FnZXNbMF07Cgl9IGVsc2V7
CgkJb3NfZGlzYWJsZVN1Z2dlc3Rpb25zT24oIGlucHV0SWQsIGZvcm1OYW1lICk7
CgkJbXNnID0gd2dNV1N1Z2dlc3RNZXNzYWdlc1sxXTsKCX0KCS8vIGNoYW5nZSBt
ZXNzYWdlCgl2YXIgbGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCByLnRv
Z2dsZSApLmZpcnN0Q2hpbGQ7CglsaW5rLnJlcGxhY2VDaGlsZCggZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUoIG1zZyApLCBsaW5rLmZpcnN0Q2hpbGQgKTsKfQoKaG9v
a0V2ZW50KCAnbG9hZCcsIG9zX01XU3VnZ2VzdEluaXQgKTsK
------------CQ4wAorH1dcm6byte6AhmR
Content-Disposition: inline; filename=MobileRedirect.js
Content-Type: application/x-javascript; name=MobileRedirect.js
Content-Location: http://bits.wikimedia.org/w/extensions/WikimediaMobile/MobileRedirect.js?2.2
Content-Transfer-Encoding: Base64
LyoqIE1vYmlsZSBSZWRpcmVjdCBIZWxwZXIKICoKICogIFJlZGlyZWN0cyB0byBh
IHdpa2ltZWRpYS1tb2JpbGUgaW5zdGFsbGF0aW9uIGZvciB2aWV3ZXJzIG9uIGlQ
aG9uZSwgaVBvZCAKICogIFRvdWNoLCBQYWxtIFByZSwgYW5kIEFuZHJvaWQgZGV2
aWNlcy4KICoKICogIFlvdSBjYW4gdHVybiBvZmYgdGhlIHJlZGlyZWN0IGJ5IHNl
dHRpbmcgdGhlIGNvb2tpZSAic3RvcE1vYmlsZVJlZGlyZWN0PXRydWUiCiAqLwpp
ZiAoIC8oQW5kcm9pZHxpUGhvbmV8aVBvZHx3ZWJPU3xOZXRGcm9udHxPcGVyYSBN
aW5pfFNFTUMtQnJvd3NlcnxQbGF5U3RhdGlvbiBQb3J0YWJsZXxOaW50ZW5kbyBX
aWl8QmxhY2tCZXJyeSkvCgkudGVzdCggbmF2aWdhdG9yLnVzZXJBZ2VudCApICkK
ewoJKGZ1bmN0aW9uICgpIHsKCQlmdW5jdGlvbiBoYXZlU3RvcENvb2tpZSgpIHsK
CQkJcmV0dXJuIChkb2N1bWVudC5jb29raWUuaW5kZXhPZigic3RvcE1vYmlsZVJl
ZGlyZWN0PXRydWUiKSA+PSAwKTsKCQl9CgoJCWZ1bmN0aW9uIGdldE1vYmlsZVVy
bCgpIHsKCQkJdmFyIG1haW5QYWdlID0gd2dNYWluUGFnZVRpdGxlLnJlcGxhY2Uo
LyAvZywgJ18nKTsKCQkJdmFyIHVybCA9IHdnV2lraW1lZGlhTW9iaWxlVXJsICsg
Jy8nOwoJCQlpZiAod2dQYWdlTmFtZSA9PSBtYWluUGFnZSkgewoJCQkJdXJsICs9
ICc6OkhvbWUnOyAvLyBTcGVjaWFsIGNhc2UKCQkJfSBlbHNlIHsKCQkJCXVybCAr
PSBlbmNvZGVVUklDb21wb25lbnQod2dQYWdlTmFtZSkucmVwbGFjZSgnJTJGJywn
LycpLnJlcGxhY2UoJyUzQScsJzonKTsKCQkJfQoJCQl1cmwgKz0gJz93YXNSZWRp
cmVjdGVkPXRydWUnOwoJCQlyZXR1cm4gdXJsOwoJCX0KCgkJLy8gRG9uJ3QgcmVk
aXJlY3QgaWYgd2UgaGF2ZSB0aGUgc3RvcCBjb29raWUKCQlpZiAoaGF2ZVN0b3BD
b29raWUoKSkgcmV0dXJuOwoKCQkvLyBEb24ndCByZWRpcmVjdCBzcGVjaWFsIHBh
Z2VzCgkJaWYgKHdnTmFtZXNwYWNlTnVtYmVyIDwgMCkgcmV0dXJuOwoKCQkvLyBE
b24ndCByZWRpcmVjdCBVUkxzIHRoYXQgYXJlbid0IHNpbXBsZSBwYWdlIHZpZXdz
CgkJaWYgKGRvY3VtZW50LmxvY2F0aW9uLnNlYXJjaCAmJiBkb2N1bWVudC5sb2Nh
dGlvbi5zZWFyY2gubGVuZ3RoID4gMCkgewoJCQl2YXIgcGFyYW1zID0gZG9jdW1l
bnQubG9jYXRpb24uc2VhcmNoLnN1YnN0cigxKS5zcGxpdCgnJicpOwoJCQlmb3Ig
KHZhciBpID0gMDsgaSA8IHBhcmFtcy5sZW5ndGg7IGkrKykgewoJCQkJdmFyIHBh
cmFtUGFydHMgPSBwYXJhbXNbaV0uc3BsaXQoJz0nKTsKCQkJCWlmIChwYXJhbVBh
cnRzLmxlbmd0aCAmJiBwYXJhbVBhcnRzWzBdICE9ICd0aXRsZScpIHsKCQkJCQly
ZXR1cm47CgkJCQl9CgkJCX0KCQl9CgoJCWRvY3VtZW50LmxvY2F0aW9uID0gZ2V0
TW9iaWxlVXJsKCk7Cgl9KSgpOwp9Cg==
------------CQ4wAorH1dcm6byte6AhmR
Content-Disposition: inline; filename=plugins.combined.min.js
Content-Type: application/x-javascript; name=plugins.combined.min.js
Content-Location: http://bits.wikimedia.org/w/extensions/UsabilityInitiative/js/plugins.combined.min.js?283-19
Content-Transfer-Encoding: Base64
CmlmKHR5cGVvZiBtdz09J3VuZGVmaW5lZCcpe213PXt9O30KbXcudXNhYmlsaXR5
PXsnbWVzc2FnZXMnOnt9fQptdy51c2FiaWxpdHkubG9hZD1mdW5jdGlvbihkZXBz
LGNhbGxiYWNrKXt2YXIgbmVlZEpVST1mYWxzZTtmb3IodmFyIGk9MDtpPGRlcHMu
bGVuZ3RoJiYhbmVlZEpVSTtpKyspe2lmKGRlcHNbaV09PSckai51aScpe25lZWRK
VUk9dHJ1ZTt9fQppZihuZWVkSlVJJiZ0eXBlb2YgJGoudWk9PSd1bmRlZmluZWQn
KXskai5nZXRTY3JpcHQod2dTY3JpcHRQYXRoKycvZXh0ZW5zaW9ucy9Vc2FiaWxp
dHlJbml0aWF0aXZlL2pzL2pzMnN0b3BnYXAvanVpLmNvbWJpbmVkLm1pbi5qcycs
Y2FsbGJhY2spO31lbHNle2NhbGxiYWNrKCk7fX07bXcudXNhYmlsaXR5LmFkZE1l
c3NhZ2VzPWZ1bmN0aW9uKG1lc3NhZ2VzKXtmb3IodmFyIGtleSBpbiBtZXNzYWdl
cyl7dGhpcy5tZXNzYWdlc1trZXldPW1lc3NhZ2VzW2tleV07fX07bXcudXNhYmls
aXR5LmdldE1zZz1mdW5jdGlvbihrZXksYXJncyl7aWYoIShrZXkgaW4gdGhpcy5t
ZXNzYWdlcykpe3JldHVybidbJytrZXkrJ10nO30KdmFyIG1zZz10aGlzLm1lc3Nh
Z2VzW2tleV07aWYodHlwZW9mIGFyZ3M9PSdvYmplY3QnfHx0eXBlb2YgYXJncz09
J2FycmF5Jyl7Zm9yKHZhciBhcmdLZXkgaW4gYXJncyl7bXNnPW1zZy5yZXBsYWNl
KCdcJCcrKHBhcnNlSW50KGFyZ0tleSkrMSksYXJnc1thcmdLZXldKTt9fWVsc2Ug
aWYodHlwZW9mIGFyZ3M9PSdzdHJpbmcnfHx0eXBlb2YgYXJncz09J251bWJlcicp
e21zZz1tc2cucmVwbGFjZSgnJDEnLGFyZ3MpO30KcmV0dXJuIG1zZzt9O213LnVz
YWJpbGl0eS50ZXN0QnJvd3Nlcj1mdW5jdGlvbihtYXApe3ZhciBicm93c2VyPW1h
cFskaignYm9keScpLmlzKCcucnRsJyk/J3J0bCc6J2x0ciddWyRqLmJyb3dzZXIu
bmFtZV07aWYodHlwZW9mIGJyb3dzZXI9PSdib29sZWFuJyl7cmV0dXJuIGJyb3dz
ZXI7fQppZih0eXBlb2YgYnJvd3NlciE9PSdvYmplY3QnKXtyZXR1cm4gdHJ1ZTt9
CmZvcih2YXIgY29uZGl0aW9uIGluIGJyb3dzZXIpe3ZhciBvcD1icm93c2VyW2Nv
bmRpdGlvbl1bMF07dmFyIHZhbD1icm93c2VyW2NvbmRpdGlvbl1bMV07aWYodmFs
PT09ZmFsc2Upe3JldHVybiBmYWxzZTt9ZWxzZSBpZih0eXBlb2YgdmFsPT0nc3Ry
aW5nJyl7aWYoIShldmFsKCckai5icm93c2VyLnZlcnNpb24nK29wKyciJyt2YWwr
JyInKSkpe3JldHVybiBmYWxzZTt9fWVsc2UgaWYodHlwZW9mIHZhbD09J251bWJl
cicpe2lmKCEoZXZhbCgnJGouYnJvd3Nlci52ZXJzaW9uTnVtYmVyJytvcCt2YWwp
KSl7cmV0dXJuIGZhbHNlO319fQpyZXR1cm4gdHJ1ZTt9O213LnVzYWJpbGl0eS5n
ZXRNYXhUYWJJbmRleD1mdW5jdGlvbigpe3ZhciBtYXhUST0wOyRqKCdbdGFiaW5k
ZXhdJykuZWFjaChmdW5jdGlvbigpe3ZhciB0aT1wYXJzZUludCgkaih0aGlzKS5h
dHRyKCd0YWJpbmRleCcpKTtpZih0aT5tYXhUSSl7bWF4VEk9dGk7fX0pO3JldHVy
biBtYXhUSTt9OyhmdW5jdGlvbigkKXskLndoaWxlQXN5bmM9ZnVuY3Rpb24ob3B0
cykKe3ZhciBkZWxheT1NYXRoLmFicyhvcHRzLmRlbGF5KXx8MTAsYnVsaz1pc05h
TihvcHRzLmJ1bGspPzUwMDpNYXRoLmFicyhvcHRzLmJ1bGspLHRlc3Q9b3B0cy50
ZXN0fHxmdW5jdGlvbigpe3JldHVybiB0cnVlO30sbG9vcD1vcHRzLmxvb3B8fGZ1
bmN0aW9uKCl7fSxlbmQ9b3B0cy5lbmR8fGZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24o
KXt2YXIgdD1mYWxzZSxiZWdpbj1uZXcgRGF0ZSgpO3doaWxlKHQ9dGVzdCgpKQp7
bG9vcCgpO2lmKGJ1bGs9PT0wfHwobmV3IERhdGUoKS1iZWdpbik+YnVsaykKe2Jy
ZWFrO319CmlmKHQpCntzZXRUaW1lb3V0KGFyZ3VtZW50cy5jYWxsZWUsZGVsYXkp
O30KZWxzZQp7ZW5kKCk7fX0pKCk7fQokLmVhY2hBc3luYz1mdW5jdGlvbihhcnJh
eSxvcHRzKQp7dmFyIGk9MCxsPWFycmF5Lmxlbmd0aCxsb29wPW9wdHMubG9vcHx8
ZnVuY3Rpb24oKXt9OyQud2hpbGVBc3luYygkLmV4dGVuZChvcHRzLHt0ZXN0OmZ1
bmN0aW9uKCl7cmV0dXJuIGk8bDt9LGxvb3A6ZnVuY3Rpb24oKQp7dmFyIHZhbD1h
cnJheVtpXTtyZXR1cm4gbG9vcC5jYWxsKHZhbCxpKyssdmFsKTt9fSkpO30KJC5m
bi5lYWNoQXN5bmM9ZnVuY3Rpb24ob3B0cykKeyQuZWFjaEFzeW5jKHRoaXMsb3B0
cyk7cmV0dXJuIHRoaXM7fX0pKGpRdWVyeSk7KGZ1bmN0aW9uKCQpe3ZhciBjYWNo
ZT17fTt2YXIgbWF0Y2hUZXh0Q2FjaGU9e307JC5mbi5hdXRvRWxsaXBzaXM9ZnVu
Y3Rpb24ob3B0aW9ucyl7b3B0aW9ucz0kLmV4dGVuZCh7J3Bvc2l0aW9uJzonY2Vu
dGVyJywndG9vbHRpcCc6ZmFsc2UsJ3Jlc3RvcmVUZXh0JzpmYWxzZSwnaGFzU3Bh
bic6ZmFsc2UsJ21hdGNoVGV4dCc6bnVsbH0sb3B0aW9ucyk7JCh0aGlzKS5lYWNo
KGZ1bmN0aW9uKCl7dmFyICR0aGlzPSQodGhpcyk7aWYob3B0aW9ucy5yZXN0b3Jl
VGV4dCl7aWYoISR0aGlzLmRhdGEoJ2F1dG9FbGxpcHNpcy5vcmlnaW5hbFRleHQn
KSl7JHRoaXMuZGF0YSgnYXV0b0VsbGlwc2lzLm9yaWdpbmFsVGV4dCcsJHRoaXMu
dGV4dCgpKTt9ZWxzZXskdGhpcy50ZXh0KCR0aGlzLmRhdGEoJ2F1dG9FbGxpcHNp
cy5vcmlnaW5hbFRleHQnKSk7fX0KdmFyICRjb250YWluZXI9JHRoaXM7dmFyICR0
cmltbWFibGVUZXh0PW51bGw7dmFyICRwcm90ZWN0ZWRUZXh0PW51bGw7aWYob3B0
aW9ucy5oYXNTcGFuKXskdHJpbW1hYmxlVGV4dD0kdGhpcy5jaGlsZHJlbihvcHRp
b25zLnNlbGVjdG9yKTt9ZWxzZXskdHJpbW1hYmxlVGV4dD0kKCc8c3BhbiAvPicp
LmNzcygnd2hpdGVTcGFjZScsJ25vd3JhcCcpLnRleHQoJHRoaXMudGV4dCgpKTsk
dGhpcy5lbXB0eSgpLmFwcGVuZCgkdHJpbW1hYmxlVGV4dCk7fQp2YXIgdGV4dD0k
Y29udGFpbmVyLnRleHQoKTt2YXIgdHJpbW1hYmxlVGV4dD0kdHJpbW1hYmxlVGV4
dC50ZXh0KCk7dmFyIHc9JGNvbnRhaW5lci53aWR0aCgpO3ZhciBwdz0kcHJvdGVj
dGVkVGV4dD8kcHJvdGVjdGVkVGV4dC53aWR0aCgpOjA7aWYoISh0ZXh0IGluIGNh
Y2hlKSl7Y2FjaGVbdGV4dF09e307fQppZihvcHRpb25zLm1hdGNoVGV4dCYmISh0
ZXh0IGluIG1hdGNoVGV4dENhY2hlKSl7bWF0Y2hUZXh0Q2FjaGVbdGV4dF09e307
fQppZihvcHRpb25zLm1hdGNoVGV4dCYmIShvcHRpb25zLm1hdGNoVGV4dCBpbiBt
YXRjaFRleHRDYWNoZVt0ZXh0XSkpe21hdGNoVGV4dENhY2hlW3RleHRdW29wdGlv
bnMubWF0Y2hUZXh0XT17fTt9CmlmKCFvcHRpb25zLm1hdGNoVGV4dCYmdyBpbiBj
YWNoZVt0ZXh0XSl7JGNvbnRhaW5lci5odG1sKGNhY2hlW3RleHRdW3ddKTtpZihv
cHRpb25zLnRvb2x0aXApCiRjb250YWluZXIuYXR0cigndGl0bGUnLHRleHQpO3Jl
dHVybjt9CmlmKG9wdGlvbnMubWF0Y2hUZXh0JiZvcHRpb25zLm1hdGNoVGV4dCBp
biBtYXRjaFRleHRDYWNoZVt0ZXh0XSYmdyBpbiBtYXRjaFRleHRDYWNoZVt0ZXh0
XVtvcHRpb25zLm1hdGNoVGV4dF0peyRjb250YWluZXIuaHRtbChtYXRjaFRleHRD
YWNoZVt0ZXh0XVtvcHRpb25zLm1hdGNoVGV4dF1bd10pO2lmKG9wdGlvbnMudG9v
bHRpcCkKJGNvbnRhaW5lci5hdHRyKCd0aXRsZScsdGV4dCk7cmV0dXJuO30KaWYo
JHRyaW1tYWJsZVRleHQud2lkdGgoKStwdz53KXtzd2l0Y2gob3B0aW9ucy5wb3Np
dGlvbil7Y2FzZSdyaWdodCc6dmFyIGw9MCxyPXRyaW1tYWJsZVRleHQubGVuZ3Ro
O2Rve3ZhciBtPU1hdGguY2VpbCgobCtyKS8yKTskdHJpbW1hYmxlVGV4dC50ZXh0
KHRyaW1tYWJsZVRleHQuc3Vic3RyKDAsbSkrJy4uLicpO2lmKCR0cmltbWFibGVU
ZXh0LndpZHRoKCkrcHc+dyl7cj1tLTE7fWVsc2V7bD1tO319d2hpbGUobDxyKTsk
dHJpbW1hYmxlVGV4dC50ZXh0KHRyaW1tYWJsZVRleHQuc3Vic3RyKDAsbCkrJy4u
LicpO2JyZWFrO2Nhc2UnY2VudGVyJzp2YXIgaT1bTWF0aC5yb3VuZCh0cmltbWFi
bGVUZXh0Lmxlbmd0aC8yKSxNYXRoLnJvdW5kKHRyaW1tYWJsZVRleHQubGVuZ3Ro
LzIpXTt2YXIgc2lkZT0xO3doaWxlKCR0cmltbWFibGVUZXh0Lm91dGVyV2lkdGgo
KStwdz53JiZpWzBdPjApeyR0cmltbWFibGVUZXh0LnRleHQodHJpbW1hYmxlVGV4
dC5zdWJzdHIoMCxpWzBdKSsnLi4uJyt0cmltbWFibGVUZXh0LnN1YnN0cihpWzFd
KSk7aWYoc2lkZT09MCl7aVswXS0tO3NpZGU9MTt9ZWxzZXtpWzFdKys7c2lkZT0w
O319CmJyZWFrO2Nhc2UnbGVmdCc6dmFyIHI9MDt3aGlsZSgkdHJpbW1hYmxlVGV4
dC5vdXRlcldpZHRoKCkrcHc+dyYmcjx0cmltbWFibGVUZXh0Lmxlbmd0aCl7JHRy
aW1tYWJsZVRleHQudGV4dCgnLi4uJyt0cmltbWFibGVUZXh0LnN1YnN0cihyKSk7
cisrO30KYnJlYWs7fX0KaWYob3B0aW9ucy50b29sdGlwKXskY29udGFpbmVyLmF0
dHIoJ3RpdGxlJyx0ZXh0KTt9CmlmKG9wdGlvbnMubWF0Y2hUZXh0KXskY29udGFp
bmVyLmhpZ2hsaWdodFRleHQob3B0aW9ucy5tYXRjaFRleHQpO21hdGNoVGV4dENh
Y2hlW3RleHRdW29wdGlvbnMubWF0Y2hUZXh0XVt3XT0kY29udGFpbmVyLmh0bWwo
KTt9ZWxzZXtjYWNoZVt0ZXh0XVt3XT0kY29udGFpbmVyLmh0bWwoKTt9fSk7fTt9
KShqUXVlcnkpOyhmdW5jdGlvbigkKXskLmJyb3dzZXJUZXN0PWZ1bmN0aW9uKGEs
eil7dmFyIHU9J3Vua25vd24nLHg9J1gnLG09ZnVuY3Rpb24ocixoKXtmb3IodmFy
IGk9MDtpPGgubGVuZ3RoO2k9aSsxKXtyPXIucmVwbGFjZShoW2ldWzBdLGhbaV1b
MV0pO30KcmV0dXJuIHI7fSxjPWZ1bmN0aW9uKGksYSxiLGMpe3ZhciByPXtuYW1l
Om0oKGEuZXhlYyhpKXx8W3UsdV0pWzFdLGIpfTtyW3IubmFtZV09dHJ1ZTtyLnZl
cnNpb249KGMuZXhlYyhpKXx8W3gseCx4LHhdKVszXTtpZihyLm5hbWUubWF0Y2go
L3NhZmFyaS8pJiZyLnZlcnNpb24+NDAwKXtyLnZlcnNpb249JzIuMCc7fQppZihy
Lm5hbWU9PT0ncHJlc3RvJyl7ci52ZXJzaW9uPSgkLmJyb3dzZXIudmVyc2lvbj45
LjI3KT8nZnV0aGFyayc6J2xpbmVhcl9iJzt9CmlmKHIubmFtZT09PSdvcGVyYScm
JiQuYnJvd3Nlci52ZXJzaW9uPj05Ljgpe3IudmVyc2lvbj1pLm1hdGNoKC92ZXJz
aW9uXC8oWzAtOVwuXSopL2kpWzFdfHwxMDt9CnIudmVyc2lvbk51bWJlcj1wYXJz
ZUZsb2F0KHIudmVyc2lvbiwxMCl8fDA7ci52ZXJzaW9uWD0oci52ZXJzaW9uIT09
eCk/KHIudmVyc2lvbisnJykuc3Vic3RyKDAsMSk6eDtyLmNsYXNzTmFtZT1yLm5h
bWUrci52ZXJzaW9uWDtyZXR1cm4gcjt9O2E9KGEubWF0Y2goL09wZXJhfE5hdmln
YXRvcnxNaW5lZmllbGR8S0hUTUx8Q2hyb21lfFBMQVlTVEFUSU9OIDMvKT9tKGEs
W1svKEZpcmVmb3h8TVNJRXxLSFRNTCxcc2xpa2Vcc0dlY2tvfEtvbnF1ZXJvcikv
LCcnXSxbJ0Nocm9tZSBTYWZhcmknLCdDaHJvbWUnXSxbJ0tIVE1MJywnS29ucXVl
cm9yJ10sWydNaW5lZmllbGQnLCdGaXJlZm94J10sWydOYXZpZ2F0b3InLCdOZXRz
Y2FwZSddLFsnUExBWVNUQVRJT04gMycsJ1BTMyddXSk6YSkudG9Mb3dlckNhc2Uo
KTskLmJyb3dzZXI9JC5leHRlbmQoKCF6KT8kLmJyb3dzZXI6e30sYyhhLC8oY2Ft
aW5vfGNocm9tZXxmaXJlZm94fG5ldHNjYXBlfGtvbnF1ZXJvcnxseW54fG1zaWV8
b3BlcmF8c2FmYXJpfGlwb2R8aXBob25lfGJsYWNrYmVycnl8cHMzfGRvY29tbykv
LFtdLC8oY2FtaW5vfGNocm9tZXxmaXJlZm94fG5ldHNjYXBlfG5ldHNjYXBlNnxv
cGVyYXx2ZXJzaW9ufGtvbnF1ZXJvcnxseW54fG1zaWV8c2FmYXJpfHBzMykoXC98
XDs/XHN8KShbYS16MC05XC5cK10qPykoXDt8ZGV2fHJlbHxcKXxcc3wkKS8pKTsk
LmxheW91dD1jKGEsLyhnZWNrb3xrb25xdWVyb3J8bXNpZXxvcGVyYXx3ZWJraXQp
LyxbWydrb25xdWVyb3InLCdraHRtbCddLFsnbXNpZScsJ3RyaWRlbnQnXSxbJ29w
ZXJhJywncHJlc3RvJ11dLC8oYXBwbGV3ZWJraXR8cnZ8a29ucXVlcm9yfG1zaWUp
KFw6fFwvfFxzKShbYS16MC05XC5dKj8pKFw7fFwpfFxzKS8pOyQub3M9e25hbWU6
KC8od2lufG1hY3xsaW51eHxzdW5vc3xzb2xhcmlzfGlwaG9uZSkvLmV4ZWMobmF2
aWdhdG9yLnBsYXRmb3JtLnRvTG93ZXJDYXNlKCkpfHxbdV0pWzBdLnJlcGxhY2Uo
J3N1bm9zJywnc29sYXJpcycpfTtpZigheil7JCgnaHRtbCcpLmFkZENsYXNzKFsk
Lm9zLm5hbWUsJC5icm93c2VyLm5hbWUsJC5icm93c2VyLmNsYXNzTmFtZSwkLmxh
eW91dC5uYW1lLCQubGF5b3V0LmNsYXNzTmFtZV0uam9pbignICcpKTt9fTskLmJy
b3dzZXJUZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO30pKGpRdWVyeSk7KGZ1bmN0
aW9uKCQpeyQuZm4uY29sbGFwc2libGVUYWJzPWZ1bmN0aW9uKCQkb3B0aW9ucyl7
aWYoIXRoaXMubGVuZ3RoKXJldHVybiB0aGlzO3ZhciAkc2V0dGluZ3M9JC5leHRl
bmQoe30sJC5jb2xsYXBzaWJsZVRhYnMuZGVmYXVsdHMsJCRvcHRpb25zKTt0aGlz
LmVhY2goZnVuY3Rpb24oKXt2YXIgJHRoaXM9JCh0aGlzKTskLmNvbGxhcHNpYmxl
VGFicy5pbnN0YW5jZXM9KCQuY29sbGFwc2libGVUYWJzLmluc3RhbmNlcy5sZW5n
dGg9PTA/JHRoaXM6JC5jb2xsYXBzaWJsZVRhYnMuaW5zdGFuY2VzLmFkZCgkdGhp
cykpOyR0aGlzLmRhdGEoJ2NvbGxhcHNpYmxlVGFic1NldHRpbmdzJywkc2V0dGlu
Z3MpOyR0aGlzLmNoaWxkcmVuKCRzZXR0aW5ncy5jb2xsYXBzaWJsZSkuZWFjaChm
dW5jdGlvbigpeyQuY29sbGFwc2libGVUYWJzLmFkZERhdGEoJCh0aGlzKSk7fSk7
fSk7aWYoISQuY29sbGFwc2libGVUYWJzLmJvdW5kRXZlbnQpeyQod2luZG93KS5k
ZWxheWVkQmluZCgnNTAwJywncmVzaXplJyxmdW5jdGlvbigpeyQuY29sbGFwc2li
bGVUYWJzLmhhbmRsZVJlc2l6ZSgpO30pO30KJC5jb2xsYXBzaWJsZVRhYnMuaGFu
ZGxlUmVzaXplKCk7cmV0dXJuIHRoaXM7fTskLmNvbGxhcHNpYmxlVGFicz17aW5z
dGFuY2VzOltdLGJvdW5kRXZlbnQ6bnVsbCxkZWZhdWx0czp7ZXhwYW5kZWRDb250
YWluZXI6JyNwLXZpZXdzIHVsJyxjb2xsYXBzZWRDb250YWluZXI6JyNwLWNhY3Rp
b25zIHVsJyxjb2xsYXBzaWJsZTonbGkuY29sbGFwc2libGUnLHNoaWZ0aW5nOmZh
bHNlLGV4cGFuZENvbmRpdGlvbjpmdW5jdGlvbihlbGVXaWR0aCl7cmV0dXJuKCQo
JyNsZWZ0LW5hdmlnYXRpb24nKS5wb3NpdGlvbigpLmxlZnQrJCgnI2xlZnQtbmF2
aWdhdGlvbicpLndpZHRoKCkpPCgkKCcjcmlnaHQtbmF2aWdhdGlvbicpLnBvc2l0
aW9uKCkubGVmdC1lbGVXaWR0aCk7fSxjb2xsYXBzZUNvbmRpdGlvbjpmdW5jdGlv
bigpe3JldHVybigkKCcjbGVmdC1uYXZpZ2F0aW9uJykucG9zaXRpb24oKS5sZWZ0
KyQoJyNsZWZ0LW5hdmlnYXRpb24nKS53aWR0aCgpKT4kKCcjcmlnaHQtbmF2aWdh
dGlvbicpLnBvc2l0aW9uKCkubGVmdDt9fSxhZGREYXRhOmZ1bmN0aW9uKCRjb2xs
YXBzaWJsZSl7dmFyICRzZXR0aW5ncz0kY29sbGFwc2libGUucGFyZW50KCkuZGF0
YSgnY29sbGFwc2libGVUYWJzU2V0dGluZ3MnKTskY29sbGFwc2libGUuZGF0YSgn
Y29sbGFwc2libGVUYWJzU2V0dGluZ3MnLHsnZXhwYW5kZWRDb250YWluZXInOiRz
ZXR0aW5ncy5leHBhbmRlZENvbnRhaW5lciwnY29sbGFwc2VkQ29udGFpbmVyJzok
c2V0dGluZ3MuY29sbGFwc2VkQ29udGFpbmVyLCdleHBhbmRlZFdpZHRoJzokY29s
bGFwc2libGUud2lkdGgoKSwncHJldkVsZW1lbnQnOiRjb2xsYXBzaWJsZS5wcmV2
KCl9KTt9LGdldFNldHRpbmdzOmZ1bmN0aW9uKCRjb2xsYXBzaWJsZSl7dmFyICRz
ZXR0aW5ncz0kY29sbGFwc2libGUuZGF0YSgnY29sbGFwc2libGVUYWJzU2V0dGlu
Z3MnKTtpZih0eXBlb2YgJHNldHRpbmdzPT0ndW5kZWZpbmVkJyl7JC5jb2xsYXBz
aWJsZVRhYnMuYWRkRGF0YSgkY29sbGFwc2libGUpOyRzZXR0aW5ncz0kY29sbGFw
c2libGUuZGF0YSgnY29sbGFwc2libGVUYWJzU2V0dGluZ3MnKTt9CnJldHVybiAk
c2V0dGluZ3M7fSxoYW5kbGVSZXNpemU6ZnVuY3Rpb24oZSl7JC5jb2xsYXBzaWJs
ZVRhYnMuaW5zdGFuY2VzLmVhY2goZnVuY3Rpb24oKXt2YXIgJHRoaXM9JCh0aGlz
KSxkYXRhPSQuY29sbGFwc2libGVUYWJzLmdldFNldHRpbmdzKCR0aGlzKTtpZihk
YXRhLnNoaWZ0aW5nKXJldHVybjtpZigkdGhpcy5jaGlsZHJlbihkYXRhLmNvbGxh
cHNpYmxlKS5sZW5ndGg+MCYmZGF0YS5jb2xsYXBzZUNvbmRpdGlvbigpKXskdGhp
cy50cmlnZ2VyKCJiZWZvcmVUYWJDb2xsYXBzZSIpOyQuY29sbGFwc2libGVUYWJz
Lm1vdmVUb0NvbGxhcHNlZCgkdGhpcy5jaGlsZHJlbihkYXRhLmNvbGxhcHNpYmxl
Kyc6bGFzdCcpKTt9CmlmKCQoZGF0YS5jb2xsYXBzZWRDb250YWluZXIrJyAnK2Rh
dGEuY29sbGFwc2libGUpLmxlbmd0aD4wJiZkYXRhLmV4cGFuZENvbmRpdGlvbigk
LmNvbGxhcHNpYmxlVGFicy5nZXRTZXR0aW5ncygkKGRhdGEuY29sbGFwc2VkQ29u
dGFpbmVyKS5jaGlsZHJlbihkYXRhLmNvbGxhcHNpYmxlKyI6Zmlyc3QiKSkuZXhw
YW5kZWRXaWR0aCkpeyR0aGlzLnRyaWdnZXIoImJlZm9yZVRhYkV4cGFuZCIpOyQu
Y29sbGFwc2libGVUYWJzLm1vdmVUb0V4cGFuZGVkKGRhdGEuY29sbGFwc2VkQ29u
dGFpbmVyKyIgIitkYXRhLmNvbGxhcHNpYmxlKyc6Zmlyc3QnKTt9fSk7fSxtb3Zl
VG9Db2xsYXBzZWQ6ZnVuY3Rpb24oZWxlKXt2YXIgJG1vdmluZz0kKGVsZSk7aWYo
JG1vdmluZy5zaXplKCk9PTApe3JldHVybjt9CnZhciBkYXRhPSQuY29sbGFwc2li
bGVUYWJzLmdldFNldHRpbmdzKCRtb3ZpbmcpO3ZhciBkYXRhRXhwPSQuY29sbGFw
c2libGVUYWJzLmdldFNldHRpbmdzKGRhdGEuZXhwYW5kZWRDb250YWluZXIpO2Rh
dGFFeHAuc2hpZnRpbmc9dHJ1ZTskbW92aW5nLnJlbW92ZSgpLnByZXBlbmRUbyhk
YXRhLmNvbGxhcHNlZENvbnRhaW5lcikuZGF0YSgnY29sbGFwc2libGVUYWJzU2V0
dGluZ3MnLGRhdGEpO2RhdGFFeHAuc2hpZnRpbmc9ZmFsc2U7JC5jb2xsYXBzaWJs
ZVRhYnMuaGFuZGxlUmVzaXplKCk7fSxtb3ZlVG9FeHBhbmRlZDpmdW5jdGlvbihl
bGUpe3ZhciAkbW92aW5nPSQoZWxlKTtpZigkbW92aW5nLnNpemUoKT09MCl7cmV0
dXJuO30KdmFyIGRhdGE9JC5jb2xsYXBzaWJsZVRhYnMuZ2V0U2V0dGluZ3MoJG1v
dmluZyk7dmFyIGRhdGFFeHA9JC5jb2xsYXBzaWJsZVRhYnMuZ2V0U2V0dGluZ3Mo
ZGF0YS5leHBhbmRlZENvbnRhaW5lcik7ZGF0YUV4cC5zaGlmdGluZz10cnVlOyRt
b3ZpbmcucmVtb3ZlKCkuaW5zZXJ0QWZ0ZXIoZGF0YS5wcmV2RWxlbWVudCkuZGF0
YSgnY29sbGFwc2libGVUYWJzU2V0dGluZ3MnLGRhdGEpO2RhdGFFeHAuc2hpZnRp
bmc9ZmFsc2U7JC5jb2xsYXBzaWJsZVRhYnMuaGFuZGxlUmVzaXplKCk7fX07fSko
alF1ZXJ5KTsoZnVuY3Rpb24oalF1ZXJ5KXtqUXVlcnkuZWFjaChbJ2JhY2tncm91
bmRDb2xvcicsJ2JvcmRlckJvdHRvbUNvbG9yJywnYm9yZGVyTGVmdENvbG9yJywn
Ym9yZGVyUmlnaHRDb2xvcicsJ2JvcmRlclRvcENvbG9yJywnY29sb3InLCdvdXRs
aW5lQ29sb3InXSxmdW5jdGlvbihpLGF0dHIpe2pRdWVyeS5meC5zdGVwW2F0dHJd
PWZ1bmN0aW9uKGZ4KXtpZihmeC5zdGF0ZT09MCl7Znguc3RhcnQ9Z2V0Q29sb3Io
ZnguZWxlbSxhdHRyKTtmeC5lbmQ9Z2V0UkdCKGZ4LmVuZCk7fQpmeC5lbGVtLnN0
eWxlW2F0dHJdPSJyZ2IoIitbTWF0aC5tYXgoTWF0aC5taW4ocGFyc2VJbnQoKGZ4
LnBvcyooZnguZW5kWzBdLWZ4LnN0YXJ0WzBdKSkrZnguc3RhcnRbMF0pLDI1NSks
MCksTWF0aC5tYXgoTWF0aC5taW4ocGFyc2VJbnQoKGZ4LnBvcyooZnguZW5kWzFd
LWZ4LnN0YXJ0WzFdKSkrZnguc3RhcnRbMV0pLDI1NSksMCksTWF0aC5tYXgoTWF0
aC5taW4ocGFyc2VJbnQoKGZ4LnBvcyooZnguZW5kWzJdLWZ4LnN0YXJ0WzJdKSkr
Znguc3RhcnRbMl0pLDI1NSksMCldLmpvaW4oIiwiKSsiKSI7fX0pO2Z1bmN0aW9u
IGdldFJHQihjb2xvcil7dmFyIHJlc3VsdDtpZihjb2xvciYmY29sb3IuY29uc3Ry
dWN0b3I9PUFycmF5JiZjb2xvci5sZW5ndGg9PTMpCnJldHVybiBjb2xvcjtpZihy
ZXN1bHQ9L3JnYlwoXHMqKFswLTldezEsM30pXHMqLFxzKihbMC05XXsxLDN9KVxz
KixccyooWzAtOV17MSwzfSlccypcKS8uZXhlYyhjb2xvcikpCnJldHVybltwYXJz
ZUludChyZXN1bHRbMV0pLHBhcnNlSW50KHJlc3VsdFsyXSkscGFyc2VJbnQocmVz
dWx0WzNdKV07aWYocmVzdWx0PS9yZ2JcKFxzKihbMC05XSsoPzpcLlswLTldKyk/
KVwlXHMqLFxzKihbMC05XSsoPzpcLlswLTldKyk/KVwlXHMqLFxzKihbMC05XSso
PzpcLlswLTldKyk/KVwlXHMqXCkvLmV4ZWMoY29sb3IpKQpyZXR1cm5bcGFyc2VG
bG9hdChyZXN1bHRbMV0pKjIuNTUscGFyc2VGbG9hdChyZXN1bHRbMl0pKjIuNTUs
cGFyc2VGbG9hdChyZXN1bHRbM10pKjIuNTVdO2lmKHJlc3VsdD0vIyhbYS1mQS1G
MC05XXsyfSkoW2EtZkEtRjAtOV17Mn0pKFthLWZBLUYwLTldezJ9KS8uZXhlYyhj
b2xvcikpCnJldHVybltwYXJzZUludChyZXN1bHRbMV0sMTYpLHBhcnNlSW50KHJl
c3VsdFsyXSwxNikscGFyc2VJbnQocmVzdWx0WzNdLDE2KV07aWYocmVzdWx0PS8j
KFthLWZBLUYwLTldKShbYS1mQS1GMC05XSkoW2EtZkEtRjAtOV0pLy5leGVjKGNv
bG9yKSkKcmV0dXJuW3BhcnNlSW50KHJlc3VsdFsxXStyZXN1bHRbMV0sMTYpLHBh
cnNlSW50KHJlc3VsdFsyXStyZXN1bHRbMl0sMTYpLHBhcnNlSW50KHJlc3VsdFsz
XStyZXN1bHRbM10sMTYpXTtyZXR1cm4gY29sb3JzW2pRdWVyeS50cmltKGNvbG9y
KS50b0xvd2VyQ2FzZSgpXTt9CmZ1bmN0aW9uIGdldENvbG9yKGVsZW0sYXR0cil7
dmFyIGNvbG9yO2Rve2NvbG9yPWpRdWVyeS5jdXJDU1MoZWxlbSxhdHRyKTtpZihj
b2xvciE9JycmJmNvbG9yIT0ndHJhbnNwYXJlbnQnfHxqUXVlcnkubm9kZU5hbWUo
ZWxlbSwiYm9keSIpKQpicmVhazthdHRyPSJiYWNrZ3JvdW5kQ29sb3IiO313aGls
ZShlbGVtPWVsZW0ucGFyZW50Tm9kZSk7cmV0dXJuIGdldFJHQihjb2xvcik7fTt2
YXIgY29sb3JzPXthcXVhOlswLDI1NSwyNTVdLGF6dXJlOlsyNDAsMjU1LDI1NV0s
YmVpZ2U6WzI0NSwyNDUsMjIwXSxibGFjazpbMCwwLDBdLGJsdWU6WzAsMCwyNTVd
LGJyb3duOlsxNjUsNDIsNDJdLGN5YW46WzAsMjU1LDI1NV0sZGFya2JsdWU6WzAs
MCwxMzldLGRhcmtjeWFuOlswLDEzOSwxMzldLGRhcmtncmV5OlsxNjksMTY5LDE2
OV0sZGFya2dyZWVuOlswLDEwMCwwXSxkYXJra2hha2k6WzE4OSwxODMsMTA3XSxk
YXJrbWFnZW50YTpbMTM5LDAsMTM5XSxkYXJrb2xpdmVncmVlbjpbODUsMTA3LDQ3
XSxkYXJrb3JhbmdlOlsyNTUsMTQwLDBdLGRhcmtvcmNoaWQ6WzE1Myw1MCwyMDRd
LGRhcmtyZWQ6WzEzOSwwLDBdLGRhcmtzYWxtb246WzIzMywxNTAsMTIyXSxkYXJr
dmlvbGV0OlsxNDgsMCwyMTFdLGZ1Y2hzaWE6WzI1NSwwLDI1NV0sZ29sZDpbMjU1
LDIxNSwwXSxncmVlbjpbMCwxMjgsMF0saW5kaWdvOls3NSwwLDEzMF0sa2hha2k6
WzI0MCwyMzAsMTQwXSxsaWdodGJsdWU6WzE3MywyMTYsMjMwXSxsaWdodGN5YW46
WzIyNCwyNTUsMjU1XSxsaWdodGdyZWVuOlsxNDQsMjM4LDE0NF0sbGlnaHRncmV5
OlsyMTEsMjExLDIxMV0sbGlnaHRwaW5rOlsyNTUsMTgyLDE5M10sbGlnaHR5ZWxs
b3c6WzI1NSwyNTUsMjI0XSxsaW1lOlswLDI1NSwwXSxtYWdlbnRhOlsyNTUsMCwy
NTVdLG1hcm9vbjpbMTI4LDAsMF0sbmF2eTpbMCwwLDEyOF0sb2xpdmU6WzEyOCwx
MjgsMF0sb3JhbmdlOlsyNTUsMTY1LDBdLHBpbms6WzI1NSwxOTIsMjAzXSxwdXJw
bGU6WzEyOCwwLDEyOF0sdmlvbGV0OlsxMjgsMCwxMjhdLHJlZDpbMjU1LDAsMF0s
c2lsdmVyOlsxOTIsMTkyLDE5Ml0sd2hpdGU6WzI1NSwyNTUsMjU1XSx5ZWxsb3c6
WzI1NSwyNTUsMF19O30pKGpRdWVyeSk7alF1ZXJ5LmNvb2tpZT1mdW5jdGlvbihu
YW1lLHZhbHVlLG9wdGlvbnMpe2lmKHR5cGVvZiB2YWx1ZSE9J3VuZGVmaW5lZCcp
e29wdGlvbnM9b3B0aW9uc3x8e307aWYodmFsdWU9PT1udWxsKXt2YWx1ZT0nJztv
cHRpb25zLmV4cGlyZXM9LTE7fQp2YXIgZXhwaXJlcz0nJztpZihvcHRpb25zLmV4
cGlyZXMmJih0eXBlb2Ygb3B0aW9ucy5leHBpcmVzPT0nbnVtYmVyJ3x8b3B0aW9u
cy5leHBpcmVzLnRvVVRDU3RyaW5nKSl7dmFyIGRhdGU7aWYodHlwZW9mIG9wdGlv
bnMuZXhwaXJlcz09J251bWJlcicpe2RhdGU9bmV3IERhdGUoKTtkYXRlLnNldFRp
bWUoZGF0ZS5nZXRUaW1lKCkrKG9wdGlvbnMuZXhwaXJlcyoyNCo2MCo2MCoxMDAw
KSk7fWVsc2V7ZGF0ZT1vcHRpb25zLmV4cGlyZXM7fQpleHBpcmVzPSc7IGV4cGly
ZXM9JytkYXRlLnRvVVRDU3RyaW5nKCk7fQp2YXIgcGF0aD1vcHRpb25zLnBhdGg/
JzsgcGF0aD0nKyhvcHRpb25zLnBhdGgpOicnO3ZhciBkb21haW49b3B0aW9ucy5k
b21haW4/JzsgZG9tYWluPScrKG9wdGlvbnMuZG9tYWluKTonJzt2YXIgc2VjdXJl
PW9wdGlvbnMuc2VjdXJlPyc7IHNlY3VyZSc6Jyc7ZG9jdW1lbnQuY29va2llPVtu
YW1lLCc9JyxlbmNvZGVVUklDb21wb25lbnQodmFsdWUpLGV4cGlyZXMscGF0aCxk
b21haW4sc2VjdXJlXS5qb2luKCcnKTt9ZWxzZXt2YXIgY29va2llVmFsdWU9bnVs
bDtpZihkb2N1bWVudC5jb29raWUmJmRvY3VtZW50LmNvb2tpZSE9Jycpe3ZhciBj
b29raWVzPWRvY3VtZW50LmNvb2tpZS5zcGxpdCgnOycpO2Zvcih2YXIgaT0wO2k8
Y29va2llcy5sZW5ndGg7aSsrKXt2YXIgY29va2llPWpRdWVyeS50cmltKGNvb2tp
ZXNbaV0pO2lmKGNvb2tpZS5zdWJzdHJpbmcoMCxuYW1lLmxlbmd0aCsxKT09KG5h
bWUrJz0nKSl7Y29va2llVmFsdWU9ZGVjb2RlVVJJQ29tcG9uZW50KGNvb2tpZS5z
dWJzdHJpbmcobmFtZS5sZW5ndGgrMSkpO2JyZWFrO319fQpyZXR1cm4gY29va2ll
VmFsdWU7fX07KGZ1bmN0aW9uKCQpe2Z1bmN0aW9uIGVuY29kZUV2ZW50KGV2ZW50
KXtyZXR1cm4gZXZlbnQucmVwbGFjZSgvLS9nLCctLScpLnJlcGxhY2UoLyAvZywn
LScpO30KJC5mbi5leHRlbmQoe2RlbGF5ZWRCaW5kOmZ1bmN0aW9uKHRpbWVvdXQs
ZXZlbnQsZGF0YSxjYWxsYmFjayl7dmFyIGVuY0V2ZW50PWVuY29kZUV2ZW50KGV2
ZW50KTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIHRoYXQ9dGhpcztp
ZighKCQodGhpcykuZGF0YSgnX2RlbGF5ZWRCaW5kQm91bmQtJytlbmNFdmVudCsn
LScrdGltZW91dCkpKXskKHRoaXMpLmRhdGEoJ19kZWxheWVkQmluZEJvdW5kLScr
ZW5jRXZlbnQrJy0nK3RpbWVvdXQsdHJ1ZSk7JCh0aGlzKS5iaW5kKGV2ZW50LGZ1
bmN0aW9uKCl7dmFyIHRpbWVySUQ9JCh0aGlzKS5kYXRhKCdfZGVsYXllZEJpbmRU
aW1lcklELScrZW5jRXZlbnQrJy0nK3RpbWVvdXQpO2lmKHR5cGVvZiB0aW1lcklE
IT0ndW5kZWZpbmVkJykKY2xlYXJUaW1lb3V0KHRpbWVySUQpO3RpbWVySUQ9c2V0
VGltZW91dChmdW5jdGlvbigpeyQodGhhdCkudHJpZ2dlcignX2RlbGF5ZWRCaW5k
LScrZW5jRXZlbnQrJy0nK3RpbWVvdXQpO30sdGltZW91dCk7JCh0aGlzKS5kYXRh
KCdfZGVsYXllZEJpbmRUaW1lcklELScrZW5jRXZlbnQrJy0nK3RpbWVvdXQsdGlt
ZXJJRCk7fSk7fQokKHRoaXMpLmJpbmQoJ19kZWxheWVkQmluZC0nK2VuY0V2ZW50
KyctJyt0aW1lb3V0LGRhdGEsY2FsbGJhY2spO30pO30sZGVsYXllZEJpbmRDYW5j
ZWw6ZnVuY3Rpb24odGltZW91dCxldmVudCl7dmFyIGVuY0V2ZW50PWVuY29kZUV2
ZW50KGV2ZW50KTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIHRpbWVy
SUQ9JCh0aGlzKS5kYXRhKCdfZGVsYXllZEJpbmRUaW1lcklELScrZW5jRXZlbnQr
Jy0nK3RpbWVvdXQpO2lmKHR5cGVvZiB0aW1lcklEIT0ndW5kZWZpbmVkJykKY2xl
YXJUaW1lb3V0KHRpbWVySUQpO30pO30sZGVsYXllZEJpbmRVbmJpbmQ6ZnVuY3Rp
b24odGltZW91dCxldmVudCxjYWxsYmFjayl7dmFyIGVuY0V2ZW50PWVuY29kZUV2
ZW50KGV2ZW50KTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7JCh0aGlzKS51
bmJpbmQoJ19kZWxheWVkQmluZC0nK2VuY0V2ZW50KyctJyt0aW1lb3V0LGNhbGxi
YWNrKTt9KTt9fSk7fSkoalF1ZXJ5KTsoZnVuY3Rpb24oJCl7JC5oaWdobGlnaHRU
ZXh0PXtzcGxpdEFuZEhpZ2hsaWdodDpmdW5jdGlvbihub2RlLHBhdCl7dmFyIHBh
dEFycmF5PXBhdC5zcGxpdCgiICIpO2Zvcih2YXIgaT0wO2k8cGF0QXJyYXkubGVu
Z3RoO2krKyl7aWYocGF0QXJyYXlbaV0ubGVuZ3RoPT0wKWNvbnRpbnVlOyQuaGln
aGxpZ2h0VGV4dC5pbm5lckhpZ2hsaWdodChub2RlLHBhdEFycmF5W2ldKTt9CnJl
dHVybiBub2RlO30saW5uZXJIaWdobGlnaHQ6ZnVuY3Rpb24obm9kZSxwYXQpe2lm
KG5vZGUubm9kZVR5cGU9PTMpe3ZhciBwb3M9bm9kZS5kYXRhLnNlYXJjaChuZXcg
UmVnRXhwKCJcXGIiK1JlZ0V4cC5lc2NhcGUocGF0KSwiaSIpKTtpZihwb3M+PTAp
e3ZhciBzcGFubm9kZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7c3Bh
bm5vZGUuY2xhc3NOYW1lPSdoaWdobGlnaHQnO3ZhciBtaWRkbGViaXQ9bm9kZS5z
cGxpdFRleHQocG9zKTttaWRkbGViaXQuc3BsaXRUZXh0KHBhdC5sZW5ndGgpO3Zh
ciBtaWRkbGVjbG9uZT1taWRkbGViaXQuY2xvbmVOb2RlKHRydWUpO3NwYW5ub2Rl
LmFwcGVuZENoaWxkKG1pZGRsZWNsb25lKTttaWRkbGViaXQucGFyZW50Tm9kZS5y
ZXBsYWNlQ2hpbGQoc3Bhbm5vZGUsbWlkZGxlYml0KTt9fWVsc2UgaWYobm9kZS5u
b2RlVHlwZT09MSYmbm9kZS5jaGlsZE5vZGVzJiYhLyhzY3JpcHR8c3R5bGUpL2ku
dGVzdChub2RlLnRhZ05hbWUpJiYhKG5vZGUudGFnTmFtZS50b0xvd2VyQ2FzZSgp
PT0nc3BhbicmJm5vZGUuY2xhc3NOYW1lLm1hdGNoKC9cYmhpZ2hsaWdodC8pKSl7
Zm9yKHZhciBpPTA7aTxub2RlLmNoaWxkTm9kZXMubGVuZ3RoOysraSl7JC5oaWdo
bGlnaHRUZXh0LmlubmVySGlnaGxpZ2h0KG5vZGUuY2hpbGROb2Rlc1tpXSxwYXQp
O319fX07JC5mbi5oaWdobGlnaHRUZXh0PWZ1bmN0aW9uKG1hdGNoU3RyaW5nKXty
ZXR1cm4gJCh0aGlzKS5lYWNoKGZ1bmN0aW9uKCl7dmFyICR0aGlzPSQodGhpcyk7
JHRoaXMuZGF0YSgnaGlnaGxpZ2h0VGV4dCcse29yaWdpbmFsVGV4dDokdGhpcy50
ZXh0KCl9KTskLmhpZ2hsaWdodFRleHQuc3BsaXRBbmRIaWdobGlnaHQodGhpcyxt
YXRjaFN0cmluZyk7fSk7fTt9KShqUXVlcnkpOyhmdW5jdGlvbigkKXskLnN1Z2dl
c3Rpb25zPXtjYW5jZWw6ZnVuY3Rpb24oY29udGV4dCl7aWYoY29udGV4dC5kYXRh
LnRpbWVySUQhPW51bGwpe2NsZWFyVGltZW91dChjb250ZXh0LmRhdGEudGltZXJJ
RCk7fQppZih0eXBlb2YgY29udGV4dC5jb25maWcuY2FuY2VsPT0nZnVuY3Rpb24n
KXtjb250ZXh0LmNvbmZpZy5jYW5jZWwuY2FsbChjb250ZXh0LmRhdGEuJHRleHRi
b3gpO319LHJlc3RvcmU6ZnVuY3Rpb24oY29udGV4dCl7Y29udGV4dC5kYXRhLiR0
ZXh0Ym94LnZhbChjb250ZXh0LmRhdGEucHJldlRleHQpO30sdXBkYXRlOmZ1bmN0
aW9uKGNvbnRleHQsZGVsYXllZCl7ZnVuY3Rpb24gbWF5YmVGZXRjaCgpe2lmKGNv
bnRleHQuZGF0YS4kdGV4dGJveC52YWwoKSE9PWNvbnRleHQuZGF0YS5wcmV2VGV4
dCl7Y29udGV4dC5kYXRhLnByZXZUZXh0PWNvbnRleHQuZGF0YS4kdGV4dGJveC52
YWwoKTtpZih0eXBlb2YgY29udGV4dC5jb25maWcuZmV0Y2g9PSdmdW5jdGlvbicp
e2NvbnRleHQuY29uZmlnLmZldGNoLmNhbGwoY29udGV4dC5kYXRhLiR0ZXh0Ym94
LGNvbnRleHQuZGF0YS4kdGV4dGJveC52YWwoKSk7fX19CmlmKGNvbnRleHQuZGF0
YS50aW1lcklEIT1udWxsKXtjbGVhclRpbWVvdXQoY29udGV4dC5kYXRhLnRpbWVy
SUQpO30KaWYoZGVsYXllZCl7Y29udGV4dC5kYXRhLnRpbWVySUQ9c2V0VGltZW91
dChtYXliZUZldGNoLGNvbnRleHQuY29uZmlnLmRlbGF5KTt9ZWxzZXttYXliZUZl
dGNoKCk7fQokLnN1Z2dlc3Rpb25zLnNwZWNpYWwoY29udGV4dCk7fSxzcGVjaWFs
OmZ1bmN0aW9uKGNvbnRleHQpe2lmKHR5cGVvZiBjb250ZXh0LmNvbmZpZy5zcGVj
aWFsLnJlbmRlcj09J2Z1bmN0aW9uJyl7c2V0VGltZW91dChmdW5jdGlvbigpeyRz
cGVjaWFsPWNvbnRleHQuZGF0YS4kY29udGFpbmVyLmZpbmQoJy5zdWdnZXN0aW9u
cy1zcGVjaWFsJyk7Y29udGV4dC5jb25maWcuc3BlY2lhbC5yZW5kZXIuY2FsbCgk
c3BlY2lhbCxjb250ZXh0LmRhdGEuJHRleHRib3gudmFsKCkpO30sMSk7fX0sY29u
ZmlndXJlOmZ1bmN0aW9uKGNvbnRleHQscHJvcGVydHksdmFsdWUpe3N3aXRjaChw
cm9wZXJ0eSl7Y2FzZSdmZXRjaCc6Y2FzZSdjYW5jZWwnOmNhc2Unc3BlY2lhbCc6
Y2FzZSdyZXN1bHQnOmNhc2UnJHJlZ2lvbic6Y29udGV4dC5jb25maWdbcHJvcGVy
dHldPXZhbHVlO2JyZWFrO2Nhc2Unc3VnZ2VzdGlvbnMnOmNvbnRleHQuY29uZmln
W3Byb3BlcnR5XT12YWx1ZTtpZih0eXBlb2YgY29udGV4dC5kYXRhIT09J3VuZGVm
aW5lZCcpe2lmKGNvbnRleHQuZGF0YS4kdGV4dGJveC52YWwoKS5sZW5ndGg9PTAp
e2NvbnRleHQuZGF0YS4kY29udGFpbmVyLmhpZGUoKTt9ZWxzZXtjb250ZXh0LmRh
dGEuJGNvbnRhaW5lci5zaG93KCk7dmFyIG5ld0NTUz17J3RvcCc6Y29udGV4dC5j
b25maWcuJHJlZ2lvbi5vZmZzZXQoKS50b3ArY29udGV4dC5jb25maWcuJHJlZ2lv
bi5vdXRlckhlaWdodCgpLCdib3R0b20nOidhdXRvJywnd2lkdGgnOmNvbnRleHQu
Y29uZmlnLiRyZWdpb24ub3V0ZXJXaWR0aCgpLCdoZWlnaHQnOidhdXRvJ30KaWYo
Y29udGV4dC5jb25maWcucG9zaXRpb25Gcm9tTGVmdCl7bmV3Q1NTWydsZWZ0J109
Y29udGV4dC5jb25maWcuJHJlZ2lvbi5vZmZzZXQoKS5sZWZ0O25ld0NTU1sncmln
aHQnXT0nYXV0byc7fWVsc2V7bmV3Q1NTWydsZWZ0J109J2F1dG8nO25ld0NTU1sn
cmlnaHQnXT0kKCdib2R5Jykud2lkdGgoKS0oY29udGV4dC5jb25maWcuJHJlZ2lv
bi5vZmZzZXQoKS5sZWZ0K2NvbnRleHQuY29uZmlnLiRyZWdpb24ub3V0ZXJXaWR0
aCgpKTt9CmNvbnRleHQuZGF0YS4kY29udGFpbmVyLmNzcyhuZXdDU1MpO3ZhciAk
cmVzdWx0cz1jb250ZXh0LmRhdGEuJGNvbnRhaW5lci5jaGlsZHJlbignLnN1Z2dl
c3Rpb25zLXJlc3VsdHMnKTskcmVzdWx0cy5lbXB0eSgpO3ZhciBleHBXaWR0aD0t
MTt2YXIgJGF1dG9FbGxpcHNlTWU9JChbXSk7dmFyIG1hdGNoZWRUZXh0PW51bGw7
Zm9yKHZhciBpPTA7aTxjb250ZXh0LmNvbmZpZy5zdWdnZXN0aW9ucy5sZW5ndGg7
aSsrKXt2YXIgdGV4dD1jb250ZXh0LmNvbmZpZy5zdWdnZXN0aW9uc1tpXTt2YXIg
JHJlc3VsdD0kKCc8ZGl2IC8+JykuYWRkQ2xhc3MoJ3N1Z2dlc3Rpb25zLXJlc3Vs
dCcpLmF0dHIoJ3JlbCcsaSkuZGF0YSgndGV4dCcsY29udGV4dC5jb25maWcuc3Vn
Z2VzdGlvbnNbaV0pLm1vdXNlbW92ZShmdW5jdGlvbihlKXtjb250ZXh0LmRhdGEu
c2VsZWN0ZWRXaXRoTW91c2U9dHJ1ZTskLnN1Z2dlc3Rpb25zLmhpZ2hsaWdodChj
b250ZXh0LCQodGhpcykuY2xvc2VzdCgnLnN1Z2dlc3Rpb25zLXJlc3VsdHMgZGl2
JyksZmFsc2UpO30pLmFwcGVuZFRvKCRyZXN1bHRzKTtpZih0eXBlb2YgY29udGV4
dC5jb25maWcucmVzdWx0LnJlbmRlcj09J2Z1bmN0aW9uJyl7Y29udGV4dC5jb25m
aWcucmVzdWx0LnJlbmRlci5jYWxsKCRyZXN1bHQsY29udGV4dC5jb25maWcuc3Vn
Z2VzdGlvbnNbaV0pO31lbHNle2lmKGNvbnRleHQuY29uZmlnLmhpZ2hsaWdodElu
cHV0KXttYXRjaGVkVGV4dD1jb250ZXh0LmRhdGEucHJldlRleHQ7fQokcmVzdWx0
LmFwcGVuZCgkKCc8c3BhbiAvPicpLmNzcygnd2hpdGVTcGFjZScsJ25vd3JhcCcp
LnRleHQodGV4dCkpO3ZhciAkc3Bhbj0kcmVzdWx0LmNoaWxkcmVuKCdzcGFuJyk7
aWYoJHNwYW4ub3V0ZXJXaWR0aCgpPiRyZXN1bHQud2lkdGgoKSYmJHNwYW4ub3V0
ZXJXaWR0aCgpPmV4cFdpZHRoKXtleHBXaWR0aD0kc3Bhbi5vdXRlcldpZHRoKCkr
KGNvbnRleHQuZGF0YS4kY29udGFpbmVyLndpZHRoKCktJHNwYW4ucGFyZW50KCku
d2lkdGgoKSk7fQokYXV0b0VsbGlwc2VNZT0kYXV0b0VsbGlwc2VNZS5hZGQoJHJl
c3VsdCk7fX0KaWYoZXhwV2lkdGg+Y29udGV4dC5kYXRhLiRjb250YWluZXIud2lk
dGgoKSl7dmFyIG1heFdpZHRoPWNvbnRleHQuY29uZmlnLm1heEV4cGFuZEZhY3Rv
cipjb250ZXh0LmRhdGEuJHRleHRib3gud2lkdGgoKTtjb250ZXh0LmRhdGEuJGNv
bnRhaW5lci53aWR0aChNYXRoLm1pbihleHBXaWR0aCxtYXhXaWR0aCkpO30KJGF1
dG9FbGxpcHNlTWUuYXV0b0VsbGlwc2lzKHtoYXNTcGFuOnRydWUsdG9vbHRpcDp0
cnVlLG1hdGNoVGV4dDptYXRjaGVkVGV4dH0pO319CmJyZWFrO2Nhc2UnbWF4Um93
cyc6Y29udGV4dC5jb25maWdbcHJvcGVydHldPU1hdGgubWF4KDEsTWF0aC5taW4o
MTAwLHZhbHVlKSk7YnJlYWs7Y2FzZSdkZWxheSc6Y29udGV4dC5jb25maWdbcHJv
cGVydHldPU1hdGgubWF4KDAsTWF0aC5taW4oMTIwMCx2YWx1ZSkpO2JyZWFrO2Nh
c2UnbWF4RXhwYW5kRmFjdG9yJzpjb250ZXh0LmNvbmZpZ1twcm9wZXJ0eV09TWF0
aC5tYXgoMSx2YWx1ZSk7YnJlYWs7Y2FzZSdzdWJtaXRPbkNsaWNrJzpjYXNlJ3Bv
c2l0aW9uRnJvbUxlZnQnOmNhc2UnaGlnaGxpZ2h0SW5wdXQnOmNvbnRleHQuY29u
ZmlnW3Byb3BlcnR5XT12YWx1ZT90cnVlOmZhbHNlO2JyZWFrO319LGhpZ2hsaWdo
dDpmdW5jdGlvbihjb250ZXh0LHJlc3VsdCx1cGRhdGVUZXh0Ym94KXt2YXIgc2Vs
ZWN0ZWQ9Y29udGV4dC5kYXRhLiRjb250YWluZXIuZmluZCgnLnN1Z2dlc3Rpb25z
LXJlc3VsdC1jdXJyZW50Jyk7aWYoIXJlc3VsdC5nZXR8fHNlbGVjdGVkLmdldCgw
KSE9cmVzdWx0LmdldCgwKSl7aWYocmVzdWx0PT0ncHJldicpe2lmKHNlbGVjdGVk
LmlzKCcuc3VnZ2VzdGlvbnMtc3BlY2lhbCcpKXtyZXN1bHQ9Y29udGV4dC5kYXRh
LiRjb250YWluZXIuZmluZCgnLnN1Z2dlc3Rpb25zLXJlc3VsdDpsYXN0Jyl9ZWxz
ZXtyZXN1bHQ9c2VsZWN0ZWQucHJldigpO2lmKHNlbGVjdGVkLmxlbmd0aD09MCl7
aWYoY29udGV4dC5kYXRhLiRjb250YWluZXIuZmluZCgnLnN1Z2dlc3Rpb25zLXNw
ZWNpYWwnKS5odG1sKCkhPSIiKXtyZXN1bHQ9Y29udGV4dC5kYXRhLiRjb250YWlu
ZXIuZmluZCgnLnN1Z2dlc3Rpb25zLXNwZWNpYWwnKTt9ZWxzZXtyZXN1bHQ9Y29u
dGV4dC5kYXRhLiRjb250YWluZXIuZmluZCgnLnN1Z2dlc3Rpb25zLXJlc3VsdHMg
ZGl2Omxhc3QnKTt9fX19ZWxzZSBpZihyZXN1bHQ9PSduZXh0Jyl7aWYoc2VsZWN0
ZWQubGVuZ3RoPT0wKXtyZXN1bHQ9Y29udGV4dC5kYXRhLiRjb250YWluZXIuZmlu
ZCgnLnN1Z2dlc3Rpb25zLXJlc3VsdHMgZGl2OmZpcnN0Jyk7aWYocmVzdWx0Lmxl
bmd0aD09MCYmY29udGV4dC5kYXRhLiRjb250YWluZXIuZmluZCgnLnN1Z2dlc3Rp
b25zLXNwZWNpYWwnKS5odG1sKCkhPSIiKXtyZXN1bHQ9Y29udGV4dC5kYXRhLiRj
b250YWluZXIuZmluZCgnLnN1Z2dlc3Rpb25zLXNwZWNpYWwnKTt9fWVsc2V7cmVz
dWx0PXNlbGVjdGVkLm5leHQoKTtpZihzZWxlY3RlZC5pcygnLnN1Z2dlc3Rpb25z
LXNwZWNpYWwnKSl7cmVzdWx0PSQoW10pO31lbHNlIGlmKHJlc3VsdC5sZW5ndGg9
PTAmJmNvbnRleHQuZGF0YS4kY29udGFpbmVyLmZpbmQoJy5zdWdnZXN0aW9ucy1z
cGVjaWFsJykuaHRtbCgpIT0iIil7cmVzdWx0PWNvbnRleHQuZGF0YS4kY29udGFp
bmVyLmZpbmQoJy5zdWdnZXN0aW9ucy1zcGVjaWFsJyk7fX19CnNlbGVjdGVkLnJl
bW92ZUNsYXNzKCdzdWdnZXN0aW9ucy1yZXN1bHQtY3VycmVudCcpO3Jlc3VsdC5h
ZGRDbGFzcygnc3VnZ2VzdGlvbnMtcmVzdWx0LWN1cnJlbnQnKTt9CmlmKHVwZGF0
ZVRleHRib3gpe2lmKHJlc3VsdC5sZW5ndGg9PTB8fHJlc3VsdC5pcygnLnN1Z2dl
c3Rpb25zLXNwZWNpYWwnKSl7JC5zdWdnZXN0aW9ucy5yZXN0b3JlKGNvbnRleHQp
O31lbHNle2NvbnRleHQuZGF0YS4kdGV4dGJveC52YWwocmVzdWx0LmRhdGEoJ3Rl
eHQnKSk7Y29udGV4dC5kYXRhLiR0ZXh0Ym94LmNoYW5nZSgpO30KY29udGV4dC5k
YXRhLiR0ZXh0Ym94LnRyaWdnZXIoJ2NoYW5nZScpO319LGtleXByZXNzOmZ1bmN0
aW9uKGUsY29udGV4dCxrZXkpe3ZhciB3YXNWaXNpYmxlPWNvbnRleHQuZGF0YS4k
Y29udGFpbmVyLmlzKCc6dmlzaWJsZScpO3ZhciBwcmV2ZW50RGVmYXVsdD1mYWxz
ZTtzd2l0Y2goa2V5KXtjYXNlIDQwOmlmKHdhc1Zpc2libGUpeyQuc3VnZ2VzdGlv
bnMuaGlnaGxpZ2h0KGNvbnRleHQsJ25leHQnLHRydWUpO2NvbnRleHQuZGF0YS5z
ZWxlY3RlZFdpdGhNb3VzZT1mYWxzZTt9ZWxzZXskLnN1Z2dlc3Rpb25zLnVwZGF0
ZShjb250ZXh0LGZhbHNlKTt9CnByZXZlbnREZWZhdWx0PXRydWU7YnJlYWs7Y2Fz
ZSAzODppZih3YXNWaXNpYmxlKXskLnN1Z2dlc3Rpb25zLmhpZ2hsaWdodChjb250
ZXh0LCdwcmV2Jyx0cnVlKTtjb250ZXh0LmRhdGEuc2VsZWN0ZWRXaXRoTW91c2U9
ZmFsc2U7fQpwcmV2ZW50RGVmYXVsdD13YXNWaXNpYmxlO2JyZWFrO2Nhc2UgMjc6
Y29udGV4dC5kYXRhLiRjb250YWluZXIuaGlkZSgpOyQuc3VnZ2VzdGlvbnMucmVz
dG9yZShjb250ZXh0KTskLnN1Z2dlc3Rpb25zLmNhbmNlbChjb250ZXh0KTtjb250
ZXh0LmRhdGEuJHRleHRib3gudHJpZ2dlcignY2hhbmdlJyk7cHJldmVudERlZmF1
bHQ9d2FzVmlzaWJsZTticmVhaztjYXNlIDEzOmNvbnRleHQuZGF0YS4kY29udGFp
bmVyLmhpZGUoKTtwcmV2ZW50RGVmYXVsdD13YXNWaXNpYmxlO3NlbGVjdGVkPWNv
bnRleHQuZGF0YS4kY29udGFpbmVyLmZpbmQoJy5zdWdnZXN0aW9ucy1yZXN1bHQt
Y3VycmVudCcpO2lmKHNlbGVjdGVkLnNpemUoKT09MHx8Y29udGV4dC5kYXRhLnNl
bGVjdGVkV2l0aE1vdXNlKXskLnN1Z2dlc3Rpb25zLmNhbmNlbChjb250ZXh0KTtj
b250ZXh0LmNvbmZpZy4kcmVnaW9uLmNsb3Nlc3QoJ2Zvcm0nKS5zdWJtaXQoKTt9
ZWxzZSBpZihzZWxlY3RlZC5pcygnLnN1Z2dlc3Rpb25zLXNwZWNpYWwnKSl7aWYo
dHlwZW9mIGNvbnRleHQuY29uZmlnLnNwZWNpYWwuc2VsZWN0PT0nZnVuY3Rpb24n
KXtjb250ZXh0LmNvbmZpZy5zcGVjaWFsLnNlbGVjdC5jYWxsKHNlbGVjdGVkLGNv
bnRleHQuZGF0YS4kdGV4dGJveCk7fX1lbHNle2lmKHR5cGVvZiBjb250ZXh0LmNv
bmZpZy5yZXN1bHQuc2VsZWN0PT0nZnVuY3Rpb24nKXskLnN1Z2dlc3Rpb25zLmhp
Z2hsaWdodChjb250ZXh0LHNlbGVjdGVkLHRydWUpO2NvbnRleHQuY29uZmlnLnJl
c3VsdC5zZWxlY3QuY2FsbChzZWxlY3RlZCxjb250ZXh0LmRhdGEuJHRleHRib3gp
O31lbHNleyQuc3VnZ2VzdGlvbnMuaGlnaGxpZ2h0KGNvbnRleHQsc2VsZWN0ZWQs
dHJ1ZSk7fX0KYnJlYWs7ZGVmYXVsdDokLnN1Z2dlc3Rpb25zLnVwZGF0ZShjb250
ZXh0LHRydWUpO2JyZWFrO30KaWYocHJldmVudERlZmF1bHQpe2UucHJldmVudERl
ZmF1bHQoKTtlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO319fTskLmZuLnN1
Z2dlc3Rpb25zPWZ1bmN0aW9uKCl7dmFyIHJldHVyblZhbHVlPW51bGw7dmFyIGFy
Z3M9YXJndW1lbnRzOyQodGhpcykuZWFjaChmdW5jdGlvbigpe3ZhciBjb250ZXh0
PSQodGhpcykuZGF0YSgnc3VnZ2VzdGlvbnMtY29udGV4dCcpO2lmKHR5cGVvZiBj
b250ZXh0PT0ndW5kZWZpbmVkJ3x8Y29udGV4dD09bnVsbCl7Y29udGV4dD17Y29u
ZmlnOnsnZmV0Y2gnOmZ1bmN0aW9uKCl7fSwnY2FuY2VsJzpmdW5jdGlvbigpe30s
J3NwZWNpYWwnOnt9LCdyZXN1bHQnOnt9LCckcmVnaW9uJzokKHRoaXMpLCdzdWdn
ZXN0aW9ucyc6W10sJ21heFJvd3MnOjcsJ2RlbGF5JzoxMjAsJ3N1Ym1pdE9uQ2xp
Y2snOmZhbHNlLCdtYXhFeHBhbmRGYWN0b3InOjMsJ3Bvc2l0aW9uRnJvbUxlZnQn
OnRydWUsJ2hpZ2hsaWdodElucHV0JzpmYWxzZX19O30KaWYoYXJncy5sZW5ndGg+
MCl7aWYodHlwZW9mIGFyZ3NbMF09PSdvYmplY3QnKXtmb3IodmFyIGtleSBpbiBh
cmdzWzBdKXskLnN1Z2dlc3Rpb25zLmNvbmZpZ3VyZShjb250ZXh0LGtleSxhcmdz
WzBdW2tleV0pO319ZWxzZSBpZih0eXBlb2YgYXJnc1swXT09J3N0cmluZycpe2lm
KGFyZ3MubGVuZ3RoPjEpeyQuc3VnZ2VzdGlvbnMuY29uZmlndXJlKGNvbnRleHQs
YXJnc1swXSxhcmdzWzFdKTt9ZWxzZSBpZihyZXR1cm5WYWx1ZT09bnVsbCl7cmV0
dXJuVmFsdWU9KGFyZ3NbMF1pbiBjb250ZXh0LmNvbmZpZz91bmRlZmluZWQ6Y29u
dGV4dC5jb25maWdbYXJnc1swXV0pO319fQppZih0eXBlb2YgY29udGV4dC5kYXRh
PT0ndW5kZWZpbmVkJyl7Y29udGV4dC5kYXRhPXsndGltZXJJRCc6bnVsbCwncHJl
dlRleHQnOm51bGwsJ3Zpc2libGVSZXN1bHRzJzowLCdtb3VzZURvd25Pbic6JChb
XSksJyR0ZXh0Ym94JzokKHRoaXMpLCdzZWxlY3RlZFdpdGhNb3VzZSc6ZmFsc2V9
O3ZhciBuZXdDU1M9eyd0b3AnOk1hdGgucm91bmQoY29udGV4dC5kYXRhLiR0ZXh0
Ym94Lm9mZnNldCgpLnRvcCtjb250ZXh0LmRhdGEuJHRleHRib3gub3V0ZXJIZWln
aHQoKSksJ3dpZHRoJzpjb250ZXh0LmRhdGEuJHRleHRib3gub3V0ZXJXaWR0aCgp
LCdkaXNwbGF5Jzonbm9uZSd9CmlmKGNvbnRleHQuY29uZmlnLnBvc2l0aW9uRnJv
bUxlZnQpe25ld0NTU1snbGVmdCddPWNvbnRleHQuY29uZmlnLiRyZWdpb24ub2Zm
c2V0KCkubGVmdDtuZXdDU1NbJ3JpZ2h0J109J2F1dG8nO31lbHNle25ld0NTU1sn
bGVmdCddPSdhdXRvJztuZXdDU1NbJ3JpZ2h0J109JCgnYm9keScpLndpZHRoKCkt
KGNvbnRleHQuY29uZmlnLiRyZWdpb24ub2Zmc2V0KCkubGVmdCtjb250ZXh0LmNv
bmZpZy4kcmVnaW9uLm91dGVyV2lkdGgoKSk7fQpjb250ZXh0LmRhdGEuJGNvbnRh
aW5lcj0kKCc8ZGl2IC8+JykuY3NzKG5ld0NTUykuYWRkQ2xhc3MoJ3N1Z2dlc3Rp
b25zJykuYXBwZW5kKCQoJzxkaXYgLz4nKS5hZGRDbGFzcygnc3VnZ2VzdGlvbnMt
cmVzdWx0cycpLm1vdXNlZG93bihmdW5jdGlvbihlKXtjb250ZXh0LmRhdGEubW91
c2VEb3duT249JChlLnRhcmdldCkuY2xvc2VzdCgnLnN1Z2dlc3Rpb25zLXJlc3Vs
dHMgZGl2Jyk7fSkubW91c2V1cChmdW5jdGlvbihlKXt2YXIgJHJlc3VsdD0kKGUu
dGFyZ2V0KS5jbG9zZXN0KCcuc3VnZ2VzdGlvbnMtcmVzdWx0cyBkaXYnKTt2YXIg
JG90aGVyPWNvbnRleHQuZGF0YS5tb3VzZURvd25Pbjtjb250ZXh0LmRhdGEubW91
c2VEb3duT249JChbXSk7aWYoJHJlc3VsdC5nZXQoMCkhPSRvdGhlci5nZXQoMCkp
e3JldHVybjt9CiQuc3VnZ2VzdGlvbnMuaGlnaGxpZ2h0KGNvbnRleHQsJHJlc3Vs
dCx0cnVlKTtjb250ZXh0LmRhdGEuJGNvbnRhaW5lci5oaWRlKCk7aWYodHlwZW9m
IGNvbnRleHQuY29uZmlnLnJlc3VsdC5zZWxlY3Q9PSdmdW5jdGlvbicpe2NvbnRl
eHQuY29uZmlnLnJlc3VsdC5zZWxlY3QuY2FsbCgkcmVzdWx0LGNvbnRleHQuZGF0
YS4kdGV4dGJveCk7fQpjb250ZXh0LmRhdGEuJHRleHRib3guZm9jdXMoKTt9KSku
YXBwZW5kKCQoJzxkaXYgLz4nKS5hZGRDbGFzcygnc3VnZ2VzdGlvbnMtc3BlY2lh
bCcpLm1vdXNlZG93bihmdW5jdGlvbihlKXtjb250ZXh0LmRhdGEubW91c2VEb3du
T249JChlLnRhcmdldCkuY2xvc2VzdCgnLnN1Z2dlc3Rpb25zLXNwZWNpYWwnKTt9
KS5tb3VzZXVwKGZ1bmN0aW9uKGUpe3ZhciAkc3BlY2lhbD0kKGUudGFyZ2V0KS5j
bG9zZXN0KCcuc3VnZ2VzdGlvbnMtc3BlY2lhbCcpO3ZhciAkb3RoZXI9Y29udGV4
dC5kYXRhLm1vdXNlRG93bk9uO2NvbnRleHQuZGF0YS5tb3VzZURvd25Pbj0kKFtd
KTtpZigkc3BlY2lhbC5nZXQoMCkhPSRvdGhlci5nZXQoMCkpe3JldHVybjt9CmNv
bnRleHQuZGF0YS4kY29udGFpbmVyLmhpZGUoKTtpZih0eXBlb2YgY29udGV4dC5j
b25maWcuc3BlY2lhbC5zZWxlY3Q9PSdmdW5jdGlvbicpe2NvbnRleHQuY29uZmln
LnNwZWNpYWwuc2VsZWN0LmNhbGwoJHNwZWNpYWwsY29udGV4dC5kYXRhLiR0ZXh0
Ym94KTt9CmNvbnRleHQuZGF0YS4kdGV4dGJveC5mb2N1cygpO30pLm1vdXNlbW92
ZShmdW5jdGlvbihlKXtjb250ZXh0LmRhdGEuc2VsZWN0ZWRXaXRoTW91c2U9dHJ1
ZTskLnN1Z2dlc3Rpb25zLmhpZ2hsaWdodChjb250ZXh0LCQoZS50YXJnZXQpLmNs
b3Nlc3QoJy5zdWdnZXN0aW9ucy1zcGVjaWFsJyksZmFsc2UpO30pKS5hcHBlbmRU
bygkKCdib2R5JykpOyQodGhpcykuYXR0cignYXV0b2NvbXBsZXRlJywnb2ZmJyku
a2V5ZG93bihmdW5jdGlvbihlKXtjb250ZXh0LmRhdGEua2V5cHJlc3NlZD0oZS5r
ZXlDb2RlPT11bmRlZmluZWQpP2Uud2hpY2g6ZS5rZXlDb2RlO2NvbnRleHQuZGF0
YS5rZXlwcmVzc2VkQ291bnQ9MDtzd2l0Y2goY29udGV4dC5kYXRhLmtleXByZXNz
ZWQpe2Nhc2UgNDA6ZS5wcmV2ZW50RGVmYXVsdCgpO2Uuc3RvcEltbWVkaWF0ZVBy
b3BhZ2F0aW9uKCk7YnJlYWs7Y2FzZSAzODpjYXNlIDI3OmNhc2UgMTM6aWYoY29u
dGV4dC5kYXRhLiRjb250YWluZXIuaXMoJzp2aXNpYmxlJykpe2UucHJldmVudERl
ZmF1bHQoKTtlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO319fSkua2V5cHJl
c3MoZnVuY3Rpb24oZSl7Y29udGV4dC5kYXRhLmtleXByZXNzZWRDb3VudCsrOyQu
c3VnZ2VzdGlvbnMua2V5cHJlc3MoZSxjb250ZXh0LGNvbnRleHQuZGF0YS5rZXlw
cmVzc2VkKTt9KS5rZXl1cChmdW5jdGlvbihlKXtpZihjb250ZXh0LmRhdGEua2V5
cHJlc3NlZENvdW50PT0wKXskLnN1Z2dlc3Rpb25zLmtleXByZXNzKGUsY29udGV4
dCxjb250ZXh0LmRhdGEua2V5cHJlc3NlZCk7fX0pLmJsdXIoZnVuY3Rpb24oKXtp
Zihjb250ZXh0LmRhdGEubW91c2VEb3duT24ubGVuZ3RoPjApe3JldHVybjt9CmNv
bnRleHQuZGF0YS4kY29udGFpbmVyLmhpZGUoKTskLnN1Z2dlc3Rpb25zLmNhbmNl
bChjb250ZXh0KTt9KTt9CiQodGhpcykuZGF0YSgnc3VnZ2VzdGlvbnMtY29udGV4
dCcsY29udGV4dCk7fSk7cmV0dXJuIHJldHVyblZhbHVlIT09bnVsbD9yZXR1cm5W
YWx1ZTokKHRoaXMpO307fSkoalF1ZXJ5KTsoZnVuY3Rpb24oJCl7JC5mbi50ZXh0
U2VsZWN0aW9uPWZ1bmN0aW9uKGNvbW1hbmQsb3B0aW9ucyl7dmFyIGZuPXtnZXRD
b250ZW50czpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbCgpO30sZ2V0U2VsZWN0
aW9uOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5nZXQoMCk7dmFyIHJldHZhbD0nJztp
ZigkKGUpLmlzKCc6aGlkZGVuJykpe31lbHNlIGlmKGRvY3VtZW50LnNlbGVjdGlv
biYmZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKXtlLmZvY3VzKCk7dmFy
IHJhbmdlPWRvY3VtZW50LnNlbGVjdGlvbi5jcmVhdGVSYW5nZSgpO3JldHZhbD1y
YW5nZS50ZXh0O31lbHNlIGlmKGUuc2VsZWN0aW9uU3RhcnR8fGUuc2VsZWN0aW9u
U3RhcnQ9PScwJyl7cmV0dmFsPWUudmFsdWUuc3Vic3RyaW5nKGUuc2VsZWN0aW9u
U3RhcnQsZS5zZWxlY3Rpb25FbmQpO30KcmV0dXJuIHJldHZhbDt9LGVuY2Fwc3Vs
YXRlU2VsZWN0aW9uOmZ1bmN0aW9uKG9wdGlvbnMpe3JldHVybiB0aGlzLmVhY2go
ZnVuY3Rpb24oKXtmdW5jdGlvbiBjaGVja1NlbGVjdGVkVGV4dCgpe2lmKCFzZWxU
ZXh0KXtzZWxUZXh0PW9wdGlvbnMucGVyaTtpc1NhbXBsZT10cnVlO31lbHNlIGlm
KG9wdGlvbnMucmVwbGFjZSl7c2VsVGV4dD1vcHRpb25zLnBlcmk7fWVsc2UgaWYo
c2VsVGV4dC5jaGFyQXQoc2VsVGV4dC5sZW5ndGgtMSk9PScgJyl7c2VsVGV4dD1z
ZWxUZXh0LnN1YnN0cmluZygwLHNlbFRleHQubGVuZ3RoLTEpO29wdGlvbnMucG9z
dCs9JyAnO319CnZhciBpc1NhbXBsZT1mYWxzZTtpZih0aGlzLnN0eWxlLmRpc3Bs
YXk9PSdub25lJyl7fWVsc2UgaWYodGhpcy5zZWxlY3Rpb25TdGFydHx8dGhpcy5z
ZWxlY3Rpb25TdGFydD09JzAnKXskKHRoaXMpLmZvY3VzKCk7dmFyIHNlbFRleHQ9
JCh0aGlzKS50ZXh0U2VsZWN0aW9uKCdnZXRTZWxlY3Rpb24nKTt2YXIgc3RhcnRQ
b3M9dGhpcy5zZWxlY3Rpb25TdGFydDt2YXIgZW5kUG9zPXRoaXMuc2VsZWN0aW9u
RW5kO3ZhciBzY3JvbGxUb3A9dGhpcy5zY3JvbGxUb3A7Y2hlY2tTZWxlY3RlZFRl
eHQoKTtpZihvcHRpb25zLm93bmxpbmUpe2lmKHN0YXJ0UG9zIT0wJiZ0aGlzLnZh
bHVlLmNoYXJBdChzdGFydFBvcy0xKSE9IlxuIil7b3B0aW9ucy5wcmU9IlxuIitv
cHRpb25zLnByZTt9CmlmKHRoaXMudmFsdWUuY2hhckF0KGVuZFBvcykhPSJcbiIp
e29wdGlvbnMucG9zdCs9IlxuIjt9fQp0aGlzLnZhbHVlPXRoaXMudmFsdWUuc3Vi
c3RyaW5nKDAsc3RhcnRQb3MpK29wdGlvbnMucHJlK3NlbFRleHQrb3B0aW9ucy5w
b3N0Kwp0aGlzLnZhbHVlLnN1YnN0cmluZyhlbmRQb3MsdGhpcy52YWx1ZS5sZW5n
dGgpO3RoaXMuc2Nyb2xsVG9wPXNjcm9sbFRvcDtpZih3aW5kb3cub3BlcmEpe29w
dGlvbnMucHJlPW9wdGlvbnMucHJlLnJlcGxhY2UoL1xyP1xuL2csIlxyXG4iKTtz
ZWxUZXh0PXNlbFRleHQucmVwbGFjZSgvXHI/XG4vZywiXHJcbiIpO29wdGlvbnMu
cG9zdD1vcHRpb25zLnBvc3QucmVwbGFjZSgvXHI/XG4vZywiXHJcbiIpO30KaWYo
aXNTYW1wbGUmJm9wdGlvbnMuc2VsZWN0UGVyaSl7dGhpcy5zZWxlY3Rpb25TdGFy
dD1zdGFydFBvcytvcHRpb25zLnByZS5sZW5ndGg7dGhpcy5zZWxlY3Rpb25FbmQ9
c3RhcnRQb3Mrb3B0aW9ucy5wcmUubGVuZ3RoK3NlbFRleHQubGVuZ3RoO31lbHNl
e3RoaXMuc2VsZWN0aW9uU3RhcnQ9c3RhcnRQb3Mrb3B0aW9ucy5wcmUubGVuZ3Ro
K3NlbFRleHQubGVuZ3RoKwpvcHRpb25zLnBvc3QubGVuZ3RoO3RoaXMuc2VsZWN0
aW9uRW5kPXRoaXMuc2VsZWN0aW9uU3RhcnQ7fX1lbHNlIGlmKGRvY3VtZW50LnNl
bGVjdGlvbiYmZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKXskKHRoaXMp
LmZvY3VzKCk7aWYoY29udGV4dCl7Y29udGV4dC5mbi5yZXN0b3JlU3R1ZmZGb3JJ
RSgpO30KdmFyIHNlbFRleHQ9JCh0aGlzKS50ZXh0U2VsZWN0aW9uKCdnZXRTZWxl
Y3Rpb24nKTt2YXIgc2Nyb2xsVG9wPXRoaXMuc2Nyb2xsVG9wO3ZhciByYW5nZT1k
b2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKTtpZihvcHRpb25zLm93bmxp
bmUmJnJhbmdlLm1vdmVTdGFydCl7dmFyIHJhbmdlMj1kb2N1bWVudC5zZWxlY3Rp
b24uY3JlYXRlUmFuZ2UoKTtyYW5nZTIuY29sbGFwc2UoKTtyYW5nZTIubW92ZVN0
YXJ0KCdjaGFyYWN0ZXInLC0xKTtpZihyYW5nZTIudGV4dCE9IlxyIiYmcmFuZ2Uy
LnRleHQhPSJcbiImJnJhbmdlMi50ZXh0IT0iIil7b3B0aW9ucy5wcmU9IlxuIitv
cHRpb25zLnByZTt9CnZhciByYW5nZTM9ZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0
ZVJhbmdlKCk7cmFuZ2UzLmNvbGxhcHNlKGZhbHNlKTtyYW5nZTMubW92ZUVuZCgn
Y2hhcmFjdGVyJywxKTtpZihyYW5nZTMudGV4dCE9IlxyIiYmcmFuZ2UzLnRleHQh
PSJcbiImJnJhbmdlMy50ZXh0IT0iIil7b3B0aW9ucy5wb3N0Kz0iXG4iO319CmNo
ZWNrU2VsZWN0ZWRUZXh0KCk7cmFuZ2UudGV4dD1vcHRpb25zLnByZStzZWxUZXh0
K29wdGlvbnMucG9zdDtpZihpc1NhbXBsZSYmb3B0aW9ucy5zZWxlY3RQZXJpJiZy
YW5nZS5tb3ZlU3RhcnQpe3JhbmdlLm1vdmVTdGFydCgnY2hhcmFjdGVyJywtb3B0
aW9ucy5wb3N0Lmxlbmd0aC1zZWxUZXh0Lmxlbmd0aCk7cmFuZ2UubW92ZUVuZCgn
Y2hhcmFjdGVyJywtb3B0aW9ucy5wb3N0Lmxlbmd0aCk7fQpyYW5nZS5zZWxlY3Qo
KTt0aGlzLnNjcm9sbFRvcD1zY3JvbGxUb3A7fQokKHRoaXMpLnRyaWdnZXIoJ2Vu
Y2Fwc3VsYXRlU2VsZWN0aW9uJyxbb3B0aW9ucy5wcmUsb3B0aW9ucy5wZXJpLG9w
dGlvbnMucG9zdCxvcHRpb25zLm93bmxpbmUsb3B0aW9ucy5yZXBsYWNlXSk7fSk7
fSxnZXRDYXJldFBvc2l0aW9uOmZ1bmN0aW9uKG9wdGlvbnMpe2Z1bmN0aW9uIGdl
dENhcmV0KGUpe3ZhciBjYXJldFBvcz0wLGVuZFBvcz0wO2lmKCQuYnJvd3Nlci5t
c2llKXt2YXIgcHJlRmluaXNoZWQ9ZmFsc2U7dmFyIHBlcmlGaW5pc2hlZD1mYWxz
ZTt2YXIgcG9zdEZpbmlzaGVkPWZhbHNlO3ZhciBwcmVUZXh0LHJhd1ByZVRleHQs
cGVyaVRleHQ7dmFyIHJhd1BlcmlUZXh0LHBvc3RUZXh0LHJhd1Bvc3RUZXh0O3Zh
ciBwZXJpUmFuZ2U9ZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCkuZHVw
bGljYXRlKCk7dmFyIHByZVJhbmdlPWRvY3VtZW50LmJvZHkuY3JlYXRlVGV4dFJh
bmdlKCk7cHJlUmFuZ2UubW92ZVRvRWxlbWVudFRleHQoZSk7cHJlUmFuZ2Uuc2V0
RW5kUG9pbnQoIkVuZFRvU3RhcnQiLHBlcmlSYW5nZSk7dmFyIHBvc3RSYW5nZT1k
b2N1bWVudC5ib2R5LmNyZWF0ZVRleHRSYW5nZSgpO3Bvc3RSYW5nZS5tb3ZlVG9F
bGVtZW50VGV4dChlKTtwb3N0UmFuZ2Uuc2V0RW5kUG9pbnQoIlN0YXJ0VG9FbmQi
LHBlcmlSYW5nZSk7cHJlVGV4dD1yYXdQcmVUZXh0PXByZVJhbmdlLnRleHQ7cGVy
aVRleHQ9cmF3UGVyaVRleHQ9cGVyaVJhbmdlLnRleHQ7cG9zdFRleHQ9cmF3UG9z
dFRleHQ9cG9zdFJhbmdlLnRleHQ7ZG97aWYoIXByZUZpbmlzaGVkKXtpZihwcmVS
YW5nZS5jb21wYXJlRW5kUG9pbnRzKCJTdGFydFRvRW5kIixwcmVSYW5nZSk9PTAp
e3ByZUZpbmlzaGVkPXRydWU7fWVsc2V7cHJlUmFuZ2UubW92ZUVuZCgiY2hhcmFj
dGVyIiwtMSkKaWYocHJlUmFuZ2UudGV4dD09cHJlVGV4dCl7cmF3UHJlVGV4dCs9
IlxyXG4iO31lbHNle3ByZUZpbmlzaGVkPXRydWU7fX19CmlmKCFwZXJpRmluaXNo
ZWQpe2lmKHBlcmlSYW5nZS5jb21wYXJlRW5kUG9pbnRzKCJTdGFydFRvRW5kIixw
ZXJpUmFuZ2UpPT0wKXtwZXJpRmluaXNoZWQ9dHJ1ZTt9ZWxzZXtwZXJpUmFuZ2Uu
bW92ZUVuZCgiY2hhcmFjdGVyIiwtMSkKaWYocGVyaVJhbmdlLnRleHQ9PXBlcmlU
ZXh0KXtyYXdQZXJpVGV4dCs9IlxyXG4iO31lbHNle3BlcmlGaW5pc2hlZD10cnVl
O319fQppZighcG9zdEZpbmlzaGVkKXtpZihwb3N0UmFuZ2UuY29tcGFyZUVuZFBv
aW50cygiU3RhcnRUb0VuZCIscG9zdFJhbmdlKT09MCl7cG9zdEZpbmlzaGVkPXRy
dWU7fWVsc2V7cG9zdFJhbmdlLm1vdmVFbmQoImNoYXJhY3RlciIsLTEpCmlmKHBv
c3RSYW5nZS50ZXh0PT1wb3N0VGV4dCl7cmF3UG9zdFRleHQrPSJcclxuIjt9ZWxz
ZXtwb3N0RmluaXNoZWQ9dHJ1ZTt9fX19d2hpbGUoKCFwcmVGaW5pc2hlZHx8IXBl
cmlGaW5pc2hlZHx8IXBvc3RGaW5pc2hlZCkpO2NhcmV0UG9zPXJhd1ByZVRleHQu
cmVwbGFjZSgvXHJcbi9nLCJcbiIpLmxlbmd0aDtlbmRQb3M9Y2FyZXRQb3MrcmF3
UGVyaVRleHQucmVwbGFjZSgvXHJcbi9nLCJcbiIpLmxlbmd0aDt9ZWxzZSBpZihl
LnNlbGVjdGlvblN0YXJ0fHxlLnNlbGVjdGlvblN0YXJ0PT0nMCcpe2NhcmV0UG9z
PWUuc2VsZWN0aW9uU3RhcnQ7ZW5kUG9zPWUuc2VsZWN0aW9uRW5kO30KcmV0dXJu
IG9wdGlvbnMuc3RhcnRBbmRFbmQ/W2NhcmV0UG9zLGVuZFBvc106Y2FyZXRQb3M7
fQpyZXR1cm4gZ2V0Q2FyZXQodGhpcy5nZXQoMCkpO30sc2V0U2VsZWN0aW9uOmZ1
bmN0aW9uKG9wdGlvbnMpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtpZigk
KHRoaXMpLmlzKCc6aGlkZGVuJykpe31lbHNlIGlmKHRoaXMuc2VsZWN0aW9uU3Rh
cnR8fHRoaXMuc2VsZWN0aW9uU3RhcnQ9PScwJyl7aWYob3B0aW9ucy5zdGFydD50
aGlzLnNlbGVjdGlvbkVuZCl7dGhpcy5zZWxlY3Rpb25FbmQ9b3B0aW9ucy5lbmQ7
dGhpcy5zZWxlY3Rpb25TdGFydD1vcHRpb25zLnN0YXJ0O31lbHNle3RoaXMuc2Vs
ZWN0aW9uU3RhcnQ9b3B0aW9ucy5zdGFydDt0aGlzLnNlbGVjdGlvbkVuZD1vcHRp
b25zLmVuZDt9fWVsc2UgaWYoZG9jdW1lbnQuYm9keS5jcmVhdGVUZXh0UmFuZ2Up
e3ZhciBzZWxlY3Rpb249ZG9jdW1lbnQuYm9keS5jcmVhdGVUZXh0UmFuZ2UoKTtz
ZWxlY3Rpb24ubW92ZVRvRWxlbWVudFRleHQodGhpcyk7dmFyIGxlbmd0aD10aGlz
LnZhbHVlLmxlbmd0aDt2YXIgbmV3TGluZXM9dGhpcy52YWx1ZS5tYXRjaCgvXG4v
Zyk7aWYobmV3TGluZXMpbGVuZ3RoPWxlbmd0aC1uZXdMaW5lcy5sZW5ndGg7c2Vs
ZWN0aW9uLm1vdmVTdGFydCgnY2hhcmFjdGVyJyxvcHRpb25zLnN0YXJ0KTtzZWxl
Y3Rpb24ubW92ZUVuZCgnY2hhcmFjdGVyJywtbGVuZ3RoK29wdGlvbnMuZW5kKTt0
cnl7c2VsZWN0aW9uLnNlbGVjdCgpO31jYXRjaChlKXt9fX0pO30sc2Nyb2xsVG9D
YXJldFBvc2l0aW9uOmZ1bmN0aW9uKG9wdGlvbnMpe2Z1bmN0aW9uIGdldExpbmVM
ZW5ndGgoZSl7cmV0dXJuIE1hdGguZmxvb3IoZS5zY3JvbGxXaWR0aC8oJC5vcy5u
YW1lPT0nbGludXgnPzc6OCkpO30KZnVuY3Rpb24gZ2V0Q2FyZXRTY3JvbGxQb3Np
dGlvbihlKXt2YXIgdGV4dD1lLnZhbHVlLnJlcGxhY2UoL1xyL2csIiIpO3ZhciBj
YXJldD0kKGUpLnRleHRTZWxlY3Rpb24oJ2dldENhcmV0UG9zaXRpb24nKTt2YXIg
bGluZUxlbmd0aD1nZXRMaW5lTGVuZ3RoKGUpO3ZhciByb3c9MDt2YXIgY2hhcklu
TGluZT0wO3ZhciBsYXN0U3BhY2VJbkxpbmU9MDtmb3IoaT0wO2k8Y2FyZXQ7aSsr
KXtjaGFySW5MaW5lKys7aWYodGV4dC5jaGFyQXQoaSk9PSIgIil7bGFzdFNwYWNl
SW5MaW5lPWNoYXJJbkxpbmU7fWVsc2UgaWYodGV4dC5jaGFyQXQoaSk9PSJcbiIp
e2xhc3RTcGFjZUluTGluZT0wO2NoYXJJbkxpbmU9MDtyb3crKzt9CmlmKGNoYXJJ
bkxpbmU+bGluZUxlbmd0aCl7aWYobGFzdFNwYWNlSW5MaW5lPjApe2NoYXJJbkxp
bmU9Y2hhckluTGluZS1sYXN0U3BhY2VJbkxpbmU7bGFzdFNwYWNlSW5MaW5lPTA7
cm93Kys7fX19CnZhciBuZXh0U3BhY2U9MDtmb3Ioaj1jYXJldDtqPGNhcmV0K2xp
bmVMZW5ndGg7aisrKXtpZih0ZXh0LmNoYXJBdChqKT09IiAifHx0ZXh0LmNoYXJB
dChqKT09IlxuInx8Y2FyZXQ9PXRleHQubGVuZ3RoKXtuZXh0U3BhY2U9ajticmVh
azt9fQppZihuZXh0U3BhY2U+bGluZUxlbmd0aCYmY2FyZXQ8PWxpbmVMZW5ndGgp
e2NoYXJJbkxpbmU9Y2FyZXQtbGFzdFNwYWNlSW5MaW5lO3JvdysrO30KcmV0dXJu
KCQub3MubmFtZT09J21hYyc/MTM6KCQub3MubmFtZT09J2xpbnV4Jz8xNToxNikp
KnJvdzt9CnJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtpZigkKHRoaXMpLmlz
KCc6aGlkZGVuJykpe31lbHNlIGlmKHRoaXMuc2VsZWN0aW9uU3RhcnR8fHRoaXMu
c2VsZWN0aW9uU3RhcnQ9PScwJyl7dmFyIHNjcm9sbD1nZXRDYXJldFNjcm9sbFBv
c2l0aW9uKHRoaXMpO2lmKG9wdGlvbnMuZm9yY2V8fHNjcm9sbDwkKHRoaXMpLnNj
cm9sbFRvcCgpfHxzY3JvbGw+JCh0aGlzKS5zY3JvbGxUb3AoKSskKHRoaXMpLmhl
aWdodCgpKQokKHRoaXMpLnNjcm9sbFRvcChzY3JvbGwpO31lbHNlIGlmKGRvY3Vt
ZW50LnNlbGVjdGlvbiYmZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKXt2
YXIgcmFuZ2U9ZG9jdW1lbnQuYm9keS5jcmVhdGVUZXh0UmFuZ2UoKTt2YXIgc2F2
ZWRSYW5nZT1kb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKTt2YXIgcG9z
PSQodGhpcykudGV4dFNlbGVjdGlvbignZ2V0Q2FyZXRQb3NpdGlvbicpO3ZhciBv
bGRTY3JvbGxUb3A9dGhpcy5zY3JvbGxUb3A7cmFuZ2UubW92ZVRvRWxlbWVudFRl
eHQodGhpcyk7cmFuZ2UuY29sbGFwc2UoKTtyYW5nZS5tb3ZlKCdjaGFyYWN0ZXIn
LHBvcysxKTtyYW5nZS5zZWxlY3QoKTtpZih0aGlzLnNjcm9sbFRvcCE9b2xkU2Ny
b2xsVG9wKQp0aGlzLnNjcm9sbFRvcCs9cmFuZ2Uub2Zmc2V0VG9wO2Vsc2UgaWYo
b3B0aW9ucy5mb3JjZSl7cmFuZ2UubW92ZSgnY2hhcmFjdGVyJywtMSk7cmFuZ2Uu
c2VsZWN0KCk7fQpzYXZlZFJhbmdlLnNlbGVjdCgpO30KJCh0aGlzKS50cmlnZ2Vy
KCdzY3JvbGxUb1Bvc2l0aW9uJyk7fSk7fX07c3dpdGNoKGNvbW1hbmQpe2Nhc2Un
ZW5jYXBzdWxhdGVTZWxlY3Rpb24nOm9wdGlvbnM9JC5leHRlbmQoeydwcmUnOicn
LCdwZXJpJzonJywncG9zdCc6JycsJ293bmxpbmUnOmZhbHNlLCdyZXBsYWNlJzpm
YWxzZSwnc2VsZWN0UGVyaSc6dHJ1ZX0sb3B0aW9ucyk7YnJlYWs7Y2FzZSdnZXRD
YXJldFBvc2l0aW9uJzpvcHRpb25zPSQuZXh0ZW5kKHsnc3RhcnRBbmRFbmQnOmZh
bHNlfSxvcHRpb25zKTticmVhaztjYXNlJ3NldFNlbGVjdGlvbic6b3B0aW9ucz0k
LmV4dGVuZCh7J3N0YXJ0Jzp1bmRlZmluZWQsJ2VuZCc6dW5kZWZpbmVkLCdzdGFy
dENvbnRhaW5lcic6dW5kZWZpbmVkLCdlbmRDb250YWluZXInOnVuZGVmaW5lZH0s
b3B0aW9ucyk7aWYob3B0aW9ucy5lbmQ9PT11bmRlZmluZWQpCm9wdGlvbnMuZW5k
PW9wdGlvbnMuc3RhcnQ7aWYob3B0aW9ucy5lbmRDb250YWluZXI9PXVuZGVmaW5l
ZCkKb3B0aW9ucy5lbmRDb250YWluZXI9b3B0aW9ucy5zdGFydENvbnRhaW5lcjti
cmVhaztjYXNlJ3Njcm9sbFRvQ2FyZXRQb3NpdGlvbic6b3B0aW9ucz0kLmV4dGVu
ZCh7J2ZvcmNlJzpmYWxzZX0sb3B0aW9ucyk7YnJlYWs7fQp2YXIgY29udGV4dD0k
KHRoaXMpLmRhdGEoJ3dpa2lFZGl0b3ItY29udGV4dCcpO3ZhciBoYXNJZnJhbWU9
dHlwZW9mIGNvbnRleHQ9PT0nb2JqZWN0JyYmY29udGV4dCYmdHlwZW9mIGNvbnRl
eHQuJGlmcmFtZSE9PSd1bmRlZmluZWQnO3ZhciBuZWVkU2F2ZT1mYWxzZTtpZiho
YXNJZnJhbWUmJmNvbnRleHQuc2F2ZWRTZWxlY3Rpb24hPT1udWxsKXtjb250ZXh0
LmZuLnJlc3RvcmVTZWxlY3Rpb24oKTtuZWVkU2F2ZT10cnVlO30KcmV0dmFsPSho
YXNJZnJhbWU/Y29udGV4dC5mbjpmbilbY29tbWFuZF0uY2FsbCh0aGlzLG9wdGlv
bnMpO2lmKGhhc0lmcmFtZSYmbmVlZFNhdmUpe2NvbnRleHQuZm4uc2F2ZVNlbGVj
dGlvbigpO30KcmV0dXJuIHJldHZhbDt9O30pKGpRdWVyeSk7KGZ1bmN0aW9uKCQp
eyQud2lraUVkaXRvcj17J21vZHVsZXMnOnt9LCdpbnN0YW5jZXMnOltdLCdicm93
c2Vycyc6eydsdHInOnsnbXNpZSc6W1snPj0nLDddXSwnZmlyZWZveCc6W1snPj0n
LDJdXSwnb3BlcmEnOltbJz49Jyw5LjZdXSwnc2FmYXJpJzpbWyc+PScsM11dLCdj
aHJvbWUnOltbJz49JywzXV0sJ25ldHNjYXBlJzpbWyc+PScsOV1dLCdibGFja2Jl
cnJ5JzpmYWxzZSwnaXBvZCc6ZmFsc2UsJ2lwaG9uZSc6ZmFsc2V9LCdydGwnOnsn
bXNpZSc6W1snPj0nLDhdXSwnZmlyZWZveCc6W1snPj0nLDJdXSwnb3BlcmEnOltb
Jz49Jyw5LjZdXSwnc2FmYXJpJzpbWyc+PScsM11dLCdjaHJvbWUnOltbJz49Jywz
XV0sJ25ldHNjYXBlJzpbWyc+PScsOV1dLCdibGFja2JlcnJ5JzpmYWxzZSwnaXBv
ZCc6ZmFsc2UsJ2lwaG9uZSc6ZmFsc2V9fSwnaW1nUGF0aCc6d2dTY3JpcHRQYXRo
KycvZXh0ZW5zaW9ucy9Vc2FiaWxpdHlJbml0aWF0aXZlL2ltYWdlcy93aWtpRWRp
dG9yLycsJ2lzU3VwcG9ydGVkJzpmdW5jdGlvbihtb2R1bGUpe2lmKG1vZHVsZSYm
dHlwZW9mIG1vZHVsZS5uYW1lIT0ndW5kZWZpbmVkJyYmKG1vZHVsZS5uYW1lPT0n
dG9jJ3x8bW9kdWxlLm5hbWU9PSdoaWdobGlnaHQnKSYmdHlwZW9mIHdnUmVhbGx5
R2l2ZU1lVE9DPT0ndW5kZWZpbmVkJyl7cmV0dXJuIG1vZHVsZS5zdXBwb3J0ZWQ9
ZmFsc2U7fQp2YXIgbW9kPW1vZHVsZSYmJ2Jyb3dzZXJzJ2luIG1vZHVsZT9tb2R1
bGU6JC53aWtpRWRpdG9yO2lmKHR5cGVvZiBtb2Quc3VwcG9ydGVkIT09J3VuZGVm
aW5lZCcpe3JldHVybiBtb2Quc3VwcG9ydGVkO30KcmV0dXJuIG1vZC5zdXBwb3J0
ZWQ9bXcudXNhYmlsaXR5LnRlc3RCcm93c2VyKG1vZC5icm93c2Vycyk7fSwnaXNS
ZXF1aXJlZCc6ZnVuY3Rpb24obW9kdWxlLHJlcXVpcmVtZW50KXtpZih0eXBlb2Yg
bW9kdWxlWydyZXEnXSE9PSd1bmRlZmluZWQnKXtmb3IocmVxIGluIG1vZHVsZVsn
cmVxJ10pe2lmKG1vZHVsZVsncmVxJ11bcmVxXT09cmVxdWlyZW1lbnQpe3JldHVy
biB0cnVlO319fQpyZXR1cm4gZmFsc2U7fSwnYXV0b01zZyc6ZnVuY3Rpb24ob2Jq
ZWN0LHByb3BlcnR5KXtpZih0eXBlb2YgcHJvcGVydHk9PSdvYmplY3QnKXtmb3Io
dmFyIGkgaW4gcHJvcGVydHkpe2lmKHByb3BlcnR5W2ldaW4gb2JqZWN0fHxwcm9w
ZXJ0eVtpXSsnTXNnJ2luIG9iamVjdCl7cHJvcGVydHk9cHJvcGVydHlbaV07YnJl
YWs7fX19CmlmKHByb3BlcnR5IGluIG9iamVjdCl7cmV0dXJuIG9iamVjdFtwcm9w
ZXJ0eV07fWVsc2UgaWYocHJvcGVydHkrJ01zZydpbiBvYmplY3Qpe2lmKHR5cGVv
ZiBvYmplY3RbcHJvcGVydHkrJ01zZyddPT0nb2JqZWN0Jyl7cmV0dXJuIG13LnVz
YWJpbGl0eS5nZXRNc2cuYXBwbHkobXcudXNhYmlsaXR5LG9iamVjdFtwcm9wZXJ0
eSsnTXNnJ10pO31lbHNle3JldHVybiBtdy51c2FiaWxpdHkuZ2V0TXNnKG9iamVj
dFtwcm9wZXJ0eSsnTXNnJ10pO319ZWxzZXtyZXR1cm4nJzt9fSwnYXV0b0xhbmcn
OmZ1bmN0aW9uKG9iamVjdCxsYW5nKXtyZXR1cm4gb2JqZWN0W2xhbmd8fHdnVXNl
ckxhbmd1YWdlXXx8b2JqZWN0WydkZWZhdWx0J118fG9iamVjdDt9LCdhdXRvSWNv
bic6ZnVuY3Rpb24oaWNvbixwYXRoLGxhbmcpe3ZhciBzcmM9JC53aWtpRWRpdG9y
LmF1dG9MYW5nKGljb24sbGFuZyk7cGF0aD1wYXRofHwkLndpa2lFZGl0b3IuaW1n
UGF0aDtpZihzcmMuc3Vic3RyKDAsNykhPSdodHRwOi8vJyYmc3JjLnN1YnN0cigw
LDgpIT0naHR0cHM6Ly8nJiZzcmNbMF0hPScvJyl7c3JjPXBhdGgrc3JjO30KcmV0
dXJuIHNyYysnPycrd2dXaWtpRWRpdG9ySWNvblZlcnNpb247fSwnYXV0b0ljb25P
ck9mZnNldCc6ZnVuY3Rpb24oaWNvbixvZmZzZXQscGF0aCxsYW5nKXtsYW5nPWxh
bmd8fHdnVXNlckxhbmd1YWdlO2lmKHR5cGVvZiBvZmZzZXQ9PSdvYmplY3QnJiZs
YW5nIGluIG9mZnNldCl7cmV0dXJuIG9mZnNldFtsYW5nXTt9ZWxzZSBpZih0eXBl
b2YgaWNvbj09J29iamVjdCcmJmxhbmcgaW4gaWNvbil7cmV0dXJuICQud2lraUVk
aXRvci5hdXRvSWNvbihpY29uLHVuZGVmaW5lZCxsYW5nKTt9ZWxzZXtyZXR1cm4g
JC53aWtpRWRpdG9yLmF1dG9MYW5nKG9mZnNldCxsYW5nKTt9fX07JC5mbi53aWtp
RWRpdG9yPWZ1bmN0aW9uKCl7aWYoISRqLndpa2lFZGl0b3IuaXNTdXBwb3J0ZWQo
KSl7cmV0dXJuICQodGhpcyk7fQp2YXIgY29udGV4dD0kKHRoaXMpLmRhdGEoJ3dp
a2lFZGl0b3ItY29udGV4dCcpO2lmKCFjb250ZXh0fHx0eXBlb2YgY29udGV4dD09
J3VuZGVmaW5lZCcpe2NvbnRleHQ9eyckdGV4dGFyZWEnOiQodGhpcyksJ3ZpZXdz
Jzp7fSwnbW9kdWxlcyc6e30sJ2RhdGEnOnt9LCdpbnN0YW5jZSc6JC53aWtpRWRp
dG9yLmluc3RhbmNlcy5wdXNoKCQodGhpcykpLTEsJ29mZnNldHMnOm51bGwsJ2h0
bWxUb1RleHRNYXAnOnt9LCdvbGRIVE1MJzpudWxsLCdvbGREZWxheWVkSFRNTCc6
bnVsbCwnb2xkRGVsYXllZFNlbCc6bnVsbCwnc2F2ZWRTZWxlY3Rpb24nOm51bGws
J2hpc3RvcnknOltdLCdoaXN0b3J5UG9zaXRpb24nOi0xLCdvbGREZWxheWVkSGlz
dG9yeVBvc2l0aW9uJzotMX07Y29udGV4dC5hcGk9eydhZGRNb2R1bGUnOmZ1bmN0
aW9uKGNvbnRleHQsZGF0YSl7dmFyIG1vZHVsZXM9e307aWYodHlwZW9mIGRhdGE9
PSdzdHJpbmcnKXttb2R1bGVzW2RhdGFdPXt9O31lbHNlIGlmKHR5cGVvZiBkYXRh
PT0nb2JqZWN0Jyl7bW9kdWxlcz1kYXRhO30KZm9yKHZhciBtb2R1bGUgaW4gbW9k
dWxlcyl7aWYodHlwZW9mIG1vZHVsZT09J3N0cmluZycmJiQud2lraUVkaXRvci5p
c1N1cHBvcnRlZCgkLndpa2lFZGl0b3IubW9kdWxlc1ttb2R1bGVdKSl7aWYoJ2Fw
aSdpbiAkLndpa2lFZGl0b3IubW9kdWxlc1ttb2R1bGVdKXtmb3IodmFyIGNhbGwg
aW4gJC53aWtpRWRpdG9yLm1vZHVsZXNbbW9kdWxlXS5hcGkpe2lmKCEoY2FsbCBp
biBjb250ZXh0LmFwaSkpe2NvbnRleHQuYXBpW2NhbGxdPSQud2lraUVkaXRvci5t
b2R1bGVzW21vZHVsZV0uYXBpW2NhbGxdO319fQppZignZm4naW4gJC53aWtpRWRp
dG9yLm1vZHVsZXNbbW9kdWxlXSYmJ2NyZWF0ZSdpbiAkLndpa2lFZGl0b3IubW9k
dWxlc1ttb2R1bGVdLmZuKXtjb250ZXh0Lm1vZHVsZXNbbW9kdWxlXT17fTskLndp
a2lFZGl0b3IubW9kdWxlc1ttb2R1bGVdLmZuLmNyZWF0ZShjb250ZXh0LG1vZHVs
ZXNbbW9kdWxlXSk7fX19fX07Y29udGV4dC5ldnQ9eydrZXlkb3duJzpmdW5jdGlv
bihldmVudCl7c3dpdGNoKGV2ZW50LndoaWNoKXtjYXNlIDk6aWYoZXZlbnQuY3Ry
bEtleXx8ZXZlbnQuYWx0S2V5fHxldmVudC5zaGlmdEtleSl7cmV0dXJuIHRydWU7
fWVsc2V7dmFyICR0YWJpbmRleExpc3Q9JGooJ1t0YWJpbmRleF06dmlzaWJsZScp
LnNvcnQoZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS50YWJJbmRleC1iLnRhYkluZGV4
O30pO2Zvcih2YXIgaT0wO2k8JHRhYmluZGV4TGlzdC5sZW5ndGg7aSsrKXtpZigk
dGFiaW5kZXhMaXN0LmVxKGkpLmF0dHIoJ2lkJyk9PWNvbnRleHQuJGlmcmFtZS5h
dHRyKCdpZCcpKXskdGFiaW5kZXhMaXN0LmdldChpKzEpLmZvY3VzKCk7YnJlYWs7
fX0KcmV0dXJuIGZhbHNlO30KYnJlYWs7Y2FzZSA4NjppZihldmVudC5jdHJsS2V5
JiYkLmJyb3dzZXIubXNpZSl7Y29udGV4dC5ldnQucGFzdGUoZXZlbnQpO30KYnJl
YWs7fQpyZXR1cm4gdHJ1ZTt9LCdjaGFuZ2UnOmZ1bmN0aW9uKGV2ZW50KXtldmVu
dC5kYXRhLnNjb3BlPSdkaXZpc2lvbic7dmFyIG5ld0hUTUw9Y29udGV4dC4kY29u
dGVudC5odG1sKCk7aWYoY29udGV4dC5vbGRIVE1MIT1uZXdIVE1MKXtjb250ZXh0
LmZuLnB1cmdlT2Zmc2V0cygpO2NvbnRleHQub2xkSFRNTD1uZXdIVE1MO2V2ZW50
LmRhdGEuc2NvcGU9J3JlYWxjaGFuZ2UnO30KaWYoY29udGV4dC4kY29udGVudC5j
aGlsZHJlbigpLmxlbmd0aD09MCl7Y29udGV4dC4kY29udGVudC5hcHBlbmQoJzxw
PjwvcD4nKTt9CnJldHVybiB0cnVlO30sJ2RlbGF5ZWRDaGFuZ2UnOmZ1bmN0aW9u
KGV2ZW50KXtldmVudC5kYXRhLnNjb3BlPSdkaXZpc2lvbic7dmFyIG5ld0hUTUw9
Y29udGV4dC4kY29udGVudC5odG1sKCk7aWYoY29udGV4dC5vbGREZWxheWVkSFRN
TCE9bmV3SFRNTCl7Y29udGV4dC5vbGREZWxheWVkSFRNTD1uZXdIVE1MO2V2ZW50
LmRhdGEuc2NvcGU9J3JlYWxjaGFuZ2UnO3ZhciBjdXJzb3JQb3M9Y29udGV4dC5m
bi5nZXRDYXJldFBvc2l0aW9uKCk7dmFyIHQ9Y29udGV4dC5mbi5nZXRPZmZzZXQo
Y3Vyc29yUG9zWzBdKTtpZighJC5icm93c2VyLm1zaWUmJnQmJnQubm9kZS5ub2Rl
TmFtZT09JyN0ZXh0JyYmdC5ub2RlLnBhcmVudE5vZGUubm9kZU5hbWUudG9Mb3dl
ckNhc2UoKT09J2JvZHknKXskKHQubm9kZSkud3JhcCgiPHA+PC9wPiIpO2NvbnRl
eHQuZm4ucHVyZ2VPZmZzZXRzKCk7Y29udGV4dC5mbi5zZXRTZWxlY3Rpb24oe3N0
YXJ0OmN1cnNvclBvc1swXSxlbmQ6Y3Vyc29yUG9zWzFdfSk7fX0KY29udGV4dC5m
bi51cGRhdGVIaXN0b3J5KGV2ZW50LmRhdGEuc2NvcGU9PSdyZWFsY2hhbmdlJyk7
cmV0dXJuIHRydWU7fSwnY3V0JzpmdW5jdGlvbihldmVudCl7c2V0VGltZW91dChm
dW5jdGlvbigpe2NvbnRleHQuJGNvbnRlbnQuZmluZCgnYnInKS5lYWNoKGZ1bmN0
aW9uKCl7aWYoJCh0aGlzKS5wYXJlbnQoKS5pcygnYm9keScpKXskKHRoaXMpLndy
YXAoJCgnPHA+PC9wPicpKTt9fSk7fSwxMDApO3JldHVybiB0cnVlO30sJ3Bhc3Rl
JzpmdW5jdGlvbihldmVudCl7dmFyIGN1cnNvclBvcz1jb250ZXh0LmZuLmdldENh
cmV0UG9zaXRpb24oKTt2YXIgb2Zmc2V0PTA7dmFyIG9sZExlbmd0aD1jb250ZXh0
LmZuLmdldENvbnRlbnRzKCkubGVuZ3RoO2NvbnRleHQuJGNvbnRlbnQuZmluZCgn
KicpLmFkZENsYXNzKCd3aWtpRWRpdG9yJyk7aWYoJC5sYXlvdXQubmFtZSE9PSd3
ZWJraXQnKXtjb250ZXh0LiRjb250ZW50LmFkZENsYXNzKCdwYXN0aW5nJyk7fQpz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Y29udGV4dC4kY29udGVudC5maW5kKCdzY3Jp
cHQsc3R5bGUsaW1nLGlucHV0LHNlbGVjdCx0ZXh0YXJlYSxocixidXR0b24sbGlu
ayxtZXRhJykucmVtb3ZlKCk7dmFyICRzZWxlY3Rpb249Y29udGV4dC4kY29udGVu
dC5maW5kKCc6bm90KC53aWtpRWRpdG9yKScpO3ZhciBub2RlVG9EZWxldGU9W107
dmFyIGZpcnN0RGlydHlOb2RlO2lmKCRzZWxlY3Rpb24ubGVuZ3RoPT0wKXtmaXJz
dERpcnR5Tm9kZT1jb250ZXh0LmZuLmdldE9mZnNldChjdXJzb3JQb3NbMF0pLm5v
ZGU7fWVsc2V7Zmlyc3REaXJ0eU5vZGU9JHNlbGVjdGlvbi5lcSgwKVswXTt9Cndo
aWxlKGZpcnN0RGlydHlOb2RlIT1udWxsKXt3aGlsZShmaXJzdERpcnR5Tm9kZS5w
YXJlbnROb2RlLm5vZGVOYW1lIT0nQk9EWScmJiEkKGZpcnN0RGlydHlOb2RlLnBh
cmVudE5vZGUpLmhhc0NsYXNzKCd3aWtpRWRpdG9yJykpe2ZpcnN0RGlydHlOb2Rl
PWZpcnN0RGlydHlOb2RlLnBhcmVudE5vZGU7fQp3aGlsZShmaXJzdERpcnR5Tm9k
ZS5wcmV2aW91c1NpYmxpbmchPW51bGwmJiEkKGZpcnN0RGlydHlOb2RlLnByZXZp
b3VzU2libGluZykuaGFzQ2xhc3MoJ3dpa2lFZGl0b3InKSl7aWYoJChmaXJzdERp
cnR5Tm9kZS5wcmV2aW91c1NpYmxpbmcpLmhhc0NsYXNzKCcjY29tbWVudCcpKXsk
KGZpcnN0RGlydHlOb2RlKS5yZW1vdmUoKTt9ZWxzZXtmaXJzdERpcnR5Tm9kZT1m
aXJzdERpcnR5Tm9kZS5wcmV2aW91c1NpYmxpbmc7fX0KdmFyICRsYXN0RGlydHlO
b2RlPSQoZmlyc3REaXJ0eU5vZGUpO3ZhciBjYz1tYWtlQ29udGVudENvbGxlY3Rv
cigkLmJyb3dzZXIsbnVsbCk7d2hpbGUoZmlyc3REaXJ0eU5vZGUhPW51bGwmJiEk
KGZpcnN0RGlydHlOb2RlKS5oYXNDbGFzcygnd2lraUVkaXRvcicpKXtjYy5jb2xs
ZWN0Q29udGVudChmaXJzdERpcnR5Tm9kZSk7Y2Mubm90aWZ5TmV4dE5vZGUoZmly
c3REaXJ0eU5vZGUubmV4dFNpYmxpbmcpO3Bhc3RlZENvbnRlbnQ9Y2MuZ2V0TGlu
ZXMoKTtpZigocGFzdGVkQ29udGVudC5sZW5ndGg8PTF8fHBhc3RlZENvbnRlbnRb
cGFzdGVkQ29udGVudC5sZW5ndGgtMV0hPT0iIikmJmZpcnN0RGlydHlOb2RlLm5l
eHRTaWJsaW5nKXtub2RlVG9EZWxldGUucHVzaChmaXJzdERpcnR5Tm9kZSk7Zmly
c3REaXJ0eU5vZGU9Zmlyc3REaXJ0eU5vZGUubmV4dFNpYmxpbmc7Y2MuY29sbGVj
dENvbnRlbnQoZmlyc3REaXJ0eU5vZGUpO2NjLm5vdGlmeU5leHROb2RlKGZpcnN0
RGlydHlOb2RlLm5leHRTaWJsaW5nKTt9Cm5vZGVUb0RlbGV0ZS5wdXNoKGZpcnN0
RGlydHlOb2RlKTtmaXJzdERpcnR5Tm9kZT1maXJzdERpcnR5Tm9kZS5uZXh0U2li
bGluZzt9CnZhciBjY0RhdGE9Y2MuZmluaXNoKCk7dmFyIHBhc3RlZENvbnRlbnQ9
Y2NEYXRhLmxpbmVzO2lmKHBhc3RlZENvbnRlbnQubGVuZ3RoPT0wJiZmaXJzdERp
cnR5Tm9kZSl7b2Zmc2V0Kz0kKGZpcnN0RGlydHlOb2RlKS50ZXh0KCkubGVuZ3Ro
O30KaWYobm9kZVRvRGVsZXRlLmxlbmd0aD4wKXskbGFzdERpcnR5Tm9kZT0kKG5v
ZGVUb0RlbGV0ZVtub2RlVG9EZWxldGUubGVuZ3RoLTFdKTt9CnZhciB0ZXN0VmFs
PScnO3Rlc3RWYWw9JChub2RlVG9EZWxldGVbMF0pLnRleHQoKTt2YXIgcGFzdGVk
UHJldHR5PScnO2Zvcih2YXIgaT0wO2k8cGFzdGVkQ29udGVudC5sZW5ndGg7aSsr
KXtwYXN0ZWRQcmV0dHk9cGFzdGVkQ29udGVudFtpXS5yZXBsYWNlKC8mL2csJyZh
bXA7JykucmVwbGFjZSgvPC9nLCcmbHQ7JykucmVwbGFjZSgvPi9nLCcmZ3Q7Jyku
cmVwbGFjZSgvXHI/XG4vZywnXFxuJyk7bWF0Y2g9cGFzdGVkQ29udGVudFtpXS5t
YXRjaCgvXltcc10rW15cc10vKTtpZihtYXRjaCE9bnVsbCYmbWF0Y2gubGVuZ3Ro
PjApe2luZGV4PW1hdGNoWzBdLmxlbmd0aDtsZWFkaW5nU3BhY2U9bWF0Y2hbMF0u
cmVwbGFjZSgvW1xzXS9nLCcmbmJzcDsnKTtwYXN0ZWRQcmV0dHk9bGVhZGluZ1Nw
YWNlK3Bhc3RlZFByZXR0eS5zdWJzdHJpbmcoaW5kZXgscGFzdGVkUHJldHR5Lmxl
bmd0aCk7fQokbmV3RWxlbWVudD0kKCc8cCBjbGFzcz0id2lraUVkaXRvciIgPjwv
cD4nKTtpZihwYXN0ZWRQcmV0dHkpeyRuZXdFbGVtZW50Lmh0bWwoJzxzcGFuIGNs
YXNzID0gIndpa2lFZGl0b3IiPicrcGFzdGVkUHJldHR5Kyc8L3NwYW4+Jyk7fWVs
c2V7JG5ld0VsZW1lbnQuaHRtbCgnPGJyIGNsYXNzPSJ3aWtpRWRpdG9yIj4nKTt9
CiRuZXdFbGVtZW50Lmluc2VydEFmdGVyKCRsYXN0RGlydHlOb2RlKTtvZmZzZXQr
PXBhc3RlZFByZXR0eS5sZW5ndGg7JGxhc3REaXJ0eU5vZGU9JG5ld0VsZW1lbnQ7
fQp3aGlsZShub2RlVG9EZWxldGUubGVuZ3RoPjApeyQobm9kZVRvRGVsZXRlLnBv
cCgpKS5yZW1vdmUoKTt9CiRzZWxlY3Rpb249Y29udGV4dC4kY29udGVudC5maW5k
KCc6bm90KC53aWtpRWRpdG9yKScpO2lmKCRzZWxlY3Rpb24ubGVuZ3RoPT0wKXtm
aXJzdERpcnR5Tm9kZT1udWxsO31lbHNle2ZpcnN0RGlydHlOb2RlPSRzZWxlY3Rp
b24uZXEoMClbMF07fX0KY29udGV4dC4kY29udGVudC5maW5kKCcud2lraUVkaXRv
cicpLnJlbW92ZUNsYXNzKCd3aWtpRWRpdG9yJyk7dmFyIHJlc3RvcmVUbz1jdXJz
b3JQb3NbMV0rb2Zmc2V0O2NvbnRleHQuZm4uc2V0U2VsZWN0aW9uKHtzdGFydDpy
ZXN0b3JlVG8sZW5kOnJlc3RvcmVUb30pO30sMCk7cmV0dXJuIHRydWU7fSwncmVh
ZHknOmZ1bmN0aW9uKGV2ZW50KXtjb250ZXh0Lmhpc3RvcnkucHVzaCh7J2h0bWwn
OmNvbnRleHQuJGNvbnRlbnQuaHRtbCgpLCdzZWwnOmNvbnRleHQuZm4uZ2V0Q2Fy
ZXRQb3NpdGlvbigpfSk7cmV0dXJuIHRydWU7fX07Y29udGV4dC5mbj17J3RyaWdn
ZXInOmZ1bmN0aW9uKG5hbWUsZXZlbnQpe2lmKHR5cGVvZiBldmVudD09J3VuZGVm
aW5lZCcpe2V2ZW50PXsndHlwZSc6J2N1c3RvbSd9O30KaWYodHlwZW9mIGV2ZW50
LmRhdGE9PSd1bmRlZmluZWQnKXtldmVudC5kYXRhPXt9O30KaWYobmFtZSBpbiBj
b250ZXh0LmV2dCl7aWYoIWNvbnRleHQuZXZ0W25hbWVdKGV2ZW50KSl7cmV0dXJu
IGZhbHNlO319CnZhciByZXR1cm5Gcm9tTW9kdWxlcz1udWxsO2Zvcih2YXIgbW9k
dWxlIGluIGNvbnRleHQubW9kdWxlcyl7aWYobW9kdWxlIGluICQud2lraUVkaXRv
ci5tb2R1bGVzJiYnZXZ0J2luICQud2lraUVkaXRvci5tb2R1bGVzW21vZHVsZV0m
Jm5hbWUgaW4gJC53aWtpRWRpdG9yLm1vZHVsZXNbbW9kdWxlXS5ldnQpe3ZhciBy
ZXQ9JC53aWtpRWRpdG9yLm1vZHVsZXNbbW9kdWxlXS5ldnRbbmFtZV0oY29udGV4
dCxldmVudCk7aWYocmV0IT1udWxsKXtpZihyZXR1cm5Gcm9tTW9kdWxlcz09bnVs
bCl7cmV0dXJuRnJvbU1vZHVsZXM9cmV0O31lbHNle3JldHVybkZyb21Nb2R1bGVz
PXJldHVybkZyb21Nb2R1bGVzJiZyZXQ7fX19fQppZihyZXR1cm5Gcm9tTW9kdWxl
cyE9bnVsbCl7cmV0dXJuIHJldHVybkZyb21Nb2R1bGVzO31lbHNle3JldHVybiB0
cnVlO319LCdhZGRCdXR0b24nOmZ1bmN0aW9uKG9wdGlvbnMpe2NvbnRleHQuJGNv
bnRyb2xzLnNob3coKTtjb250ZXh0LiRidXR0b25zLnNob3coKTtyZXR1cm4gJCgn
PGJ1dHRvbiAvPicpLnRleHQoJC53aWtpRWRpdG9yLmF1dG9Nc2cob3B0aW9ucywn
Y2FwdGlvbicpKS5jbGljayhvcHRpb25zLmFjdGlvbikuYXBwZW5kVG8oY29udGV4
dC4kYnV0dG9ucyk7fSwnYWRkVmlldyc6ZnVuY3Rpb24ob3B0aW9ucyl7ZnVuY3Rp
b24gYWRkVGFiKG9wdGlvbnMpe2NvbnRleHQuJGNvbnRyb2xzLnNob3coKTtjb250
ZXh0LiR0YWJzLnNob3coKTtyZXR1cm4gJCgnPGRpdj48L2Rpdj4nKS5hdHRyKCdy
ZWwnLCd3aWtpRWRpdG9yLXVpLXZpZXctJytvcHRpb25zLm5hbWUpLmFkZENsYXNz
KGNvbnRleHQudmlldz09b3B0aW9ucy5uYW1lPydjdXJyZW50JzpudWxsKS5hcHBl
bmQoJCgnPGE+PC9hPicpLmF0dHIoJ2hyZWYnLCcjJykubW91c2Vkb3duKGZ1bmN0
aW9uKCl7cmV0dXJuIGZhbHNlO30pLmNsaWNrKGZ1bmN0aW9uKGV2ZW50KXtjb250
ZXh0LiR1aS5maW5kKCcud2lraUVkaXRvci11aS12aWV3JykuaGlkZSgpO2NvbnRl
eHQuJHVpLmZpbmQoJy4nKyQodGhpcykucGFyZW50KCkuYXR0cigncmVsJykpLnNo
b3coKTtjb250ZXh0LiR0YWJzLmZpbmQoJ2RpdicpLnJlbW92ZUNsYXNzKCdjdXJy
ZW50Jyk7JCh0aGlzKS5wYXJlbnQoKS5hZGRDbGFzcygnY3VycmVudCcpOyQodGhp
cykuYmx1cigpO2lmKCdpbml0J2luIG9wdGlvbnMmJnR5cGVvZiBvcHRpb25zLmlu
aXQ9PSdmdW5jdGlvbicpe29wdGlvbnMuaW5pdChjb250ZXh0KTt9CmV2ZW50LnBy
ZXZlbnREZWZhdWx0KCk7cmV0dXJuIGZhbHNlO30pLnRleHQoJC53aWtpRWRpdG9y
LmF1dG9Nc2cob3B0aW9ucywndGl0bGUnKSkpLmFwcGVuZFRvKGNvbnRleHQuJHRh
YnMpO30KaWYoIWNvbnRleHQuJHRhYnMuY2hpbGRyZW4oKS5zaXplKCkpe2FkZFRh
Yih7J25hbWUnOid3aWtpdGV4dCcsJ3RpdGxlTXNnJzond2lraWVkaXRvci13aWtp
dGV4dC10YWInfSk7fQphZGRUYWIob3B0aW9ucyk7cmV0dXJuICQoJzxkaXY+PC9k
aXY+JykuYWRkQ2xhc3MoJ3dpa2lFZGl0b3ItdWktdmlldyB3aWtpRWRpdG9yLXVp
LXZpZXctJytvcHRpb25zLm5hbWUpLmhpZGUoKS5hcHBlbmRUbyhjb250ZXh0LiR1
aSk7fSwnaGlnaGxpZ2h0TGluZSc6ZnVuY3Rpb24oJGVsZW1lbnQsbW9kZSl7aWYo
ISRlbGVtZW50LmlzKCdwJykpeyRlbGVtZW50PSRlbGVtZW50LmNsb3Nlc3QoJ3An
KTt9CiRlbGVtZW50LmNzcygnYmFja2dyb3VuZENvbG9yJywnI0FBQ0NGRicpO3Nl
dFRpbWVvdXQoZnVuY3Rpb24oKXskZWxlbWVudC5hbmltYXRlKHsnYmFja2dyb3Vu
ZENvbG9yJzond2hpdGUnfSwnc2xvdycpO30sMTAwKTtzZXRUaW1lb3V0KGZ1bmN0
aW9uKCl7JGVsZW1lbnQuY3NzKCdiYWNrZ3JvdW5kQ29sb3InLCd3aGl0ZScpO30s
MTAwMCk7fSwnaHRtbFRvVGV4dCc6ZnVuY3Rpb24oaHRtbCl7aWYoaHRtbCBpbiBj
b250ZXh0Lmh0bWxUb1RleHRNYXApe3JldHVybiBjb250ZXh0Lmh0bWxUb1RleHRN
YXBbaHRtbF07fQp2YXIgb3JpZ0hUTUw9aHRtbDtodG1sPWh0bWwucmVwbGFjZSgv
XHI/XG4vZywiIikucmVwbGFjZSgvJm5ic3A7L2csIiAiKS5yZXBsYWNlKC9cPGJy
W15cPl0qXD5cPFwvcFw+L2dpLCc8L3A+JykucmVwbGFjZSgvXDxcL3BcPlxzKlw8
cFteXD5dKlw+L2dpLCJcbiIpLnJlcGxhY2UoL1w8YnJbXlw+XSpcPi9naSwiXG4i
KS5yZXBsYWNlKC9cPFwvcFw+KFxuKilcPHBbXlw+XSpcPi9naSwiJDFcbiIpLnJl
cGxhY2UoL1w8cFteXD5dKlw+PHBbXlw+XSpcPi9naSwnPHA+JykucmVwbGFjZSgv
XDxcL3BcPjxcL3BcPi9naSwnPC9wPicpO3ZhciBsZWFkaW5nPWh0bWwubWF0Y2go
L15ccyovKVswXTt2YXIgdHJhaWxpbmc9aHRtbC5tYXRjaCgvXHMqJC8pWzBdO2h0
bWw9aHRtbC5zdWJzdHIobGVhZGluZy5sZW5ndGgsaHRtbC5sZW5ndGgtbGVhZGlu
Zy5sZW5ndGgtdHJhaWxpbmcubGVuZ3RoKTt2YXIgJHByZT0kKCc8cHJlPicraHRt
bCsnPC9wcmU+Jyk7JHByZS5maW5kKCcud2lraUVkaXRvci1ub2luY2x1ZGUnKS5l
YWNoKGZ1bmN0aW9uKCl7JCh0aGlzKS5yZW1vdmUoKTt9KTskcHJlLmZpbmQoJy53
aWtpRWRpdG9yLXRhYicpLmVhY2goZnVuY3Rpb24oKXskKHRoaXMpLnRleHQoIlx0
Iik7fSk7JHByZS5maW5kKCdicicpLmVhY2goZnVuY3Rpb24oKXskKHRoaXMpLnJl
cGxhY2VXaXRoKCJcbiIpO30pOyRwcmUuZmluZCgncCcpLmVhY2goZnVuY3Rpb24o
KXt2YXIgdGV4dD0kKHRoaXMpLnRleHQoKTt2YXIgdD1uZXcgY29udGV4dC5mbi5y
YXdUcmF2ZXJzZXIodGhpcy5maXJzdENoaWxkLHRoaXMsJHByZS5nZXQoMCksdHJ1
ZSkucHJldigpO3doaWxlKHQmJnQubm9kZS5ub2RlTmFtZSE9JyN0ZXh0JyYmdC5u
b2RlLm5vZGVOYW1lIT0nQlInJiZ0Lm5vZGUubm9kZU5hbWUhPSdQJyl7dD10LnBy
ZXYoKTt9CmlmKHQpe3RleHQ9IlxuIit0ZXh0O30KdD1uZXcgY29udGV4dC5mbi5y
YXdUcmF2ZXJzZXIodGhpcy5sYXN0Q2hpbGQsdGhpcywkcHJlLmdldCgwKSx0cnVl
KS5uZXh0KCk7d2hpbGUodCYmdC5ub2RlLm5vZGVOYW1lIT0nI3RleHQnJiZ0Lm5v
ZGUubm9kZU5hbWUhPSdCUicmJnQubm9kZS5ub2RlTmFtZSE9J1AnKXt0PXQubmV4
dCgpO30KaWYodCYmIXQuaW5QJiZ0Lm5vZGUubm9kZU5hbWU9PScjdGV4dCcmJnQu
bm9kZS5ub2RlVmFsdWUuY2hhckF0KDApIT0nXG4nJiZ0Lm5vZGUubm9kZVZhbHVl
LmNoYXJBdCgwKSE9J1xyJyl7dGV4dCs9IlxuIjt9CiQodGhpcykudGV4dCh0ZXh0
KTt9KTt2YXIgcmV0dmFsO2lmKCQuYnJvd3Nlci5tc2llKXtyZXR2YWw9JCgnPHBy
ZT4nKyRwcmUuaHRtbCgpKyc8L3ByZT4nKS50ZXh0KCkucmVwbGFjZSgvXHIvZywn
XG4nKTt9ZWxzZXtyZXR2YWw9JHByZS50ZXh0KCk7fQpyZXR1cm4gY29udGV4dC5o
dG1sVG9UZXh0TWFwW29yaWdIVE1MXT1sZWFkaW5nK3JldHZhbCt0cmFpbGluZzt9
LCdiZWZvcmVTZWxlY3Rpb24nOmZ1bmN0aW9uKGNsYXNzbmFtZSxzdHJpY3Qpe2lm
KHR5cGVvZiBjbGFzc25hbWU9PSd1bmRlZmluZWQnKXtjbGFzc25hbWU9Jyc7fQp2
YXIgZT1udWxsLG9mZnNldD1udWxsO2lmKGNvbnRleHQuJGlmcmFtZVswXS5jb250
ZW50V2luZG93LmdldFNlbGVjdGlvbil7dmFyIHNlbGVjdGlvbj1jb250ZXh0LiRp
ZnJhbWVbMF0uY29udGVudFdpbmRvdy5nZXRTZWxlY3Rpb24oKTtpZihzZWxlY3Rp
b24uYmFzZU5vZGUhPT1udWxsKXtlPXNlbGVjdGlvbi5nZXRSYW5nZUF0KDApLnN0
YXJ0Q29udGFpbmVyO29mZnNldD1zZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKS5zdGFy
dE9mZnNldDt9ZWxzZXtyZXR1cm4gbnVsbDt9CnZhciBib2R5PWNvbnRleHQuJGlm
cmFtZVswXS5jb250ZW50V2luZG93LmRvY3VtZW50LmJvZHk7aWYoJC5icm93c2Vy
Lm9wZXJhJiZlPT1ib2R5JiZvZmZzZXQ9PTEpe3JldHVybiBudWxsO319CmlmKCFl
JiZjb250ZXh0LiRpZnJhbWVbMF0uY29udGVudFdpbmRvdy5kb2N1bWVudC5zZWxl
Y3Rpb24pe3ZhciByYW5nZT1jb250ZXh0LiRpZnJhbWVbMF0uY29udGVudFdpbmRv
dy5kb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKTt2YXIgcmFuZ2UyPWNv
bnRleHQuJGlmcmFtZVswXS5jb250ZW50V2luZG93LmRvY3VtZW50LmJvZHkuY3Jl
YXRlVGV4dFJhbmdlKCk7dHJ5e3JhbmdlMi5zZXRFbmRQb2ludCgnRW5kVG9TdGFy
dCcscmFuZ2UpO31jYXRjaChleCl7cmV0dXJuIG51bGw7fQp2YXIgc2Vla1Bvcz1j
b250ZXh0LmZuLmh0bWxUb1RleHQocmFuZ2UyLmh0bWxUZXh0KS5sZW5ndGg7dmFy
IG9mZnNldD1jb250ZXh0LmZuLmdldE9mZnNldChzZWVrUG9zKTtlPW9mZnNldD9v
ZmZzZXQubm9kZTpudWxsO29mZnNldD1vZmZzZXQ/b2Zmc2V0Lm9mZnNldDpudWxs
O2lmKCFlKXtyZXR1cm4gbnVsbDt9fQppZihlLm5vZGVOYW1lIT0nI3RleHQnKXt2
YXIgbmV3RT1lLmZpcnN0Q2hpbGQ7Zm9yKHZhciBpPTA7aTxvZmZzZXQtMSYmbmV3
RTtpKyspe25ld0U9bmV3RS5uZXh0U2libGluZzt9CndoaWxlKG5ld0UmJm5ld0Uu
bGFzdENoaWxkKXtuZXdFPW5ld0UubGFzdENoaWxkO30KZT1uZXdFfHxlO30KdmFy
IGNsYXNzU3RyPScgJytjbGFzc25hbWUrJyAnO3doaWxlKGUpe2lmKCFzdHJpY3Qm
JighY2xhc3NuYW1lfHwoJyAnK2UuY2xhc3NOYW1lKycgJykuaW5kZXhPZihjbGFz
c1N0cikhPS0xKSl7cmV0dXJuICQoZSk7fQp2YXIgbmV4dD1lLnByZXZpb3VzU2li
bGluZzt3aGlsZShuZXh0JiZuZXh0Lmxhc3RDaGlsZCl7bmV4dD1uZXh0Lmxhc3RD
aGlsZDt9CmU9bmV4dHx8ZS5wYXJlbnROb2RlO3N0cmljdD1mYWxzZTt9CnJldHVy
biAkKFtdKTt9LCdyYXdUcmF2ZXJzZXInOmZ1bmN0aW9uKG5vZGUsaW5QLGFuY2Vz
dG9yLHNraXBOb2luY2x1ZGUpe3RoaXMubm9kZT1ub2RlO3RoaXMuaW5QPWluUDt0
aGlzLmFuY2VzdG9yPWFuY2VzdG9yO3RoaXMuc2tpcE5vaW5jbHVkZT1za2lwTm9p
bmNsdWRlO3RoaXMubmV4dD1mdW5jdGlvbigpe3ZhciBwPXRoaXMubm9kZTt2YXIg
bmV4dEluUD10aGlzLmluUDt3aGlsZShwJiYhcC5uZXh0U2libGluZyl7cD1wLnBh
cmVudE5vZGU7aWYocD09dGhpcy5hbmNlc3Rvcil7cD1udWxsO30KaWYocCYmcC5u
b2RlTmFtZT09IlAiKXtuZXh0SW5QPW51bGw7fX0KcD1wP3AubmV4dFNpYmxpbmc6
bnVsbDtpZihwJiZwLm5vZGVOYW1lPT0iUCIpe25leHRJblA9cDt9CmRve2lmKHRo
aXMuc2tpcE5vaW5jbHVkZSl7d2hpbGUocCYmKCcgJytwLmNsYXNzTmFtZSsnICcp
LmluZGV4T2YoJyB3aWtpRWRpdG9yLW5vaW5jbHVkZSAnKSE9LTEpe3A9cC5uZXh0
U2libGluZzt9fQppZihwJiZwLmZpcnN0Q2hpbGQpe3A9cC5maXJzdENoaWxkO2lm
KHAubm9kZU5hbWU9PSJQIil7bmV4dEluUD1wO319fXdoaWxlKHAmJnAuZmlyc3RD
aGlsZCk7cmV0dXJuIHA/eydub2RlJzpwLCdpblAnOm5leHRJblAsJ2FuY2VzdG9y
Jzp0aGlzLmFuY2VzdG9yLCdza2lwTm9pbmNsdWRlJzp0aGlzLnNraXBOb2luY2x1
ZGUsJ25leHQnOnRoaXMubmV4dCwncHJldic6dGhpcy5wcmV2fTpudWxsO307dGhp
cy5wcmV2PWZ1bmN0aW9uKCl7dmFyIHA9dGhpcy5ub2RlO3ZhciBwcmV2SW5QPXRo
aXMuaW5QO3doaWxlKHAmJiFwLnByZXZpb3VzU2libGluZyl7cD1wLnBhcmVudE5v
ZGU7aWYocD09dGhpcy5hbmNlc3Rvcil7cD1udWxsO30KaWYocCYmcC5ub2RlTmFt
ZT09IlAiKXtwcmV2SW5QPW51bGw7fX0KcD1wP3AucHJldmlvdXNTaWJsaW5nOm51
bGw7aWYocCYmcC5ub2RlTmFtZT09IlAiKXtwcmV2SW5QPXA7fQpkb3tpZih0aGlz
LnNraXBOb2luY2x1ZGUpe3doaWxlKHAmJignICcrcC5jbGFzc05hbWUrJyAnKS5p
bmRleE9mKCcgd2lraUVkaXRvci1ub2luY2x1ZGUgJykhPS0xKXtwPXAucHJldmlv
dXNTaWJsaW5nO319CmlmKHAmJnAubGFzdENoaWxkKXtwPXAubGFzdENoaWxkO2lm
KHAubm9kZU5hbWU9PSJQIil7cHJldkluUD1wO319fXdoaWxlKHAmJnAubGFzdENo
aWxkKTtyZXR1cm4gcD97J25vZGUnOnAsJ2luUCc6cHJldkluUCwnYW5jZXN0b3In
OnRoaXMuYW5jZXN0b3IsJ3NraXBOb2luY2x1ZGUnOnRoaXMuc2tpcE5vaW5jbHVk
ZSwnbmV4dCc6dGhpcy5uZXh0LCdwcmV2Jzp0aGlzLnByZXZ9Om51bGw7fTt9LCd0
cmF2ZXJzZXInOmZ1bmN0aW9uKHN0YXJ0KXt2YXIgc3RhcnROb2RlPXN0YXJ0Lmpx
dWVyeT9zdGFydC5nZXQoMCk6c3RhcnQ7dmFyIG5vZGU9c3RhcnROb2RlO3ZhciBp
blA9bm9kZS5ub2RlTmFtZT09IlAiP25vZGU6bnVsbDtkb3t3aGlsZShub2RlJiYo
JyAnK25vZGUuY2xhc3NOYW1lKycgJykuaW5kZXhPZignIHdpa2lFZGl0b3Itbm9p
bmNsdWRlICcpIT0tMSl7bm9kZT1ub2RlLm5leHRTaWJsaW5nO30KaWYobm9kZSYm
bm9kZS5maXJzdENoaWxkKXtub2RlPW5vZGUuZmlyc3RDaGlsZDtpZihub2RlLm5v
ZGVOYW1lPT0iUCIpe2luUD1ub2RlO319fXdoaWxlKG5vZGUmJm5vZGUuZmlyc3RD
aGlsZCk7cmV0dXJuIG5ldyBjb250ZXh0LmZuLnJhd1RyYXZlcnNlcihub2RlLGlu
UCxzdGFydE5vZGUsdHJ1ZSk7fSwnZ2V0T2Zmc2V0JzpmdW5jdGlvbihvZmZzZXQp
e2lmKCFjb250ZXh0Lm9mZnNldHMpe2NvbnRleHQuZm4ucmVmcmVzaE9mZnNldHMo
KTt9CmlmKG9mZnNldCBpbiBjb250ZXh0Lm9mZnNldHMpe3JldHVybiBjb250ZXh0
Lm9mZnNldHNbb2Zmc2V0XTt9CnZhciBsb3dlckJvdW5kPS0xO2Zvcih2YXIgbyBp
biBjb250ZXh0Lm9mZnNldHMpe3ZhciByZWFsTz1wYXJzZUludChvKTtpZihyZWFs
TzxvZmZzZXQmJnJlYWxPPmxvd2VyQm91bmQpe2xvd2VyQm91bmQ9cmVhbE87fX0K
aWYoIShsb3dlckJvdW5kIGluIGNvbnRleHQub2Zmc2V0cykpe3JldHVybiBudWxs
O30KdmFyIGJhc2U9Y29udGV4dC5vZmZzZXRzW2xvd2VyQm91bmRdO3JldHVybiBj
b250ZXh0Lm9mZnNldHNbb2Zmc2V0XT17J25vZGUnOmJhc2Uubm9kZSwnb2Zmc2V0
JzpiYXNlLm9mZnNldCtvZmZzZXQtbG93ZXJCb3VuZCwnbGVuZ3RoJzpiYXNlLmxl
bmd0aCwnbGFzdFRleHROb2RlJzpiYXNlLmxhc3RUZXh0Tm9kZX07fSwncHVyZ2VP
ZmZzZXRzJzpmdW5jdGlvbigpe2NvbnRleHQub2Zmc2V0cz1udWxsO30sJ3JlZnJl
c2hPZmZzZXRzJzpmdW5jdGlvbigpe2NvbnRleHQub2Zmc2V0cz1bXTt2YXIgdD1j
b250ZXh0LmZuLnRyYXZlcnNlcihjb250ZXh0LiRjb250ZW50KTt2YXIgcG9zPTAs
bGFzdFRleHROb2RlPW51bGw7d2hpbGUodCl7aWYodC5ub2RlLm5vZGVOYW1lIT0n
I3RleHQnJiZ0Lm5vZGUubm9kZU5hbWUhPSdCUicpe3Q9dC5uZXh0KCk7Y29udGlu
dWU7fQp2YXIgbmV4dFBvcz10Lm5vZGUubm9kZU5hbWU9PScjdGV4dCc/cG9zK3Qu
bm9kZS5ub2RlVmFsdWUubGVuZ3RoOnBvcysxO3ZhciBuZXh0VD10Lm5leHQoKTt2
YXIgbGVhdmluZ1A9dC5ub2RlLm5vZGVOYW1lPT0nI3RleHQnJiZ0LmluUCYmbmV4
dFQmJighbmV4dFQuaW5QfHxuZXh0VC5pblAhPXQuaW5QKTtjb250ZXh0Lm9mZnNl
dHNbcG9zXT17J25vZGUnOnQubm9kZSwnb2Zmc2V0JzowLCdsZW5ndGgnOm5leHRQ
b3MtcG9zKyhsZWF2aW5nUD8xOjApLCdsYXN0VGV4dE5vZGUnOmxhc3RUZXh0Tm9k
ZX07aWYobGVhdmluZ1Ape2NvbnRleHQub2Zmc2V0c1tuZXh0UG9zXT17J25vZGUn
OnQubm9kZSwnb2Zmc2V0JzpuZXh0UG9zLXBvcywnbGVuZ3RoJzpuZXh0UG9zLXBv
cysxLCdsYXN0VGV4dE5vZGUnOmxhc3RUZXh0Tm9kZX07fQpwb3M9bmV4dFBvcyso
bGVhdmluZ1A/MTowKTtpZih0Lm5vZGUubm9kZU5hbWU9PScjdGV4dCcpe2xhc3RU
ZXh0Tm9kZT10Lm5vZGU7fQp0PW5leHRUO319LCdzYXZlU2VsZWN0aW9uJzpmdW5j
dGlvbigpe2lmKCEkLmJyb3dzZXIubXNpZSl7cmV0dXJuO30KaWYodHlwZW9mIGNv
bnRleHQuJGlmcmFtZSE9J3VuZGVmaW5lZCcpe2NvbnRleHQuJGlmcmFtZVswXS5j
b250ZW50V2luZG93LmZvY3VzKCk7Y29udGV4dC5zYXZlZFNlbGVjdGlvbj1jb250
ZXh0LiRpZnJhbWVbMF0uY29udGVudFdpbmRvdy5kb2N1bWVudC5zZWxlY3Rpb24u
Y3JlYXRlUmFuZ2UoKTt9ZWxzZXtjb250ZXh0LiR0ZXh0YXJlYS5mb2N1cygpO2Nv
bnRleHQuc2F2ZWRTZWxlY3Rpb249ZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJh
bmdlKCk7fX0sJ3Jlc3RvcmVTZWxlY3Rpb24nOmZ1bmN0aW9uKCl7aWYoISQuYnJv
d3Nlci5tc2llfHxjb250ZXh0LnNhdmVkU2VsZWN0aW9uPT09bnVsbCl7cmV0dXJu
O30KaWYodHlwZW9mIGNvbnRleHQuJGlmcmFtZSE9J3VuZGVmaW5lZCcpe2NvbnRl
eHQuJGlmcmFtZVswXS5jb250ZW50V2luZG93LmZvY3VzKCk7fWVsc2V7Y29udGV4
dC4kdGV4dGFyZWEuZm9jdXMoKTt9CmNvbnRleHQuc2F2ZWRTZWxlY3Rpb24uc2Vs
ZWN0KCk7Y29udGV4dC5zYXZlZFNlbGVjdGlvbj1udWxsO30sJ3VwZGF0ZUhpc3Rv
cnknOmZ1bmN0aW9uKGh0bWxDaGFuZ2Upe3ZhciBuZXdIVE1MPWNvbnRleHQuJGNv
bnRlbnQuaHRtbCgpO3ZhciBuZXdTZWw9Y29udGV4dC5mbi5nZXRDYXJldFBvc2l0
aW9uKCk7aWYoY29udGV4dC5oaXN0b3J5Lmxlbmd0aD09MHx8KGh0bWxDaGFuZ2Um
JmNvbnRleHQub2xkRGVsYXllZEhpc3RvcnlQb3NpdGlvbj09Y29udGV4dC5oaXN0
b3J5UG9zaXRpb24pKXtjb250ZXh0Lm9sZERlbGF5ZWRTZWw9bmV3U2VsO2lmKGNv
bnRleHQuaGlzdG9yeVBvc2l0aW9uPC0xKXtjb250ZXh0Lmhpc3Rvcnkuc3BsaWNl
KGNvbnRleHQuaGlzdG9yeS5sZW5ndGgrY29udGV4dC5oaXN0b3J5UG9zaXRpb24r
MSk7Y29udGV4dC5oaXN0b3J5UG9zaXRpb249LTE7fQpjb250ZXh0Lmhpc3Rvcnku
cHVzaCh7J2h0bWwnOm5ld0hUTUwsJ3NlbCc6bmV3U2VsfSk7d2hpbGUoY29udGV4
dC5oaXN0b3J5Lmxlbmd0aD4xMCl7Y29udGV4dC5oaXN0b3J5LnNoaWZ0KCk7fX1l
bHNlIGlmKGNvbnRleHQub2xkRGVsYXllZFNlbCE9bmV3U2VsKXtjb250ZXh0Lm9s
ZERlbGF5ZWRTZWw9bmV3U2VsO2NvbnRleHQuaGlzdG9yeVtjb250ZXh0Lmhpc3Rv
cnkubGVuZ3RoK2NvbnRleHQuaGlzdG9yeVBvc2l0aW9uXS5zZWw9bmV3U2VsO30K
Y29udGV4dC5vbGREZWxheWVkSGlzdG9yeVBvc2l0aW9uPWNvbnRleHQuaGlzdG9y
eVBvc2l0aW9uO30sJ3NldHVwSWZyYW1lJzpmdW5jdGlvbigpe2NvbnRleHQuJGlm
cmFtZT0kKCc8aWZyYW1lPjwvaWZyYW1lPicpLmF0dHIoeydmcmFtZUJvcmRlcic6
MCwnYm9yZGVyJzowLCd0YWJpbmRleCc6MSwnc3JjJzp3Z1NjcmlwdFBhdGgrJy9l
eHRlbnNpb25zL1VzYWJpbGl0eUluaXRpYXRpdmUvanMvcGx1Z2lucy9qcXVlcnku
d2lraUVkaXRvci5odG1sPycrJ2luc3RhbmNlPScrY29udGV4dC5pbnN0YW5jZSsn
JnRzPScrKG5ldyBEYXRlKCkpLmdldFRpbWUoKSsnJmlzPWNvbnRlbnQnLCdpZCc6
J3dpa2lFZGl0b3ItaWZyYW1lLScrY29udGV4dC5pbnN0YW5jZX0pLmNzcyh7J2Jh
Y2tncm91bmRDb2xvcic6J3doaXRlJywnd2lkdGgnOicxMDAlJywnaGVpZ2h0Jzpj
b250ZXh0LiR0ZXh0YXJlYS5oZWlnaHQoKSwnZGlzcGxheSc6J25vbmUnLCdvdmVy
Zmxvdy15Jzonc2Nyb2xsJywnb3ZlcmZsb3cteCc6J2hpZGRlbid9KS5pbnNlcnRB
ZnRlcihjb250ZXh0LiR0ZXh0YXJlYSkubG9hZChmdW5jdGlvbigpe2lmKCF0aGlz
LmlzU2Vjb25kUnVuKXtjb250ZXh0LiRpZnJhbWVbMF0uY29udGVudFdpbmRvdy5k
b2N1bWVudC5kZXNpZ25Nb2RlPSdvbic7aWYoJC5icm93c2VyLm1zaWUpe3RoaXMu
aXNTZWNvbmRSdW49dHJ1ZTtyZXR1cm47fX0KY29udGV4dC4kY29udGVudD0kKGNv
bnRleHQuJGlmcmFtZVswXS5jb250ZW50V2luZG93LmRvY3VtZW50LmJvZHkpO2Zv
cihtb2R1bGUgaW4gY29udGV4dC5tb2R1bGVzKXtjb250ZXh0LiRjb250ZW50LmFk
ZENsYXNzKCd3aWtpRWRpdG9yLScrbW9kdWxlKTt9CnZhciBodG1sPWNvbnRleHQu
JHRleHRhcmVhLnZhbCgpLnJlcGxhY2UoLyZlc2M7L2csJyZlc2M7ZXNjOycpLnJl
cGxhY2UoL1w8cFw+L2csJyZlc2M7Jmx0O3AmZ3Q7JykucmVwbGFjZSgvXDxcL3Bc
Pi9nLCcmZXNjOyZsdDsvcCZndDsnKS5yZXBsYWNlKC9cPHNwYW4gY2xhc3M9Indp
a2lFZGl0b3ItdGFiIlw+XDxcL3NwYW5cPi9nLCcmZXNjOyZsdDtzcGFuJm5ic3A7
Y2xhc3M9JnF1b3Q7d2lraUVkaXRvci10YWImcXVvdDsmZ3Q7Jmx0Oy9zcGFuJmd0
OycpLnJlcGxhY2UoLyZuYnNwOy9nLCcmZXNjOyZhbXA7bmJzcDsnKTtpZigkLmJy
b3dzZXIubXNpZSl7aHRtbD1odG1sLnJlcGxhY2UoL1x0L2csJzxzcGFuIGNsYXNz
PSJ3aWtpRWRpdG9yLXRhYiI+PC9zcGFuPicpO2lmKCQuYnJvd3Nlci52ZXJzaW9u
TnVtYmVyPD03KXtodG1sPWh0bWwucmVwbGFjZSgvIC9nLCImbmJzcDsiKTt9ZWxz
ZXtodG1sPWh0bWwucmVwbGFjZSgvKF58XG4pIC9nLCIkMSZuYnNwOyIpO319Cmh0
bWw9JCgnPGRpdiAvPicpLnRleHQoJzxwPicraHRtbC5yZXBsYWNlKC9ccj9cbi9n
LCc8L3A+PHA+JykrJzwvcD4nKS5odG1sKCkucmVwbGFjZSgvJmFtcDtuYnNwOy9n
LCcmbmJzcDsnKS5yZXBsYWNlKC8mbHQ7cCZndDsvZywnPHA+JykucmVwbGFjZSgv
Jmx0O1wvcCZndDsvZywnPC9wPicpLnJlcGxhY2UoLyZsdDtzcGFuKCB8Jm5ic3A7
KWNsYXNzPSgifCZxdW90Oyl3aWtpRWRpdG9yLXRhYigifCZxdW90OykmZ3Q7Jmx0
O1wvc3BhbiZndDsvZywnPHNwYW4gY2xhc3M9Indpa2lFZGl0b3ItdGFiIj48L3Nw
YW4+JykucmVwbGFjZSgvPHA+PFwvcD4vZywnPHA+PGJyPjwvcD4nKS5yZXBsYWNl
KC8mYW1wO2VzYzsmYW1wO2FtcDtuYnNwOy9nLCcmYW1wO25ic3A7JykucmVwbGFj
ZSgvJmFtcDtlc2M7JmFtcDtsdDtwJmFtcDtndDsvZywnJmx0O3AmZ3Q7JykucmVw
bGFjZSgvJmFtcDtlc2M7JmFtcDtsdDtcL3AmYW1wO2d0Oy9nLCcmbHQ7L3AmZ3Q7
JykucmVwbGFjZSgvJmFtcDtlc2M7JmFtcDtsdDtzcGFuJmFtcDtuYnNwO2NsYXNz
PSZhbXA7cXVvdDt3aWtpRWRpdG9yLXRhYiZhbXA7cXVvdDsmYW1wO2d0OyZhbXA7
bHQ7XC9zcGFuJmFtcDtndDsvZywnJmx0O3NwYW4gY2xhc3M9Indpa2lFZGl0b3It
dGFiIiZndDsmbHQ7XC9zcGFuJmd0OycpLnJlcGxhY2UoLyZhbXA7ZXNjO2VzYzsv
ZywnJmFtcDtlc2M7Jyk7Y29udGV4dC4kY29udGVudC5odG1sKGh0bWwpO2lmKCQo
J2JvZHknKS5pcygnLnJ0bCcpKXtjb250ZXh0LiRjb250ZW50LmFkZENsYXNzKCdy
dGwnKS5hdHRyKCdkaXInLCdydGwnKTt9CmNvbnRleHQuJHRleHRhcmVhLmF0dHIo
J2Rpc2FibGVkJyx0cnVlKTtjb250ZXh0LiR0ZXh0YXJlYS5oaWRlKCk7Y29udGV4
dC4kaWZyYW1lLnNob3coKTtjb250ZXh0LmZuLnRyaWdnZXIoJ3JlYWR5Jyk7Y29u
dGV4dC5vbGRIVE1MPWNvbnRleHQub2xkRGVsYXllZEhUTUw9Y29udGV4dC4kY29u
dGVudC5odG1sKCk7JChjb250ZXh0LiRpZnJhbWVbMF0uY29udGVudFdpbmRvdy5k
b2N1bWVudCkuYmluZCgna2V5ZG93bicsZnVuY3Rpb24oZXZlbnQpe2V2ZW50LmpR
dWVyeU5vZGU9Y29udGV4dC5mbi5nZXRFbGVtZW50QXRDdXJzb3IoKTtyZXR1cm4g
Y29udGV4dC5mbi50cmlnZ2VyKCdrZXlkb3duJyxldmVudCk7fSkuYmluZCgna2V5
dXAnLGZ1bmN0aW9uKGV2ZW50KXtldmVudC5qUXVlcnlOb2RlPWNvbnRleHQuZm4u
Z2V0RWxlbWVudEF0Q3Vyc29yKCk7cmV0dXJuIGNvbnRleHQuZm4udHJpZ2dlcign
a2V5dXAnLGV2ZW50KTt9KS5iaW5kKCdrZXlwcmVzcycsZnVuY3Rpb24oZXZlbnQp
e2V2ZW50LmpRdWVyeU5vZGU9Y29udGV4dC5mbi5nZXRFbGVtZW50QXRDdXJzb3Io
KTtyZXR1cm4gY29udGV4dC5mbi50cmlnZ2VyKCdrZXlwcmVzcycsZXZlbnQpO30p
LmJpbmQoJ3Bhc3RlJyxmdW5jdGlvbihldmVudCl7cmV0dXJuIGNvbnRleHQuZm4u
dHJpZ2dlcigncGFzdGUnLGV2ZW50KTt9KS5iaW5kKCdjdXQnLGZ1bmN0aW9uKGV2
ZW50KXtyZXR1cm4gY29udGV4dC5mbi50cmlnZ2VyKCdjdXQnLGV2ZW50KTt9KS5i
aW5kKCdrZXl1cCBwYXN0ZSBtb3VzZXVwIGN1dCBlbmNhcHN1bGF0ZVNlbGVjdGlv
bicsZnVuY3Rpb24oZXZlbnQpe3JldHVybiBjb250ZXh0LmZuLnRyaWdnZXIoJ2No
YW5nZScsZXZlbnQpO30pLmRlbGF5ZWRCaW5kKDI1MCwna2V5dXAgcGFzdGUgbW91
c2V1cCBjdXQgZW5jYXBzdWxhdGVTZWxlY3Rpb24nLGZ1bmN0aW9uKGV2ZW50KXtj
b250ZXh0LmZuLnRyaWdnZXIoJ2RlbGF5ZWRDaGFuZ2UnLGV2ZW50KTt9KTt9KTtj
b250ZXh0LiR0ZXh0YXJlYS5jbG9zZXN0KCdmb3JtJykuc3VibWl0KGZ1bmN0aW9u
KCl7Y29udGV4dC4kdGV4dGFyZWEuYXR0cignZGlzYWJsZWQnLGZhbHNlKTtjb250
ZXh0LiR0ZXh0YXJlYS52YWwoY29udGV4dC4kdGV4dGFyZWEudGV4dFNlbGVjdGlv
bignZ2V0Q29udGVudHMnKSk7fSk7Y29udGV4dC5mYWxsYmFja1dpbmRvd09uQmVm
b3JlVW5sb2FkPXdpbmRvdy5vbmJlZm9yZXVubG9hZDt3aW5kb3cub25iZWZvcmV1
bmxvYWQ9ZnVuY3Rpb24oKXtjb250ZXh0LiR0ZXh0YXJlYS52YWwoY29udGV4dC4k
dGV4dGFyZWEudGV4dFNlbGVjdGlvbignZ2V0Q29udGVudHMnKSk7aWYoY29udGV4
dC5mYWxsYmFja1dpbmRvd09uQmVmb3JlVW5sb2FkKXtyZXR1cm4gY29udGV4dC5m
YWxsYmFja1dpbmRvd09uQmVmb3JlVW5sb2FkKCk7fX07fSwnZ2V0RWxlbWVudEF0
Q3Vyc29yJzpmdW5jdGlvbigpe2lmKGNvbnRleHQuJGlmcmFtZVswXS5jb250ZW50
V2luZG93LmdldFNlbGVjdGlvbil7dmFyIHNlbGVjdGlvbj1jb250ZXh0LiRpZnJh
bWVbMF0uY29udGVudFdpbmRvdy5nZXRTZWxlY3Rpb24oKTtpZihzZWxlY3Rpb24u
cmFuZ2VDb3VudD09MCl7cmV0dXJuICQoW10pO30KdmFyIHNjPXNlbGVjdGlvbi5n
ZXRSYW5nZUF0KDApLnN0YXJ0Q29udGFpbmVyO2lmKHNjLm5vZGVOYW1lPT0iI3Rl
eHQiKXNjPXNjLnBhcmVudE5vZGU7cmV0dXJuICQoc2MpO31lbHNlIGlmKGNvbnRl
eHQuJGlmcmFtZVswXS5jb250ZW50V2luZG93LmRvY3VtZW50LnNlbGVjdGlvbil7
dmFyIHNlbGVjdGlvbj1jb250ZXh0LiRpZnJhbWVbMF0uY29udGVudFdpbmRvdy5k
b2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKTtyZXR1cm4gJChzZWxlY3Rp
b24ucGFyZW50RWxlbWVudCgpKTt9fSwnZ2V0Q29udGVudHMnOmZ1bmN0aW9uKCl7
dmFyIGh0bWw7aWYoJC5icm93c2VyLm1zaWUpe3ZhciAkYz0kKGNvbnRleHQuJGNv
bnRlbnQuZ2V0KDApLmNsb25lTm9kZSh0cnVlKSk7JGMuZmluZCgncCcpLmVhY2go
ZnVuY3Rpb24oKXtpZigkKHRoaXMpLmh0bWwoKT09JycpeyQodGhpcykucmVwbGFj
ZVdpdGgoJzxwPjwvcD4nKTt9fSk7aHRtbD0kYy5odG1sKCk7fWVsc2V7aHRtbD1j
b250ZXh0LiRjb250ZW50Lmh0bWwoKTt9CnJldHVybiBjb250ZXh0LmZuLmh0bWxU
b1RleHQoaHRtbCk7fSwnZ2V0U2VsZWN0aW9uJzpmdW5jdGlvbigpe3ZhciByZXR2
YWw7aWYoY29udGV4dC4kaWZyYW1lWzBdLmNvbnRlbnRXaW5kb3cuZ2V0U2VsZWN0
aW9uKXtyZXR2YWw9Y29udGV4dC4kaWZyYW1lWzBdLmNvbnRlbnRXaW5kb3cuZ2V0
U2VsZWN0aW9uKCk7aWYoJC5icm93c2VyLm9wZXJhKXtpZihyZXR2YWwucmFuZ2VD
b3VudD4wKXtyZXR2YWw9Y29udGV4dC5mbi5odG1sVG9UZXh0KCQoJzxwcmUgLz4n
KS5hcHBlbmQocmV0dmFsLmdldFJhbmdlQXQoMCkuY2xvbmVDb250ZW50cygpKS5o
dG1sKCkpO31lbHNle3JldHZhbD0nJzt9fX1lbHNlIGlmKGNvbnRleHQuJGlmcmFt
ZVswXS5jb250ZW50V2luZG93LmRvY3VtZW50LnNlbGVjdGlvbil7cmV0dmFsPWNv
bnRleHQuJGlmcmFtZVswXS5jb250ZW50V2luZG93LmRvY3VtZW50LnNlbGVjdGlv
bi5jcmVhdGVSYW5nZSgpO30KaWYodHlwZW9mIHJldHZhbC50ZXh0IT0ndW5kZWZp
bmVkJyl7cmV0dmFsPWNvbnRleHQuZm4uaHRtbFRvVGV4dChyZXR2YWwuaHRtbFRl
eHQpO31lbHNlIGlmKHR5cGVvZiByZXR2YWwudG9TdHJpbmchPSd1bmRlZmluZWQn
KXtyZXR2YWw9cmV0dmFsLnRvU3RyaW5nKCk7fQpyZXR1cm4gcmV0dmFsO30sJ2Vu
Y2Fwc3VsYXRlU2VsZWN0aW9uJzpmdW5jdGlvbihvcHRpb25zKXt2YXIgc2VsVGV4
dD0kKHRoaXMpLnRleHRTZWxlY3Rpb24oJ2dldFNlbGVjdGlvbicpO3ZhciBzZWxU
ZXh0QXJyO3ZhciBjb2xsYXBzZVRvRW5kPWZhbHNlO3ZhciBzZWxlY3RBZnRlcj1m
YWxzZTt2YXIgc2V0U2VsZWN0aW9uVG89bnVsbDt2YXIgcHJlPW9wdGlvbnMucHJl
LHBvc3Q9b3B0aW9ucy5wb3N0O2lmKCFzZWxUZXh0KXtzZWxUZXh0PW9wdGlvbnMu
cGVyaTtzZWxlY3RBZnRlcj10cnVlO31lbHNlIGlmKG9wdGlvbnMucGVyaT09c2Vs
VGV4dC5yZXBsYWNlKC9ccyskLywnJykpe3NlbFRleHQ9c2VsVGV4dC5yZXBsYWNl
KC9ccyskLywnJyk7Y29sbGFwc2VUb0VuZD10cnVlO3NlbGVjdEFmdGVyPXRydWU7
fWVsc2UgaWYob3B0aW9ucy5yZXBsYWNlKXtzZWxUZXh0PW9wdGlvbnMucGVyaTt9
ZWxzZSBpZihzZWxUZXh0LmNoYXJBdChzZWxUZXh0Lmxlbmd0aC0xKT09JyAnKXtz
ZWxUZXh0PXNlbFRleHQuc3Vic3RyaW5nKDAsc2VsVGV4dC5sZW5ndGgtMSk7cG9z
dCs9JyAnO30KaWYob3B0aW9ucy5zcGxpdGxpbmVzKXtzZWxUZXh0QXJyPXNlbFRl
eHQuc3BsaXQoL1xuLyk7fQppZihjb250ZXh0LiRpZnJhbWVbMF0uY29udGVudFdp
bmRvdy5nZXRTZWxlY3Rpb24pe3ZhciByYW5nZT1jb250ZXh0LiRpZnJhbWVbMF0u
Y29udGVudFdpbmRvdy5nZXRTZWxlY3Rpb24oKS5nZXRSYW5nZUF0KDApO2lmKGNv
bGxhcHNlVG9FbmQpe2lmKHJhbmdlLmVuZENvbnRhaW5lci5ub2RlTmFtZT09J0JS
Jyl7cmFuZ2Uuc2V0RW5kQmVmb3JlKHJhbmdlLmVuZENvbnRhaW5lcik7fQpyYW5n
ZS5jb2xsYXBzZShmYWxzZSk7fQppZihvcHRpb25zLm93bmxpbmUpe3ZhciBhdFN0
YXJ0PWZhbHNlLGF0RW5kPWZhbHNlO3ZhciBib2R5PWNvbnRleHQuJGNvbnRlbnQu
Z2V0KDApO2lmKHJhbmdlLnN0YXJ0T2Zmc2V0PT0wKXthdFN0YXJ0PXRydWU7fWVs
c2UgaWYocmFuZ2Uuc3RhcnRDb250YWluZXI9PWJvZHkpe3ZhciBuPWJvZHkuZmly
c3RDaGlsZDtmb3IodmFyIGk9MDtpPHJhbmdlLnN0YXJ0T2Zmc2V0LTEmJm47aSsr
KXtuPW4ubmV4dFNpYmxpbmc7fQppZihuJiZuLm5vZGVOYW1lPT0nQlInKXthdFN0
YXJ0PXRydWU7fWVsc2V7YXRFbmQ9dHJ1ZTt9fQppZigocmFuZ2UuZW5kT2Zmc2V0
PT0wJiZyYW5nZS5lbmRDb250YWluZXIubm9kZVZhbHVlPT1udWxsKXx8KHJhbmdl
LmVuZENvbnRhaW5lci5ub2RlTmFtZT09JyN0ZXh0JyYmcmFuZ2UuZW5kT2Zmc2V0
PT1yYW5nZS5lbmRDb250YWluZXIubm9kZVZhbHVlLmxlbmd0aCl8fChyYW5nZS5l
bmRDb250YWluZXIubm9kZU5hbWU9PSdQJyYmcmFuZ2UuZW5kQ29udGFpbmVyLm5v
ZGVWYWx1ZT09bnVsbCkpe2F0RW5kPXRydWU7fQppZighYXRTdGFydCl7cHJlPSJc
biIrb3B0aW9ucy5wcmU7fQppZighYXRFbmQpe3Bvc3QrPSJcbiI7fX0KdmFyIGlu
c2VydFRleHQ9IiI7aWYob3B0aW9ucy5zcGxpdGxpbmVzKXtmb3IodmFyIGo9MDtq
PHNlbFRleHRBcnIubGVuZ3RoO2orKyl7aW5zZXJ0VGV4dD1pbnNlcnRUZXh0K3By
ZStzZWxUZXh0QXJyW2pdK3Bvc3Q7aWYoaiE9c2VsVGV4dEFyci5sZW5ndGgtMSl7
aW5zZXJ0VGV4dCs9IlxuIjt9fX1lbHNle2luc2VydFRleHQ9cHJlK3NlbFRleHQr
cG9zdDt9CnZhciBpbnNlcnRMaW5lcz1pbnNlcnRUZXh0LnNwbGl0KCJcbiIpO3Jh
bmdlLmV4dHJhY3RDb250ZW50cygpO3ZhciBmaXJzdE5vZGU9bnVsbCxsYXN0Tm9k
ZT1udWxsO3ZhciBzZWxTQz1udWxsLHNlbEVDPW51bGwsc2VsU089bnVsbCxzZWxF
Tz1udWxsLG9mZnNldD0wO2Zvcih2YXIgaT1pbnNlcnRMaW5lcy5sZW5ndGgtMTtp
Pj0wO2ktLSl7Zmlyc3ROb2RlPWNvbnRleHQuJGlmcmFtZVswXS5jb250ZW50V2lu
ZG93LmRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGluc2VydExpbmVzW2ldKTtyYW5n
ZS5pbnNlcnROb2RlKGZpcnN0Tm9kZSk7bGFzdE5vZGU9bGFzdE5vZGV8fGZpcnN0
Tm9kZTt2YXIgbmV3T2Zmc2V0PW9mZnNldCtpbnNlcnRMaW5lc1tpXS5sZW5ndGg7
aWYoIXNlbEVDJiZwb3N0Lmxlbmd0aDw9bmV3T2Zmc2V0KXtzZWxFQz1maXJzdE5v
ZGU7c2VsRU89c2VsRUMubm9kZVZhbHVlLmxlbmd0aC0ocG9zdC5sZW5ndGgtb2Zm
c2V0KTt9CmlmKHNlbEVDJiYhc2VsU0MmJnByZS5sZW5ndGg+PWluc2VydFRleHQu
bGVuZ3RoLW5ld09mZnNldCl7c2VsU0M9Zmlyc3ROb2RlO3NlbFNPPXByZS5sZW5n
dGgtKGluc2VydFRleHQubGVuZ3RoLW5ld09mZnNldCk7fQpvZmZzZXQ9bmV3T2Zm
c2V0O2lmKGk+MCl7Zmlyc3ROb2RlPWNvbnRleHQuJGlmcmFtZVswXS5jb250ZW50
V2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2JyJyk7cmFuZ2UuaW5zZXJ0
Tm9kZShmaXJzdE5vZGUpO25ld09mZnNldD1vZmZzZXQrMTtpZighc2VsRUMmJnBv
c3QubGVuZ3RoPD1uZXdPZmZzZXQpe3NlbEVDPWZpcnN0Tm9kZTtzZWxFTz0xLShw
b3N0Lmxlbmd0aC1vZmZzZXQpO30KaWYoc2VsRUMmJiFzZWxTQyYmcHJlLmxlbmd0
aD49aW5zZXJ0VGV4dC5sZW5ndGgtbmV3T2Zmc2V0KXtzZWxTQz1maXJzdE5vZGU7
c2VsU089cHJlLmxlbmd0aC0oaW5zZXJ0VGV4dC5sZW5ndGgtbmV3T2Zmc2V0KTt9
Cm9mZnNldD1uZXdPZmZzZXQ7fX0KaWYoZmlyc3ROb2RlKXtjb250ZXh0LmZuLnNj
cm9sbFRvVG9wKCQoZmlyc3ROb2RlLnBhcmVudE5vZGUpKTt9CmlmKHNlbGVjdEFm
dGVyKXtzZXRTZWxlY3Rpb25Ubz17c3RhcnRDb250YWluZXI6c2VsU0MsZW5kQ29u
dGFpbmVyOnNlbEVDLHN0YXJ0OnNlbFNPLGVuZDpzZWxFT307fWVsc2UgaWYobGFz
dE5vZGUpe3NldFNlbGVjdGlvblRvPXtzdGFydENvbnRhaW5lcjpsYXN0Tm9kZSxl
bmRDb250YWluZXI6bGFzdE5vZGUsc3RhcnQ6bGFzdE5vZGUubm9kZVZhbHVlLmxl
bmd0aCxlbmQ6bGFzdE5vZGUubm9kZVZhbHVlLmxlbmd0aH07fX1lbHNlIGlmKGNv
bnRleHQuJGlmcmFtZVswXS5jb250ZW50V2luZG93LmRvY3VtZW50LnNlbGVjdGlv
bil7Y29udGV4dC4kaWZyYW1lWzBdLmNvbnRlbnRXaW5kb3cuZm9jdXMoKTt2YXIg
cmFuZ2U9Y29udGV4dC4kaWZyYW1lWzBdLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQu
c2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCk7aWYob3B0aW9ucy5vd25saW5lJiZyYW5n
ZS5tb3ZlU3RhcnQpe3ZhciByYW5nZTI9Y29udGV4dC4kaWZyYW1lWzBdLmNvbnRl
bnRXaW5kb3cuZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCk7cmFuZ2Uy
LmNvbGxhcHNlKCk7cmFuZ2UyLm1vdmVTdGFydCgnY2hhcmFjdGVyJywtMSk7aWYo
cmFuZ2UyLnRleHQhPSJcciImJnJhbmdlMi50ZXh0IT0iXG4iJiZyYW5nZTIudGV4
dCE9IiIpe3ByZT0iXG4iK3ByZTt9CnZhciByYW5nZTM9Y29udGV4dC4kaWZyYW1l
WzBdLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJhbmdl
KCk7cmFuZ2UzLmNvbGxhcHNlKGZhbHNlKTtyYW5nZTMubW92ZUVuZCgnY2hhcmFj
dGVyJywxKTtpZihyYW5nZTMudGV4dCE9IlxyIiYmcmFuZ2UzLnRleHQhPSJcbiIm
JnJhbmdlMy50ZXh0IT0iIil7cG9zdCs9IlxuIjt9fQppZihjb2xsYXBzZVRvRW5k
KXtyYW5nZS5jb2xsYXBzZShmYWxzZSk7fQp2YXIgaW5zZXJ0VGV4dD0iIjtpZihv
cHRpb25zLnNwbGl0bGluZXMpe2Zvcih2YXIgaj0wO2o8c2VsVGV4dEFyci5sZW5n
dGg7aisrKXtpbnNlcnRUZXh0PWluc2VydFRleHQrcHJlK3NlbFRleHRBcnJbal0r
cG9zdDtpZihqIT1zZWxUZXh0QXJyLmxlbmd0aC0xKXtpbnNlcnRUZXh0Kz0iXG4i
O319fWVsc2V7aW5zZXJ0VGV4dD1wcmUrc2VsVGV4dCtwb3N0O30KcmFuZ2UucGFz
dGVIVE1MKGluc2VydFRleHQucmVwbGFjZSgvXDwvZywnJmx0OycpLnJlcGxhY2Uo
Lz4vZywnJmd0OycpLnJlcGxhY2UoL1xyP1xuL2csJzxiciAvPicpKTtpZihzZWxl
Y3RBZnRlcil7cmFuZ2UubW92ZVN0YXJ0KCdjaGFyYWN0ZXInLC1wb3N0Lmxlbmd0
aC1zZWxUZXh0Lmxlbmd0aCk7cmFuZ2UubW92ZUVuZCgnY2hhcmFjdGVyJywtcG9z
dC5sZW5ndGgpO3JhbmdlLnNlbGVjdCgpO319CmlmKHNldFNlbGVjdGlvblRvKXtj
b250ZXh0LmZuLnNldFNlbGVjdGlvbihzZXRTZWxlY3Rpb25Ubyk7fQokKGNvbnRl
eHQuJGlmcmFtZVswXS5jb250ZW50V2luZG93LmRvY3VtZW50KS50cmlnZ2VyKCdl
bmNhcHN1bGF0ZVNlbGVjdGlvbicsW3ByZSxvcHRpb25zLnBlcmkscG9zdCxvcHRp
b25zLm93bmxpbmUsb3B0aW9ucy5yZXBsYWNlXSk7cmV0dXJuIGNvbnRleHQuJHRl
eHRhcmVhO30sJ2dldENhcmV0UG9zaXRpb24nOmZ1bmN0aW9uKG9wdGlvbnMpe3Zh
ciBzdGFydFBvcz1udWxsLGVuZFBvcz1udWxsO2lmKGNvbnRleHQuJGlmcmFtZVsw
XS5jb250ZW50V2luZG93LmdldFNlbGVjdGlvbil7dmFyIHNlbGVjdGlvbj1jb250
ZXh0LiRpZnJhbWVbMF0uY29udGVudFdpbmRvdy5nZXRTZWxlY3Rpb24oKTtpZihz
ZWxlY3Rpb24ucmFuZ2VDb3VudD09MCl7cmV0dXJuWzAsMF07fQp2YXIgc2M9c2Vs
ZWN0aW9uLmdldFJhbmdlQXQoMCkuc3RhcnRDb250YWluZXIsZWM9c2VsZWN0aW9u
LmdldFJhbmdlQXQoMCkuZW5kQ29udGFpbmVyO3ZhciBzbz1zZWxlY3Rpb24uZ2V0
UmFuZ2VBdCgwKS5zdGFydE9mZnNldCxlbz1zZWxlY3Rpb24uZ2V0UmFuZ2VBdCgw
KS5lbmRPZmZzZXQ7aWYoc2Mubm9kZU5hbWU9PSdCT0RZJyl7dmFyIG49c2MuZmly
c3RDaGlsZDtmb3IodmFyIGk9MDtpPHNvLTEmJm47aSsrKXtuPW4ubmV4dFNpYmxp
bmc7fQpzYz1uO3NvPTA7fQppZihlYy5ub2RlTmFtZT09J0JPRFknKXt2YXIgbj1l
Yy5maXJzdENoaWxkO2Zvcih2YXIgaT0wO2k8ZW8tMSYmbjtpKyspe249bi5uZXh0
U2libGluZzt9CmVjPW47ZW89MDt9CndoaWxlKHNjLmZpcnN0Q2hpbGQpe3NjPXNj
LmZpcnN0Q2hpbGQ7fQp3aGlsZShlYy5maXJzdENoaWxkKXtlYz1lYy5maXJzdENo
aWxkO30KY29udGV4dC5mbi5nZXRPZmZzZXQoMCk7dmFyIG87Zm9yKG8gaW4gY29u
dGV4dC5vZmZzZXRzKXtpZihzdGFydFBvcz09PW51bGwmJmNvbnRleHQub2Zmc2V0
c1tvXS5ub2RlPT1zYyl7c3RhcnRQb3M9fn5vK3NvLWNvbnRleHQub2Zmc2V0c1tv
XS5vZmZzZXQ7fQppZihzdGFydFBvcyE9PW51bGwmJmNvbnRleHQub2Zmc2V0c1tv
XS5ub2RlPT1lYyl7ZW5kUG9zPX5+bytlby1jb250ZXh0Lm9mZnNldHNbb10ub2Zm
c2V0O2JyZWFrO319fWVsc2UgaWYoY29udGV4dC4kaWZyYW1lWzBdLmNvbnRlbnRX
aW5kb3cuZG9jdW1lbnQuc2VsZWN0aW9uKXt2YXIgZD1jb250ZXh0LiRpZnJhbWVb
MF0uY29udGVudFdpbmRvdy5kb2N1bWVudDt2YXIgcG9zdEZpbmlzaGVkPWZhbHNl
O3ZhciBwZXJpRmluaXNoZWQ9ZmFsc2U7dmFyIHBvc3RGaW5pc2hlZD1mYWxzZTt2
YXIgcHJlVGV4dCxyYXdQcmVUZXh0LHBlcmlUZXh0O3ZhciByYXdQZXJpVGV4dCxw
b3N0VGV4dCxyYXdQb3N0VGV4dDt0cnl7dmFyIHBlcmlSYW5nZT1kLnNlbGVjdGlv
bi5jcmVhdGVSYW5nZSgpLmR1cGxpY2F0ZSgpO3ZhciBwcmVSYW5nZT1kLmJvZHku
Y3JlYXRlVGV4dFJhbmdlKCk7cHJlUmFuZ2Uuc2V0RW5kUG9pbnQoIkVuZFRvU3Rh
cnQiLHBlcmlSYW5nZSk7dmFyIHBvc3RSYW5nZT1kLmJvZHkuY3JlYXRlVGV4dFJh
bmdlKCk7cG9zdFJhbmdlLnNldEVuZFBvaW50KCJTdGFydFRvRW5kIixwZXJpUmFu
Z2UpO3ByZVRleHQ9cmF3UHJlVGV4dD1wcmVSYW5nZS50ZXh0O3BlcmlUZXh0PXJh
d1BlcmlUZXh0PXBlcmlSYW5nZS50ZXh0O3Bvc3RUZXh0PXJhd1Bvc3RUZXh0PXBv
c3RSYW5nZS50ZXh0O2Rve2lmKCFwb3N0RmluaXNoZWQpe2lmKHByZVJhbmdlLmNv
bXBhcmVFbmRQb2ludHMoIlN0YXJ0VG9FbmQiLHByZVJhbmdlKT09MCl7cG9zdEZp
bmlzaGVkPXRydWU7fWVsc2V7cHJlUmFuZ2UubW92ZUVuZCgiY2hhcmFjdGVyIiwt
MSkKaWYocHJlUmFuZ2UudGV4dD09cHJlVGV4dCl7cmF3UHJlVGV4dCs9IlxyXG4i
O31lbHNle3Bvc3RGaW5pc2hlZD10cnVlO319fQppZighcGVyaUZpbmlzaGVkKXtp
ZihwZXJpUmFuZ2UuY29tcGFyZUVuZFBvaW50cygiU3RhcnRUb0VuZCIscGVyaVJh
bmdlKT09MCl7cGVyaUZpbmlzaGVkPXRydWU7fWVsc2V7cGVyaVJhbmdlLm1vdmVF
bmQoImNoYXJhY3RlciIsLTEpCmlmKHBlcmlSYW5nZS50ZXh0PT1wZXJpVGV4dCl7
cmF3UGVyaVRleHQrPSJcclxuIjt9ZWxzZXtwZXJpRmluaXNoZWQ9dHJ1ZTt9fX0K
aWYoIXBvc3RGaW5pc2hlZCl7aWYocG9zdFJhbmdlLmNvbXBhcmVFbmRQb2ludHMo
IlN0YXJ0VG9FbmQiLHBvc3RSYW5nZSk9PTApe3Bvc3RGaW5pc2hlZD10cnVlO31l
bHNle3Bvc3RSYW5nZS5tb3ZlRW5kKCJjaGFyYWN0ZXIiLC0xKQppZihwb3N0UmFu
Z2UudGV4dD09cG9zdFRleHQpe3Jhd1Bvc3RUZXh0Kz0iXHJcbiI7fWVsc2V7cG9z
dEZpbmlzaGVkPXRydWU7fX19fXdoaWxlKCghcG9zdEZpbmlzaGVkfHwhcGVyaUZp
bmlzaGVkfHwhcG9zdEZpbmlzaGVkKSk7c3RhcnRQb3M9cmF3UHJlVGV4dC5yZXBs
YWNlKC9cclxuL2csIlxuIikubGVuZ3RoO2VuZFBvcz1zdGFydFBvcytyYXdQZXJp
VGV4dC5yZXBsYWNlKC9cclxuL2csIlxuIikubGVuZ3RoO31jYXRjaChlKXtzdGFy
dFBvcz1lbmRQb3M9MDt9fQpyZXR1cm5bc3RhcnRQb3MsZW5kUG9zXTt9LCdzZXRT
ZWxlY3Rpb24nOmZ1bmN0aW9uKG9wdGlvbnMpe3ZhciBzYz1vcHRpb25zLnN0YXJ0
Q29udGFpbmVyLGVjPW9wdGlvbnMuZW5kQ29udGFpbmVyO3NjPXNjJiZzYy5qcXVl
cnk/c2NbMF06c2M7ZWM9ZWMmJmVjLmpxdWVyeT9lY1swXTplYztpZihjb250ZXh0
LiRpZnJhbWVbMF0uY29udGVudFdpbmRvdy5nZXRTZWxlY3Rpb24pe3ZhciBzdGFy
dD1vcHRpb25zLnN0YXJ0LGVuZD1vcHRpb25zLmVuZDtpZighc2N8fCFlYyl7dmFy
IHM9Y29udGV4dC5mbi5nZXRPZmZzZXQoc3RhcnQpO3ZhciBlPWNvbnRleHQuZm4u
Z2V0T2Zmc2V0KGVuZCk7c2M9cz9zLm5vZGU6bnVsbDtlYz1lP2Uubm9kZTpudWxs
O3N0YXJ0PXM/cy5vZmZzZXQ6bnVsbDtlbmQ9ZT9lLm9mZnNldDpudWxsO2lmKHNj
IT1udWxsJiZzYy5ub2RlTmFtZT09JyN0ZXh0JyYmc3RhcnQ+c2Mubm9kZVZhbHVl
Lmxlbmd0aCl7c3RhcnQ9c2Mubm9kZVZhbHVlLmxlbmd0aC0xO30KaWYoZWMhPW51
bGwmJmVjLm5vZGVOYW1lPT0nI3RleHQnJiZlbmQ+ZWMubm9kZVZhbHVlLmxlbmd0
aCl7ZW5kPWVjLm5vZGVWYWx1ZS5sZW5ndGgtMTt9fQppZighc2N8fCFlYyl7cmV0
dXJuIGNvbnRleHQuJHRleHRhcmVhO30KdmFyIHNlbD1jb250ZXh0LiRpZnJhbWVb
MF0uY29udGVudFdpbmRvdy5nZXRTZWxlY3Rpb24oKTt3aGlsZShzYy5maXJzdENo
aWxkJiZzYy5ub2RlTmFtZSE9JyN0ZXh0Jyl7c2M9c2MuZmlyc3RDaGlsZDt9Cndo
aWxlKGVjLmZpcnN0Q2hpbGQmJmVjLm5vZGVOYW1lIT0nI3RleHQnKXtlYz1lYy5m
aXJzdENoaWxkO30KdmFyIHJhbmdlPWNvbnRleHQuJGlmcmFtZVswXS5jb250ZW50
V2luZG93LmRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7cmFuZ2Uuc2V0U3RhcnQoc2Ms
c3RhcnQpO3JhbmdlLnNldEVuZChlYyxlbmQpO3NlbC5yZW1vdmVBbGxSYW5nZXMo
KTtzZWwuYWRkUmFuZ2UocmFuZ2UpO2NvbnRleHQuJGlmcmFtZVswXS5jb250ZW50
V2luZG93LmZvY3VzKCk7fWVsc2UgaWYoY29udGV4dC4kaWZyYW1lWzBdLmNvbnRl
bnRXaW5kb3cuZG9jdW1lbnQuYm9keS5jcmVhdGVUZXh0UmFuZ2Upe3ZhciByYW5n
ZT1jb250ZXh0LiRpZnJhbWVbMF0uY29udGVudFdpbmRvdy5kb2N1bWVudC5ib2R5
LmNyZWF0ZVRleHRSYW5nZSgpO2lmKHNjKXtyYW5nZS5tb3ZlVG9FbGVtZW50VGV4
dChzYyk7fQpyYW5nZS5jb2xsYXBzZSgpO3JhbmdlLm1vdmVFbmQoJ2NoYXJhY3Rl
cicsb3B0aW9ucy5zdGFydCk7dmFyIHJhbmdlMj1jb250ZXh0LiRpZnJhbWVbMF0u
Y29udGVudFdpbmRvdy5kb2N1bWVudC5ib2R5LmNyZWF0ZVRleHRSYW5nZSgpO2lm
KGVjKXtyYW5nZTIubW92ZVRvRWxlbWVudFRleHQoZWMpO30KcmFuZ2UyLmNvbGxh
cHNlKCk7cmFuZ2UyLm1vdmVFbmQoJ2NoYXJhY3Rlcicsb3B0aW9ucy5lbmQpO3Zh
ciBtYXRjaGVzLGNvdW50ZWQ9MDt3aGlsZShtYXRjaGVzPXJhbmdlLmh0bWxUZXh0
Lm1hdGNoKC9cPFwvcFw+KFw8YnJbXlw+XSpcPikrXDxwXD4vZ2kpKXtpZihtYXRj
aGVzLmxlbmd0aDw9Y291bnRlZCkKYnJlYWs7cmFuZ2UubW92ZUVuZCgnY2hhcmFj
dGVyJyxtYXRjaGVzLmxlbmd0aCk7Y291bnRlZCs9bWF0Y2hlcy5sZW5ndGg7fQpy
YW5nZTIubW92ZUVuZCgnY2hhcmFjdGVyJyxjb3VudGVkKTt3aGlsZShtYXRjaGVz
PXJhbmdlMi5odG1sVGV4dC5tYXRjaCgvXDxcL3BcPihcPGJyW15cPl0qXD4pK1w8
cFw+L2dpKSl7aWYobWF0Y2hlcy5sZW5ndGg8PWNvdW50ZWQpCmJyZWFrO3Jhbmdl
Mi5tb3ZlRW5kKCdjaGFyYWN0ZXInLG1hdGNoZXMubGVuZ3RoKTtjb3VudGVkKz1t
YXRjaGVzLmxlbmd0aDt9CnJhbmdlMi5zZXRFbmRQb2ludCgnU3RhcnRUb0VuZCcs
cmFuZ2UpO3JhbmdlMi5zZWxlY3QoKTt9CnJldHVybiBjb250ZXh0LiR0ZXh0YXJl
YTt9LCdzY3JvbGxUb0NhcmV0UG9zaXRpb24nOmZ1bmN0aW9uKG9wdGlvbnMpe2Nv
bnRleHQuZm4uc2Nyb2xsVG9Ub3AoY29udGV4dC5mbi5nZXRFbGVtZW50QXRDdXJz
b3IoKSx0cnVlKTt9LCdzY3JvbGxUb1RvcCc6ZnVuY3Rpb24oJGVsZW1lbnQsZm9y
Y2Upe3ZhciBodG1sPWNvbnRleHQuJGNvbnRlbnQuY2xvc2VzdCgnaHRtbCcpLGJv
ZHk9Y29udGV4dC4kY29udGVudC5jbG9zZXN0KCdib2R5JykscGFyZW50SHRtbD0k
KCdodG1sJykscGFyZW50Qm9keT0kKCdib2R5Jyk7dmFyIHk9JGVsZW1lbnQub2Zm
c2V0KCkudG9wO2lmKCEkLmJyb3dzZXIubXNpZSYmISRlbGVtZW50LmlzKCdib2R5
Jykpe3k9cGFyZW50SHRtbC5zY3JvbGxUb3AoKT4wP3kraHRtbC5zY3JvbGxUb3Ao
KS1wYXJlbnRIdG1sLnNjcm9sbFRvcCgpOnk7eT1wYXJlbnRCb2R5LnNjcm9sbFRv
cCgpPjA/eStib2R5LnNjcm9sbFRvcCgpLXBhcmVudEJvZHkuc2Nyb2xsVG9wKCk6
eTt9CnZhciB0b3BCb3VuZD1odG1sLnNjcm9sbFRvcCgpPmJvZHkuc2Nyb2xsVG9w
KCk/aHRtbC5zY3JvbGxUb3AoKTpib2R5LnNjcm9sbFRvcCgpLGJvdHRvbUJvdW5k
PXRvcEJvdW5kK2NvbnRleHQuJGlmcmFtZS5oZWlnaHQoKTtpZihmb3JjZXx8eTx0
b3BCb3VuZHx8eT5ib3R0b21Cb3VuZCl7aHRtbC5zY3JvbGxUb3AoeSk7Ym9keS5z
Y3JvbGxUb3AoeSk7fQokZWxlbWVudC50cmlnZ2VyKCdzY3JvbGxUb1RvcCcpO30s
J3NhdmVTdHVmZkZvcklFJzpmdW5jdGlvbigpe2lmKCEkLmJyb3dzZXIubXNpZXx8
Y29udGV4dC4kaWZyYW1lKQpyZXR1cm47dmFyIElIYXRlSUU9eydzY3JvbGxUb3An
OmNvbnRleHQuJHRleHRhcmVhLnNjcm9sbFRvcCgpLCdwb3MnOmNvbnRleHQuJHRl
eHRhcmVhLnRleHRTZWxlY3Rpb24oJ2dldENhcmV0UG9zaXRpb24nLHtzdGFydEFu
ZEVuZDp0cnVlfSl9O2NvbnRleHQuJHRleHRhcmVhLmRhdGEoJ0lIYXRlSUUnLElI
YXRlSUUpO30sJ3Jlc3RvcmVTdHVmZkZvcklFJzpmdW5jdGlvbigpe2lmKCEkLmJy
b3dzZXIubXNpZXx8Y29udGV4dC4kaWZyYW1lKQpyZXR1cm47dmFyIElIYXRlSUU9
Y29udGV4dC4kdGV4dGFyZWEuZGF0YSgnSUhhdGVJRScpO2lmKCFJSGF0ZUlFKQpy
ZXR1cm47Y29udGV4dC4kdGV4dGFyZWEuc2Nyb2xsVG9wKElIYXRlSUUuc2Nyb2xs
VG9wKTtjb250ZXh0LiR0ZXh0YXJlYS50ZXh0U2VsZWN0aW9uKCdzZXRTZWxlY3Rp
b24nLHtzdGFydDpJSGF0ZUlFLnBvc1swXSxlbmQ6SUhhdGVJRS5wb3NbMV19KTtj
b250ZXh0LiR0ZXh0YXJlYS5kYXRhKCdJSGF0ZUlFJyxudWxsKTt9fTtjb250ZXh0
LiR0ZXh0YXJlYS53cmFwQWxsKCQoJzxkaXY+PC9kaXY+JykuYWRkQ2xhc3MoJ3dp
a2lFZGl0b3ItdWknKSkud3JhcEFsbCgkKCc8ZGl2PjwvZGl2PicpLmFkZENsYXNz
KCd3aWtpRWRpdG9yLXVpLXZpZXcgd2lraUVkaXRvci11aS12aWV3LXdpa2l0ZXh0
JykpLndyYXBBbGwoJCgnPGRpdj48L2Rpdj4nKS5hZGRDbGFzcygnd2lraUVkaXRv
ci11aS1sZWZ0JykpLndyYXBBbGwoJCgnPGRpdj48L2Rpdj4nKS5hZGRDbGFzcygn
d2lraUVkaXRvci11aS1ib3R0b20nKSkud3JhcEFsbCgkKCc8ZGl2PjwvZGl2Picp
LmFkZENsYXNzKCd3aWtpRWRpdG9yLXVpLXRleHQnKSk7Y29udGV4dC4kdWk9Y29u
dGV4dC4kdGV4dGFyZWEucGFyZW50KCkucGFyZW50KCkucGFyZW50KCkucGFyZW50
KCkucGFyZW50KCk7Y29udGV4dC4kd2lraXRleHQ9Y29udGV4dC4kdGV4dGFyZWEu
cGFyZW50KCkucGFyZW50KCkucGFyZW50KCkucGFyZW50KCk7Y29udGV4dC4kd2lr
aXRleHQuYmVmb3JlKCQoJzxkaXY+PC9kaXY+JykuYWRkQ2xhc3MoJ3dpa2lFZGl0
b3ItdWktY29udHJvbHMnKS5hcHBlbmQoJCgnPGRpdj48L2Rpdj4nKS5hZGRDbGFz
cygnd2lraUVkaXRvci11aS10YWJzJykuaGlkZSgpKS5hcHBlbmQoJCgnPGRpdj48
L2Rpdj4nKS5hZGRDbGFzcygnd2lraUVkaXRvci11aS1idXR0b25zJykpKS5iZWZv
cmUoJCgnPGRpdiBzdHlsZT0iY2xlYXI6Ym90aDsiPjwvZGl2PicpKTtjb250ZXh0
LiRjb250cm9scz1jb250ZXh0LiR1aS5maW5kKCcud2lraUVkaXRvci11aS1idXR0
b25zJykuaGlkZSgpO2NvbnRleHQuJGJ1dHRvbnM9Y29udGV4dC4kdWkuZmluZCgn
Lndpa2lFZGl0b3ItdWktYnV0dG9ucycpO2NvbnRleHQuJHRhYnM9Y29udGV4dC4k
dWkuZmluZCgnLndpa2lFZGl0b3ItdWktdGFicycpO2NvbnRleHQuJHVpLmFmdGVy
KCQoJzxkaXYgc3R5bGU9ImNsZWFyOmJvdGg7Ij48L2Rpdj4nKSk7Y29udGV4dC4k
d2lraXRleHQuYXBwZW5kKCQoJzxkaXY+PC9kaXY+JykuYWRkQ2xhc3MoJ3dpa2lF
ZGl0b3ItdWktcmlnaHQnKSk7Y29udGV4dC4kd2lraXRleHQuZmluZCgnLndpa2lF
ZGl0b3ItdWktbGVmdCcpLnByZXBlbmQoJCgnPGRpdj48L2Rpdj4nKS5hZGRDbGFz
cygnd2lraUVkaXRvci11aS10b3AnKSk7Y29udGV4dC52aWV3PSd3aWtpdGV4dCc7
JCh3aW5kb3cpLnJlc2l6ZShmdW5jdGlvbihldmVudCl7Y29udGV4dC5mbi50cmln
Z2VyKCdyZXNpemUnLGV2ZW50KTt9KTt9CnZhciBhcmdzPSQubWFrZUFycmF5KGFy
Z3VtZW50cyk7aWYodHlwZW9mIGNvbnRleHQuJGlmcmFtZT09PSd1bmRlZmluZWQn
JiZhcmdzWzBdPT0nYWRkTW9kdWxlJyYmdHlwZW9mIGFyZ3NbMV0hPSd1bmRlZmlu
ZWQnKXt2YXIgbW9kdWxlcz1hcmdzWzFdO2lmKHR5cGVvZiBtb2R1bGVzIT0ib2Jq
ZWN0Iil7bW9kdWxlcz17fTttb2R1bGVzW2FyZ3NbMV1dPScnO30KZm9yKG1vZHVs
ZSBpbiBtb2R1bGVzKXtpZihtb2R1bGUgaW4gJC53aWtpRWRpdG9yLm1vZHVsZXMm
JiQud2lraUVkaXRvci5pc1N1cHBvcnRlZCgkLndpa2lFZGl0b3IubW9kdWxlc1tt
b2R1bGVdKSYmJC53aWtpRWRpdG9yLmlzUmVxdWlyZWQoJC53aWtpRWRpdG9yLm1v
ZHVsZXNbbW9kdWxlXSwnaWZyYW1lJykpe2NvbnRleHQuZm4uc2V0dXBJZnJhbWUo
KTticmVhazt9fX0KaWYoYXJncy5sZW5ndGg+MCl7dmFyIGNhbGw9YXJncy5zaGlm
dCgpO2lmKGNhbGwgaW4gY29udGV4dC5hcGkpe2NvbnRleHQuYXBpW2NhbGxdKGNv
bnRleHQsdHlwZW9mIGFyZ3NbMF09PSd1bmRlZmluZWQnP3t9OmFyZ3NbMF0pO319
CnJldHVybiAkKHRoaXMpLmRhdGEoJ3dpa2lFZGl0b3ItY29udGV4dCcsY29udGV4
dCk7fTt9KShqUXVlcnkpO1JlZ0V4cC5lc2NhcGU9ZnVuY3Rpb24ocyl7cmV0dXJu
IHMucmVwbGFjZSgvKFsuKis/XiR7fSgpfFwvXFxbXF1dKS9nLCdcXCQxJyk7fTso
ZnVuY3Rpb24oJCl7JC53aWtpRWRpdG9yLm1vZHVsZXMuZGlhbG9ncz17J2Jyb3dz
ZXJzJzp7J2x0cic6eydtc2llJzpbWyc+PScsN11dLCdmaXJlZm94JzpbWyc+PScs
Ml0sWychPScsJzIuMCddLFsnIT0nLCcyLjAuMC4xJ10sWychPScsJzIuMC4wLjIn
XSxbJyE9JywnMi4wLjAuMyddLFsnIT0nLCcyLjAuMC40J11dLCdvcGVyYSc6W1sn
Pj0nLDkuNl1dLCdzYWZhcmknOltbJz49JywzXV0sJ2Nocm9tZSc6W1snPj0nLDNd
XX0sJ3J0bCc6eydtc2llJzpbWyc+PScsN11dLCdmaXJlZm94JzpbWyc+PScsMl0s
WychPScsJzIuMCddLFsnIT0nLCcyLjAuMC4xJ10sWychPScsJzIuMC4wLjInXSxb
JyE9JywnMi4wLjAuMyddLFsnIT0nLCcyLjAuMC40J11dLCdvcGVyYSc6W1snPj0n
LDkuNl1dLCdzYWZhcmknOltbJz49JywzXV0sJ2Nocm9tZSc6W1snPj0nLDNdXX19
LGFwaTp7YWRkRGlhbG9nOmZ1bmN0aW9uKGNvbnRleHQsZGF0YSl7JC53aWtpRWRp
dG9yLm1vZHVsZXMuZGlhbG9ncy5mbi5jcmVhdGUoY29udGV4dCxkYXRhKX0sb3Bl
bkRpYWxvZzpmdW5jdGlvbihjb250ZXh0LG1vZHVsZSl7bXcudXNhYmlsaXR5Lmxv
YWQoWyckai51aScsJyRqLnVpLmRpYWxvZycsJyRqLnVpLmRyYWdnYWJsZScsJyRq
LnVpLnJlc2l6YWJsZSddLGZ1bmN0aW9uKCl7aWYobW9kdWxlIGluICQud2lraUVk
aXRvci5tb2R1bGVzLmRpYWxvZ3MubW9kdWxlcyl7dmFyIG1vZD0kLndpa2lFZGl0
b3IubW9kdWxlcy5kaWFsb2dzLm1vZHVsZXNbbW9kdWxlXTt2YXIgJGRpYWxvZz0k
KCcjJyttb2QuaWQpO2lmKCRkaWFsb2cubGVuZ3RoPT0wKXskLndpa2lFZGl0b3Iu
bW9kdWxlcy5kaWFsb2dzLmZuLnJlYWxseUNyZWF0ZShjb250ZXh0LG1vZCk7JGRp
YWxvZz0kKCcjJyttb2QuaWQpO30KJGRpYWxvZy5jbG9zZXN0KCcudWktZGlhbG9n
JykuZmluZCgnLnVpLWRpYWxvZy10aXRsZWJhci1jbG9zZScpLnJlbW92ZUNsYXNz
KCd1aS1zdGF0ZS1mb2N1cycpOyRkaWFsb2cuZGlhbG9nKCdvcGVuJyk7fX0pO30s
Y2xvc2VEaWFsb2c6ZnVuY3Rpb24oY29udGV4dCxtb2R1bGUpe2lmKG1vZHVsZSBp
biAkLndpa2lFZGl0b3IubW9kdWxlcy5kaWFsb2dzLm1vZHVsZXMpeyQoJyMnKyQu
d2lraUVkaXRvci5tb2R1bGVzLmRpYWxvZ3MubW9kdWxlc1ttb2R1bGVdLmlkKS5k
aWFsb2coJ2Nsb3NlJyk7fX19LGZuOntjcmVhdGU6ZnVuY3Rpb24oY29udGV4dCxj
b25maWcpe2Zvcihtb2QgaW4gY29uZmlnKXt2YXIgbW9kdWxlPWNvbmZpZ1ttb2Rd
O3ZhciBmaWx0ZXJlZD1mYWxzZTtpZih0eXBlb2YgbW9kdWxlLmZpbHRlcnMhPSd1
bmRlZmluZWQnKXtmb3IodmFyIGk9MDtpPG1vZHVsZS5maWx0ZXJzLmxlbmd0aDtp
Kyspe2lmKCQobW9kdWxlLmZpbHRlcnNbaV0pLmxlbmd0aD09MCl7ZmlsdGVyZWQ9
dHJ1ZTticmVhazt9fX0KaWYoIWZpbHRlcmVkJiYkLndpa2lFZGl0b3IuaXNTdXBw
b3J0ZWQobW9kdWxlKSYmJCgnIycrbW9kdWxlLmlkKS5zaXplKCk9PTApeyQud2lr
aUVkaXRvci5tb2R1bGVzLmRpYWxvZ3MubW9kdWxlc1ttb2RdPW1vZHVsZTtpZih0
eXBlb2YgY29udGV4dC4kaWZyYW1lPT0ndW5kZWZpbmVkJyYmJC53aWtpRWRpdG9y
LmlzUmVxdWlyZWQobW9kdWxlLCdpZnJhbWUnKSl7Y29udGV4dC5mbi5zZXR1cElm
cmFtZSgpO30KY29udGV4dC4kdGV4dGFyZWEudHJpZ2dlcignd2lraUVkaXRvci1k
aWFsb2dzLXNldHVwLScrbW9kKTt9fX0scmVhbGx5Q3JlYXRlOmZ1bmN0aW9uKGNv
bnRleHQsbW9kdWxlKXt2YXIgY29uZmlndXJhdGlvbj1tb2R1bGUuZGlhbG9nO2Nv
bmZpZ3VyYXRpb24uYmdpZnJhbWU9dHJ1ZTtjb25maWd1cmF0aW9uLmF1dG9PcGVu
PWZhbHNlO2NvbmZpZ3VyYXRpb24ubW9kYWw9dHJ1ZTtjb25maWd1cmF0aW9uLnRp
dGxlPSQud2lraUVkaXRvci5hdXRvTXNnKG1vZHVsZSwndGl0bGUnKTtjb25maWd1
cmF0aW9uLm5ld0J1dHRvbnM9e307Zm9yKG1zZyBpbiBjb25maWd1cmF0aW9uLmJ1
dHRvbnMpCmNvbmZpZ3VyYXRpb24ubmV3QnV0dG9uc1ttdy51c2FiaWxpdHkuZ2V0
TXNnKG1zZyldPWNvbmZpZ3VyYXRpb24uYnV0dG9uc1ttc2ddO2NvbmZpZ3VyYXRp
b24uYnV0dG9ucz1jb25maWd1cmF0aW9uLm5ld0J1dHRvbnM7dmFyIGRpYWxvZ0Rp
dj0kKCc8ZGl2IC8+JykuYXR0cignaWQnLG1vZHVsZS5pZCkuaHRtbChtb2R1bGUu
aHRtbCkuZGF0YSgnY29udGV4dCcsY29udGV4dCkuYXBwZW5kVG8oJCgnYm9keScp
KS5lYWNoKG1vZHVsZS5pbml0KS5kaWFsb2coY29uZmlndXJhdGlvbik7JC53aWtp
RWRpdG9yLm1vZHVsZXMuZGlhbG9ncy5mbi5zZXRUYWJpbmRleGVzKGRpYWxvZ0Rp
di5jbG9zZXN0KCcudWktZGlhbG9nJykuZmluZCgnYnV0dG9uJykubm90KCdbdGFi
aW5kZXhdJykpO2lmKCEoJ3Jlc2l6ZW1lJ2luIG1vZHVsZSl8fG1vZHVsZS5yZXNp
emVtZSl7ZGlhbG9nRGl2LmJpbmQoJ2RpYWxvZ29wZW4nLCQud2lraUVkaXRvci5t
b2R1bGVzLmRpYWxvZ3MuZm4ucmVzaXplKS5maW5kKCcudWktdGFicycpLmJpbmQo
J3RhYnNzaG93JyxmdW5jdGlvbigpeyQodGhpcykuY2xvc2VzdCgnLnVpLWRpYWxv
Zy1jb250ZW50JykuZWFjaCgkLndpa2lFZGl0b3IubW9kdWxlcy5kaWFsb2dzLmZu
LnJlc2l6ZSk7fSk7fQpkaWFsb2dEaXYuYmluZCgnZGlhbG9nY2xvc2UnLGZ1bmN0
aW9uKCl7Y29udGV4dC5mbi5yZXN0b3JlU2VsZWN0aW9uKCk7fSk7Y29udGV4dC4k
dGV4dGFyZWEudHJpZ2dlcignd2lraUVkaXRvci1kaWFsb2dzLWxvYWRlZC0nK21v
ZCk7fSxyZXNpemU6ZnVuY3Rpb24oKXt2YXIgd3JhcHBlcj0kKHRoaXMpLmNsb3Nl
c3QoJy51aS1kaWFsb2cnKTt2YXIgb2xkV2lkdGg9d3JhcHBlci53aWR0aCgpO3Zh
ciBvbGRIaWRkZW49JCh0aGlzKS5maW5kKCcqJykubm90KCc6dmlzaWJsZScpO29s
ZEhpZGRlbi5lYWNoKGZ1bmN0aW9uKCl7JCh0aGlzKS5kYXRhKCdvbGRzdHlsZScs
JCh0aGlzKS5hdHRyKCdzdHlsZScpKTt9KTtvbGRIaWRkZW4uc2hvdygpO3ZhciBv
bGRXUz0kKHRoaXMpLmNzcygnd2hpdGUtc3BhY2UnKTskKHRoaXMpLmNzcygnd2hp
dGUtc3BhY2UnLCdub3dyYXAnKTtpZih3cmFwcGVyLndpZHRoKCk8PSQodGhpcyku
Z2V0KDApLnNjcm9sbFdpZHRoKXt2YXIgdGhpc1dpZHRoPSQodGhpcykuZGF0YSgn
dGhpc1dpZHRoJyk/JCh0aGlzKS5kYXRhKCd0aGlzV2lkdGgnKTowO3RoaXNXaWR0
aD1NYXRoLm1heCgkKHRoaXMpLmdldCgwKS5zY3JvbGxXaWR0aCx0aGlzV2lkdGgp
OyQodGhpcykud2lkdGgodGhpc1dpZHRoKTskKHRoaXMpLmRhdGEoJ3RoaXNXaWR0
aCcsdGhpc1dpZHRoKTt2YXIgd3JhcHBlcldpZHRoPSQodGhpcykuZGF0YSgnd3Jh
cHBlcldpZHRoJyk/JCh0aGlzKS5kYXRhKCd3cmFwcGVyV2lkdGgnKTowO3dyYXBw
ZXJXaWR0aD1NYXRoLm1heCh3cmFwcGVyLmdldCgwKS5zY3JvbGxXaWR0aCx3cmFw
cGVyV2lkdGgpO3dyYXBwZXIud2lkdGgod3JhcHBlcldpZHRoKTskKHRoaXMpLmRh
dGEoJ3dyYXBwZXJXaWR0aCcsd3JhcHBlcldpZHRoKTskKHRoaXMpLmRpYWxvZyh7
J3dpZHRoJzp3cmFwcGVyLndpZHRoKCl9KTt3cmFwcGVyLmNzcygnbGVmdCcscGFy
c2VJbnQod3JhcHBlci5jc3MoJ2xlZnQnKSktKHdyYXBwZXIud2lkdGgoKS1vbGRX
aWR0aCkvMik7fQokKHRoaXMpLmNzcygnd2hpdGUtc3BhY2UnLG9sZFdTKTtvbGRI
aWRkZW4uZWFjaChmdW5jdGlvbigpeyQodGhpcykuYXR0cignc3R5bGUnLCQodGhp
cykuZGF0YSgnb2xkc3R5bGUnKSk7fSk7fSxzZXRUYWJpbmRleGVzOmZ1bmN0aW9u
KCRlbGVtZW50cyl7dmFyIHRhYkluZGV4PW13LnVzYWJpbGl0eS5nZXRNYXhUYWJJ
bmRleCgpKzE7JGVsZW1lbnRzLmVhY2goZnVuY3Rpb24oKXskaih0aGlzKS5hdHRy
KCd0YWJpbmRleCcsdGFiSW5kZXgrKyk7fSk7fX0sbW9kdWxlczp7fSxxdWlja0Rp
YWxvZzpmdW5jdGlvbihib2R5LHNldHRpbmdzKXskKCc8ZGl2IC8+JykudGV4dChi
b2R5KS5hcHBlbmRUbygkKCdib2R5JykpLmRpYWxvZygkLmV4dGVuZCh7YmdpZnJh
bWU6dHJ1ZSxtb2RhbDp0cnVlfSxzZXR0aW5ncykpLmRpYWxvZygnb3BlbicpO319
O30pKGpRdWVyeSk7KGZ1bmN0aW9uKCQpeyQud2lraUVkaXRvci5tb2R1bGVzLnRv
b2xiYXI9e2FwaTp7YWRkVG9Ub29sYmFyOmZ1bmN0aW9uKGNvbnRleHQsZGF0YSl7
Zm9yKHR5cGUgaW4gZGF0YSl7c3dpdGNoKHR5cGUpe2Nhc2Unc2VjdGlvbnMnOnZh
ciAkc2VjdGlvbnM9Y29udGV4dC5tb2R1bGVzLnRvb2xiYXIuJHRvb2xiYXIuZmlu
ZCgnZGl2LnNlY3Rpb25zJyk7dmFyICR0YWJzPWNvbnRleHQubW9kdWxlcy50b29s
YmFyLiR0b29sYmFyLmZpbmQoJ2Rpdi50YWJzJyk7Zm9yKHNlY3Rpb24gaW4gZGF0
YVt0eXBlXSl7aWYoc2VjdGlvbj09J21haW4nKXtjb250ZXh0Lm1vZHVsZXMudG9v
bGJhci4kdG9vbGJhci5wcmVwZW5kKCQud2lraUVkaXRvci5tb2R1bGVzLnRvb2xi
YXIuZm4uYnVpbGRTZWN0aW9uKGNvbnRleHQsc2VjdGlvbixkYXRhW3R5cGVdW3Nl
Y3Rpb25dKSk7Y29udGludWU7fQokc2VjdGlvbnMuYXBwZW5kKCQud2lraUVkaXRv
ci5tb2R1bGVzLnRvb2xiYXIuZm4uYnVpbGRTZWN0aW9uKGNvbnRleHQsc2VjdGlv
bixkYXRhW3R5cGVdW3NlY3Rpb25dKSk7JHRhYnMuYXBwZW5kKCQud2lraUVkaXRv
ci5tb2R1bGVzLnRvb2xiYXIuZm4uYnVpbGRUYWIoY29udGV4dCxzZWN0aW9uLGRh
dGFbdHlwZV1bc2VjdGlvbl0pKTskc2VjdGlvbj0kc2VjdGlvbnMuZmluZCgnLnNl
Y3Rpb246dmlzaWJsZScpO2lmKCRzZWN0aW9uLnNpemUoKSl7JHNlY3Rpb25zLmFu
aW1hdGUoeydoZWlnaHQnOiRzZWN0aW9uLm91dGVySGVpZ2h0KCl9LCdmYXN0Jyk7
fX0KYnJlYWs7Y2FzZSdncm91cHMnOmlmKCEoJ3NlY3Rpb24naW4gZGF0YSkpe2Nv
bnRpbnVlO30KdmFyICRzZWN0aW9uPWNvbnRleHQubW9kdWxlcy50b29sYmFyLiR0
b29sYmFyLmZpbmQoJ2RpdltyZWw9JytkYXRhLnNlY3Rpb24rJ10uc2VjdGlvbicp
O2Zvcihncm91cCBpbiBkYXRhW3R5cGVdKXskc2VjdGlvbi5hcHBlbmQoJC53aWtp
RWRpdG9yLm1vZHVsZXMudG9vbGJhci5mbi5idWlsZEdyb3VwKGNvbnRleHQsZ3Jv
dXAsZGF0YVt0eXBlXVtncm91cF0pKTt9CmJyZWFrO2Nhc2UndG9vbHMnOmlmKCEo
J3NlY3Rpb24naW4gZGF0YSYmJ2dyb3VwJ2luIGRhdGEpKXtjb250aW51ZTt9CnZh
ciAkZ3JvdXA9Y29udGV4dC5tb2R1bGVzLnRvb2xiYXIuJHRvb2xiYXIuZmluZCgn
ZGl2W3JlbD0nK2RhdGEuc2VjdGlvbisnXS5zZWN0aW9uICcrJ2RpdltyZWw9Jytk
YXRhLmdyb3VwKyddLmdyb3VwJyk7Zm9yKHRvb2wgaW4gZGF0YVt0eXBlXSl7JGdy
b3VwLmFwcGVuZCgkLndpa2lFZGl0b3IubW9kdWxlcy50b29sYmFyLmZuLmJ1aWxk
VG9vbChjb250ZXh0LHRvb2wsZGF0YVt0eXBlXVt0b29sXSkpO30KaWYoJGdyb3Vw
LmNoaWxkcmVuKCkubGVuZ3RoKXskZ3JvdXAuc2hvdygpO30KYnJlYWs7Y2FzZSdw
YWdlcyc6aWYoISgnc2VjdGlvbidpbiBkYXRhKSl7Y29udGludWU7fQp2YXIgJHBh
Z2VzPWNvbnRleHQubW9kdWxlcy50b29sYmFyLiR0b29sYmFyLmZpbmQoJ2Rpdlty
ZWw9JytkYXRhLnNlY3Rpb24rJ10uc2VjdGlvbiAucGFnZXMnKTt2YXIgJGluZGV4
PWNvbnRleHQubW9kdWxlcy50b29sYmFyLiR0b29sYmFyLmZpbmQoJ2RpdltyZWw9
JytkYXRhLnNlY3Rpb24rJ10uc2VjdGlvbiAuaW5kZXgnKTtmb3IocGFnZSBpbiBk
YXRhW3R5cGVdKXskcGFnZXMuYXBwZW5kKCQud2lraUVkaXRvci5tb2R1bGVzLnRv
b2xiYXIuZm4uYnVpbGRQYWdlKGNvbnRleHQscGFnZSxkYXRhW3R5cGVdW3BhZ2Vd
KSk7JGluZGV4LmFwcGVuZCgkLndpa2lFZGl0b3IubW9kdWxlcy50b29sYmFyLmZu
LmJ1aWxkQm9va21hcmsoY29udGV4dCxwYWdlLGRhdGFbdHlwZV1bcGFnZV0pKTt9
CiQud2lraUVkaXRvci5tb2R1bGVzLnRvb2xiYXIuZm4udXBkYXRlQm9va2xldFNl
bGVjdGlvbihjb250ZXh0LHBhZ2UsJHBhZ2VzLCRpbmRleCk7YnJlYWs7Y2FzZSdy
b3dzJzppZighKCdzZWN0aW9uJ2luIGRhdGEmJidwYWdlJ2luIGRhdGEpKXtjb250
aW51ZTt9CnZhciAkdGFibGU9Y29udGV4dC5tb2R1bGVzLnRvb2xiYXIuJHRvb2xi
YXIuZmluZCgnZGl2W3JlbD0nK2RhdGEuc2VjdGlvbisnXS5zZWN0aW9uICcrJ2Rp
dltyZWw9JytkYXRhLnBhZ2UrJ10ucGFnZSB0YWJsZScpO2Zvcihyb3cgaW4gZGF0
YVt0eXBlXSl7JHRhYmxlLmFwcGVuZCgkLndpa2lFZGl0b3IubW9kdWxlcy50b29s
YmFyLmZuLmJ1aWxkUm93KGNvbnRleHQsZGF0YVt0eXBlXVtyb3ddKSk7fQpicmVh
aztjYXNlJ2NoYXJhY3RlcnMnOmlmKCEoJ3NlY3Rpb24naW4gZGF0YSYmJ3BhZ2Un
aW4gZGF0YSkpe2NvbnRpbnVlO30KJGNoYXJhY3RlcnM9Y29udGV4dC5tb2R1bGVz
LnRvb2xiYXIuJHRvb2xiYXIuZmluZCgnZGl2W3JlbD0nK2RhdGEuc2VjdGlvbisn
XS5zZWN0aW9uICcrJ2RpdltyZWw9JytkYXRhLnBhZ2UrJ10ucGFnZSBkaXYnKTt2
YXIgYWN0aW9ucz0kY2hhcmFjdGVycy5kYXRhKCdhY3Rpb25zJyk7Zm9yKGNoYXJh
Y3RlciBpbiBkYXRhW3R5cGVdKXskY2hhcmFjdGVycy5hcHBlbmQoJCgkLndpa2lF
ZGl0b3IubW9kdWxlcy50b29sYmFyLmZuLmJ1aWxkQ2hhcmFjdGVyKGRhdGFbdHlw
ZV1bY2hhcmFjdGVyXSxhY3Rpb25zKSkubW91c2Vkb3duKGZ1bmN0aW9uKGUpe2Nv
bnRleHQuZm4uc2F2ZVN0dWZmRm9ySUUoKTtlLnByZXZlbnREZWZhdWx0KCk7cmV0
dXJuIGZhbHNlO30pLmNsaWNrKGZ1bmN0aW9uKGUpeyQud2lraUVkaXRvci5tb2R1
bGVzLnRvb2xiYXIuZm4uZG9BY3Rpb24oJCh0aGlzKS5wYXJlbnQoKS5kYXRhKCdj
b250ZXh0JyksJCh0aGlzKS5wYXJlbnQoKS5kYXRhKCdhY3Rpb25zJylbJCh0aGlz
KS5hdHRyKCdyZWwnKV0pO2UucHJldmVudERlZmF1bHQoKTtyZXR1cm4gZmFsc2U7
fSkpO30KYnJlYWs7ZGVmYXVsdDpicmVhazt9fX0scmVtb3ZlRnJvbVRvb2xiYXI6
ZnVuY3Rpb24oY29udGV4dCxkYXRhKXtpZih0eXBlb2YgZGF0YS5zZWN0aW9uPT0n
c3RyaW5nJyl7dmFyIHRhYj0nZGl2LnRhYnMgc3BhbltyZWw9JytkYXRhLnNlY3Rp
b24rJ10udGFiJzt2YXIgdGFyZ2V0PSdkaXZbcmVsPScrZGF0YS5zZWN0aW9uKydd
LnNlY3Rpb24nO3ZhciBncm91cD1udWxsO2lmKHR5cGVvZiBkYXRhLmdyb3VwPT0n
c3RyaW5nJyl7dGFyZ2V0Kz0nIGRpdltyZWw9JytkYXRhLmdyb3VwKyddLmdyb3Vw
JztpZih0eXBlb2YgZGF0YS50b29sPT0nc3RyaW5nJyl7Z3JvdXA9dGFyZ2V0O3Rh
cmdldCs9JyBzcGFuW3JlbD0nK2RhdGEudG9vbCsnXS50b29sJzt9fWVsc2UgaWYo
dHlwZW9mIGRhdGEucGFnZT09J3N0cmluZycpe3ZhciBpbmRleD10YXJnZXQrJyBk
aXYuaW5kZXggZGl2W3JlbD0nK2RhdGEucGFnZSsnXSc7dGFyZ2V0Kz0nIGRpdi5w
YWdlcyBkaXZbcmVsPScrZGF0YS5wYWdlKyddLnBhZ2UnO2lmKHR5cGVvZiBkYXRh
LmNoYXJhY3Rlcj09J3N0cmluZycpe3RhcmdldCs9JyBhW3JlbD0nK2RhdGEuY2hh
cmFjdGVyKyddJzt9ZWxzZSBpZih0eXBlb2YgZGF0YS5yb3c9PSdudW1iZXInKXt0
YXJnZXQrPScgdGFibGUgdHI6bm90KDpoYXModGgpKTplcSgnK2RhdGEucm93Kycp
Jzt9ZWxzZXtjb250ZXh0Lm1vZHVsZXMudG9vbGJhci4kdG9vbGJhci5maW5kKGlu
ZGV4KS5yZW1vdmUoKTskLndpa2lFZGl0b3IubW9kdWxlcy50b29sYmFyLmZuLnVw
ZGF0ZUJvb2tsZXRTZWxlY3Rpb24oY29udGV4dCxudWxsLGNvbnRleHQubW9kdWxl
cy50b29sYmFyLiR0b29sYmFyLmZpbmQodGFyZ2V0KSxjb250ZXh0Lm1vZHVsZXMu
dG9vbGJhci4kdG9vbGJhci5maW5kKGluZGV4KSk7fX1lbHNle2NvbnRleHQubW9k
dWxlcy50b29sYmFyLiR0b29sYmFyLmZpbmQodGFiKS5yZW1vdmUoKTt9CmNvbnRl
eHQubW9kdWxlcy50b29sYmFyLiR0b29sYmFyLmZpbmQodGFyZ2V0KS5yZW1vdmUo
KTtpZihncm91cCl7JGdyb3VwPWNvbnRleHQubW9kdWxlcy50b29sYmFyLiR0b29s
YmFyLmZpbmQoZ3JvdXApO2lmKCRncm91cC5jaGlsZHJlbigpLmxlbmd0aD09MCl7
JGdyb3VwLmhpZGUoKTt9fX19fSxldnQ6e3Jlc2l6ZTpmdW5jdGlvbihjb250ZXh0
LGV2ZW50KXtjb250ZXh0LiR1aS5maW5kKCcuc2VjdGlvbnMnKS5oZWlnaHQoY29u
dGV4dC4kdWkuZmluZCgnLnNlY3Rpb25zIC5zZWN0aW9uLXZpc2libGUnKS5vdXRl
ckhlaWdodCgpKTt9LHRvY0NvbGxhcHNlOmZ1bmN0aW9uKGNvbnRleHQsZXZlbnQp
eyQud2lraUVkaXRvci5tb2R1bGVzLnRvb2xiYXIuZXZ0LnJlc2l6ZShjb250ZXh0
LGV2ZW50KTt9LHRvY0V4cGFuZDpmdW5jdGlvbihjb250ZXh0LGV2ZW50KXskLndp
a2lFZGl0b3IubW9kdWxlcy50b29sYmFyLmV2dC5yZXNpemUoY29udGV4dCxldmVu
dCk7fX0sZm46e2NyZWF0ZTpmdW5jdGlvbihjb250ZXh0LGNvbmZpZyl7aWYoJyR0
b29sYmFyJ2luIGNvbnRleHQubW9kdWxlcy50b29sYmFyKXtyZXR1cm47fQpjb250
ZXh0Lm1vZHVsZXMudG9vbGJhci4kdG9vbGJhcj0kKCc8ZGl2IC8+JykuYWRkQ2xh
c3MoJ3dpa2lFZGl0b3ItdWktdG9vbGJhcicpLmF0dHIoJ2lkJywnd2lraUVkaXRv
ci11aS10b29sYmFyJyk7JC53aWtpRWRpdG9yLm1vZHVsZXMudG9vbGJhci5mbi5i
dWlsZChjb250ZXh0LGNvbmZpZyk7Y29udGV4dC4kdWkuZmluZCgnLndpa2lFZGl0
b3ItdWktdG9wJykuYXBwZW5kKGNvbnRleHQubW9kdWxlcy50b29sYmFyLiR0b29s
YmFyKTt9LGRvQWN0aW9uOmZ1bmN0aW9uKGNvbnRleHQsYWN0aW9uLHNvdXJjZSl7
aWYoJC50cmFja0FjdGlvbiE9dW5kZWZpbmVkJiZzb3VyY2UuY2xvc2VzdCgnLndp
a2lFZGl0b3ItdWktdG9vbGJhcicpLnNpemUoKSl7dmFyIHJlbHM9W107dmFyIHN0
ZXA9c291cmNlO3ZhciBpPTA7d2hpbGUoIXN0ZXAuaGFzQ2xhc3MoJ3dpa2lFZGl0
b3ItdWktdG9vbGJhcicpKXtpZihpPjI1KXticmVhazt9CmkrKzt2YXIgcmVsPXN0
ZXAuYXR0cigncmVsJyk7aWYocmVsKXtyZWxzLnB1c2goc3RlcC5hdHRyKCdyZWwn
KSk7fQpzdGVwPXN0ZXAucGFyZW50KCk7fQpyZWxzLnJldmVyc2UoKTt2YXIgaWQ9
cmVscy5qb2luKCcuJyk7JC50cmFja0FjdGlvbihpZCk7fQpzd2l0Y2goYWN0aW9u
LnR5cGUpe2Nhc2UncmVwbGFjZSc6Y2FzZSdlbmNhcHN1bGF0ZSc6dmFyIHBhcnRz
PXsncHJlJzokLndpa2lFZGl0b3IuYXV0b01zZyhhY3Rpb24ub3B0aW9ucywncHJl
JyksJ3BlcmknOiQud2lraUVkaXRvci5hdXRvTXNnKGFjdGlvbi5vcHRpb25zLCdw
ZXJpJyksJ3Bvc3QnOiQud2lraUVkaXRvci5hdXRvTXNnKGFjdGlvbi5vcHRpb25z
LCdwb3N0Jyl9O3ZhciByZXBsYWNlPWFjdGlvbi50eXBlPT0ncmVwbGFjZSc7aWYo
J3JlZ2V4J2luIGFjdGlvbi5vcHRpb25zJiYncmVnZXhSZXBsYWNlJ2luIGFjdGlv
bi5vcHRpb25zKXt2YXIgc2VsZWN0aW9uPWNvbnRleHQuJHRleHRhcmVhLnRleHRT
ZWxlY3Rpb24oJ2dldFNlbGVjdGlvbicpO2lmKHNlbGVjdGlvbiE9JycmJnNlbGVj
dGlvbi5tYXRjaChhY3Rpb24ub3B0aW9ucy5yZWdleCkpe3BhcnRzLnBlcmk9c2Vs
ZWN0aW9uLnJlcGxhY2UoYWN0aW9uLm9wdGlvbnMucmVnZXgsYWN0aW9uLm9wdGlv
bnMucmVnZXhSZXBsYWNlKTtwYXJ0cy5wcmU9cGFydHMucG9zdD0nJztyZXBsYWNl
PXRydWU7fX0KY29udGV4dC4kdGV4dGFyZWEudGV4dFNlbGVjdGlvbignZW5jYXBz
dWxhdGVTZWxlY3Rpb24nLCQuZXh0ZW5kKHt9LGFjdGlvbi5vcHRpb25zLHBhcnRz
LHsncmVwbGFjZSc6cmVwbGFjZX0pKTtpZih0eXBlb2YgY29udGV4dC4kaWZyYW1l
IT09J3VuZGVmaW5lZCcpe2NvbnRleHQuJGlmcmFtZVswXS5jb250ZW50V2luZG93
LmZvY3VzKCk7fQpicmVhaztjYXNlJ2NhbGxiYWNrJzppZih0eXBlb2YgYWN0aW9u
LmV4ZWN1dGU9PSdmdW5jdGlvbicpe2FjdGlvbi5leGVjdXRlKGNvbnRleHQpO30K
YnJlYWs7Y2FzZSdkaWFsb2cnOmNvbnRleHQuZm4uc2F2ZVNlbGVjdGlvbigpO2Nv
bnRleHQuJHRleHRhcmVhLndpa2lFZGl0b3IoJ29wZW5EaWFsb2cnLGFjdGlvbi5t
b2R1bGUpO2JyZWFrO2RlZmF1bHQ6YnJlYWs7fX0sYnVpbGRHcm91cDpmdW5jdGlv
bihjb250ZXh0LGlkLGdyb3VwKXt2YXIgJGdyb3VwPSQoJzxkaXYgLz4nKS5hdHRy
KHsnY2xhc3MnOidncm91cCBncm91cC0nK2lkLCdyZWwnOmlkfSk7dmFyIGxhYmVs
PSQud2lraUVkaXRvci5hdXRvTXNnKGdyb3VwLCdsYWJlbCcpO2lmKGxhYmVsKXsk
Z3JvdXAuYXBwZW5kKCc8ZGl2IGNsYXNzPSJsYWJlbCI+JytsYWJlbCsnPC9kaXY+
Jyl9CnZhciBlbXB0eT10cnVlO2lmKCd0b29scydpbiBncm91cCl7Zm9yKHRvb2wg
aW4gZ3JvdXAudG9vbHMpe3ZhciB0b29sPSQud2lraUVkaXRvci5tb2R1bGVzLnRv
b2xiYXIuZm4uYnVpbGRUb29sKGNvbnRleHQsdG9vbCxncm91cC50b29sc1t0b29s
XSk7aWYodG9vbCl7ZW1wdHk9ZW1wdHkmJnRvb2wuY3NzKCdkaXNwbGF5Jyk9PSdu
b25lJzskZ3JvdXAuYXBwZW5kKHRvb2wpO319fQppZihlbXB0eSl7JGdyb3VwLmhp
ZGUoKTt9CnJldHVybiAkZ3JvdXA7fSxidWlsZFRvb2w6ZnVuY3Rpb24oY29udGV4
dCxpZCx0b29sKXtpZignZmlsdGVycydpbiB0b29sKXtmb3IoZmlsdGVyIGluIHRv
b2wuZmlsdGVycyl7aWYoJCh0b29sLmZpbHRlcnNbZmlsdGVyXSkuc2l6ZSgpPT0w
KXtyZXR1cm4gbnVsbDt9fX0KdmFyIGxhYmVsPSQud2lraUVkaXRvci5hdXRvTXNn
KHRvb2wsJ2xhYmVsJyk7c3dpdGNoKHRvb2wudHlwZSl7Y2FzZSdidXR0b24nOnZh
ciBzcmM9JC53aWtpRWRpdG9yLmF1dG9JY29uKHRvb2wuaWNvbiwkLndpa2lFZGl0
b3IuaW1nUGF0aCsndG9vbGJhci8nKTt2YXIgJGJ1dHRvbj1udWxsO2lmKCdvZmZz
ZXQnaW4gdG9vbCl7dmFyIG9mZnNldE9ySWNvbj0kLndpa2lFZGl0b3IuYXV0b0lj
b25Pck9mZnNldCh0b29sLmljb24sdG9vbC5vZmZzZXQsJC53aWtpRWRpdG9yLmlt
Z1BhdGgrJ3Rvb2xiYXIvJyk7aWYodHlwZW9mIG9mZnNldE9ySWNvbj09J29iamVj
dCcpeyRidXR0b249JCgnPHNwYW4gLz4nKS5hdHRyKHsnYWx0JzpsYWJlbCwndGl0
bGUnOmxhYmVsLCdyZWwnOmlkLCdjbGFzcyc6J3Rvb2wgdG9vbC1idXR0b24gd2lr
aUVkaXRvci10b29sYmFyLXNwcml0ZWRCdXR0b24nfSkudGV4dChsYWJlbCkuY3Nz
KCdiYWNrZ3JvdW5kUG9zaXRpb24nLG9mZnNldE9ySWNvblswXSsncHggJytvZmZz
ZXRPckljb25bMV0rJ3B4Jyk7fX0KaWYoISRidXR0b24peyRidXR0b249JCgnPGlt
ZyAvPicpLmF0dHIoeydzcmMnOnNyYywnd2lkdGgnOjIyLCdoZWlnaHQnOjIyLCdh
bHQnOmxhYmVsLCd0aXRsZSc6bGFiZWwsJ3JlbCc6aWQsJ2NsYXNzJzondG9vbCB0
b29sLWJ1dHRvbid9KTt9CmlmKCdhY3Rpb24naW4gdG9vbCl7JGJ1dHRvbi5kYXRh
KCdhY3Rpb24nLHRvb2wuYWN0aW9uKS5kYXRhKCdjb250ZXh0Jyxjb250ZXh0KS5t
b3VzZWRvd24oZnVuY3Rpb24oZSl7Y29udGV4dC5mbi5zYXZlU3R1ZmZGb3JJRSgp
O2UucHJldmVudERlZmF1bHQoKTtyZXR1cm4gZmFsc2U7fSkuY2xpY2soZnVuY3Rp
b24oZSl7JC53aWtpRWRpdG9yLm1vZHVsZXMudG9vbGJhci5mbi5kb0FjdGlvbigk
KHRoaXMpLmRhdGEoJ2NvbnRleHQnKSwkKHRoaXMpLmRhdGEoJ2FjdGlvbicpLCQo
dGhpcykpO2UucHJldmVudERlZmF1bHQoKTtyZXR1cm4gZmFsc2U7fSk7aWYodG9v
bC5hY3Rpb24udHlwZT09J2RpYWxvZycmJiEodG9vbC5hY3Rpb24ubW9kdWxlIGlu
ICQud2lraUVkaXRvci5tb2R1bGVzLmRpYWxvZ3MubW9kdWxlcykpeyRidXR0b24u
aGlkZSgpO2NvbnRleHQuJHRleHRhcmVhLmJpbmQoJ3dpa2lFZGl0b3ItZGlhbG9n
cy1zZXR1cC0nK3Rvb2wuYWN0aW9uLm1vZHVsZSx7YnV0dG9uOiRidXR0b259LGZ1
bmN0aW9uKGV2ZW50KXtldmVudC5kYXRhLmJ1dHRvbi5zaG93KCkucGFyZW50KCku
c2hvdygpO30pO319CnJldHVybiAkYnV0dG9uO2Nhc2Unc2VsZWN0Jzp2YXIgJHNl
bGVjdD0kKCc8ZGl2IC8+JykuYXR0cih7J3JlbCc6aWQsJ2NsYXNzJzondG9vbCB0
b29sLXNlbGVjdCd9KTt2YXIgJG9wdGlvbnM9JCgnPGRpdiAvPicpLmFkZENsYXNz
KCdvcHRpb25zJyk7aWYoJ2xpc3QnaW4gdG9vbCl7Zm9yKG9wdGlvbiBpbiB0b29s
Lmxpc3Qpe3ZhciBvcHRpb25MYWJlbD0kLndpa2lFZGl0b3IuYXV0b01zZyh0b29s
Lmxpc3Rbb3B0aW9uXSwnbGFiZWwnKTskb3B0aW9ucy5hcHBlbmQoJCgnPGEgLz4n
KS5kYXRhKCdhY3Rpb24nLHRvb2wubGlzdFtvcHRpb25dLmFjdGlvbikuZGF0YSgn
Y29udGV4dCcsY29udGV4dCkubW91c2Vkb3duKGZ1bmN0aW9uKGUpe2NvbnRleHQu
Zm4uc2F2ZVN0dWZmRm9ySUUoKTtlLnByZXZlbnREZWZhdWx0KCk7cmV0dXJuIGZh
bHNlO30pLmNsaWNrKGZ1bmN0aW9uKGUpeyQud2lraUVkaXRvci5tb2R1bGVzLnRv
b2xiYXIuZm4uZG9BY3Rpb24oJCh0aGlzKS5kYXRhKCdjb250ZXh0JyksJCh0aGlz
KS5kYXRhKCdhY3Rpb24nKSwkKHRoaXMpKTtpZigkKHRoaXMpLnBhcmVudCgpLmlz
KCc6dmlzaWJsZScpKXskKHRoaXMpLnBhcmVudCgpLmFuaW1hdGUoeydvcGFjaXR5
JzondG9nZ2xlJ30sJ2Zhc3QnKTt9CmUucHJldmVudERlZmF1bHQoKTtyZXR1cm4g
ZmFsc2U7fSkudGV4dChvcHRpb25MYWJlbCkuYWRkQ2xhc3MoJ29wdGlvbicpLmF0
dHIoeydyZWwnOm9wdGlvbiwnaHJlZic6JyMnfSkpO319CiRzZWxlY3QuYXBwZW5k
KCQoJzxkaXYgLz4nKS5hZGRDbGFzcygnbWVudScpLmFwcGVuZCgkb3B0aW9ucykp
OyRzZWxlY3QuYXBwZW5kKCQoJzxhIC8+JykuYWRkQ2xhc3MoJ2xhYmVsJykudGV4
dChsYWJlbCkuZGF0YSgnb3B0aW9ucycsJG9wdGlvbnMpLmF0dHIoJ2hyZWYnLCcj
JykubW91c2Vkb3duKGZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKTtyZXR1
cm4gZmFsc2U7fSkuY2xpY2soZnVuY3Rpb24oZSl7JCh0aGlzKS5kYXRhKCdvcHRp
b25zJykuYW5pbWF0ZSh7J29wYWNpdHknOid0b2dnbGUnfSwnZmFzdCcpO2UucHJl
dmVudERlZmF1bHQoKTtyZXR1cm4gZmFsc2U7fSkpO3JldHVybiAkc2VsZWN0O2Rl
ZmF1bHQ6cmV0dXJuIG51bGw7fX0sYnVpbGRCb29rbWFyazpmdW5jdGlvbihjb250
ZXh0LGlkLHBhZ2Upe3ZhciBsYWJlbD0kLndpa2lFZGl0b3IuYXV0b01zZyhwYWdl
LCdsYWJlbCcpO3JldHVybiAkKCc8ZGl2IC8+JykudGV4dChsYWJlbCkuYXR0cign
cmVsJyxpZCkuZGF0YSgnY29udGV4dCcsY29udGV4dCkubW91c2Vkb3duKGZ1bmN0
aW9uKGUpe2UucHJldmVudERlZmF1bHQoKTtyZXR1cm4gZmFsc2U7fSkuY2xpY2so
ZnVuY3Rpb24oZXZlbnQpeyQodGhpcykucGFyZW50KCkucGFyZW50KCkuZmluZCgn
LnBhZ2UnKS5oaWRlKCk7JCh0aGlzKS5wYXJlbnQoKS5wYXJlbnQoKS5maW5kKCcu
cGFnZS0nKyQodGhpcykuYXR0cigncmVsJykpLnNob3coKTskKHRoaXMpLnNpYmxp
bmdzKCkucmVtb3ZlQ2xhc3MoJ2N1cnJlbnQnKTskKHRoaXMpLmFkZENsYXNzKCdj
dXJyZW50Jyk7dmFyIHNlY3Rpb249JCh0aGlzKS5wYXJlbnQoKS5wYXJlbnQoKS5h
dHRyKCdyZWwnKTskLmNvb2tpZSgnd2lraUVkaXRvci0nKyQodGhpcykuZGF0YSgn
Y29udGV4dCcpLmluc3RhbmNlKyctYm9va2xldC0nK3NlY3Rpb24rJy1wYWdlJywk
KHRoaXMpLmF0dHIoJ3JlbCcpLHtleHBpcmVzOjMwLHBhdGg6Jy8nfSk7aWYoJC50
cmFja0FjdGlvbiE9dW5kZWZpbmVkKXskLnRyYWNrQWN0aW9uKHNlY3Rpb24rJy4n
KyQodGhpcykuYXR0cigncmVsJykpO30KZXZlbnQucHJldmVudERlZmF1bHQoKTty
ZXR1cm4gZmFsc2U7fSl9LGJ1aWxkUGFnZTpmdW5jdGlvbihjb250ZXh0LGlkLHBh
Z2Upe3ZhciAkcGFnZT0kKCc8ZGl2IC8+JykuYXR0cih7J2NsYXNzJzoncGFnZSBw
YWdlLScraWQsJ3JlbCc6aWR9KTtzd2l0Y2gocGFnZS5sYXlvdXQpe2Nhc2UndGFi
bGUnOiRwYWdlLmFkZENsYXNzKCdwYWdlLXRhYmxlJyk7dmFyIGh0bWw9Jzx0YWJs
ZSBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTAgJysnYm9yZGVyPTAgd2lkdGg9
IjEwMCUiIGNsYXNzPSJ0YWJsZSB0YWJsZS0nK2lkKyciPic7aWYoJ2hlYWRpbmdz
J2luIHBhZ2Upe2h0bWwrPSQud2lraUVkaXRvci5tb2R1bGVzLnRvb2xiYXIuZm4u
YnVpbGRIZWFkaW5nKGNvbnRleHQscGFnZS5oZWFkaW5ncyl9CmlmKCdyb3dzJ2lu
IHBhZ2Upe2Zvcihyb3cgaW4gcGFnZS5yb3dzKXtodG1sKz0kLndpa2lFZGl0b3Iu
bW9kdWxlcy50b29sYmFyLmZuLmJ1aWxkUm93KGNvbnRleHQscGFnZS5yb3dzW3Jv
d10pfX0KJHBhZ2UuaHRtbChodG1sKTticmVhaztjYXNlJ2NoYXJhY3RlcnMnOiRw
YWdlLmFkZENsYXNzKCdwYWdlLWNoYXJhY3RlcnMnKTskY2hhcmFjdGVycz0kKCc8
ZGl2IC8+JykuZGF0YSgnY29udGV4dCcsY29udGV4dCkuZGF0YSgnYWN0aW9ucycs
e30pO3ZhciBhY3Rpb25zPSRjaGFyYWN0ZXJzLmRhdGEoJ2FjdGlvbnMnKTtpZign
bGFuZ3VhZ2UnaW4gcGFnZSl7JGNoYXJhY3RlcnMuYXR0cignbGFuZycscGFnZS5s
YW5ndWFnZSk7fQppZignZGlyZWN0aW9uJ2luIHBhZ2UpeyRjaGFyYWN0ZXJzLmF0
dHIoJ2RpcicscGFnZS5kaXJlY3Rpb24pO30KaWYoJ2NoYXJhY3RlcnMnaW4gcGFn
ZSl7dmFyIGh0bWw9Jyc7Zm9yKHZhciBpPTA7aTxwYWdlLmNoYXJhY3RlcnMubGVu
Z3RoO2krKyl7aHRtbCs9JC53aWtpRWRpdG9yLm1vZHVsZXMudG9vbGJhci5mbi5i
dWlsZENoYXJhY3RlcihwYWdlLmNoYXJhY3RlcnNbaV0sYWN0aW9ucyk7fQokY2hh
cmFjdGVycy5odG1sKGh0bWwpLmNoaWxkcmVuKCkubW91c2Vkb3duKGZ1bmN0aW9u
KGUpe2NvbnRleHQuZm4uc2F2ZVN0dWZmRm9ySUUoKTtlLnByZXZlbnREZWZhdWx0
KCk7cmV0dXJuIGZhbHNlO30pLmNsaWNrKGZ1bmN0aW9uKGUpeyQud2lraUVkaXRv
ci5tb2R1bGVzLnRvb2xiYXIuZm4uZG9BY3Rpb24oJCh0aGlzKS5wYXJlbnQoKS5k
YXRhKCdjb250ZXh0JyksJCh0aGlzKS5wYXJlbnQoKS5kYXRhKCdhY3Rpb25zJylb
JCh0aGlzKS5hdHRyKCdyZWwnKV0sJCh0aGlzKSk7ZS5wcmV2ZW50RGVmYXVsdCgp
O3JldHVybiBmYWxzZTt9KTt9CiRwYWdlLmFwcGVuZCgkY2hhcmFjdGVycyk7YnJl
YWs7fQpyZXR1cm4gJHBhZ2U7fSxidWlsZEhlYWRpbmc6ZnVuY3Rpb24oY29udGV4
dCxoZWFkaW5ncyl7dmFyIGh0bWw9Jzx0cj4nO2ZvcihoZWFkaW5nIGluIGhlYWRp
bmdzKXtodG1sKz0nPHRoPicrJC53aWtpRWRpdG9yLmF1dG9Nc2coaGVhZGluZ3Nb
aGVhZGluZ10sWydodG1sJywndGV4dCddKSsnPC90aD4nO30KcmV0dXJuIGh0bWw7
fSxidWlsZFJvdzpmdW5jdGlvbihjb250ZXh0LHJvdyl7dmFyIGh0bWw9Jzx0cj4n
O2ZvcihjZWxsIGluIHJvdyl7aHRtbCs9Jzx0ZCBjbGFzcz0iY2VsbCBjZWxsLScr
Y2VsbCsnIiB2YWxpZ249InRvcCI+PHNwYW4+JysKJC53aWtpRWRpdG9yLmF1dG9N
c2cocm93W2NlbGxdLFsnaHRtbCcsJ3RleHQnXSkrJzwvc3Bhbj48L3RkPic7fQpo
dG1sKz0nPC90cj4nO3JldHVybiBodG1sO30sYnVpbGRDaGFyYWN0ZXI6ZnVuY3Rp
b24oY2hhcmFjdGVyLGFjdGlvbnMpe2lmKHR5cGVvZiBjaGFyYWN0ZXI9PSdzdHJp
bmcnKXtjaGFyYWN0ZXI9eydsYWJlbCc6Y2hhcmFjdGVyLCdhY3Rpb24nOnsndHlw
ZSc6J3JlcGxhY2UnLCdvcHRpb25zJzp7J3BlcmknOmNoYXJhY3Rlciwnc2VsZWN0
UGVyaSc6ZmFsc2V9fX07fWVsc2UgaWYoMCBpbiBjaGFyYWN0ZXImJjEgaW4gY2hh
cmFjdGVyKXtjaGFyYWN0ZXI9eydsYWJlbCc6Y2hhcmFjdGVyWzBdLCdhY3Rpb24n
OnsndHlwZSc6J3JlcGxhY2UnLCdvcHRpb25zJzp7J3BlcmknOmNoYXJhY3Rlclsx
XSwnc2VsZWN0UGVyaSc6ZmFsc2V9fX07fQppZignYWN0aW9uJ2luIGNoYXJhY3Rl
ciYmJ2xhYmVsJ2luIGNoYXJhY3Rlcil7YWN0aW9uc1tjaGFyYWN0ZXIubGFiZWxd
PWNoYXJhY3Rlci5hY3Rpb247cmV0dXJuJzxzcGFuIHJlbD0iJytjaGFyYWN0ZXIu
bGFiZWwrJyI+JytjaGFyYWN0ZXIubGFiZWwrJzwvc3Bhbj4nO319LGJ1aWxkVGFi
OmZ1bmN0aW9uKGNvbnRleHQsaWQsc2VjdGlvbil7dmFyIHNlbGVjdGVkPSQuY29v
a2llKCd3aWtpRWRpdG9yLScrY29udGV4dC5pbnN0YW5jZSsnLXRvb2xiYXItc2Vj
dGlvbicpO2lmKHNlbGVjdGVkIT1udWxsKXskLmNvb2tpZSgnd2lraUVkaXRvci0n
K2NvbnRleHQuaW5zdGFuY2UrJy10b29sYmFyLXNlY3Rpb24nLHNlbGVjdGVkLHtl
eHBpcmVzOjMwLHBhdGg6Jy8nfSk7fQpyZXR1cm4gJCgnPHNwYW4gLz4nKS5hdHRy
KHsnY2xhc3MnOid0YWIgdGFiLScraWQsJ3JlbCc6aWR9KS5hcHBlbmQoJCgnPGEg
Lz4nKS5hZGRDbGFzcyhzZWxlY3RlZD09aWQ/J2N1cnJlbnQnOm51bGwpLmF0dHIo
J2hyZWYnLCcjJykudGV4dCgkLndpa2lFZGl0b3IuYXV0b01zZyhzZWN0aW9uLCds
YWJlbCcpKS5kYXRhKCdjb250ZXh0Jyxjb250ZXh0KS5tb3VzZXVwKGZ1bmN0aW9u
KGUpeyQodGhpcykuYmx1cigpO30pLm1vdXNlZG93bihmdW5jdGlvbihlKXtlLnBy
ZXZlbnREZWZhdWx0KCk7cmV0dXJuIGZhbHNlO30pLmNsaWNrKGZ1bmN0aW9uKGUp
e3ZhciAkc2VjdGlvbnM9JCh0aGlzKS5kYXRhKCdjb250ZXh0JykuJHVpLmZpbmQo
Jy5zZWN0aW9ucycpO3ZhciAkc2VjdGlvbj0kKHRoaXMpLmRhdGEoJ2NvbnRleHQn
KS4kdWkuZmluZCgnLnNlY3Rpb24tJyskKHRoaXMpLnBhcmVudCgpLmF0dHIoJ3Jl
bCcpKTt2YXIgc2hvdz0kc2VjdGlvbi5jc3MoJ2Rpc3BsYXknKT09J25vbmUnOyRw
cmV2aW91c1NlY3Rpb25zPSRzZWN0aW9uLnBhcmVudCgpLmZpbmQoJy5zZWN0aW9u
LXZpc2libGUnKTskcHJldmlvdXNTZWN0aW9ucy5jc3MoJ3Bvc2l0aW9uJywnYWJz
b2x1dGUnKTskcHJldmlvdXNTZWN0aW9ucy5yZW1vdmVDbGFzcygnc2VjdGlvbi12
aXNpYmxlJyk7JHByZXZpb3VzU2VjdGlvbnMuZmFkZU91dCgnZmFzdCcsZnVuY3Rp
b24oKXskKHRoaXMpLmNzcygncG9zaXRpb24nLCdyZWxhdGl2ZScpO30pOyQodGhp
cykucGFyZW50KCkucGFyZW50KCkuZmluZCgnYScpLnJlbW92ZUNsYXNzKCdjdXJy
ZW50Jyk7JHNlY3Rpb25zLmNzcygnb3ZlcmZsb3cnLCdoaWRkZW4nKTtmdW5jdGlv
biBhbmltYXRlKCR0aGlzKXskc2VjdGlvbnMuY3NzKCdkaXNwbGF5JywnYmxvY2sn
KS5hbmltYXRlKHsnaGVpZ2h0Jzokc2VjdGlvbi5vdXRlckhlaWdodCgpfSwkc2Vj
dGlvbi5vdXRlckhlaWdodCgpKjIsZnVuY3Rpb24oKXskKHRoaXMpLmNzcygnb3Zl
cmZsb3cnLCd2aXNpYmxlJykuY3NzKCdoZWlnaHQnLCdhdXRvJyk7Y29udGV4dC5m
bi50cmlnZ2VyKCdyZXNpemUnKTt9KTt9CmlmKHNob3cpeyRzZWN0aW9uLmFkZENs
YXNzKCdzZWN0aW9uLXZpc2libGUnKTskc2VjdGlvbi5mYWRlSW4oJ2Zhc3QnKTtp
Zigkc2VjdGlvbi5oYXNDbGFzcygnbG9hZGluZycpKXt2YXIgJHRoaXM9JCh0aGlz
KTskdGhpcy5hZGRDbGFzcygnY3VycmVudCBsb2FkaW5nJyk7c2V0VGltZW91dChm
dW5jdGlvbigpeyRzZWN0aW9uLnRyaWdnZXIoJ2xvYWRTZWN0aW9uJyk7YW5pbWF0
ZSgkKHRoaXMpKTskdGhpcy5yZW1vdmVDbGFzcygnbG9hZGluZycpO30sMTAwMCk7
fWVsc2V7YW5pbWF0ZSgkKHRoaXMpKTskKHRoaXMpLmFkZENsYXNzKCdjdXJyZW50
Jyk7fX1lbHNleyRzZWN0aW9ucy5jc3MoJ2hlaWdodCcsJHNlY3Rpb24ub3V0ZXJI
ZWlnaHQoKSkuYW5pbWF0ZSh7J2hlaWdodCc6J2hpZGUnfSwkc2VjdGlvbi5vdXRl
ckhlaWdodCgpKjIsZnVuY3Rpb24oKXskKHRoaXMpLmNzcyh7J292ZXJmbG93Jzon
dmlzaWJsZScsJ2hlaWdodCc6MH0pO2NvbnRleHQuZm4udHJpZ2dlcigncmVzaXpl
Jyk7fSk7fQppZigkLnRyYWNrQWN0aW9uIT11bmRlZmluZWQpeyQudHJhY2tBY3Rp
b24oJHNlY3Rpb24uYXR0cigncmVsJykrJy4nKyhzaG93PydzaG93JzonaGlkZScp
KTt9CiQuY29va2llKCd3aWtpRWRpdG9yLScrJCh0aGlzKS5kYXRhKCdjb250ZXh0
JykuaW5zdGFuY2UrJy10b29sYmFyLXNlY3Rpb24nLHNob3c/JHNlY3Rpb24uYXR0
cigncmVsJyk6bnVsbCx7ZXhwaXJlczozMCxwYXRoOicvJ30pO2UucHJldmVudERl
ZmF1bHQoKTtyZXR1cm4gZmFsc2U7fSkpO30sYnVpbGRTZWN0aW9uOmZ1bmN0aW9u
KGNvbnRleHQsaWQsc2VjdGlvbil7dmFyICRzZWN0aW9uPSQoJzxkaXYgLz4nKS5h
dHRyKHsnY2xhc3MnOnNlY3Rpb24udHlwZSsnIHNlY3Rpb24gc2VjdGlvbi0nK2lk
LCdyZWwnOmlkfSk7dmFyIHNlbGVjdGVkPSQuY29va2llKCd3aWtpRWRpdG9yLScr
Y29udGV4dC5pbnN0YW5jZSsnLXRvb2xiYXItc2VjdGlvbicpO3ZhciBzaG93PXNl
bGVjdGVkPT1pZDtpZih0eXBlb2Ygc2VjdGlvbi5kZWZlckxvYWQhPSd1bmRlZmlu
ZWQnJiZzZWN0aW9uLmRlZmVyTG9hZCYmaWQhPT0nbWFpbicmJiFzaG93KXskc2Vj
dGlvbi5hZGRDbGFzcygnbG9hZGluZycpLmFwcGVuZCgkKCc8ZGl2IC8+JykuYWRk
Q2xhc3MoJ3NwaW5uZXInKSk7JHNlY3Rpb24uYmluZCgnbG9hZFNlY3Rpb24nLGZ1
bmN0aW9uKCl7JC53aWtpRWRpdG9yLm1vZHVsZXMudG9vbGJhci5mbi5yZWFsbHlC
dWlsZFNlY3Rpb24oY29udGV4dCxpZCxzZWN0aW9uLCRzZWN0aW9uKTskc2VjdGlv
bi5yZW1vdmVDbGFzcygnbG9hZGluZycpO30pO31lbHNleyQud2lraUVkaXRvci5t
b2R1bGVzLnRvb2xiYXIuZm4ucmVhbGx5QnVpbGRTZWN0aW9uKGNvbnRleHQsaWQs
c2VjdGlvbiwkc2VjdGlvbik7fQppZihpZCE9PSdtYWluJyl7JHNlY3Rpb24uY3Nz
KCdkaXNwbGF5JyxzaG93PydibG9jayc6J25vbmUnKTtpZihzaG93KQokc2VjdGlv
bi5hZGRDbGFzcygnc2VjdGlvbi12aXNpYmxlJyk7fQpyZXR1cm4gJHNlY3Rpb247
fSxyZWFsbHlCdWlsZFNlY3Rpb246ZnVuY3Rpb24oY29udGV4dCxpZCxzZWN0aW9u
LCRzZWN0aW9uKXtjb250ZXh0LiR0ZXh0YXJlYS50cmlnZ2VyKCd3aWtpRWRpdG9y
LXRvb2xiYXItYnVpbGRTZWN0aW9uLScrJHNlY3Rpb24uYXR0cigncmVsJyksW3Nl
Y3Rpb25dKTtzd2l0Y2goc2VjdGlvbi50eXBlKXtjYXNlJ3Rvb2xiYXInOmlmKCdn
cm91cHMnaW4gc2VjdGlvbil7Zm9yKGdyb3VwIGluIHNlY3Rpb24uZ3JvdXBzKXsk
c2VjdGlvbi5hcHBlbmQoJC53aWtpRWRpdG9yLm1vZHVsZXMudG9vbGJhci5mbi5i
dWlsZEdyb3VwKGNvbnRleHQsZ3JvdXAsc2VjdGlvbi5ncm91cHNbZ3JvdXBdKSk7
fX0KYnJlYWs7Y2FzZSdib29rbGV0Jzp2YXIgJHBhZ2VzPSQoJzxkaXYgLz4nKS5h
ZGRDbGFzcygncGFnZXMnKTt2YXIgJGluZGV4PSQoJzxkaXYgLz4nKS5hZGRDbGFz
cygnaW5kZXgnKTtpZigncGFnZXMnaW4gc2VjdGlvbil7Zm9yKHBhZ2UgaW4gc2Vj
dGlvbi5wYWdlcyl7JHBhZ2VzLmFwcGVuZCgkLndpa2lFZGl0b3IubW9kdWxlcy50
b29sYmFyLmZuLmJ1aWxkUGFnZShjb250ZXh0LHBhZ2Usc2VjdGlvbi5wYWdlc1tw
YWdlXSkpOyRpbmRleC5hcHBlbmQoJC53aWtpRWRpdG9yLm1vZHVsZXMudG9vbGJh
ci5mbi5idWlsZEJvb2ttYXJrKGNvbnRleHQscGFnZSxzZWN0aW9uLnBhZ2VzW3Bh
Z2VdKSk7fX0KJHNlY3Rpb24uYXBwZW5kKCRpbmRleCkuYXBwZW5kKCRwYWdlcyk7
JC53aWtpRWRpdG9yLm1vZHVsZXMudG9vbGJhci5mbi51cGRhdGVCb29rbGV0U2Vs
ZWN0aW9uKGNvbnRleHQsaWQsJHBhZ2VzLCRpbmRleCk7YnJlYWs7fX0sdXBkYXRl
Qm9va2xldFNlbGVjdGlvbjpmdW5jdGlvbihjb250ZXh0LGlkLCRwYWdlcywkaW5k
ZXgpe3ZhciBjb29raWU9J3dpa2lFZGl0b3ItJytjb250ZXh0Lmluc3RhbmNlKyct
Ym9va2xldC0nK2lkKyctcGFnZSc7dmFyIHNlbGVjdGVkPSQuY29va2llKGNvb2tp
ZSk7aWYoc2VsZWN0ZWQhPW51bGwpeyQuY29va2llKGNvb2tpZSxzZWxlY3RlZCx7
ZXhwaXJlczozMCxwYXRoOicvJ30pO30KdmFyICRzZWxlY3RlZEluZGV4PSRpbmRl
eC5maW5kKCcqW3JlbD0nK3NlbGVjdGVkKyddJyk7aWYoJHNlbGVjdGVkSW5kZXgu
c2l6ZSgpPT0wKXtzZWxlY3RlZD0kaW5kZXguY2hpbGRyZW4oKS5lcSgwKS5hdHRy
KCdyZWwnKTskLmNvb2tpZShjb29raWUsc2VsZWN0ZWQse2V4cGlyZXM6MzAscGF0
aDonLyd9KTt9CiRwYWdlcy5jaGlsZHJlbigpLmhpZGUoKTskcGFnZXMuZmluZCgn
KltyZWw9JytzZWxlY3RlZCsnXScpLnNob3coKTskaW5kZXguY2hpbGRyZW4oKS5y
ZW1vdmVDbGFzcygnY3VycmVudCcpOyRzZWxlY3RlZEluZGV4LmFkZENsYXNzKCdj
dXJyZW50Jyk7fSxidWlsZDpmdW5jdGlvbihjb250ZXh0LGNvbmZpZyl7dmFyICR0
YWJzPSQoJzxkaXYgLz4nKS5hZGRDbGFzcygndGFicycpLmFwcGVuZFRvKGNvbnRl
eHQubW9kdWxlcy50b29sYmFyLiR0b29sYmFyKTt2YXIgJHNlY3Rpb25zPSQoJzxk
aXYgLz4nKS5hZGRDbGFzcygnc2VjdGlvbnMnKS5hcHBlbmRUbyhjb250ZXh0Lm1v
ZHVsZXMudG9vbGJhci4kdG9vbGJhcik7Y29udGV4dC5tb2R1bGVzLnRvb2xiYXIu
JHRvb2xiYXIuYXBwZW5kKCQoJzxkaXYgLz4nKS5jc3MoJ2NsZWFyJywnYm90aCcp
KTt2YXIgc2VjdGlvblF1ZXVlPVtdO2ZvcihzZWN0aW9uIGluIGNvbmZpZyl7aWYo
c2VjdGlvbj09J21haW4nKXtjb250ZXh0Lm1vZHVsZXMudG9vbGJhci4kdG9vbGJh
ci5wcmVwZW5kKCQud2lraUVkaXRvci5tb2R1bGVzLnRvb2xiYXIuZm4uYnVpbGRT
ZWN0aW9uKGNvbnRleHQsc2VjdGlvbixjb25maWdbc2VjdGlvbl0pKTt9ZWxzZXtz
ZWN0aW9uUXVldWUucHVzaCh7JyRzZWN0aW9ucyc6JHNlY3Rpb25zLCdjb250ZXh0
Jzpjb250ZXh0LCdpZCc6c2VjdGlvbiwnY29uZmlnJzpjb25maWdbc2VjdGlvbl19
KTskdGFicy5hcHBlbmQoJC53aWtpRWRpdG9yLm1vZHVsZXMudG9vbGJhci5mbi5i
dWlsZFRhYihjb250ZXh0LHNlY3Rpb24sY29uZmlnW3NlY3Rpb25dKSk7fX0KJC5l
YWNoQXN5bmMoc2VjdGlvblF1ZXVlLHsnYnVsayc6MCwnZW5kJzpmdW5jdGlvbigp
e3ZhciBvbGRWYWx1ZT0kKCdib2R5JykuY3NzKCdwb3NpdGlvbicpOyQoJ2JvZHkn
KS5jc3MoJ3Bvc2l0aW9uJywnc3RhdGljJyk7JCgnYm9keScpLmNzcygncG9zaXRp
b24nLG9sZFZhbHVlKTt9LCdsb29wJzpmdW5jdGlvbihpLHMpe3MuJHNlY3Rpb25z
LmFwcGVuZCgkLndpa2lFZGl0b3IubW9kdWxlcy50b29sYmFyLmZuLmJ1aWxkU2Vj
dGlvbihzLmNvbnRleHQscy5pZCxzLmNvbmZpZykpO3ZhciAkc2VjdGlvbj1zLiRz
ZWN0aW9ucy5maW5kKCcuc2VjdGlvbjp2aXNpYmxlJyk7aWYoJHNlY3Rpb24uc2l6
ZSgpKXskc2VjdGlvbnMuYW5pbWF0ZSh7J2hlaWdodCc6JHNlY3Rpb24ub3V0ZXJI
ZWlnaHQoKX0sJHNlY3Rpb24ub3V0ZXJIZWlnaHQoKSoyLGZ1bmN0aW9uKCl7Y29u
dGV4dC5mbi50cmlnZ2VyKCdyZXNpemUnKTt9KTt9fX0pO319fTt9KShqUXVlcnkp
Ow==
------------CQ4wAorH1dcm6byte6AhmR
Content-Disposition: inline; filename=Vector.combined.min.js
Content-Type: application/x-javascript; name=Vector.combined.min.js
Content-Location: http://bits.wikimedia.org/w/extensions/UsabilityInitiative/Vector/Vector.combined.min.js?283-19
Content-Transfer-Encoding: Base64
CiRqKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpe2lmKCF3Z1ZlY3RvckVuYWJs
ZWRNb2R1bGVzLmNvbGxhcHNpYmxlbmF2KXtyZXR1cm4gdHJ1ZTt9CnZhciBtYXA9
eydsdHInOnsnbXNpZSc6W1snPj0nLDddXSwnb3BlcmEnOltbJz49Jyw5LjZdXSwn
a29ucXVlcm9yJzpbWyc+PScsNC4wXV0sJ2JsYWNrYmVycnknOmZhbHNlLCdpcG9k
JzpmYWxzZSwnaXBob25lJzpmYWxzZSwncHMzJzpmYWxzZX0sJ3J0bCc6eydtc2ll
JzpbWyc+PScsN11dLCdvcGVyYSc6W1snPj0nLDkuNl1dLCdrb25xdWVyb3InOltb
Jz49Jyw0LjBdXSwnYmxhY2tiZXJyeSc6ZmFsc2UsJ2lwb2QnOmZhbHNlLCdpcGhv
bmUnOmZhbHNlLCdwczMnOmZhbHNlfX07aWYoIW13LnVzYWJpbGl0eS50ZXN0QnJv
d3NlcihtYXApKXtyZXR1cm4gdHJ1ZTt9CnZhciB2ZXJzaW9uPTE7aWYod2dDb2xs
YXBzaWJsZU5hdkZvcmNlTmV3VmVyc2lvbil7dmVyc2lvbj0yO31lbHNle2lmKHdn
Q29sbGFwc2libGVOYXZCdWNrZXRUZXN0KXt2ZXJzaW9uPSRqLmNvb2tpZSgndmVj
dG9yLW5hdi1wcmVmLXZlcnNpb24nKTtpZih2ZXJzaW9uPT1udWxsKXt2ZXJzaW9u
PU1hdGgucm91bmQoTWF0aC5yYW5kb20oKSsxKTskai5jb29raWUoJ3ZlY3Rvci1u
YXYtcHJlZi12ZXJzaW9uJyx2ZXJzaW9uLHsnZXhwaXJlcyc6MzAsJ3BhdGgnOicv
J30pO319fQppZih2ZXJzaW9uPT0yKXt2YXIgbGltaXQ9NTt2YXIgdGhyZXNob2xk
PTM7JGooJyNwLWxhbmcgdWwnKS5hZGRDbGFzcygnc2Vjb25kYXJ5JykuYmVmb3Jl
KCc8dWwgY2xhc3M9InByaW1hcnkiPjwvdWw+Jyk7dmFyIGxhbmd1YWdlcz1bJ2Vu
JywnZnInLCdkZScsJ2VzJywncHQnLCdpdCcsJ3J1JywnamEnLCdubCcsJ3BsJywn
emgnLCdzdicsJ2FyJywndHInLCd1aycsJ2ZpJywnbm8nLCdjYScsJ3JvJywnaHUn
LCdrc2gnLCdpZCcsJ2hlJywnY3MnLCd2aScsJ2tvJywnc3InLCdmYScsJ2RhJywn
ZW8nLCdzaycsJ3RoJywnbHQnLCd2bycsJ2JnJywnc2wnLCdocicsJ2hpJywnZXQn
LCdtaycsJ3NpbXBsZScsJ25ldycsJ21zJywnbm4nLCdnbCcsJ2VsJywnZXUnLCdr
YScsJ3RsJywnYm4nLCdsdicsJ21sJywnYnMnLCd0ZScsJ2xhJywnYXonLCdzaCcs
J3dhcicsJ2JyJywnaXMnLCdtcicsJ2JlLXgtb2xkJywnc3EnLCdjeScsJ2xiJywn
dGEnLCd6aC1jbGFzc2ljYWwnLCdhbicsJ2p2JywnaHQnLCdvYycsJ2JweScsJ2Nl
YicsJ3VyJywnemgteXVlJywncG1zJywnc2NuJywnYmUnLCdyb2EtcnVwJywncXUn
LCdhZicsJ3N3JywnbmRzJywnZnknLCdsbW8nLCd3YScsJ2t1JywnaHknLCdzdScs
J3lpJywnaW8nLCdvcycsJ2dhJywnYXN0JywnbmFwJywndmVjJywnZ3UnLCdjdics
J2JhdC1zbWcnLCdrbicsJ3V6JywnemgtbWluLW5hbicsJ3NpJywnYWxzJywneW8n
LCdsaScsJ2dhbicsJ2FyeicsJ3NhaCcsJ3R0JywnYmFyJywnZ2QnLCd0ZycsJ2tr
JywncGFtJywnaHNiJywncm9hLXRhcmEnLCduYWgnLCdtbicsJ3ZscycsJ2d2Jywn
bWknLCdhbScsJ2lhJywnY28nLCduZScsJ2ZvJywnbmRzLW5sJywnZ2xrJywnbXQn
LCdhbmcnLCd3dXUnLCdkdicsJ2ttJywnc2NvJywnYmNsJywnbWcnLCdteScsJ2Rp
cScsJ3RrJywnc3psJywndWcnLCdmaXUtdnJvJywnc2MnLCdybScsJ25ybScsJ3Bz
JywnbnYnLCdoaWYnLCdibycsJ3NlJywnc2EnLCdwbmInLCdtYXAtYm1zJywnbGFk
JywnbGlqJywnY3JoJywnZnVyJywna3cnLCd0bycsJ3BhJywnamJvJywnYmEnLCdp
bG8nLCdjc2InLCd3bycsJ3hhbCcsJ2tyYycsJ2NrYicsJ3BhZycsJ2xuJywnZnJw
JywnbXpuJywnY2UnLCdub3YnLCdrdicsJ2VtbCcsJ2duJywna3knLCdwZGMnLCds
bycsJ2hhdycsJ21ocicsJ2RzYicsJ3N0cScsJ3RwaScsJ2FyYycsJ2hhaycsJ2ll
Jywnc28nLCdiaCcsJ2V4dCcsJ213bCcsJ3NkJywnaWcnLCdteXYnLCdheScsJ2l1
JywnbmEnLCdjdScsJ3BpJywna2wnLCd0eScsJ2xiZScsJ2FiJywnZ290Jywnc20n
LCdhcycsJ21vJywnZWUnLCd6ZWEnLCdhdicsJ2FjZScsJ2tnJywnYm0nLCdjZG8n
LCdjYmstemFtJywna2FiJywnb20nLCdjaHInLCdwYXAnLCd1ZG0nLCdrcycsJ3p1
Jywncm15JywnY3InLCdjaCcsJ3N0JywnaWsnLCdtZGYnLCdrYWEnLCdhYScsJ2Zq
Jywnc3JuJywndGV0Jywnb3InLCdwbnQnLCdidWcnLCdzcycsJ3RzJywncGNkJywn
cGloJywnemEnLCdzZycsJ2xnJywnYnhyJywneGgnLCdhaycsJ2hhJywnYmknLCd2
ZScsJ3RuJywnZmYnLCdkeicsJ3RpJywna2knLCdueScsJ3J3JywnY2h5JywndHcn
LCdzbicsJ3R1bScsJ25nJywncm4nLCdtaCcsJ2lpJywnY2hvJywnaHonLCdrcics
J2hvJywnbXVzJywna2onXTt2YXIgYWNjZXB0TGFuZ0Nvb2tpZT0kai5jb29raWUo
J2FjY2VwdC1sYW5ndWFnZScpO2lmKGFjY2VwdExhbmdDb29raWUhPW51bGwpe2lm
KGFjY2VwdExhbmdDb29raWUhPScnKXtsYW5ndWFnZXM9YWNjZXB0TGFuZ0Nvb2tp
ZS5zcGxpdCgnLCcpLmNvbmNhdChsYW5ndWFnZXMpO319ZWxzZXskai5nZXRKU09O
KHdnU2NyaXB0UGF0aCsnL2FwaS5waHA/YWN0aW9uPXF1ZXJ5Jm1ldGE9dXNlcmlu
Zm8mdWlwcm9wPWFjY2VwdGxhbmcmZm9ybWF0PWpzb24nLGZ1bmN0aW9uKGRhdGEp
e3ZhciBsYW5ncz1bXTtpZih0eXBlb2YgZGF0YS5xdWVyeSE9J3VuZGVmaW5lZCcm
JnR5cGVvZiBkYXRhLnF1ZXJ5LnVzZXJpbmZvIT0ndW5kZWZpbmVkJyYmdHlwZW9m
IGRhdGEucXVlcnkudXNlcmluZm8uYWNjZXB0bGFuZyE9J3VuZGVmaW5lZCcpe2Zv
cih2YXIgaj0wO2o8ZGF0YS5xdWVyeS51c2VyaW5mby5hY2NlcHRsYW5nLmxlbmd0
aDtqKyspe2lmKGRhdGEucXVlcnkudXNlcmluZm8uYWNjZXB0bGFuZ1tqXS5xIT0w
KXtsYW5ncy5wdXNoKGRhdGEucXVlcnkudXNlcmluZm8uYWNjZXB0bGFuZ1tqXVsn
KiddKTt9fX0KJGouY29va2llKCdhY2NlcHQtbGFuZ3VhZ2UnLGxhbmdzLmpvaW4o
JywnKSx7J3BhdGgnOicvJywnZXhwaXJlcyc6MzB9KTt9KTt9CnZhciAkcHJpbWFy
eT0kaignI3AtbGFuZyB1bC5wcmltYXJ5Jyk7dmFyICRzZWNvbmRhcnk9JGooJyNw
LWxhbmcgdWwuc2Vjb25kYXJ5Jyk7aWYoJHNlY29uZGFyeS5jaGlsZHJlbigpLmxl
bmd0aDxsaW1pdCt0aHJlc2hvbGQpe2xpbWl0Kz10aHJlc2hvbGQ7fQp2YXIgY291
bnQ9MDtmb3IodmFyIGk9MDtpPGxhbmd1YWdlcy5sZW5ndGg7aSsrKXt2YXIgJGxp
bms9JHNlY29uZGFyeS5maW5kKCcuaW50ZXJ3aWtpLScrbGFuZ3VhZ2VzW2ldKTtp
ZigkbGluay5sZW5ndGgpe2lmKGNvdW50Kys8bGltaXQpeyRsaW5rLmFwcGVuZFRv
KCRwcmltYXJ5KTt9ZWxzZXticmVhazt9fX0KaWYoY291bnQ8bGltaXQpeyRzZWNv
bmRhcnkuY2hpbGRyZW4oKS5lYWNoKGZ1bmN0aW9uKCl7aWYoY291bnQrKzxsaW1p
dCl7JGoodGhpcykuYXBwZW5kVG8oJHByaW1hcnkpO31lbHNle3JldHVybiBmYWxz
ZTt9fSk7fQppZigkc2Vjb25kYXJ5LmNoaWxkcmVuKCkubGVuZ3RoPT0wKXskc2Vj
b25kYXJ5LnJlbW92ZSgpO31lbHNleyRqKCcjcC1sYW5nJykuYWZ0ZXIoJzxkaXYg
aWQ9InAtbGFuZy1tb3JlIiBjbGFzcz0icG9ydGFsIj48aDU+PC9oNT48ZGl2IGNs
YXNzPSJib2R5Ij48L2Rpdj48L2Rpdj4nKTskaignI3AtbGFuZy1tb3JlIGg1Jyku
dGV4dChtdy51c2FiaWxpdHkuZ2V0TXNnKCd2ZWN0b3ItY29sbGFwc2libGVuYXYt
bW9yZScpKTskc2Vjb25kYXJ5LmFwcGVuZFRvKCRqKCcjcC1sYW5nLW1vcmUgZGl2
LmJvZHknKSk7fQokaignI3AtbGFuZycpLmFkZENsYXNzKCdwZXJzaXN0ZW50Jyk7
fQokaignI213LXBhbmVsID4gZGl2LnBvcnRhbDpmaXJzdCcpLmFkZENsYXNzKCdm
aXJzdCBwZXJzaXN0ZW50Jyk7JGooJyNtdy1wYW5lbCcpLmFkZENsYXNzKCdjb2xs
YXBzaWJsZS1uYXYnKTskaignI213LXBhbmVsID4gZGl2LnBvcnRhbDpub3QoLnBl
cnNpc3RlbnQpJykuZWFjaChmdW5jdGlvbihpKXt2YXIgaWQ9JGoodGhpcykuYXR0
cignaWQnKTt2YXIgc3RhdGU9JGouY29va2llKCd2ZWN0b3ItbmF2LScraWQpO2lm
KHN0YXRlPT0ndHJ1ZSd8fChzdGF0ZT09bnVsbCYmaTwxKXx8KHN0YXRlPT1udWxs
JiZ2ZXJzaW9uPT0xJiZpZD09J3AtbGFuZycpKXskaih0aGlzKS5hZGRDbGFzcygn
ZXhwYW5kZWQnKS5maW5kKCdkaXYuYm9keScpLnNob3coKTt9ZWxzZXskaih0aGlz
KS5hZGRDbGFzcygnY29sbGFwc2VkJyk7fQppZihzdGF0ZSE9bnVsbCl7JGouY29v
a2llKCd2ZWN0b3ItbmF2LScrJGoodGhpcykuYXR0cignaWQnKSxzdGF0ZSx7J2V4
cGlyZXMnOjMwLCdwYXRoJzonLyd9KTt9fSk7ZnVuY3Rpb24gdG9nZ2xlKCRlbGVt
ZW50KXskai5jb29raWUoJ3ZlY3Rvci1uYXYtJyskZWxlbWVudC5wYXJlbnQoKS5h
dHRyKCdpZCcpLCRlbGVtZW50LnBhcmVudCgpLmlzKCcuY29sbGFwc2VkJykseydl
eHBpcmVzJzozMCwncGF0aCc6Jy8nfSk7JGVsZW1lbnQucGFyZW50KCkudG9nZ2xl
Q2xhc3MoJ2V4cGFuZGVkJykudG9nZ2xlQ2xhc3MoJ2NvbGxhcHNlZCcpLmZpbmQo
J2Rpdi5ib2R5Jykuc2xpZGVUb2dnbGUoJ2Zhc3QnKTt9CnZhciAkaGVhZGluZ3M9
JGooJyNtdy1wYW5lbCA+IGRpdi5wb3J0YWw6bm90KC5wZXJzaXN0ZW50KSA+IGg1
Jyk7dmFyIHRhYkluZGV4PW13LnVzYWJpbGl0eS5nZXRNYXhUYWJJbmRleCgpKzE7
JGooJyNzZWFyY2hJbnB1dCcpLmF0dHIoJ3RhYmluZGV4Jyx0YWJJbmRleCsrKTsk
aGVhZGluZ3MuZWFjaChmdW5jdGlvbigpeyRqKHRoaXMpLmF0dHIoJ3RhYmluZGV4
Jyx0YWJJbmRleCsrKTt9KTskaGVhZGluZ3Mua2V5ZG93bihmdW5jdGlvbihldmVu
dCl7aWYoZXZlbnQud2hpY2g9PTEzfHxldmVudC53aGljaD09MzIpe3RvZ2dsZSgk
aih0aGlzKSk7fX0pLm1vdXNlZG93bihmdW5jdGlvbigpe3RvZ2dsZSgkaih0aGlz
KSk7JGoodGhpcykuYmx1cigpO3JldHVybiBmYWxzZTt9KTt9KTskaihkb2N1bWVu
dCkucmVhZHkoZnVuY3Rpb24oKXtpZighd2dWZWN0b3JFbmFibGVkTW9kdWxlcy5j
b2xsYXBzaWJsZXRhYnMpe3JldHVybiB0cnVlO30KdmFyIHJ0bD0kaignYm9keScp
LmlzKCcucnRsJyk7JGouY29sbGFwc2libGVUYWJzLm1vdmVUb0NvbGxhcHNlZD1m
dW5jdGlvbihlbGUpe3ZhciAkbW92aW5nPSRqKGVsZSk7dmFyIGRhdGE9JGouY29s
bGFwc2libGVUYWJzLmdldFNldHRpbmdzKCRtb3ZpbmcpO2lmKCFkYXRhKXtyZXR1
cm47fQp2YXIgZXhwQ29udGFpbmVyU2V0dGluZ3M9JGouY29sbGFwc2libGVUYWJz
LmdldFNldHRpbmdzKCRqKGRhdGEuZXhwYW5kZWRDb250YWluZXIpKTtpZighZXhw
Q29udGFpbmVyU2V0dGluZ3Mpe3JldHVybjt9CmV4cENvbnRhaW5lclNldHRpbmdz
LnNoaWZ0aW5nPXRydWU7dmFyIHRhcmdldD1kYXRhLmNvbGxhcHNlZENvbnRhaW5l
cjskbW92aW5nLmNzcygicG9zaXRpb24iLCJyZWxhdGl2ZSIpLmNzcygocnRsPyds
ZWZ0JzoncmlnaHQnKSwwKS5hbmltYXRlKHt3aWR0aDonMXB4J30sIm5vcm1hbCIs
ZnVuY3Rpb24oKXskaih0aGlzKS5oaWRlKCk7JGooJzxzcGFuIGNsYXNzPSJwbGFj
ZWhvbGRlciIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPjwvc3Bhbj4nKS5pbnNlcnRB
ZnRlcih0aGlzKTskaih0aGlzKS5yZW1vdmUoKS5wcmVwZW5kVG8odGFyZ2V0KS5k
YXRhKCdjb2xsYXBzaWJsZVRhYnNTZXR0aW5ncycsZGF0YSk7JGoodGhpcykuYXR0
cignc3R5bGUnLCdkaXNwbGF5Omxpc3QtaXRlbTsnKTt2YXIgZGF0YT0kai5jb2xs
YXBzaWJsZVRhYnMuZ2V0U2V0dGluZ3MoJGooZWxlKSk7aWYoIWRhdGEpe3JldHVy
bjt9CnZhciBleHBDb250YWluZXJTZXR0aW5ncz0kai5jb2xsYXBzaWJsZVRhYnMu
Z2V0U2V0dGluZ3MoJGooZGF0YS5leHBhbmRlZENvbnRhaW5lcikpO2lmKCFleHBD
b250YWluZXJTZXR0aW5ncyl7cmV0dXJuO30KZXhwQ29udGFpbmVyU2V0dGluZ3Mu
c2hpZnRpbmc9ZmFsc2U7JGouY29sbGFwc2libGVUYWJzLmhhbmRsZVJlc2l6ZSgp
O30pO307JGouY29sbGFwc2libGVUYWJzLm1vdmVUb0V4cGFuZGVkPWZ1bmN0aW9u
KGVsZSl7dmFyICRtb3Zpbmc9JGooZWxlKTt2YXIgZGF0YT0kai5jb2xsYXBzaWJs
ZVRhYnMuZ2V0U2V0dGluZ3MoJG1vdmluZyk7aWYoIWRhdGEpe3JldHVybjt9CnZh
ciBleHBDb250YWluZXJTZXR0aW5ncz0kai5jb2xsYXBzaWJsZVRhYnMuZ2V0U2V0
dGluZ3MoJGooZGF0YS5leHBhbmRlZENvbnRhaW5lcikpO2lmKCFleHBDb250YWlu
ZXJTZXR0aW5ncyl7cmV0dXJuO30KZXhwQ29udGFpbmVyU2V0dGluZ3Muc2hpZnRp
bmc9dHJ1ZTt2YXIgJHRhcmdldD0kaihkYXRhLmV4cGFuZGVkQ29udGFpbmVyKS5m
aW5kKCdzcGFuLnBsYWNlaG9sZGVyOmZpcnN0Jyk7dmFyIGV4cGFuZGVkV2lkdGg9
ZGF0YS5leHBhbmRlZFdpZHRoOyRtb3ZpbmcuY3NzKCJwb3NpdGlvbiIsInJlbGF0
aXZlIikuY3NzKChydGw/J3JpZ2h0JzonbGVmdCcpLDApLmNzcygnd2lkdGgnLCcx
cHgnKTskdGFyZ2V0LnJlcGxhY2VXaXRoKCRtb3ZpbmcucmVtb3ZlKCkuY3NzKCd3
aWR0aCcsJzFweCcpLmRhdGEoJ2NvbGxhcHNpYmxlVGFic1NldHRpbmdzJyxkYXRh
KS5hbmltYXRlKHt3aWR0aDpleHBhbmRlZFdpZHRoKyJweCJ9LCJub3JtYWwiLGZ1
bmN0aW9uKCl7JGoodGhpcykuYXR0cignc3R5bGUnLCdkaXNwbGF5OmJsb2NrOycp
O3ZhciBkYXRhPSRqLmNvbGxhcHNpYmxlVGFicy5nZXRTZXR0aW5ncygkaihlbGUp
KTtpZighZGF0YSl7cmV0dXJuO30KdmFyIGV4cENvbnRhaW5lclNldHRpbmdzPSRq
LmNvbGxhcHNpYmxlVGFicy5nZXRTZXR0aW5ncygkaihkYXRhLmV4cGFuZGVkQ29u
dGFpbmVyKSk7aWYoIWV4cENvbnRhaW5lclNldHRpbmdzKXtyZXR1cm47fQpleHBD
b250YWluZXJTZXR0aW5ncy5zaGlmdGluZz1mYWxzZTskai5jb2xsYXBzaWJsZVRh
YnMuaGFuZGxlUmVzaXplKCk7fSkpO307JGooJyNwLXZpZXdzIHVsJykuYmluZCgi
YmVmb3JlVGFiQ29sbGFwc2UiLGZ1bmN0aW9uKCl7aWYoJGooJyNwLWNhY3Rpb25z
JykuY3NzKCdkaXNwbGF5Jyk9PSdub25lJykKJGooIiNwLWNhY3Rpb25zIikuYWRk
Q2xhc3MoImZpbGxlZFBvcnRsZXQiKS5yZW1vdmVDbGFzcygiZW1wdHlQb3J0bGV0
IikuZmluZCgnaDUnKS5jc3MoJ3dpZHRoJywnMXB4JykuYW5pbWF0ZSh7J3dpZHRo
JzonMjZweCd9LDM5MCk7fSkuYmluZCgiYmVmb3JlVGFiRXhwYW5kIixmdW5jdGlv
bigpe2lmKCRqKCcjcC1jYWN0aW9ucyBsaScpLmxlbmd0aD09MSkKJGooIiNwLWNh
Y3Rpb25zIGg1IikuYW5pbWF0ZSh7J3dpZHRoJzonMXB4J30sMzcwLGZ1bmN0aW9u
KCl7JGoodGhpcykuYXR0cignc3R5bGUnLCcnKS5wYXJlbnQoKS5hZGRDbGFzcygi
ZW1wdHlQb3J0bGV0IikucmVtb3ZlQ2xhc3MoImZpbGxlZFBvcnRsZXQiKTt9KTt9
KS5jb2xsYXBzaWJsZVRhYnMoe2V4cGFuZENvbmRpdGlvbjpmdW5jdGlvbihlbGVX
aWR0aCl7aWYocnRsKXtyZXR1cm4oJGooJyNyaWdodC1uYXZpZ2F0aW9uJykucG9z
aXRpb24oKS5sZWZ0KyRqKCcjcmlnaHQtbmF2aWdhdGlvbicpLndpZHRoKCkrMSk8
KCRqKCcjbGVmdC1uYXZpZ2F0aW9uJykucG9zaXRpb24oKS5sZWZ0LWVsZVdpZHRo
KTt9ZWxzZXtyZXR1cm4oJGooJyNsZWZ0LW5hdmlnYXRpb24nKS5wb3NpdGlvbigp
LmxlZnQrJGooJyNsZWZ0LW5hdmlnYXRpb24nKS53aWR0aCgpKzEpPCgkaignI3Jp
Z2h0LW5hdmlnYXRpb24nKS5wb3NpdGlvbigpLmxlZnQtZWxlV2lkdGgpO319LGNv
bGxhcHNlQ29uZGl0aW9uOmZ1bmN0aW9uKCl7aWYocnRsKXtyZXR1cm4oJGooJyNy
aWdodC1uYXZpZ2F0aW9uJykucG9zaXRpb24oKS5sZWZ0KyRqKCcjcmlnaHQtbmF2
aWdhdGlvbicpLndpZHRoKCkpPiRqKCcjbGVmdC1uYXZpZ2F0aW9uJykucG9zaXRp
b24oKS5sZWZ0O31lbHNle3JldHVybigkaignI2xlZnQtbmF2aWdhdGlvbicpLnBv
c2l0aW9uKCkubGVmdCskaignI2xlZnQtbmF2aWdhdGlvbicpLndpZHRoKCkpPiRq
KCcjcmlnaHQtbmF2aWdhdGlvbicpLnBvc2l0aW9uKCkubGVmdDt9fX0pO30pOyRq
KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpe2lmKCF3Z1ZlY3RvckVuYWJsZWRN
b2R1bGVzLmVkaXR3YXJuaW5nfHwkaignI3dwVGV4dGJveDEnKS5zaXplKCk9PTAp
e3JldHVybiB0cnVlO30KJGooJyN3cFRleHRib3gxLCAjd3BTdW1tYXJ5JykuZWFj
aChmdW5jdGlvbigpeyRqKHRoaXMpLmRhdGEoJ29yaWd0ZXh0Jywkaih0aGlzKS52
YWwoKSk7fSk7dmFyIGZhbGxiYWNrV2luZG93T25CZWZvcmVVbmxvYWQ9d2luZG93
Lm9uYmVmb3JldW5sb2FkO3ZhciBvdXJXaW5kb3dPbkJlZm9yZVVubG9hZD1mdW5j
dGlvbigpe3ZhciBmYWxsYmFja1Jlc3VsdD11bmRlZmluZWQ7dmFyIHJldHZhbD11
bmRlZmluZWQ7dmFyIHRoaXNGdW5jPWFyZ3VtZW50cy5jYWxsZWU7aWYoZmFsbGJh
Y2tXaW5kb3dPbkJlZm9yZVVubG9hZCl7ZmFsbGJhY2tSZXN1bHQ9ZmFsbGJhY2tX
aW5kb3dPbkJlZm9yZVVubG9hZCgpO30KaWYoZmFsbGJhY2tSZXN1bHQhPT11bmRl
ZmluZWQpe3JldHZhbD1mYWxsYmFja1Jlc3VsdDt9ZWxzZXtpZih3Z0FjdGlvbj09
J3N1Ym1pdCd8fCRqKCcjd3BUZXh0Ym94MScpLmRhdGEoJ29yaWd0ZXh0JykhPSRq
KCcjd3BUZXh0Ym94MScpLnZhbCgpfHwkaignI3dwU3VtbWFyeScpLmRhdGEoJ29y
aWd0ZXh0JykhPSRqKCcjd3BTdW1tYXJ5JykudmFsKCkpe3JldHZhbD1tdy51c2Fi
aWxpdHkuZ2V0TXNnKCd2ZWN0b3ItZWRpdHdhcm5pbmctd2FybmluZycpO319Cndp
bmRvdy5vbmJlZm9yZXVubG9hZD1udWxsO2lmKHJldHZhbCE9PXVuZGVmaW5lZCl7
c2V0VGltZW91dChmdW5jdGlvbigpe3dpbmRvdy5vbmJlZm9yZXVubG9hZD10aGlz
RnVuYzt9KTtyZXR1cm4gcmV0dmFsO319O3ZhciBwYWdlU2hvd0hhbmRsZXI9ZnVu
Y3Rpb24oKXt3aW5kb3cub25iZWZvcmV1bmxvYWQ9b3VyV2luZG93T25CZWZvcmVV
bmxvYWQ7fTtwYWdlU2hvd0hhbmRsZXIoKTtpZih3aW5kb3cuYWRkRXZlbnRMaXN0
ZW5lcil7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3BhZ2VzaG93JyxwYWdlU2hv
d0hhbmRsZXIsZmFsc2UpO31lbHNlIGlmKHdpbmRvdy5hdHRhY2hFdmVudCl7d2lu
ZG93LmF0dGFjaEV2ZW50KCdwYWdlc2hvdycscGFnZVNob3dIYW5kbGVyKTt9CiRq
KCdmb3JtJykuc3VibWl0KGZ1bmN0aW9uKCl7d2luZG93Lm9uYmVmb3JldW5sb2Fk
PWZhbGxiYWNrV2luZG93T25CZWZvcmVVbmxvYWQ7fSk7fSk7dmFyIGZhbGxiYWNr
V2luZG93T25CZWZvcmVVbmxvYWQ9bnVsbDtpZih3Z1ZlY3RvckVuYWJsZWRNb2R1
bGVzLnNpbXBsZXNlYXJjaCYmc2tpbj09J3ZlY3RvcicmJnR5cGVvZiBvc19hdXRv
bG9hZF9pbnB1dHMhPT0ndW5kZWZpbmVkJyYmb3NfYXV0b2xvYWRfZm9ybXMhPT0n
dW5kZWZpbmVkJyl7b3NfYXV0b2xvYWRfaW5wdXRzPVtdO29zX2F1dG9sb2FkX2Zv
cm1zPVtdO30KJGooZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7aWYoIXdnVmVj
dG9yRW5hYmxlZE1vZHVsZXMuc2ltcGxlc2VhcmNofHx3Z1ZlY3RvclByZWZlcmVu
Y2VzLnNpbXBsZXNlYXJjaC5kaXNhYmxlc3VnZ2VzdHx8c2tpbiE9J3ZlY3Rvcicp
e3JldHVybiB0cnVlO30KdmFyIG1vZD17J2Jyb3dzZXJzJzp7J2x0cic6eydvcGVy
YSc6W1snPj0nLDkuNl1dLCdkb2NvbW8nOmZhbHNlLCdibGFja2JlcnJ5JzpmYWxz
ZSwnaXBvZCc6ZmFsc2UsJ2lwaG9uZSc6ZmFsc2V9LCdydGwnOnsnb3BlcmEnOltb
Jz49Jyw5LjZdXSwnZG9jb21vJzpmYWxzZSwnYmxhY2tiZXJyeSc6ZmFsc2UsJ2lw
b2QnOmZhbHNlLCdpcGhvbmUnOmZhbHNlfX19O2lmKCEkai53aWtpRWRpdG9yLmlz
U3VwcG9ydGVkKG1vZCkpe3JldHVybiB0cnVlO30KaWYoJ3BsYWNlaG9sZGVyJ2lu
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0JykpeyRqKCdkaXYjc2ltcGxl
U2VhcmNoID4gaW5wdXQjc2VhcmNoSW5wdXQnKS5hdHRyKCdwbGFjZWhvbGRlcics
bXcudXNhYmlsaXR5LmdldE1zZygndmVjdG9yLXNpbXBsZXNlYXJjaC1zZWFyY2gn
KSk7fWVsc2V7JGooJ2RpdiNzaW1wbGVTZWFyY2ggPiBpbnB1dCNzZWFyY2hJbnB1
dCcpLmVhY2goZnVuY3Rpb24oKXt2YXIgJGlucHV0PSRqKHRoaXMpOyRpbnB1dC5i
aW5kKCdibHVyJyxmdW5jdGlvbigpe2lmKCRpbnB1dC52YWwoKS5sZW5ndGg9PTAp
eyRpbnB1dC52YWwobXcudXNhYmlsaXR5LmdldE1zZygndmVjdG9yLXNpbXBsZXNl
YXJjaC1zZWFyY2gnKSkuYWRkQ2xhc3MoJ3BsYWNlaG9sZGVyJyk7fX0pLmJpbmQo
J2ZvY3VzJyxmdW5jdGlvbigpe2lmKCRpbnB1dC5oYXNDbGFzcygncGxhY2Vob2xk
ZXInKSl7JGlucHV0LnZhbCgnJykucmVtb3ZlQ2xhc3MoJ3BsYWNlaG9sZGVyJyk7
fX0pLnBhcmVudHMoJ2Zvcm0nKS5iaW5kKCdzdWJtaXQnLGZ1bmN0aW9uKCl7aWYo
JGlucHV0Lmhhc0NsYXNzKCdwbGFjZWhvbGRlcicpKXskaW5wdXQudmFsKCcnKS5y
ZW1vdmVDbGFzcygncGxhY2Vob2xkZXInKTt9fSk7aWYoJGlucHV0LnZhbCgpPT0n
Jyl7JGlucHV0LnRyaWdnZXIoJ2JsdXInKTt9fSk7fQokaignI3NlYXJjaElucHV0
LCAjc2VhcmNoSW5wdXQyLCAjcG93ZXJTZWFyY2hUZXh0LCAjc2VhcmNoVGV4dCcp
LnN1Z2dlc3Rpb25zKHtmZXRjaDpmdW5jdGlvbihxdWVyeSl7dmFyICR0aGlzPSRq
KHRoaXMpO3ZhciByZXF1ZXN0PSRqLmFqYXgoe3VybDp3Z1NjcmlwdFBhdGgrJy9h
cGkucGhwJyxkYXRhOnsnYWN0aW9uJzonb3BlbnNlYXJjaCcsJ3NlYXJjaCc6cXVl
cnksJ25hbWVzcGFjZSc6MCwnc3VnZ2VzdCc6Jyd9LGRhdGFUeXBlOidqc29uJyxz
dWNjZXNzOmZ1bmN0aW9uKGRhdGEpe2lmKGRhdGEmJjEgaW4gZGF0YSl7JHRoaXMu
c3VnZ2VzdGlvbnMoJ3N1Z2dlc3Rpb25zJyxkYXRhWzFdKTt9fX0pOyRqKHRoaXMp
LmRhdGEoJ3JlcXVlc3QnLHJlcXVlc3QpO30sY2FuY2VsOmZ1bmN0aW9uKCl7dmFy
IHJlcXVlc3Q9JGoodGhpcykuZGF0YSgncmVxdWVzdCcpO2lmKHJlcXVlc3QmJnR5
cGVvZiByZXF1ZXN0LmFib3J0PT0nZnVuY3Rpb24nKXtyZXF1ZXN0LmFib3J0KCk7
JGoodGhpcykucmVtb3ZlRGF0YSgncmVxdWVzdCcpO319LHJlc3VsdDp7c2VsZWN0
OmZ1bmN0aW9uKCR0ZXh0Ym94KXskdGV4dGJveC5jbG9zZXN0KCdmb3JtJykuc3Vi
bWl0KCk7fX0sZGVsYXk6MTIwLHBvc2l0aW9uRnJvbUxlZnQ6JGooJ2JvZHknKS5p
cygnLnJ0bCcpLGhpZ2hsaWdodElucHV0OnRydWV9KS5iaW5kKCdwYXN0ZSBjdXQn
LGZ1bmN0aW9uKGUpeyRqKHRoaXMpLnRyaWdnZXIoJ2tleXByZXNzJyk7fSk7JGoo
JyNzZWFyY2hJbnB1dCcpLnN1Z2dlc3Rpb25zKHtyZXN1bHQ6e3NlbGVjdDpmdW5j
dGlvbigkdGV4dGJveCl7JHRleHRib3guY2xvc2VzdCgnZm9ybScpLnN1Ym1pdCgp
O319LHNwZWNpYWw6e3JlbmRlcjpmdW5jdGlvbihxdWVyeSl7aWYoJGoodGhpcyku
Y2hpbGRyZW4oKS5zaXplKCk9PTApeyRqKHRoaXMpLnNob3coKQokbGFiZWw9JGoo
JzxkaXYgLz4nKS5hZGRDbGFzcygnc3BlY2lhbC1sYWJlbCcpLnRleHQobXcudXNh
YmlsaXR5LmdldE1zZygndmVjdG9yLXNpbXBsZXNlYXJjaC1jb250YWluaW5nJykp
LmFwcGVuZFRvKCRqKHRoaXMpKTskcXVlcnk9JGooJzxkaXYgLz4nKS5hZGRDbGFz
cygnc3BlY2lhbC1xdWVyeScpLnRleHQocXVlcnkpLmFwcGVuZFRvKCRqKHRoaXMp
KTskcXVlcnkuYXV0b0VsbGlwc2lzKCk7fWVsc2V7JGoodGhpcykuZmluZCgnLnNw
ZWNpYWwtcXVlcnknKS5lbXB0eSgpLnRleHQocXVlcnkpLmF1dG9FbGxpcHNpcygp
O319LHNlbGVjdDpmdW5jdGlvbigkdGV4dGJveCl7JHRleHRib3guY2xvc2VzdCgn
Zm9ybScpLmFwcGVuZCgkaignPGlucHV0IC8+JykuYXR0cih7J3R5cGUnOidoaWRk
ZW4nLCduYW1lJzonZnVsbHRleHQnLCd2YWx1ZSc6MX0pKTskdGV4dGJveC5jbG9z
ZXN0KCdmb3JtJykuc3VibWl0KCk7fX0sJHJlZ2lvbjokaignI3NpbXBsZVNlYXJj
aCcpfSk7fSk7
------------CQ4wAorH1dcm6byte6AhmR
Content-Disposition: inline; filename=index.js
Content-Type: text/javascript; charset=utf-8; name=index.js
Content-Location: http://ca.wikipedia.org/w/index.php?title=Especial:BannerController&cache=/cn.js&283-19
Content-Transfer-Encoding: 8bit
function insertBanner(bannerJson) {
jQuery('div#centralNotice').prepend( bannerJson.banner );
}
function toggleNotice() {
var notice = document.getElementById('centralNotice');
if (!wgNoticeToggleState) {
notice.className = notice.className.replace('collapsed', 'expanded');
toggleNoticeCookie('0');
} else {
notice.className = notice.className.replace('expanded', 'collapsed');
toggleNoticeCookie('1');
}
wgNoticeToggleState = !wgNoticeToggleState;
}
function toggleNoticeStyle(elems, display) {
if(elems)
for(var i=0;i
';
$( '#siteNotice' ).prepend( ''+bannerScript+'
' );
},
'loadBannerList': function( geoOverride ) {
if ( geoOverride ) {
var geoLocation = geoOverride; // override the geo info
} else {
var geoLocation = Geo.country; // pull the geo info
}
var bannerListQuery = $.param( { 'language': wgContentLanguage, 'project': wgNoticeProject, 'country': geoLocation } );
var bannerListURL = wgScript + '?title=' + encodeURIComponent(wgFormattedNamespaces[-1]) + ':BannerListLoader&cache=/cn.js&' + bannerListQuery;
var request = $.ajax( {
url: bannerListURL,
dataType: 'json',
success: $.centralNotice.fn.chooseBanner
} );
},
'chooseBanner': function( bannerList ) {
// Convert the json object to a true array
bannerList = Array.prototype.slice.call( bannerList );
// Make sure there are some banners to choose from
if ( bannerList.length == 0 ) return false;
var groomedBannerList = [];
for( var i = 0; i < bannerList.length; i++ ) {
// Only include this banner if it's intended for the current user
if( ( wgUserName && bannerList[i].display_account ) ||
( !wgUserName && bannerList[i].display_anon == 1 ) )
{
// add the banner to our list once per weight
for( var j=0; j < bannerList[i].weight; j++ ) {
groomedBannerList.push( bannerList[i] );
}
}
}
// Return if there's nothing left after the grooming
if( groomedBannerList.length == 0 ) return false;
// Load a random banner from our groomed list
$.centralNotice.fn.loadBanner(
groomedBannerList[
Math.floor( Math.random() * groomedBannerList.length )
].name
);
},
'getQueryStringVariables': function() {
document.location.search.replace( /\??(?:([^=]+)=([^&]*)&?)/g, function () {
function decode( s ) {
return decodeURIComponent( s.split( "+" ).join( " " ) );
}
$.centralNotice.data.getVars[decode( arguments[1] )] = decode( arguments[2] );
} );
}
}
}
$( document ).ready( function () {
// Initialize the query string vars
$.centralNotice.fn.getQueryStringVariables();
if( $.centralNotice.data.getVars['banner'] ) {
// if we're forcing one banner
$.centralNotice.fn.loadBanner( $.centralNotice.data.getVars['banner'] );
} else {
// Look for banners ready to go NOW
$.centralNotice.fn.loadBannerList( $.centralNotice.data.getVars['country'] );
}
} ); //document ready
} )( jQuery );
------------CQ4wAorH1dcm6byte6AhmR
Content-Disposition: inline; filename=index.js
Content-Type: text/javascript; charset=UTF-8; name=index.js
Content-Location: http://ca.wikipedia.org/w/index.php?title=-&action=raw&gen=js&useskin=vector&283-19
Content-Transfer-Encoding: 8bit
/* generated javascript */
var skin = 'vector';
var stylepath = 'http://bits.wikimedia.org/skins-1.5';
/* MediaWiki:Common.js */
/* Els JavaScripts d'aquesta pàgina es carregaran per tots els usuaris independentment de la seva configuració.
/* MediaWiki:Vector.js */
/* Any JavaScript here will be loaded for users using the Vector skin */
------------CQ4wAorH1dcm6byte6AhmR
Content-Disposition: inline; filename="225px-Cardinal_Richelieu_(Champaigne).jpg"
Content-Type: image/jpeg; name="225px-Cardinal_Richelieu_(Champaigne).jpg"
Content-Location: http://upload.wikimedia.org/wikipedia/commons/thumb/1/1a/Cardinal_Richelieu_%28Champaigne%29.jpg/225px-Cardinal_Richelieu_%28Champaigne%29.jpg
Content-Transfer-Encoding: Base64
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
------------CQ4wAorH1dcm6byte6AhmR
Content-Disposition: inline; filename=20px-Flag_of_France.svg.png
Content-Type: image/png; name=20px-Flag_of_France.svg.png
Content-Location: http://upload.wikimedia.org/wikipedia/commons/thumb/c/c3/Flag_of_France.svg/20px-Flag_of_France.svg.png
Content-Transfer-Encoding: Base64
iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAABmJLR0QA/wD/AP+g
vaeTAAAAB3RJTUUH2gYREjgntaMuPQAAADJJREFUOI1jZFCe+p8BC4jyU2VY2ueK
TYrhS1kDw68tu7DKMWEVpQCMGjhq4KiBA2IgACvVCGi3hbXPAAAAAElFTkSuQmCC
------------CQ4wAorH1dcm6byte6AhmR
Content-Disposition: inline; filename=22px-Disambig_grey.svg.png
Content-Type: image/png; name=22px-Disambig_grey.svg.png
Content-Location: http://upload.wikimedia.org/wikipedia/commons/thumb/4/4a/Disambig_grey.svg/22px-Disambig_grey.svg.png
Content-Transfer-Encoding: Base64
iVBORw0KGgoAAAANSUhEUgAAABYAAAARCAYAAADZsVyDAAAABmJLR0QA/wD/AP+g
vaeTAAAAB3RJTUUH2QgGBBMecBcndwAAAkJJREFUOI2lk79rU1EUxz/n5ZVnSM0j
FCUUsSC0iEMD4bmolNo5QjfBLRXTRuhiRe0W0VUUlKepbxH8B9rJDrpYg0IGpYtD
S4NIYlKpsVhLY3KvQxt8/ZVG/W73e773cznncIX/VCqVsoFHSqnrnueVm778Cyyd
Tp9QSp0GbKVUVERuA1XgVnd399NMJqPaBo+MjBw2TfMmcBmItojmlFLpQDvQ0dHR
U4ZhvAEuAJ0HxCMiUjgQnEwmjxiGMQcc36NcE5Fl32MzQGJqamrWhM02Lcu6oZSK
A5VGo5H1PO/t1mJeAsd8sK/AA8MwpqPR6MdisRgC5kVkPJvNTjdDMjY2djQWiy2G
w+HOarXKwsICa2trDa31fRFJACd90A9KqYTneZ+bRiaTMSuVyiHXdX/4W5HJyclX
g4OD50ulEhsbGxSLRUql0q6eLctaHR4efmbb9s99plZwHOdJ82AGAoEzhUIBAK01
1Wp1141gMEgikQjbtj2+DxRgDvgDXllZ+RUKhayOjg7K5TLr6+vb0l1dXQwNDRGJ
RFowd8us1+szS0tLl3YWDMNgYGCA3t5eRARglc3F7afiNrBpmhP1ev0s0OPzdTwe
n+/r6+v3eWHgpn+OrWS4rvvFsqx+rfVd4AXwXGt9LpVKxUQkCTR8eTefz9/J5XLB
g8AHful8Pp8G3B32NxGZ1Vq/F5Gy1vq14ziLfwXegt8DrrWIXHUc57HfMNoBO44z
AVwBltvJtw3egnu1Wq1HRC4CD4F3wCfg+1753+Dqy+evX+vrAAAAAElFTkSuQmCC
------------CQ4wAorH1dcm6byte6AhmR
Content-Disposition: inline; filename=222px-COA_Cardinal_de_Richelieu.svg.png
Content-Type: image/png; name=222px-COA_Cardinal_de_Richelieu.svg.png
Content-Location: http://upload.wikimedia.org/wikipedia/commons/thumb/2/2c/COA_Cardinal_de_Richelieu.svg/222px-COA_Cardinal_de_Richelieu.svg.png
Content-Transfer-Encoding: Base64
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
fQ/HMW5a2DGtU4yk+ucUR8JuKv3xPv3fX6s17Ry9Trwiih4l80Nhhfsj+tzNkrO6
nrc2fTCp51BZJjTcIWS8y9QO97fqJpo7TRRFqxCqrXNYSbruSJGukO7+iy926NSp
0uPxFQSLokgsikRNTWJJMsaiSBMmVFSYfNNNXoki2+yzT7vka36/puaC1SHk6qIf
me8KSY4rhA0uE8hlJ1zdhUtkx0m/S3DArxK2ny1gmMCFXtujo9eJV0jJK8LWn6OF
rVzKujHl3YRdjiBzsCDtsrEcKWt52txVv8vO1nFtndv82p6EhIqKCv+9+GKHTJsW
JB2BbFFEU1OQeKGigYxNTeLxuCZsXV7utZtu8nIU2XbffTuUfC3r1BUJ1h1pt7YJ
mMHmfYUtYCNhpC7EcL7xRheIU8x2Q8jJwTwhuLMO2zPidU74hH+u1Qp3gN5e4+WN
YHRt8savCZvL5dK3b4h77RT92TUmbLj2GG4XNsPOTIaFrA20R5r2SNhy3dZW+dZr
vHg8LpFItLuuq66u9uCllzp42jSZ8bh4IrGKMqXloeX75jVkcs0Xv/lmLz3yyCrP
0fo5aVtr2xWp3NNrutYoYmSzh3whBgr9aA9GbcZZnZUfxsEDifcRIl9qhMG7mJQx
/EgvpnzvVeJtySXjk8lnhiW/64uBpG7Utay/A8YxrkFw2CwRRr6k5OsScdcm2iJj
V0jX0XfV1dUeuPRSB0+fLjMlJShREolwXjsEbFawrHifPLYuL1+FfC3r2NHn9p61
s3N7mIAZIxhaIZCu+U5pKCJls+DN1KFmexAjUla+lxCmqxnYi1Ejw27OvYLeJF7R
juxXYGWQa7/kDzkoYcvOLrAtV+3A0Ehgb5ZAumoMCYHqa+Wfbzmlav7c8rf2tILt
nYdOtZnxeFxNTY2HLrvMwdOny2jWXCbJ11KT2Sb5Wt8zScYJSVPDiw8/3KnU644E
WwcE3HBL8mqFATdHUEWOQDp2YoNi9u7oAjnkNcv2DKEflgm+h4UkhvSwPbgleo14
ozllKwbHBMJkCRnEYkJ4fmHnadqzx7F1P6HRm4MdhwqbeG8T9lfYYG3Vd3WlQHuk
autzy9fq6moPXX65g2bMkJFIiKekrCLhWhJwFfI1Xzcp7ZoJF28h/SaWl4snydfe
87W1JltTKbc2CTiYsSPJzRDW9emCtPtc6D85pA/i8A4uMWiTNvbLiwmOmq9R29SL
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
SUVORK5CYII=
------------CQ4wAorH1dcm6byte6AhmR
Content-Disposition: inline; filename=35px-Commons-logo.svg.png
Content-Type: image/png; name=35px-Commons-logo.svg.png
Content-Location: http://upload.wikimedia.org/wikipedia/commons/thumb/4/4a/Commons-logo.svg/35px-Commons-logo.svg.png
Content-Transfer-Encoding: Base64
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
------------CQ4wAorH1dcm6byte6AhmR
Content-Disposition: inline; filename=search-ltr.png
Content-Type: image/png; name=search-ltr.png
Content-Location: http://bits.wikimedia.org/skins-1.5/vector/images/search-ltr.png?283-19
Content-Transfer-Encoding: Base64
iVBORw0KGgoAAAANSUhEUgAAAAwAAAANCAAAAAC4QtCeAAAAGXRFWHRTb2Z0d2Fy
ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAP9bkSK1AAAAaklEQVQI12P4
///u3NrauXf/AwHD//05YLAfxLmbl7/n48c9+Xn3gZxJYDGg/BQgpyznC4jzJacM
mVOMrgxowMFPnw5CDIAZnbMLxAFaWl09txrEY/gPAe87gTwY5//PmTmr4Jz/f699
BgAmIHmp1XxJagAAAABJRU5ErkJggg==
------------CQ4wAorH1dcm6byte6AhmR
Content-Disposition: inline
Content-Type: image/png
Content-Location: http://upload.wikimedia.org/wikipedia/commons/3/34/Wikipedia-logo-v2-ca.png
Content-Transfer-Encoding: Base64
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
2AAAAABJRU5ErkJggg==
------------CQ4wAorH1dcm6byte6AhmR
Content-Disposition: inline; filename=poweredby_mediawiki_88x31.png
Content-Type: image/png; name=poweredby_mediawiki_88x31.png
Content-Location: http://bits.wikimedia.org/skins-1.5/common/images/poweredby_mediawiki_88x31.png
Content-Transfer-Encoding: Base64
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
RK5CYII=
------------CQ4wAorH1dcm6byte6AhmR
Content-Disposition: inline; filename=wikimedia-button.png
Content-Type: image/png; name=wikimedia-button.png
Content-Location: http://ca.wikipedia.org/images/wikimedia-button.png
Content-Transfer-Encoding: Base64
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
seT/rvwv0uUkfxxBkWcAAAAASUVORK5CYII=
------------CQ4wAorH1dcm6byte6AhmR
Content-Disposition: inline; filename=default.js
Content-Type: text/javascript; name=default.js
Content-Location: http://geoiplookup.wikimedia.org/
Content-Transfer-Encoding: 8bit
Geo = {"city":"Sant Just Desvern","country":"ES","lat":"41.383301","lon":"2.083300","IP":"89.128.228.132","netmask":"25"}
------------CQ4wAorH1dcm6byte6AhmR--