Skip to content

Instantly share code, notes, and snippets.

@hc2p
Created September 7, 2018 12:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hc2p/c3122a73fae9b50063b99c643f14643c to your computer and use it in GitHub Desktop.
Save hc2p/c3122a73fae9b50063b99c643f14643c to your computer and use it in GitHub Desktop.
<!DOCTYPE html>
<html>
<head>
<script src='data:text/javascript;base64,LyohIGpRdWVyeSB2MS45LjEgfCAoYykgMjAwNSwgMjAxMiBqUXVlcnkgRm91
bmRhdGlvbiwgSW5jLiB8IGpxdWVyeS5vcmcvbGljZW5zZQovL0Agc291cmNl
TWFwcGluZ1VSTD1qcXVlcnkubWluLm1hcAoqLyhmdW5jdGlvbihlLHQpe3Zh
ciBuLHIsaT10eXBlb2YgdCxvPWUuZG9jdW1lbnQsYT1lLmxvY2F0aW9uLHM9
ZS5qUXVlcnksdT1lLiQsbD17fSxjPVtdLHA9IjEuOS4xIixmPWMuY29uY2F0
LGQ9Yy5wdXNoLGg9Yy5zbGljZSxnPWMuaW5kZXhPZixtPWwudG9TdHJpbmcs
eT1sLmhhc093blByb3BlcnR5LHY9cC50cmltLGI9ZnVuY3Rpb24oZSx0KXty
ZXR1cm4gbmV3IGIuZm4uaW5pdChlLHQscil9LHg9L1srLV0/KD86XGQqXC58
KVxkKyg/OltlRV1bKy1dP1xkK3wpLy5zb3VyY2Usdz0vXFMrL2csVD0vXltc
c1x1RkVGRlx4QTBdK3xbXHNcdUZFRkZceEEwXSskL2csTj0vXig/Oig8W1x3
XFddKz4pW14+XSp8IyhbXHctXSopKSQvLEM9L148KFx3KylccypcLz8+KD86
PFwvXDE+fCkkLyxrPS9eW1xdLDp7fVxzXSokLyxFPS8oPzpefDp8LCkoPzpc
cypcWykrL2csUz0vXFwoPzpbIlxcXC9iZm5ydF18dVtcZGEtZkEtRl17NH0p
L2csQT0vIlteIlxcXHJcbl0qInx0cnVlfGZhbHNlfG51bGx8LT8oPzpcZCtc
LnwpXGQrKD86W2VFXVsrLV0/XGQrfCkvZyxqPS9eLW1zLS8sRD0vLShbXGRh
LXpdKS9naSxMPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQudG9VcHBlckNhc2Uo
KX0sSD1mdW5jdGlvbihlKXsoby5hZGRFdmVudExpc3RlbmVyfHwibG9hZCI9
PT1lLnR5cGV8fCJjb21wbGV0ZSI9PT1vLnJlYWR5U3RhdGUpJiYocSgpLGIu
cmVhZHkoKSl9LHE9ZnVuY3Rpb24oKXtvLmFkZEV2ZW50TGlzdGVuZXI/KG8u
cmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsSCwhMSks
ZS5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIixILCExKSk6KG8uZGV0YWNo
RXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsSCksZS5kZXRhY2hFdmVudCgi
b25sb2FkIixIKSl9O2IuZm49Yi5wcm90b3R5cGU9e2pxdWVyeTpwLGNvbnN0
cnVjdG9yOmIsaW5pdDpmdW5jdGlvbihlLG4scil7dmFyIGksYTtpZighZSly
ZXR1cm4gdGhpcztpZigic3RyaW5nIj09dHlwZW9mIGUpe2lmKGk9IjwiPT09
ZS5jaGFyQXQoMCkmJiI+Ij09PWUuY2hhckF0KGUubGVuZ3RoLTEpJiZlLmxl
bmd0aD49Mz9bbnVsbCxlLG51bGxdOk4uZXhlYyhlKSwhaXx8IWlbMV0mJm4p
cmV0dXJuIW58fG4uanF1ZXJ5PyhufHxyKS5maW5kKGUpOnRoaXMuY29uc3Ry
dWN0b3IobikuZmluZChlKTtpZihpWzFdKXtpZihuPW4gaW5zdGFuY2VvZiBi
P25bMF06bixiLm1lcmdlKHRoaXMsYi5wYXJzZUhUTUwoaVsxXSxuJiZuLm5v
ZGVUeXBlP24ub3duZXJEb2N1bWVudHx8bjpvLCEwKSksQy50ZXN0KGlbMV0p
JiZiLmlzUGxhaW5PYmplY3QobikpZm9yKGkgaW4gbiliLmlzRnVuY3Rpb24o
dGhpc1tpXSk/dGhpc1tpXShuW2ldKTp0aGlzLmF0dHIoaSxuW2ldKTtyZXR1
cm4gdGhpc31pZihhPW8uZ2V0RWxlbWVudEJ5SWQoaVsyXSksYSYmYS5wYXJl
bnROb2RlKXtpZihhLmlkIT09aVsyXSlyZXR1cm4gci5maW5kKGUpO3RoaXMu
bGVuZ3RoPTEsdGhpc1swXT1hfXJldHVybiB0aGlzLmNvbnRleHQ9byx0aGlz
LnNlbGVjdG9yPWUsdGhpc31yZXR1cm4gZS5ub2RlVHlwZT8odGhpcy5jb250
ZXh0PXRoaXNbMF09ZSx0aGlzLmxlbmd0aD0xLHRoaXMpOmIuaXNGdW5jdGlv
bihlKT9yLnJlYWR5KGUpOihlLnNlbGVjdG9yIT09dCYmKHRoaXMuc2VsZWN0
b3I9ZS5zZWxlY3Rvcix0aGlzLmNvbnRleHQ9ZS5jb250ZXh0KSxiLm1ha2VB
cnJheShlLHRoaXMpKX0sc2VsZWN0b3I6IiIsbGVuZ3RoOjAsc2l6ZTpmdW5j
dGlvbigpe3JldHVybiB0aGlzLmxlbmd0aH0sdG9BcnJheTpmdW5jdGlvbigp
e3JldHVybiBoLmNhbGwodGhpcyl9LGdldDpmdW5jdGlvbihlKXtyZXR1cm4g
bnVsbD09ZT90aGlzLnRvQXJyYXkoKTowPmU/dGhpc1t0aGlzLmxlbmd0aCtl
XTp0aGlzW2VdfSxwdXNoU3RhY2s6ZnVuY3Rpb24oZSl7dmFyIHQ9Yi5tZXJn
ZSh0aGlzLmNvbnN0cnVjdG9yKCksZSk7cmV0dXJuIHQucHJldk9iamVjdD10
aGlzLHQuY29udGV4dD10aGlzLmNvbnRleHQsdH0sZWFjaDpmdW5jdGlvbihl
LHQpe3JldHVybiBiLmVhY2godGhpcyxlLHQpfSxyZWFkeTpmdW5jdGlvbihl
KXtyZXR1cm4gYi5yZWFkeS5wcm9taXNlKCkuZG9uZShlKSx0aGlzfSxzbGlj
ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1c2hTdGFjayhoLmFwcGx5KHRo
aXMsYXJndW1lbnRzKSl9LGZpcnN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu
ZXEoMCl9LGxhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgtMSl9LGVx
OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMubGVuZ3RoLG49K2UrKDA+ZT90OjAp
O3JldHVybiB0aGlzLnB1c2hTdGFjayhuPj0wJiZ0Pm4/W3RoaXNbbl1dOltd
KX0sbWFwOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnB1c2hTdGFjayhiLm1h
cCh0aGlzLGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUuY2FsbCh0LG4sdCl9KSl9
LGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnByZXZPYmplY3R8fHRoaXMu
Y29uc3RydWN0b3IobnVsbCl9LHB1c2g6ZCxzb3J0OltdLnNvcnQsc3BsaWNl
OltdLnNwbGljZX0sYi5mbi5pbml0LnByb3RvdHlwZT1iLmZuLGIuZXh0ZW5k
PWIuZm4uZXh0ZW5kPWZ1bmN0aW9uKCl7dmFyIGUsbixyLGksbyxhLHM9YXJn
dW1lbnRzWzBdfHx7fSx1PTEsbD1hcmd1bWVudHMubGVuZ3RoLGM9ITE7Zm9y
KCJib29sZWFuIj09dHlwZW9mIHMmJihjPXMscz1hcmd1bWVudHNbMV18fHt9
LHU9MiksIm9iamVjdCI9PXR5cGVvZiBzfHxiLmlzRnVuY3Rpb24ocyl8fChz
PXt9KSxsPT09dSYmKHM9dGhpcywtLXUpO2w+dTt1KyspaWYobnVsbCE9KG89
YXJndW1lbnRzW3VdKSlmb3IoaSBpbiBvKWU9c1tpXSxyPW9baV0scyE9PXIm
JihjJiZyJiYoYi5pc1BsYWluT2JqZWN0KHIpfHwobj1iLmlzQXJyYXkocikp
KT8obj8obj0hMSxhPWUmJmIuaXNBcnJheShlKT9lOltdKTphPWUmJmIuaXNQ
bGFpbk9iamVjdChlKT9lOnt9LHNbaV09Yi5leHRlbmQoYyxhLHIpKTpyIT09
dCYmKHNbaV09cikpO3JldHVybiBzfSxiLmV4dGVuZCh7bm9Db25mbGljdDpm
dW5jdGlvbih0KXtyZXR1cm4gZS4kPT09YiYmKGUuJD11KSx0JiZlLmpRdWVy
eT09PWImJihlLmpRdWVyeT1zKSxifSxpc1JlYWR5OiExLHJlYWR5V2FpdDox
LGhvbGRSZWFkeTpmdW5jdGlvbihlKXtlP2IucmVhZHlXYWl0Kys6Yi5yZWFk
eSghMCl9LHJlYWR5OmZ1bmN0aW9uKGUpe2lmKGU9PT0hMD8hLS1iLnJlYWR5
V2FpdDohYi5pc1JlYWR5KXtpZighby5ib2R5KXJldHVybiBzZXRUaW1lb3V0
KGIucmVhZHkpO2IuaXNSZWFkeT0hMCxlIT09ITAmJi0tYi5yZWFkeVdhaXQ+
MHx8KG4ucmVzb2x2ZVdpdGgobyxbYl0pLGIuZm4udHJpZ2dlciYmYihvKS50
cmlnZ2VyKCJyZWFkeSIpLm9mZigicmVhZHkiKSl9fSxpc0Z1bmN0aW9uOmZ1
bmN0aW9uKGUpe3JldHVybiJmdW5jdGlvbiI9PT1iLnR5cGUoZSl9LGlzQXJy
YXk6QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24oZSl7cmV0dXJuImFycmF5Ij09
PWIudHlwZShlKX0saXNXaW5kb3c6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwh
PWUmJmU9PWUud2luZG93fSxpc051bWVyaWM6ZnVuY3Rpb24oZSl7cmV0dXJu
IWlzTmFOKHBhcnNlRmxvYXQoZSkpJiZpc0Zpbml0ZShlKX0sdHlwZTpmdW5j
dGlvbihlKXtyZXR1cm4gbnVsbD09ZT9lKyIiOiJvYmplY3QiPT10eXBlb2Yg
ZXx8ImZ1bmN0aW9uIj09dHlwZW9mIGU/bFttLmNhbGwoZSldfHwib2JqZWN0
Ijp0eXBlb2YgZX0saXNQbGFpbk9iamVjdDpmdW5jdGlvbihlKXtpZighZXx8
Im9iamVjdCIhPT1iLnR5cGUoZSl8fGUubm9kZVR5cGV8fGIuaXNXaW5kb3co
ZSkpcmV0dXJuITE7dHJ5e2lmKGUuY29uc3RydWN0b3ImJiF5LmNhbGwoZSwi
Y29uc3RydWN0b3IiKSYmIXkuY2FsbChlLmNvbnN0cnVjdG9yLnByb3RvdHlw
ZSwiaXNQcm90b3R5cGVPZiIpKXJldHVybiExfWNhdGNoKG4pe3JldHVybiEx
fXZhciByO2ZvcihyIGluIGUpO3JldHVybiByPT09dHx8eS5jYWxsKGUscil9
LGlzRW1wdHlPYmplY3Q6ZnVuY3Rpb24oZSl7dmFyIHQ7Zm9yKHQgaW4gZSly
ZXR1cm4hMTtyZXR1cm4hMH0sZXJyb3I6ZnVuY3Rpb24oZSl7dGhyb3cgRXJy
b3IoZSl9LHBhcnNlSFRNTDpmdW5jdGlvbihlLHQsbil7aWYoIWV8fCJzdHJp
bmciIT10eXBlb2YgZSlyZXR1cm4gbnVsbDsiYm9vbGVhbiI9PXR5cGVvZiB0
JiYobj10LHQ9ITEpLHQ9dHx8bzt2YXIgcj1DLmV4ZWMoZSksaT0hbiYmW107
cmV0dXJuIHI/W3QuY3JlYXRlRWxlbWVudChyWzFdKV06KHI9Yi5idWlsZEZy
YWdtZW50KFtlXSx0LGkpLGkmJmIoaSkucmVtb3ZlKCksYi5tZXJnZShbXSxy
LmNoaWxkTm9kZXMpKX0scGFyc2VKU09OOmZ1bmN0aW9uKG4pe3JldHVybiBl
LkpTT04mJmUuSlNPTi5wYXJzZT9lLkpTT04ucGFyc2Uobik6bnVsbD09PW4/
bjoic3RyaW5nIj09dHlwZW9mIG4mJihuPWIudHJpbShuKSxuJiZrLnRlc3Qo
bi5yZXBsYWNlKFMsIkAiKS5yZXBsYWNlKEEsIl0iKS5yZXBsYWNlKEUsIiIp
KSk/RnVuY3Rpb24oInJldHVybiAiK24pKCk6KGIuZXJyb3IoIkludmFsaWQg
SlNPTjogIituKSx0KX0scGFyc2VYTUw6ZnVuY3Rpb24obil7dmFyIHIsaTtp
Zighbnx8InN0cmluZyIhPXR5cGVvZiBuKXJldHVybiBudWxsO3RyeXtlLkRP
TVBhcnNlcj8oaT1uZXcgRE9NUGFyc2VyLHI9aS5wYXJzZUZyb21TdHJpbmco
biwidGV4dC94bWwiKSk6KHI9bmV3IEFjdGl2ZVhPYmplY3QoIk1pY3Jvc29m
dC5YTUxET00iKSxyLmFzeW5jPSJmYWxzZSIsci5sb2FkWE1MKG4pKX1jYXRj
aChvKXtyPXR9cmV0dXJuIHImJnIuZG9jdW1lbnRFbGVtZW50JiYhci5nZXRF
bGVtZW50c0J5VGFnTmFtZSgicGFyc2VyZXJyb3IiKS5sZW5ndGh8fGIuZXJy
b3IoIkludmFsaWQgWE1MOiAiK24pLHJ9LG5vb3A6ZnVuY3Rpb24oKXt9LGds
b2JhbEV2YWw6ZnVuY3Rpb24odCl7dCYmYi50cmltKHQpJiYoZS5leGVjU2Ny
aXB0fHxmdW5jdGlvbih0KXtlLmV2YWwuY2FsbChlLHQpfSkodCl9LGNhbWVs
Q2FzZTpmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKGosIm1zLSIpLnJl
cGxhY2UoRCxMKX0sbm9kZU5hbWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5u
b2RlTmFtZSYmZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09dC50b0xvd2Vy
Q2FzZSgpfSxlYWNoOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpPTAsbz1lLmxl
bmd0aCxhPU0oZSk7aWYobil7aWYoYSl7Zm9yKDtvPmk7aSsrKWlmKHI9dC5h
cHBseShlW2ldLG4pLHI9PT0hMSlicmVha31lbHNlIGZvcihpIGluIGUpaWYo
cj10LmFwcGx5KGVbaV0sbikscj09PSExKWJyZWFrfWVsc2UgaWYoYSl7Zm9y
KDtvPmk7aSsrKWlmKHI9dC5jYWxsKGVbaV0saSxlW2ldKSxyPT09ITEpYnJl
YWt9ZWxzZSBmb3IoaSBpbiBlKWlmKHI9dC5jYWxsKGVbaV0saSxlW2ldKSxy
PT09ITEpYnJlYWs7cmV0dXJuIGV9LHRyaW06diYmIXYuY2FsbCgiXHVmZWZm
XHUwMGEwIik/ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWU/IiI6di5jYWxs
KGUpfTpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT8iIjooZSsiIikucmVw
bGFjZShULCIiKX0sbWFrZUFycmF5OmZ1bmN0aW9uKGUsdCl7dmFyIG49dHx8
W107cmV0dXJuIG51bGwhPWUmJihNKE9iamVjdChlKSk/Yi5tZXJnZShuLCJz
dHJpbmciPT10eXBlb2YgZT9bZV06ZSk6ZC5jYWxsKG4sZSkpLG59LGluQXJy
YXk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByO2lmKHQpe2lmKGcpcmV0dXJuIGcu
Y2FsbCh0LGUsbik7Zm9yKHI9dC5sZW5ndGgsbj1uPzA+bj9NYXRoLm1heCgw
LHIrbik6bjowO3I+bjtuKyspaWYobiBpbiB0JiZ0W25dPT09ZSlyZXR1cm4g
bn1yZXR1cm4tMX0sbWVyZ2U6ZnVuY3Rpb24oZSxuKXt2YXIgcj1uLmxlbmd0
aCxpPWUubGVuZ3RoLG89MDtpZigibnVtYmVyIj09dHlwZW9mIHIpZm9yKDty
Pm87bysrKWVbaSsrXT1uW29dO2Vsc2Ugd2hpbGUobltvXSE9PXQpZVtpKytd
PW5bbysrXTtyZXR1cm4gZS5sZW5ndGg9aSxlfSxncmVwOmZ1bmN0aW9uKGUs
dCxuKXt2YXIgcixpPVtdLG89MCxhPWUubGVuZ3RoO2ZvcihuPSEhbjthPm87
bysrKXI9ISF0KGVbb10sbyksbiE9PXImJmkucHVzaChlW29dKTtyZXR1cm4g
aX0sbWFwOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpPTAsbz1lLmxlbmd0aCxh
PU0oZSkscz1bXTtpZihhKWZvcig7bz5pO2krKylyPXQoZVtpXSxpLG4pLG51
bGwhPXImJihzW3MubGVuZ3RoXT1yKTtlbHNlIGZvcihpIGluIGUpcj10KGVb
aV0saSxuKSxudWxsIT1yJiYoc1tzLmxlbmd0aF09cik7cmV0dXJuIGYuYXBw
bHkoW10scyl9LGd1aWQ6MSxwcm94eTpmdW5jdGlvbihlLG4pe3ZhciByLGks
bztyZXR1cm4ic3RyaW5nIj09dHlwZW9mIG4mJihvPWVbbl0sbj1lLGU9byks
Yi5pc0Z1bmN0aW9uKGUpPyhyPWguY2FsbChhcmd1bWVudHMsMiksaT1mdW5j
dGlvbigpe3JldHVybiBlLmFwcGx5KG58fHRoaXMsci5jb25jYXQoaC5jYWxs
KGFyZ3VtZW50cykpKX0saS5ndWlkPWUuZ3VpZD1lLmd1aWR8fGIuZ3VpZCsr
LGkpOnR9LGFjY2VzczpmdW5jdGlvbihlLG4scixpLG8sYSxzKXt2YXIgdT0w
LGw9ZS5sZW5ndGgsYz1udWxsPT1yO2lmKCJvYmplY3QiPT09Yi50eXBlKHIp
KXtvPSEwO2Zvcih1IGluIHIpYi5hY2Nlc3MoZSxuLHUsclt1XSwhMCxhLHMp
fWVsc2UgaWYoaSE9PXQmJihvPSEwLGIuaXNGdW5jdGlvbihpKXx8KHM9ITAp
LGMmJihzPyhuLmNhbGwoZSxpKSxuPW51bGwpOihjPW4sbj1mdW5jdGlvbihl
LHQsbil7cmV0dXJuIGMuY2FsbChiKGUpLG4pfSkpLG4pKWZvcig7bD51O3Ur
KyluKGVbdV0scixzP2k6aS5jYWxsKGVbdV0sdSxuKGVbdV0scikpKTtyZXR1
cm4gbz9lOmM/bi5jYWxsKGUpOmw/bihlWzBdLHIpOmF9LG5vdzpmdW5jdGlv
bigpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfX0pLGIucmVhZHkucHJv
bWlzZT1mdW5jdGlvbih0KXtpZighbilpZihuPWIuRGVmZXJyZWQoKSwiY29t
cGxldGUiPT09by5yZWFkeVN0YXRlKXNldFRpbWVvdXQoYi5yZWFkeSk7ZWxz
ZSBpZihvLmFkZEV2ZW50TGlzdGVuZXIpby5hZGRFdmVudExpc3RlbmVyKCJE
T01Db250ZW50TG9hZGVkIixILCExKSxlLmFkZEV2ZW50TGlzdGVuZXIoImxv
YWQiLEgsITEpO2Vsc2V7by5hdHRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hh
bmdlIixIKSxlLmF0dGFjaEV2ZW50KCJvbmxvYWQiLEgpO3ZhciByPSExO3Ry
eXtyPW51bGw9PWUuZnJhbWVFbGVtZW50JiZvLmRvY3VtZW50RWxlbWVudH1j
YXRjaChpKXt9ciYmci5kb1Njcm9sbCYmZnVuY3Rpb24gYSgpe2lmKCFiLmlz
UmVhZHkpe3RyeXtyLmRvU2Nyb2xsKCJsZWZ0Iil9Y2F0Y2goZSl7cmV0dXJu
IHNldFRpbWVvdXQoYSw1MCl9cSgpLGIucmVhZHkoKX19KCl9cmV0dXJuIG4u
cHJvbWlzZSh0KX0sYi5lYWNoKCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVu
Y3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0IEVycm9yIi5zcGxpdCgi
ICIpLGZ1bmN0aW9uKGUsdCl7bFsiW29iamVjdCAiK3QrIl0iXT10LnRvTG93
ZXJDYXNlKCl9KTtmdW5jdGlvbiBNKGUpe3ZhciB0PWUubGVuZ3RoLG49Yi50
eXBlKGUpO3JldHVybiBiLmlzV2luZG93KGUpPyExOjE9PT1lLm5vZGVUeXBl
JiZ0PyEwOiJhcnJheSI9PT1ufHwiZnVuY3Rpb24iIT09biYmKDA9PT10fHwi
bnVtYmVyIj09dHlwZW9mIHQmJnQ+MCYmdC0xIGluIGUpfXI9YihvKTt2YXIg
Xz17fTtmdW5jdGlvbiBGKGUpe3ZhciB0PV9bZV09e307cmV0dXJuIGIuZWFj
aChlLm1hdGNoKHcpfHxbXSxmdW5jdGlvbihlLG4pe3Rbbl09ITB9KSx0fWIu
Q2FsbGJhY2tzPWZ1bmN0aW9uKGUpe2U9InN0cmluZyI9PXR5cGVvZiBlP19b
ZV18fEYoZSk6Yi5leHRlbmQoe30sZSk7dmFyIG4scixpLG8sYSxzLHU9W10s
bD0hZS5vbmNlJiZbXSxjPWZ1bmN0aW9uKHQpe2ZvcihyPWUubWVtb3J5JiZ0
LGk9ITAsYT1zfHwwLHM9MCxvPXUubGVuZ3RoLG49ITA7dSYmbz5hO2ErKylp
Zih1W2FdLmFwcGx5KHRbMF0sdFsxXSk9PT0hMSYmZS5zdG9wT25GYWxzZSl7
cj0hMTticmVha31uPSExLHUmJihsP2wubGVuZ3RoJiZjKGwuc2hpZnQoKSk6
cj91PVtdOnAuZGlzYWJsZSgpKX0scD17YWRkOmZ1bmN0aW9uKCl7aWYodSl7
dmFyIHQ9dS5sZW5ndGg7KGZ1bmN0aW9uIGkodCl7Yi5lYWNoKHQsZnVuY3Rp
b24odCxuKXt2YXIgcj1iLnR5cGUobik7ImZ1bmN0aW9uIj09PXI/ZS51bmlx
dWUmJnAuaGFzKG4pfHx1LnB1c2gobik6biYmbi5sZW5ndGgmJiJzdHJpbmci
IT09ciYmaShuKX0pfSkoYXJndW1lbnRzKSxuP289dS5sZW5ndGg6ciYmKHM9
dCxjKHIpKX1yZXR1cm4gdGhpc30scmVtb3ZlOmZ1bmN0aW9uKCl7cmV0dXJu
IHUmJmIuZWFjaChhcmd1bWVudHMsZnVuY3Rpb24oZSx0KXt2YXIgcjt3aGls
ZSgocj1iLmluQXJyYXkodCx1LHIpKT4tMSl1LnNwbGljZShyLDEpLG4mJihv
Pj1yJiZvLS0sYT49ciYmYS0tKX0pLHRoaXN9LGhhczpmdW5jdGlvbihlKXty
ZXR1cm4gZT9iLmluQXJyYXkoZSx1KT4tMTohKCF1fHwhdS5sZW5ndGgpfSxl
bXB0eTpmdW5jdGlvbigpe3JldHVybiB1PVtdLHRoaXN9LGRpc2FibGU6ZnVu
Y3Rpb24oKXtyZXR1cm4gdT1sPXI9dCx0aGlzfSxkaXNhYmxlZDpmdW5jdGlv
bigpe3JldHVybiF1fSxsb2NrOmZ1bmN0aW9uKCl7cmV0dXJuIGw9dCxyfHxw
LmRpc2FibGUoKSx0aGlzfSxsb2NrZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hbH0s
ZmlyZVdpdGg6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD10fHxbXSx0PVtlLHQu
c2xpY2U/dC5zbGljZSgpOnRdLCF1fHxpJiYhbHx8KG4/bC5wdXNoKHQpOmMo
dCkpLHRoaXN9LGZpcmU6ZnVuY3Rpb24oKXtyZXR1cm4gcC5maXJlV2l0aCh0
aGlzLGFyZ3VtZW50cyksdGhpc30sZmlyZWQ6ZnVuY3Rpb24oKXtyZXR1cm4h
IWl9fTtyZXR1cm4gcH0sYi5leHRlbmQoe0RlZmVycmVkOmZ1bmN0aW9uKGUp
e3ZhciB0PVtbInJlc29sdmUiLCJkb25lIixiLkNhbGxiYWNrcygib25jZSBt
ZW1vcnkiKSwicmVzb2x2ZWQiXSxbInJlamVjdCIsImZhaWwiLGIuQ2FsbGJh
Y2tzKCJvbmNlIG1lbW9yeSIpLCJyZWplY3RlZCJdLFsibm90aWZ5IiwicHJv
Z3Jlc3MiLGIuQ2FsbGJhY2tzKCJtZW1vcnkiKV1dLG49InBlbmRpbmciLHI9
e3N0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIG59LGFsd2F5czpmdW5jdGlvbigp
e3JldHVybiBpLmRvbmUoYXJndW1lbnRzKS5mYWlsKGFyZ3VtZW50cyksdGhp
c30sdGhlbjpmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cztyZXR1cm4gYi5E
ZWZlcnJlZChmdW5jdGlvbihuKXtiLmVhY2godCxmdW5jdGlvbih0LG8pe3Zh
ciBhPW9bMF0scz1iLmlzRnVuY3Rpb24oZVt0XSkmJmVbdF07aVtvWzFdXShm
dW5jdGlvbigpe3ZhciBlPXMmJnMuYXBwbHkodGhpcyxhcmd1bWVudHMpO2Um
JmIuaXNGdW5jdGlvbihlLnByb21pc2UpP2UucHJvbWlzZSgpLmRvbmUobi5y
ZXNvbHZlKS5mYWlsKG4ucmVqZWN0KS5wcm9ncmVzcyhuLm5vdGlmeSk6blth
KyJXaXRoIl0odGhpcz09PXI/bi5wcm9taXNlKCk6dGhpcyxzP1tlXTphcmd1
bWVudHMpfSl9KSxlPW51bGx9KS5wcm9taXNlKCl9LHByb21pc2U6ZnVuY3Rp
b24oZSl7cmV0dXJuIG51bGwhPWU/Yi5leHRlbmQoZSxyKTpyfX0saT17fTty
ZXR1cm4gci5waXBlPXIudGhlbixiLmVhY2godCxmdW5jdGlvbihlLG8pe3Zh
ciBhPW9bMl0scz1vWzNdO3Jbb1sxXV09YS5hZGQscyYmYS5hZGQoZnVuY3Rp
b24oKXtuPXN9LHRbMV5lXVsyXS5kaXNhYmxlLHRbMl1bMl0ubG9jayksaVtv
WzBdXT1mdW5jdGlvbigpe3JldHVybiBpW29bMF0rIldpdGgiXSh0aGlzPT09
aT9yOnRoaXMsYXJndW1lbnRzKSx0aGlzfSxpW29bMF0rIldpdGgiXT1hLmZp
cmVXaXRofSksci5wcm9taXNlKGkpLGUmJmUuY2FsbChpLGkpLGl9LHdoZW46
ZnVuY3Rpb24oZSl7dmFyIHQ9MCxuPWguY2FsbChhcmd1bWVudHMpLHI9bi5s
ZW5ndGgsaT0xIT09cnx8ZSYmYi5pc0Z1bmN0aW9uKGUucHJvbWlzZSk/cjow
LG89MT09PWk/ZTpiLkRlZmVycmVkKCksYT1mdW5jdGlvbihlLHQsbil7cmV0
dXJuIGZ1bmN0aW9uKHIpe3RbZV09dGhpcyxuW2VdPWFyZ3VtZW50cy5sZW5n
dGg+MT9oLmNhbGwoYXJndW1lbnRzKTpyLG49PT1zP28ubm90aWZ5V2l0aCh0
LG4pOi0taXx8by5yZXNvbHZlV2l0aCh0LG4pfX0scyx1LGw7aWYocj4xKWZv
cihzPUFycmF5KHIpLHU9QXJyYXkociksbD1BcnJheShyKTtyPnQ7dCsrKW5b
dF0mJmIuaXNGdW5jdGlvbihuW3RdLnByb21pc2UpP25bdF0ucHJvbWlzZSgp
LmRvbmUoYSh0LGwsbikpLmZhaWwoby5yZWplY3QpLnByb2dyZXNzKGEodCx1
LHMpKTotLWk7cmV0dXJuIGl8fG8ucmVzb2x2ZVdpdGgobCxuKSxvLnByb21p
c2UoKX19KSxiLnN1cHBvcnQ9ZnVuY3Rpb24oKXt2YXIgdCxuLHIsYSxzLHUs
bCxjLHAsZixkPW8uY3JlYXRlRWxlbWVudCgiZGl2Iik7aWYoZC5zZXRBdHRy
aWJ1dGUoImNsYXNzTmFtZSIsInQiKSxkLmlubmVySFRNTD0iICA8bGluay8+
PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0nL2EnPmE8L2E+PGlucHV0IHR5cGU9
J2NoZWNrYm94Jy8+IixuPWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSxy
PWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXSwhbnx8IXJ8fCFuLmxl
bmd0aClyZXR1cm57fTtzPW8uY3JlYXRlRWxlbWVudCgic2VsZWN0IiksbD1z
LmFwcGVuZENoaWxkKG8uY3JlYXRlRWxlbWVudCgib3B0aW9uIikpLGE9ZC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXSxyLnN0eWxlLmNzc1Rl
eHQ9InRvcDoxcHg7ZmxvYXQ6bGVmdDtvcGFjaXR5Oi41Iix0PXtnZXRTZXRB
dHRyaWJ1dGU6InQiIT09ZC5jbGFzc05hbWUsbGVhZGluZ1doaXRlc3BhY2U6
Mz09PWQuZmlyc3RDaGlsZC5ub2RlVHlwZSx0Ym9keTohZC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGJvZHkiKS5sZW5ndGgsaHRtbFNlcmlhbGl6ZTohIWQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKS5sZW5ndGgsc3R5bGU6L3Rv
cC8udGVzdChyLmdldEF0dHJpYnV0ZSgic3R5bGUiKSksaHJlZk5vcm1hbGl6
ZWQ6Ii9hIj09PXIuZ2V0QXR0cmlidXRlKCJocmVmIiksb3BhY2l0eTovXjAu
NS8udGVzdChyLnN0eWxlLm9wYWNpdHkpLGNzc0Zsb2F0OiEhci5zdHlsZS5j
c3NGbG9hdCxjaGVja09uOiEhYS52YWx1ZSxvcHRTZWxlY3RlZDpsLnNlbGVj
dGVkLGVuY3R5cGU6ISFvLmNyZWF0ZUVsZW1lbnQoImZvcm0iKS5lbmN0eXBl
LGh0bWw1Q2xvbmU6Ijw6bmF2PjwvOm5hdj4iIT09by5jcmVhdGVFbGVtZW50
KCJuYXYiKS5jbG9uZU5vZGUoITApLm91dGVySFRNTCxib3hNb2RlbDoiQ1NT
MUNvbXBhdCI9PT1vLmNvbXBhdE1vZGUsZGVsZXRlRXhwYW5kbzohMCxub0Ns
b25lRXZlbnQ6ITAsaW5saW5lQmxvY2tOZWVkc0xheW91dDohMSxzaHJpbmtX
cmFwQmxvY2tzOiExLHJlbGlhYmxlTWFyZ2luUmlnaHQ6ITAsYm94U2l6aW5n
UmVsaWFibGU6ITAscGl4ZWxQb3NpdGlvbjohMX0sYS5jaGVja2VkPSEwLHQu
bm9DbG9uZUNoZWNrZWQ9YS5jbG9uZU5vZGUoITApLmNoZWNrZWQscy5kaXNh
YmxlZD0hMCx0Lm9wdERpc2FibGVkPSFsLmRpc2FibGVkO3RyeXtkZWxldGUg
ZC50ZXN0fWNhdGNoKGgpe3QuZGVsZXRlRXhwYW5kbz0hMX1hPW8uY3JlYXRl
RWxlbWVudCgiaW5wdXQiKSxhLnNldEF0dHJpYnV0ZSgidmFsdWUiLCIiKSx0
LmlucHV0PSIiPT09YS5nZXRBdHRyaWJ1dGUoInZhbHVlIiksYS52YWx1ZT0i
dCIsYS5zZXRBdHRyaWJ1dGUoInR5cGUiLCJyYWRpbyIpLHQucmFkaW9WYWx1
ZT0idCI9PT1hLnZhbHVlLGEuc2V0QXR0cmlidXRlKCJjaGVja2VkIiwidCIp
LGEuc2V0QXR0cmlidXRlKCJuYW1lIiwidCIpLHU9by5jcmVhdGVEb2N1bWVu
dEZyYWdtZW50KCksdS5hcHBlbmRDaGlsZChhKSx0LmFwcGVuZENoZWNrZWQ9
YS5jaGVja2VkLHQuY2hlY2tDbG9uZT11LmNsb25lTm9kZSghMCkuY2xvbmVO
b2RlKCEwKS5sYXN0Q2hpbGQuY2hlY2tlZCxkLmF0dGFjaEV2ZW50JiYoZC5h
dHRhY2hFdmVudCgib25jbGljayIsZnVuY3Rpb24oKXt0Lm5vQ2xvbmVFdmVu
dD0hMX0pLGQuY2xvbmVOb2RlKCEwKS5jbGljaygpKTtmb3IoZiBpbntzdWJt
aXQ6ITAsY2hhbmdlOiEwLGZvY3VzaW46ITB9KWQuc2V0QXR0cmlidXRlKGM9
Im9uIitmLCJ0IiksdFtmKyJCdWJibGVzIl09YyBpbiBlfHxkLmF0dHJpYnV0
ZXNbY10uZXhwYW5kbz09PSExO3JldHVybiBkLnN0eWxlLmJhY2tncm91bmRD
bGlwPSJjb250ZW50LWJveCIsZC5jbG9uZU5vZGUoITApLnN0eWxlLmJhY2tn
cm91bmRDbGlwPSIiLHQuY2xlYXJDbG9uZVN0eWxlPSJjb250ZW50LWJveCI9
PT1kLnN0eWxlLmJhY2tncm91bmRDbGlwLGIoZnVuY3Rpb24oKXt2YXIgbixy
LGEscz0icGFkZGluZzowO21hcmdpbjowO2JvcmRlcjowO2Rpc3BsYXk6Ymxv
Y2s7Ym94LXNpemluZzpjb250ZW50LWJveDstbW96LWJveC1zaXppbmc6Y29u
dGVudC1ib3g7LXdlYmtpdC1ib3gtc2l6aW5nOmNvbnRlbnQtYm94OyIsdT1v
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF07dSYmKG49by5jcmVh
dGVFbGVtZW50KCJkaXYiKSxuLnN0eWxlLmNzc1RleHQ9ImJvcmRlcjowO3dp
ZHRoOjA7aGVpZ2h0OjA7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDot
OTk5OXB4O21hcmdpbi10b3A6MXB4Iix1LmFwcGVuZENoaWxkKG4pLmFwcGVu
ZENoaWxkKGQpLGQuaW5uZXJIVE1MPSI8dGFibGU+PHRyPjx0ZD48L3RkPjx0
ZD50PC90ZD48L3RyPjwvdGFibGU+IixhPWQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRkIiksYVswXS5zdHlsZS5jc3NUZXh0PSJwYWRkaW5nOjA7bWFyZ2lu
OjA7Ym9yZGVyOjA7ZGlzcGxheTpub25lIixwPTA9PT1hWzBdLm9mZnNldEhl
aWdodCxhWzBdLnN0eWxlLmRpc3BsYXk9IiIsYVsxXS5zdHlsZS5kaXNwbGF5
PSJub25lIix0LnJlbGlhYmxlSGlkZGVuT2Zmc2V0cz1wJiYwPT09YVswXS5v
ZmZzZXRIZWlnaHQsZC5pbm5lckhUTUw9IiIsZC5zdHlsZS5jc3NUZXh0PSJi
b3gtc2l6aW5nOmJvcmRlci1ib3g7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1i
b3g7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7cGFkZGluZzoxcHg7
Ym9yZGVyOjFweDtkaXNwbGF5OmJsb2NrO3dpZHRoOjRweDttYXJnaW4tdG9w
OjElO3Bvc2l0aW9uOmFic29sdXRlO3RvcDoxJTsiLHQuYm94U2l6aW5nPTQ9
PT1kLm9mZnNldFdpZHRoLHQuZG9lc05vdEluY2x1ZGVNYXJnaW5JbkJvZHlP
ZmZzZXQ9MSE9PXUub2Zmc2V0VG9wLGUuZ2V0Q29tcHV0ZWRTdHlsZSYmKHQu
cGl4ZWxQb3NpdGlvbj0iMSUiIT09KGUuZ2V0Q29tcHV0ZWRTdHlsZShkLG51
bGwpfHx7fSkudG9wLHQuYm94U2l6aW5nUmVsaWFibGU9IjRweCI9PT0oZS5n
ZXRDb21wdXRlZFN0eWxlKGQsbnVsbCl8fHt3aWR0aDoiNHB4In0pLndpZHRo
LHI9ZC5hcHBlbmRDaGlsZChvLmNyZWF0ZUVsZW1lbnQoImRpdiIpKSxyLnN0
eWxlLmNzc1RleHQ9ZC5zdHlsZS5jc3NUZXh0PXMsci5zdHlsZS5tYXJnaW5S
aWdodD1yLnN0eWxlLndpZHRoPSIwIixkLnN0eWxlLndpZHRoPSIxcHgiLHQu
cmVsaWFibGVNYXJnaW5SaWdodD0hcGFyc2VGbG9hdCgoZS5nZXRDb21wdXRl
ZFN0eWxlKHIsbnVsbCl8fHt9KS5tYXJnaW5SaWdodCkpLHR5cGVvZiBkLnN0
eWxlLnpvb20hPT1pJiYoZC5pbm5lckhUTUw9IiIsZC5zdHlsZS5jc3NUZXh0
PXMrIndpZHRoOjFweDtwYWRkaW5nOjFweDtkaXNwbGF5OmlubGluZTt6b29t
OjEiLHQuaW5saW5lQmxvY2tOZWVkc0xheW91dD0zPT09ZC5vZmZzZXRXaWR0
aCxkLnN0eWxlLmRpc3BsYXk9ImJsb2NrIixkLmlubmVySFRNTD0iPGRpdj48
L2Rpdj4iLGQuZmlyc3RDaGlsZC5zdHlsZS53aWR0aD0iNXB4Iix0LnNocmlu
a1dyYXBCbG9ja3M9MyE9PWQub2Zmc2V0V2lkdGgsdC5pbmxpbmVCbG9ja05l
ZWRzTGF5b3V0JiYodS5zdHlsZS56b29tPTEpKSx1LnJlbW92ZUNoaWxkKG4p
LG49ZD1hPXI9bnVsbCl9KSxuPXM9dT1sPXI9YT1udWxsLHR9KCk7dmFyIE89
Lyg/Olx7W1xzXFNdKlx9fFxbW1xzXFNdKlxdKSQvLEI9LyhbQS1aXSkvZztm
dW5jdGlvbiBQKGUsbixyLGkpe2lmKGIuYWNjZXB0RGF0YShlKSl7dmFyIG8s
YSxzPWIuZXhwYW5kbyx1PSJzdHJpbmciPT10eXBlb2YgbixsPWUubm9kZVR5
cGUscD1sP2IuY2FjaGU6ZSxmPWw/ZVtzXTplW3NdJiZzO2lmKGYmJnBbZl0m
JihpfHxwW2ZdLmRhdGEpfHwhdXx8ciE9PXQpcmV0dXJuIGZ8fChsP2Vbc109
Zj1jLnBvcCgpfHxiLmd1aWQrKzpmPXMpLHBbZl18fChwW2ZdPXt9LGx8fChw
W2ZdLnRvSlNPTj1iLm5vb3ApKSwoIm9iamVjdCI9PXR5cGVvZiBufHwiZnVu
Y3Rpb24iPT10eXBlb2YgbikmJihpP3BbZl09Yi5leHRlbmQocFtmXSxuKTpw
W2ZdLmRhdGE9Yi5leHRlbmQocFtmXS5kYXRhLG4pKSxvPXBbZl0saXx8KG8u
ZGF0YXx8KG8uZGF0YT17fSksbz1vLmRhdGEpLHIhPT10JiYob1tiLmNhbWVs
Q2FzZShuKV09ciksdT8oYT1vW25dLG51bGw9PWEmJihhPW9bYi5jYW1lbENh
c2UobildKSk6YT1vLGF9fWZ1bmN0aW9uIFIoZSx0LG4pe2lmKGIuYWNjZXB0
RGF0YShlKSl7dmFyIHIsaSxvLGE9ZS5ub2RlVHlwZSxzPWE/Yi5jYWNoZTpl
LHU9YT9lW2IuZXhwYW5kb106Yi5leHBhbmRvO2lmKHNbdV0pe2lmKHQmJihv
PW4/c1t1XTpzW3VdLmRhdGEpKXtiLmlzQXJyYXkodCk/dD10LmNvbmNhdChi
Lm1hcCh0LGIuY2FtZWxDYXNlKSk6dCBpbiBvP3Q9W3RdOih0PWIuY2FtZWxD
YXNlKHQpLHQ9dCBpbiBvP1t0XTp0LnNwbGl0KCIgIikpO2ZvcihyPTAsaT10
Lmxlbmd0aDtpPnI7cisrKWRlbGV0ZSBvW3Rbcl1dO2lmKCEobj8kOmIuaXNF
bXB0eU9iamVjdCkobykpcmV0dXJufShufHwoZGVsZXRlIHNbdV0uZGF0YSwk
KHNbdV0pKSkmJihhP2IuY2xlYW5EYXRhKFtlXSwhMCk6Yi5zdXBwb3J0LmRl
bGV0ZUV4cGFuZG98fHMhPXMud2luZG93P2RlbGV0ZSBzW3VdOnNbdV09bnVs
bCl9fX1iLmV4dGVuZCh7Y2FjaGU6e30sZXhwYW5kbzoialF1ZXJ5IisocCtN
YXRoLnJhbmRvbSgpKS5yZXBsYWNlKC9cRC9nLCIiKSxub0RhdGE6e2VtYmVk
OiEwLG9iamVjdDoiY2xzaWQ6RDI3Q0RCNkUtQUU2RC0xMWNmLTk2QjgtNDQ0
NTUzNTQwMDAwIixhcHBsZXQ6ITB9LGhhc0RhdGE6ZnVuY3Rpb24oZSl7cmV0
dXJuIGU9ZS5ub2RlVHlwZT9iLmNhY2hlW2VbYi5leHBhbmRvXV06ZVtiLmV4
cGFuZG9dLCEhZSYmISQoZSl9LGRhdGE6ZnVuY3Rpb24oZSx0LG4pe3JldHVy
biBQKGUsdCxuKX0scmVtb3ZlRGF0YTpmdW5jdGlvbihlLHQpe3JldHVybiBS
KGUsdCl9LF9kYXRhOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gUChlLHQsbiwh
MCl9LF9yZW1vdmVEYXRhOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIFIoZSx0LCEw
KX0sYWNjZXB0RGF0YTpmdW5jdGlvbihlKXtpZihlLm5vZGVUeXBlJiYxIT09
ZS5ub2RlVHlwZSYmOSE9PWUubm9kZVR5cGUpcmV0dXJuITE7dmFyIHQ9ZS5u
b2RlTmFtZSYmYi5ub0RhdGFbZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXTty
ZXR1cm4hdHx8dCE9PSEwJiZlLmdldEF0dHJpYnV0ZSgiY2xhc3NpZCIpPT09
dH19KSxiLmZuLmV4dGVuZCh7ZGF0YTpmdW5jdGlvbihlLG4pe3ZhciByLGks
bz10aGlzWzBdLGE9MCxzPW51bGw7aWYoZT09PXQpe2lmKHRoaXMubGVuZ3Ro
JiYocz1iLmRhdGEobyksMT09PW8ubm9kZVR5cGUmJiFiLl9kYXRhKG8sInBh
cnNlZEF0dHJzIikpKXtmb3Iocj1vLmF0dHJpYnV0ZXM7ci5sZW5ndGg+YTth
KyspaT1yW2FdLm5hbWUsaS5pbmRleE9mKCJkYXRhLSIpfHwoaT1iLmNhbWVs
Q2FzZShpLnNsaWNlKDUpKSxXKG8saSxzW2ldKSk7Yi5fZGF0YShvLCJwYXJz
ZWRBdHRycyIsITApfXJldHVybiBzfXJldHVybiJvYmplY3QiPT10eXBlb2Yg
ZT90aGlzLmVhY2goZnVuY3Rpb24oKXtiLmRhdGEodGhpcyxlKX0pOmIuYWNj
ZXNzKHRoaXMsZnVuY3Rpb24obil7cmV0dXJuIG49PT10P28/VyhvLGUsYi5k
YXRhKG8sZSkpOm51bGw6KHRoaXMuZWFjaChmdW5jdGlvbigpe2IuZGF0YSh0
aGlzLGUsbil9KSx0KX0sbnVsbCxuLGFyZ3VtZW50cy5sZW5ndGg+MSxudWxs
LCEwKX0scmVtb3ZlRGF0YTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5lYWNo
KGZ1bmN0aW9uKCl7Yi5yZW1vdmVEYXRhKHRoaXMsZSl9KX19KTtmdW5jdGlv
biBXKGUsbixyKXtpZihyPT09dCYmMT09PWUubm9kZVR5cGUpe3ZhciBpPSJk
YXRhLSIrbi5yZXBsYWNlKEIsIi0kMSIpLnRvTG93ZXJDYXNlKCk7aWYocj1l
LmdldEF0dHJpYnV0ZShpKSwic3RyaW5nIj09dHlwZW9mIHIpe3RyeXtyPSJ0
cnVlIj09PXI/ITA6ImZhbHNlIj09PXI/ITE6Im51bGwiPT09cj9udWxsOity
KyIiPT09cj8rcjpPLnRlc3Qocik/Yi5wYXJzZUpTT04ocik6cn1jYXRjaChv
KXt9Yi5kYXRhKGUsbixyKX1lbHNlIHI9dH1yZXR1cm4gcn1mdW5jdGlvbiAk
KGUpe3ZhciB0O2Zvcih0IGluIGUpaWYoKCJkYXRhIiE9PXR8fCFiLmlzRW1w
dHlPYmplY3QoZVt0XSkpJiYidG9KU09OIiE9PXQpcmV0dXJuITE7cmV0dXJu
ITB9Yi5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGUsbixyKXt2YXIgaTtyZXR1
cm4gZT8obj0obnx8ImZ4IikrInF1ZXVlIixpPWIuX2RhdGEoZSxuKSxyJiYo
IWl8fGIuaXNBcnJheShyKT9pPWIuX2RhdGEoZSxuLGIubWFrZUFycmF5KHIp
KTppLnB1c2gocikpLGl8fFtdKTp0fSxkZXF1ZXVlOmZ1bmN0aW9uKGUsdCl7
dD10fHwiZngiO3ZhciBuPWIucXVldWUoZSx0KSxyPW4ubGVuZ3RoLGk9bi5z
aGlmdCgpLG89Yi5fcXVldWVIb29rcyhlLHQpLGE9ZnVuY3Rpb24oKXtiLmRl
cXVldWUoZSx0KX07ImlucHJvZ3Jlc3MiPT09aSYmKGk9bi5zaGlmdCgpLHIt
LSksby5jdXI9aSxpJiYoImZ4Ij09PXQmJm4udW5zaGlmdCgiaW5wcm9ncmVz
cyIpLGRlbGV0ZSBvLnN0b3AsaS5jYWxsKGUsYSxvKSksIXImJm8mJm8uZW1w
dHkuZmlyZSgpfSxfcXVldWVIb29rczpmdW5jdGlvbihlLHQpe3ZhciBuPXQr
InF1ZXVlSG9va3MiO3JldHVybiBiLl9kYXRhKGUsbil8fGIuX2RhdGEoZSxu
LHtlbXB0eTpiLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKS5hZGQoZnVuY3Rp
b24oKXtiLl9yZW1vdmVEYXRhKGUsdCsicXVldWUiKSxiLl9yZW1vdmVEYXRh
KGUsbil9KX0pfX0pLGIuZm4uZXh0ZW5kKHtxdWV1ZTpmdW5jdGlvbihlLG4p
e3ZhciByPTI7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBlJiYobj1lLGU9ImZ4
IixyLS0pLHI+YXJndW1lbnRzLmxlbmd0aD9iLnF1ZXVlKHRoaXNbMF0sZSk6
bj09PXQ/dGhpczp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1iLnF1ZXVl
KHRoaXMsZSxuKTtiLl9xdWV1ZUhvb2tzKHRoaXMsZSksImZ4Ij09PWUmJiJp
bnByb2dyZXNzIiE9PXRbMF0mJmIuZGVxdWV1ZSh0aGlzLGUpfSl9LGRlcXVl
dWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2Iu
ZGVxdWV1ZSh0aGlzLGUpfSl9LGRlbGF5OmZ1bmN0aW9uKGUsdCl7cmV0dXJu
IGU9Yi5meD9iLmZ4LnNwZWVkc1tlXXx8ZTplLHQ9dHx8ImZ4Iix0aGlzLnF1
ZXVlKHQsZnVuY3Rpb24odCxuKXt2YXIgcj1zZXRUaW1lb3V0KHQsZSk7bi5z
dG9wPWZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KHIpfX0pfSxjbGVhclF1ZXVl
OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnF1ZXVlKGV8fCJmeCIsW10pfSxw
cm9taXNlOmZ1bmN0aW9uKGUsbil7dmFyIHIsaT0xLG89Yi5EZWZlcnJlZCgp
LGE9dGhpcyxzPXRoaXMubGVuZ3RoLHU9ZnVuY3Rpb24oKXstLWl8fG8ucmVz
b2x2ZVdpdGgoYSxbYV0pfTsic3RyaW5nIiE9dHlwZW9mIGUmJihuPWUsZT10
KSxlPWV8fCJmeCI7d2hpbGUocy0tKXI9Yi5fZGF0YShhW3NdLGUrInF1ZXVl
SG9va3MiKSxyJiZyLmVtcHR5JiYoaSsrLHIuZW1wdHkuYWRkKHUpKTtyZXR1
cm4gdSgpLG8ucHJvbWlzZShuKX19KTt2YXIgSSx6LFg9L1tcdFxyXG5dL2cs
VT0vXHIvZyxWPS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbnxv
YmplY3QpJC9pLFk9L14oPzphfGFyZWEpJC9pLEo9L14oPzpjaGVja2VkfHNl
bGVjdGVkfGF1dG9mb2N1c3xhdXRvcGxheXxhc3luY3xjb250cm9sc3xkZWZl
cnxkaXNhYmxlZHxoaWRkZW58bG9vcHxtdWx0aXBsZXxvcGVufHJlYWRvbmx5
fHJlcXVpcmVkfHNjb3BlZCkkL2ksRz0vXig/OmNoZWNrZWR8c2VsZWN0ZWQp
JC9pLFE9Yi5zdXBwb3J0LmdldFNldEF0dHJpYnV0ZSxLPWIuc3VwcG9ydC5p
bnB1dDtiLmZuLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihlLHQpe3JldHVybiBi
LmFjY2Vzcyh0aGlzLGIuYXR0cixlLHQsYXJndW1lbnRzLmxlbmd0aD4xKX0s
cmVtb3ZlQXR0cjpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0
aW9uKCl7Yi5yZW1vdmVBdHRyKHRoaXMsZSl9KX0scHJvcDpmdW5jdGlvbihl
LHQpe3JldHVybiBiLmFjY2Vzcyh0aGlzLGIucHJvcCxlLHQsYXJndW1lbnRz
Lmxlbmd0aD4xKX0scmVtb3ZlUHJvcDpmdW5jdGlvbihlKXtyZXR1cm4gZT1i
LnByb3BGaXhbZV18fGUsdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dHJ5e3RoaXNb
ZV09dCxkZWxldGUgdGhpc1tlXX1jYXRjaChuKXt9fSl9LGFkZENsYXNzOmZ1
bmN0aW9uKGUpe3ZhciB0LG4scixpLG8sYT0wLHM9dGhpcy5sZW5ndGgsdT0i
c3RyaW5nIj09dHlwZW9mIGUmJmU7aWYoYi5pc0Z1bmN0aW9uKGUpKXJldHVy
biB0aGlzLmVhY2goZnVuY3Rpb24odCl7Yih0aGlzKS5hZGRDbGFzcyhlLmNh
bGwodGhpcyx0LHRoaXMuY2xhc3NOYW1lKSl9KTtpZih1KWZvcih0PShlfHwi
IikubWF0Y2godyl8fFtdO3M+YTthKyspaWYobj10aGlzW2FdLHI9MT09PW4u
bm9kZVR5cGUmJihuLmNsYXNzTmFtZT8oIiAiK24uY2xhc3NOYW1lKyIgIiku
cmVwbGFjZShYLCIgIik6IiAiKSl7bz0wO3doaWxlKGk9dFtvKytdKTA+ci5p
bmRleE9mKCIgIitpKyIgIikmJihyKz1pKyIgIik7bi5jbGFzc05hbWU9Yi50
cmltKHIpfXJldHVybiB0aGlzfSxyZW1vdmVDbGFzczpmdW5jdGlvbihlKXt2
YXIgdCxuLHIsaSxvLGE9MCxzPXRoaXMubGVuZ3RoLHU9MD09PWFyZ3VtZW50
cy5sZW5ndGh8fCJzdHJpbmciPT10eXBlb2YgZSYmZTtpZihiLmlzRnVuY3Rp
b24oZSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbih0KXtiKHRoaXMpLnJl
bW92ZUNsYXNzKGUuY2FsbCh0aGlzLHQsdGhpcy5jbGFzc05hbWUpKX0pO2lm
KHUpZm9yKHQ9KGV8fCIiKS5tYXRjaCh3KXx8W107cz5hO2ErKylpZihuPXRo
aXNbYV0scj0xPT09bi5ub2RlVHlwZSYmKG4uY2xhc3NOYW1lPygiICIrbi5j
bGFzc05hbWUrIiAiKS5yZXBsYWNlKFgsIiAiKToiIikpe289MDt3aGlsZShp
PXRbbysrXSl3aGlsZShyLmluZGV4T2YoIiAiK2krIiAiKT49MClyPXIucmVw
bGFjZSgiICIraSsiICIsIiAiKTtuLmNsYXNzTmFtZT1lP2IudHJpbShyKToi
In1yZXR1cm4gdGhpc30sdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24oZSx0KXt2YXIg
bj10eXBlb2YgZSxyPSJib29sZWFuIj09dHlwZW9mIHQ7cmV0dXJuIGIuaXNG
dW5jdGlvbihlKT90aGlzLmVhY2goZnVuY3Rpb24obil7Yih0aGlzKS50b2dn
bGVDbGFzcyhlLmNhbGwodGhpcyxuLHRoaXMuY2xhc3NOYW1lLHQpLHQpfSk6
dGhpcy5lYWNoKGZ1bmN0aW9uKCl7aWYoInN0cmluZyI9PT1uKXt2YXIgbyxh
PTAscz1iKHRoaXMpLHU9dCxsPWUubWF0Y2godyl8fFtdO3doaWxlKG89bFth
KytdKXU9cj91OiFzLmhhc0NsYXNzKG8pLHNbdT8iYWRkQ2xhc3MiOiJyZW1v
dmVDbGFzcyJdKG8pfWVsc2Uobj09PWl8fCJib29sZWFuIj09PW4pJiYodGhp
cy5jbGFzc05hbWUmJmIuX2RhdGEodGhpcywiX19jbGFzc05hbWVfXyIsdGhp
cy5jbGFzc05hbWUpLHRoaXMuY2xhc3NOYW1lPXRoaXMuY2xhc3NOYW1lfHxl
PT09ITE/IiI6Yi5fZGF0YSh0aGlzLCJfX2NsYXNzTmFtZV9fIil8fCIiKX0p
fSxoYXNDbGFzczpmdW5jdGlvbihlKXt2YXIgdD0iICIrZSsiICIsbj0wLHI9
dGhpcy5sZW5ndGg7Zm9yKDtyPm47bisrKWlmKDE9PT10aGlzW25dLm5vZGVU
eXBlJiYoIiAiK3RoaXNbbl0uY2xhc3NOYW1lKyIgIikucmVwbGFjZShYLCIg
IikuaW5kZXhPZih0KT49MClyZXR1cm4hMDtyZXR1cm4hMX0sdmFsOmZ1bmN0
aW9uKGUpe3ZhciBuLHIsaSxvPXRoaXNbMF07e2lmKGFyZ3VtZW50cy5sZW5n
dGgpcmV0dXJuIGk9Yi5pc0Z1bmN0aW9uKGUpLHRoaXMuZWFjaChmdW5jdGlv
bihuKXt2YXIgbyxhPWIodGhpcyk7MT09PXRoaXMubm9kZVR5cGUmJihvPWk/
ZS5jYWxsKHRoaXMsbixhLnZhbCgpKTplLG51bGw9PW8/bz0iIjoibnVtYmVy
Ij09dHlwZW9mIG8/bys9IiI6Yi5pc0FycmF5KG8pJiYobz1iLm1hcChvLGZ1
bmN0aW9uKGUpe3JldHVybiBudWxsPT1lPyIiOmUrIiJ9KSkscj1iLnZhbEhv
b2tzW3RoaXMudHlwZV18fGIudmFsSG9va3NbdGhpcy5ub2RlTmFtZS50b0xv
d2VyQ2FzZSgpXSxyJiYic2V0ImluIHImJnIuc2V0KHRoaXMsbywidmFsdWUi
KSE9PXR8fCh0aGlzLnZhbHVlPW8pKX0pO2lmKG8pcmV0dXJuIHI9Yi52YWxI
b29rc1tvLnR5cGVdfHxiLnZhbEhvb2tzW28ubm9kZU5hbWUudG9Mb3dlckNh
c2UoKV0sciYmImdldCJpbiByJiYobj1yLmdldChvLCJ2YWx1ZSIpKSE9PXQ/
bjoobj1vLnZhbHVlLCJzdHJpbmciPT10eXBlb2Ygbj9uLnJlcGxhY2UoVSwi
Iik6bnVsbD09bj8iIjpuKX19fSksYi5leHRlbmQoe3ZhbEhvb2tzOntvcHRp
b246e2dldDpmdW5jdGlvbihlKXt2YXIgdD1lLmF0dHJpYnV0ZXMudmFsdWU7
cmV0dXJuIXR8fHQuc3BlY2lmaWVkP2UudmFsdWU6ZS50ZXh0fX0sc2VsZWN0
OntnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQsbixyPWUub3B0aW9ucyxpPWUuc2Vs
ZWN0ZWRJbmRleCxvPSJzZWxlY3Qtb25lIj09PWUudHlwZXx8MD5pLGE9bz9u
dWxsOltdLHM9bz9pKzE6ci5sZW5ndGgsdT0wPmk/czpvP2k6MDtmb3IoO3M+
dTt1KyspaWYobj1yW3VdLCEoIW4uc2VsZWN0ZWQmJnUhPT1pfHwoYi5zdXBw
b3J0Lm9wdERpc2FibGVkP24uZGlzYWJsZWQ6bnVsbCE9PW4uZ2V0QXR0cmli
dXRlKCJkaXNhYmxlZCIpKXx8bi5wYXJlbnROb2RlLmRpc2FibGVkJiZiLm5v
ZGVOYW1lKG4ucGFyZW50Tm9kZSwib3B0Z3JvdXAiKSkpe2lmKHQ9YihuKS52
YWwoKSxvKXJldHVybiB0O2EucHVzaCh0KX1yZXR1cm4gYX0sc2V0OmZ1bmN0
aW9uKGUsdCl7dmFyIG49Yi5tYWtlQXJyYXkodCk7cmV0dXJuIGIoZSkuZmlu
ZCgib3B0aW9uIikuZWFjaChmdW5jdGlvbigpe3RoaXMuc2VsZWN0ZWQ9Yi5p
bkFycmF5KGIodGhpcykudmFsKCksbik+PTB9KSxuLmxlbmd0aHx8KGUuc2Vs
ZWN0ZWRJbmRleD0tMSksbn19fSxhdHRyOmZ1bmN0aW9uKGUsbixyKXt2YXIg
byxhLHMsdT1lLm5vZGVUeXBlO2lmKGUmJjMhPT11JiY4IT09dSYmMiE9PXUp
cmV0dXJuIHR5cGVvZiBlLmdldEF0dHJpYnV0ZT09PWk/Yi5wcm9wKGUsbixy
KTooYT0xIT09dXx8IWIuaXNYTUxEb2MoZSksYSYmKG49bi50b0xvd2VyQ2Fz
ZSgpLG89Yi5hdHRySG9va3Nbbl18fChKLnRlc3Qobik/ejpJKSkscj09PXQ/
byYmYSYmImdldCJpbiBvJiZudWxsIT09KHM9by5nZXQoZSxuKSk/czoodHlw
ZW9mIGUuZ2V0QXR0cmlidXRlIT09aSYmKHM9ZS5nZXRBdHRyaWJ1dGUobikp
LG51bGw9PXM/dDpzKTpudWxsIT09cj9vJiZhJiYic2V0ImluIG8mJihzPW8u
c2V0KGUscixuKSkhPT10P3M6KGUuc2V0QXR0cmlidXRlKG4scisiIikscik6
KGIucmVtb3ZlQXR0cihlLG4pLHQpKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihl
LHQpe3ZhciBuLHIsaT0wLG89dCYmdC5tYXRjaCh3KTtpZihvJiYxPT09ZS5u
b2RlVHlwZSl3aGlsZShuPW9baSsrXSlyPWIucHJvcEZpeFtuXXx8bixKLnRl
c3Qobik/IVEmJkcudGVzdChuKT9lW2IuY2FtZWxDYXNlKCJkZWZhdWx0LSIr
bildPWVbcl09ITE6ZVtyXT0hMTpiLmF0dHIoZSxuLCIiKSxlLnJlbW92ZUF0
dHJpYnV0ZShRP246cil9LGF0dHJIb29rczp7dHlwZTp7c2V0OmZ1bmN0aW9u
KGUsdCl7aWYoIWIuc3VwcG9ydC5yYWRpb1ZhbHVlJiYicmFkaW8iPT09dCYm
Yi5ub2RlTmFtZShlLCJpbnB1dCIpKXt2YXIgbj1lLnZhbHVlO3JldHVybiBl
LnNldEF0dHJpYnV0ZSgidHlwZSIsdCksbiYmKGUudmFsdWU9biksdH19fX0s
cHJvcEZpeDp7dGFiaW5kZXg6InRhYkluZGV4IixyZWFkb25seToicmVhZE9u
bHkiLCJmb3IiOiJodG1sRm9yIiwiY2xhc3MiOiJjbGFzc05hbWUiLG1heGxl
bmd0aDoibWF4TGVuZ3RoIixjZWxsc3BhY2luZzoiY2VsbFNwYWNpbmciLGNl
bGxwYWRkaW5nOiJjZWxsUGFkZGluZyIscm93c3Bhbjoicm93U3BhbiIsY29s
c3BhbjoiY29sU3BhbiIsdXNlbWFwOiJ1c2VNYXAiLGZyYW1lYm9yZGVyOiJm
cmFtZUJvcmRlciIsY29udGVudGVkaXRhYmxlOiJjb250ZW50RWRpdGFibGUi
fSxwcm9wOmZ1bmN0aW9uKGUsbixyKXt2YXIgaSxvLGEscz1lLm5vZGVUeXBl
O2lmKGUmJjMhPT1zJiY4IT09cyYmMiE9PXMpcmV0dXJuIGE9MSE9PXN8fCFi
LmlzWE1MRG9jKGUpLGEmJihuPWIucHJvcEZpeFtuXXx8bixvPWIucHJvcEhv
b2tzW25dKSxyIT09dD9vJiYic2V0ImluIG8mJihpPW8uc2V0KGUscixuKSkh
PT10P2k6ZVtuXT1yOm8mJiJnZXQiaW4gbyYmbnVsbCE9PShpPW8uZ2V0KGUs
bikpP2k6ZVtuXX0scHJvcEhvb2tzOnt0YWJJbmRleDp7Z2V0OmZ1bmN0aW9u
KGUpe3ZhciBuPWUuZ2V0QXR0cmlidXRlTm9kZSgidGFiaW5kZXgiKTtyZXR1
cm4gbiYmbi5zcGVjaWZpZWQ/cGFyc2VJbnQobi52YWx1ZSwxMCk6Vi50ZXN0
KGUubm9kZU5hbWUpfHxZLnRlc3QoZS5ub2RlTmFtZSkmJmUuaHJlZj8wOnR9
fX19KSx6PXtnZXQ6ZnVuY3Rpb24oZSxuKXt2YXIgcj1iLnByb3AoZSxuKSxp
PSJib29sZWFuIj09dHlwZW9mIHImJmUuZ2V0QXR0cmlidXRlKG4pLG89ImJv
b2xlYW4iPT10eXBlb2Ygcj9LJiZRP251bGwhPWk6Ry50ZXN0KG4pP2VbYi5j
YW1lbENhc2UoImRlZmF1bHQtIituKV06ISFpOmUuZ2V0QXR0cmlidXRlTm9k
ZShuKTtyZXR1cm4gbyYmby52YWx1ZSE9PSExP24udG9Mb3dlckNhc2UoKTp0
fSxzZXQ6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0PT09ITE/Yi5yZW1vdmVB
dHRyKGUsbik6SyYmUXx8IUcudGVzdChuKT9lLnNldEF0dHJpYnV0ZSghUSYm
Yi5wcm9wRml4W25dfHxuLG4pOmVbYi5jYW1lbENhc2UoImRlZmF1bHQtIitu
KV09ZVtuXT0hMCxufX0sSyYmUXx8KGIuYXR0ckhvb2tzLnZhbHVlPXtnZXQ6
ZnVuY3Rpb24oZSxuKXt2YXIgcj1lLmdldEF0dHJpYnV0ZU5vZGUobik7cmV0
dXJuIGIubm9kZU5hbWUoZSwiaW5wdXQiKT9lLmRlZmF1bHRWYWx1ZTpyJiZy
LnNwZWNpZmllZD9yLnZhbHVlOnR9LHNldDpmdW5jdGlvbihlLG4scil7cmV0
dXJuIGIubm9kZU5hbWUoZSwiaW5wdXQiKT8oZS5kZWZhdWx0VmFsdWU9bix0
KTpJJiZJLnNldChlLG4scil9fSksUXx8KEk9Yi52YWxIb29rcy5idXR0b249
e2dldDpmdW5jdGlvbihlLG4pe3ZhciByPWUuZ2V0QXR0cmlidXRlTm9kZShu
KTtyZXR1cm4gciYmKCJpZCI9PT1ufHwibmFtZSI9PT1ufHwiY29vcmRzIj09
PW4/IiIhPT1yLnZhbHVlOnIuc3BlY2lmaWVkKT9yLnZhbHVlOnR9LHNldDpm
dW5jdGlvbihlLG4scil7dmFyIGk9ZS5nZXRBdHRyaWJ1dGVOb2RlKHIpO3Jl
dHVybiBpfHxlLnNldEF0dHJpYnV0ZU5vZGUoaT1lLm93bmVyRG9jdW1lbnQu
Y3JlYXRlQXR0cmlidXRlKHIpKSxpLnZhbHVlPW4rPSIiLCJ2YWx1ZSI9PT1y
fHxuPT09ZS5nZXRBdHRyaWJ1dGUocik/bjp0fX0sYi5hdHRySG9va3MuY29u
dGVudGVkaXRhYmxlPXtnZXQ6SS5nZXQsc2V0OmZ1bmN0aW9uKGUsdCxuKXtJ
LnNldChlLCIiPT09dD8hMTp0LG4pfX0sYi5lYWNoKFsid2lkdGgiLCJoZWln
aHQiXSxmdW5jdGlvbihlLG4pe2IuYXR0ckhvb2tzW25dPWIuZXh0ZW5kKGIu
YXR0ckhvb2tzW25dLHtzZXQ6ZnVuY3Rpb24oZSxyKXtyZXR1cm4iIj09PXI/
KGUuc2V0QXR0cmlidXRlKG4sImF1dG8iKSxyKTp0fX0pfSkpLGIuc3VwcG9y
dC5ocmVmTm9ybWFsaXplZHx8KGIuZWFjaChbImhyZWYiLCJzcmMiLCJ3aWR0
aCIsImhlaWdodCJdLGZ1bmN0aW9uKGUsbil7Yi5hdHRySG9va3Nbbl09Yi5l
eHRlbmQoYi5hdHRySG9va3Nbbl0se2dldDpmdW5jdGlvbihlKXt2YXIgcj1l
LmdldEF0dHJpYnV0ZShuLDIpO3JldHVybiBudWxsPT1yP3Q6cn19KX0pLGIu
ZWFjaChbImhyZWYiLCJzcmMiXSxmdW5jdGlvbihlLHQpe2IucHJvcEhvb2tz
W3RdPXtnZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0QXR0cmlidXRlKHQs
NCl9fX0pKSxiLnN1cHBvcnQuc3R5bGV8fChiLmF0dHJIb29rcy5zdHlsZT17
Z2V0OmZ1bmN0aW9uKGUpe3JldHVybiBlLnN0eWxlLmNzc1RleHR8fHR9LHNl
dDpmdW5jdGlvbihlLHQpe3JldHVybiBlLnN0eWxlLmNzc1RleHQ9dCsiIn19
KSxiLnN1cHBvcnQub3B0U2VsZWN0ZWR8fChiLnByb3BIb29rcy5zZWxlY3Rl
ZD1iLmV4dGVuZChiLnByb3BIb29rcy5zZWxlY3RlZCx7Z2V0OmZ1bmN0aW9u
KGUpe3ZhciB0PWUucGFyZW50Tm9kZTtyZXR1cm4gdCYmKHQuc2VsZWN0ZWRJ
bmRleCx0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4
KSxudWxsfX0pKSxiLnN1cHBvcnQuZW5jdHlwZXx8KGIucHJvcEZpeC5lbmN0
eXBlPSJlbmNvZGluZyIpLGIuc3VwcG9ydC5jaGVja09ufHxiLmVhY2goWyJy
YWRpbyIsImNoZWNrYm94Il0sZnVuY3Rpb24oKXtiLnZhbEhvb2tzW3RoaXNd
PXtnZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PT1lLmdldEF0dHJpYnV0
ZSgidmFsdWUiKT8ib24iOmUudmFsdWV9fX0pLGIuZWFjaChbInJhZGlvIiwi
Y2hlY2tib3giXSxmdW5jdGlvbigpe2IudmFsSG9va3NbdGhpc109Yi5leHRl
bmQoYi52YWxIb29rc1t0aGlzXSx7c2V0OmZ1bmN0aW9uKGUsbil7cmV0dXJu
IGIuaXNBcnJheShuKT9lLmNoZWNrZWQ9Yi5pbkFycmF5KGIoZSkudmFsKCks
bik+PTA6dH19KX0pO3ZhciBaPS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVh
KSQvaSxldD0vXmtleS8sdHQ9L14oPzptb3VzZXxjb250ZXh0bWVudSl8Y2xp
Y2svLG50PS9eKD86Zm9jdXNpbmZvY3VzfGZvY3Vzb3V0Ymx1cikkLyxydD0v
XihbXi5dKikoPzpcLiguKyl8KSQvO2Z1bmN0aW9uIGl0KCl7cmV0dXJuITB9
ZnVuY3Rpb24gb3QoKXtyZXR1cm4hMX1iLmV2ZW50PXtnbG9iYWw6e30sYWRk
OmZ1bmN0aW9uKGUsbixyLG8sYSl7dmFyIHMsdSxsLGMscCxmLGQsaCxnLG0s
eSx2PWIuX2RhdGEoZSk7aWYodil7ci5oYW5kbGVyJiYoYz1yLHI9Yy5oYW5k
bGVyLGE9Yy5zZWxlY3Rvciksci5ndWlkfHwoci5ndWlkPWIuZ3VpZCsrKSwo
dT12LmV2ZW50cyl8fCh1PXYuZXZlbnRzPXt9KSwoZj12LmhhbmRsZSl8fChm
PXYuaGFuZGxlPWZ1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgYj09PWl8fGUm
JmIuZXZlbnQudHJpZ2dlcmVkPT09ZS50eXBlP3Q6Yi5ldmVudC5kaXNwYXRj
aC5hcHBseShmLmVsZW0sYXJndW1lbnRzKX0sZi5lbGVtPWUpLG49KG58fCIi
KS5tYXRjaCh3KXx8WyIiXSxsPW4ubGVuZ3RoO3doaWxlKGwtLSlzPXJ0LmV4
ZWMobltsXSl8fFtdLGc9eT1zWzFdLG09KHNbMl18fCIiKS5zcGxpdCgiLiIp
LnNvcnQoKSxwPWIuZXZlbnQuc3BlY2lhbFtnXXx8e30sZz0oYT9wLmRlbGVn
YXRlVHlwZTpwLmJpbmRUeXBlKXx8ZyxwPWIuZXZlbnQuc3BlY2lhbFtnXXx8
e30sZD1iLmV4dGVuZCh7dHlwZTpnLG9yaWdUeXBlOnksZGF0YTpvLGhhbmRs
ZXI6cixndWlkOnIuZ3VpZCxzZWxlY3RvcjphLG5lZWRzQ29udGV4dDphJiZi
LmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LnRlc3QoYSksbmFtZXNwYWNlOm0u
am9pbigiLiIpfSxjKSwoaD11W2ddKXx8KGg9dVtnXT1bXSxoLmRlbGVnYXRl
Q291bnQ9MCxwLnNldHVwJiZwLnNldHVwLmNhbGwoZSxvLG0sZikhPT0hMXx8
KGUuYWRkRXZlbnRMaXN0ZW5lcj9lLmFkZEV2ZW50TGlzdGVuZXIoZyxmLCEx
KTplLmF0dGFjaEV2ZW50JiZlLmF0dGFjaEV2ZW50KCJvbiIrZyxmKSkpLHAu
YWRkJiYocC5hZGQuY2FsbChlLGQpLGQuaGFuZGxlci5ndWlkfHwoZC5oYW5k
bGVyLmd1aWQ9ci5ndWlkKSksYT9oLnNwbGljZShoLmRlbGVnYXRlQ291bnQr
KywwLGQpOmgucHVzaChkKSxiLmV2ZW50Lmdsb2JhbFtnXT0hMDtlPW51bGx9
fSxyZW1vdmU6ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgbyxhLHMsdSxsLGMs
cCxmLGQsaCxnLG09Yi5oYXNEYXRhKGUpJiZiLl9kYXRhKGUpO2lmKG0mJihj
PW0uZXZlbnRzKSl7dD0odHx8IiIpLm1hdGNoKHcpfHxbIiJdLGw9dC5sZW5n
dGg7d2hpbGUobC0tKWlmKHM9cnQuZXhlYyh0W2xdKXx8W10sZD1nPXNbMV0s
aD0oc1syXXx8IiIpLnNwbGl0KCIuIikuc29ydCgpLGQpe3A9Yi5ldmVudC5z
cGVjaWFsW2RdfHx7fSxkPShyP3AuZGVsZWdhdGVUeXBlOnAuYmluZFR5cGUp
fHxkLGY9Y1tkXXx8W10scz1zWzJdJiZSZWdFeHAoIihefFxcLikiK2guam9p
bigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIiksdT1vPWYubGVuZ3RoO3do
aWxlKG8tLSlhPWZbb10sIWkmJmchPT1hLm9yaWdUeXBlfHxuJiZuLmd1aWQh
PT1hLmd1aWR8fHMmJiFzLnRlc3QoYS5uYW1lc3BhY2UpfHxyJiZyIT09YS5z
ZWxlY3RvciYmKCIqKiIhPT1yfHwhYS5zZWxlY3Rvcil8fChmLnNwbGljZShv
LDEpLGEuc2VsZWN0b3ImJmYuZGVsZWdhdGVDb3VudC0tLHAucmVtb3ZlJiZw
LnJlbW92ZS5jYWxsKGUsYSkpO3UmJiFmLmxlbmd0aCYmKHAudGVhcmRvd24m
JnAudGVhcmRvd24uY2FsbChlLGgsbS5oYW5kbGUpIT09ITF8fGIucmVtb3Zl
RXZlbnQoZSxkLG0uaGFuZGxlKSxkZWxldGUgY1tkXSl9ZWxzZSBmb3IoZCBp
biBjKWIuZXZlbnQucmVtb3ZlKGUsZCt0W2xdLG4sciwhMCk7Yi5pc0VtcHR5
T2JqZWN0KGMpJiYoZGVsZXRlIG0uaGFuZGxlLGIuX3JlbW92ZURhdGEoZSwi
ZXZlbnRzIikpfX0sdHJpZ2dlcjpmdW5jdGlvbihuLHIsaSxhKXt2YXIgcyx1
LGwsYyxwLGYsZCxoPVtpfHxvXSxnPXkuY2FsbChuLCJ0eXBlIik/bi50eXBl
Om4sbT15LmNhbGwobiwibmFtZXNwYWNlIik/bi5uYW1lc3BhY2Uuc3BsaXQo
Ii4iKTpbXTtpZihsPWY9aT1pfHxvLDMhPT1pLm5vZGVUeXBlJiY4IT09aS5u
b2RlVHlwZSYmIW50LnRlc3QoZytiLmV2ZW50LnRyaWdnZXJlZCkmJihnLmlu
ZGV4T2YoIi4iKT49MCYmKG09Zy5zcGxpdCgiLiIpLGc9bS5zaGlmdCgpLG0u
c29ydCgpKSx1PTA+Zy5pbmRleE9mKCI6IikmJiJvbiIrZyxuPW5bYi5leHBh
bmRvXT9uOm5ldyBiLkV2ZW50KGcsIm9iamVjdCI9PXR5cGVvZiBuJiZuKSxu
LmlzVHJpZ2dlcj0hMCxuLm5hbWVzcGFjZT1tLmpvaW4oIi4iKSxuLm5hbWVz
cGFjZV9yZT1uLm5hbWVzcGFjZT9SZWdFeHAoIihefFxcLikiK20uam9pbigi
XFwuKD86LipcXC58KSIpKyIoXFwufCQpIik6bnVsbCxuLnJlc3VsdD10LG4u
dGFyZ2V0fHwobi50YXJnZXQ9aSkscj1udWxsPT1yP1tuXTpiLm1ha2VBcnJh
eShyLFtuXSkscD1iLmV2ZW50LnNwZWNpYWxbZ118fHt9LGF8fCFwLnRyaWdn
ZXJ8fHAudHJpZ2dlci5hcHBseShpLHIpIT09ITEpKXtpZighYSYmIXAubm9C
dWJibGUmJiFiLmlzV2luZG93KGkpKXtmb3IoYz1wLmRlbGVnYXRlVHlwZXx8
ZyxudC50ZXN0KGMrZyl8fChsPWwucGFyZW50Tm9kZSk7bDtsPWwucGFyZW50
Tm9kZSloLnB1c2gobCksZj1sO2Y9PT0oaS5vd25lckRvY3VtZW50fHxvKSYm
aC5wdXNoKGYuZGVmYXVsdFZpZXd8fGYucGFyZW50V2luZG93fHxlKX1kPTA7
d2hpbGUoKGw9aFtkKytdKSYmIW4uaXNQcm9wYWdhdGlvblN0b3BwZWQoKSlu
LnR5cGU9ZD4xP2M6cC5iaW5kVHlwZXx8ZyxzPShiLl9kYXRhKGwsImV2ZW50
cyIpfHx7fSlbbi50eXBlXSYmYi5fZGF0YShsLCJoYW5kbGUiKSxzJiZzLmFw
cGx5KGwscikscz11JiZsW3VdLHMmJmIuYWNjZXB0RGF0YShsKSYmcy5hcHBs
eSYmcy5hcHBseShsLHIpPT09ITEmJm4ucHJldmVudERlZmF1bHQoKTtpZihu
LnR5cGU9ZywhKGF8fG4uaXNEZWZhdWx0UHJldmVudGVkKCl8fHAuX2RlZmF1
bHQmJnAuX2RlZmF1bHQuYXBwbHkoaS5vd25lckRvY3VtZW50LHIpIT09ITF8
fCJjbGljayI9PT1nJiZiLm5vZGVOYW1lKGksImEiKXx8IWIuYWNjZXB0RGF0
YShpKXx8IXV8fCFpW2ddfHxiLmlzV2luZG93KGkpKSl7Zj1pW3VdLGYmJihp
W3VdPW51bGwpLGIuZXZlbnQudHJpZ2dlcmVkPWc7dHJ5e2lbZ10oKX1jYXRj
aCh2KXt9Yi5ldmVudC50cmlnZ2VyZWQ9dCxmJiYoaVt1XT1mKX1yZXR1cm4g
bi5yZXN1bHR9fSxkaXNwYXRjaDpmdW5jdGlvbihlKXtlPWIuZXZlbnQuZml4
KGUpO3ZhciBuLHIsaSxvLGEscz1bXSx1PWguY2FsbChhcmd1bWVudHMpLGw9
KGIuX2RhdGEodGhpcywiZXZlbnRzIil8fHt9KVtlLnR5cGVdfHxbXSxjPWIu
ZXZlbnQuc3BlY2lhbFtlLnR5cGVdfHx7fTtpZih1WzBdPWUsZS5kZWxlZ2F0
ZVRhcmdldD10aGlzLCFjLnByZURpc3BhdGNofHxjLnByZURpc3BhdGNoLmNh
bGwodGhpcyxlKSE9PSExKXtzPWIuZXZlbnQuaGFuZGxlcnMuY2FsbCh0aGlz
LGUsbCksbj0wO3doaWxlKChvPXNbbisrXSkmJiFlLmlzUHJvcGFnYXRpb25T
dG9wcGVkKCkpe2UuY3VycmVudFRhcmdldD1vLmVsZW0sYT0wO3doaWxlKChp
PW8uaGFuZGxlcnNbYSsrXSkmJiFlLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25T
dG9wcGVkKCkpKCFlLm5hbWVzcGFjZV9yZXx8ZS5uYW1lc3BhY2VfcmUudGVz
dChpLm5hbWVzcGFjZSkpJiYoZS5oYW5kbGVPYmo9aSxlLmRhdGE9aS5kYXRh
LHI9KChiLmV2ZW50LnNwZWNpYWxbaS5vcmlnVHlwZV18fHt9KS5oYW5kbGV8
fGkuaGFuZGxlcikuYXBwbHkoby5lbGVtLHUpLHIhPT10JiYoZS5yZXN1bHQ9
cik9PT0hMSYmKGUucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlv
bigpKSl9cmV0dXJuIGMucG9zdERpc3BhdGNoJiZjLnBvc3REaXNwYXRjaC5j
YWxsKHRoaXMsZSksZS5yZXN1bHR9fSxoYW5kbGVyczpmdW5jdGlvbihlLG4p
e3ZhciByLGksbyxhLHM9W10sdT1uLmRlbGVnYXRlQ291bnQsbD1lLnRhcmdl
dDtpZih1JiZsLm5vZGVUeXBlJiYoIWUuYnV0dG9ufHwiY2xpY2siIT09ZS50
eXBlKSlmb3IoO2whPXRoaXM7bD1sLnBhcmVudE5vZGV8fHRoaXMpaWYoMT09
PWwubm9kZVR5cGUmJihsLmRpc2FibGVkIT09ITB8fCJjbGljayIhPT1lLnR5
cGUpKXtmb3Iobz1bXSxhPTA7dT5hO2ErKylpPW5bYV0scj1pLnNlbGVjdG9y
KyIgIixvW3JdPT09dCYmKG9bcl09aS5uZWVkc0NvbnRleHQ/YihyLHRoaXMp
LmluZGV4KGwpPj0wOmIuZmluZChyLHRoaXMsbnVsbCxbbF0pLmxlbmd0aCks
b1tyXSYmby5wdXNoKGkpO28ubGVuZ3RoJiZzLnB1c2goe2VsZW06bCxoYW5k
bGVyczpvfSl9cmV0dXJuIG4ubGVuZ3RoPnUmJnMucHVzaCh7ZWxlbTp0aGlz
LGhhbmRsZXJzOm4uc2xpY2UodSl9KSxzfSxmaXg6ZnVuY3Rpb24oZSl7aWYo
ZVtiLmV4cGFuZG9dKXJldHVybiBlO3ZhciB0LG4scixpPWUudHlwZSxhPWUs
cz10aGlzLmZpeEhvb2tzW2ldO3N8fCh0aGlzLmZpeEhvb2tzW2ldPXM9dHQu
dGVzdChpKT90aGlzLm1vdXNlSG9va3M6ZXQudGVzdChpKT90aGlzLmtleUhv
b2tzOnt9KSxyPXMucHJvcHM/dGhpcy5wcm9wcy5jb25jYXQocy5wcm9wcyk6
dGhpcy5wcm9wcyxlPW5ldyBiLkV2ZW50KGEpLHQ9ci5sZW5ndGg7d2hpbGUo
dC0tKW49clt0XSxlW25dPWFbbl07cmV0dXJuIGUudGFyZ2V0fHwoZS50YXJn
ZXQ9YS5zcmNFbGVtZW50fHxvKSwzPT09ZS50YXJnZXQubm9kZVR5cGUmJihl
LnRhcmdldD1lLnRhcmdldC5wYXJlbnROb2RlKSxlLm1ldGFLZXk9ISFlLm1l
dGFLZXkscy5maWx0ZXI/cy5maWx0ZXIoZSxhKTplfSxwcm9wczoiYWx0S2V5
IGJ1YmJsZXMgY2FuY2VsYWJsZSBjdHJsS2V5IGN1cnJlbnRUYXJnZXQgZXZl
bnRQaGFzZSBtZXRhS2V5IHJlbGF0ZWRUYXJnZXQgc2hpZnRLZXkgdGFyZ2V0
IHRpbWVTdGFtcCB2aWV3IHdoaWNoIi5zcGxpdCgiICIpLGZpeEhvb2tzOnt9
LGtleUhvb2tzOntwcm9wczoiY2hhciBjaGFyQ29kZSBrZXkga2V5Q29kZSIu
c3BsaXQoIiAiKSxmaWx0ZXI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbD09
ZS53aGljaCYmKGUud2hpY2g9bnVsbCE9dC5jaGFyQ29kZT90LmNoYXJDb2Rl
OnQua2V5Q29kZSksZX19LG1vdXNlSG9va3M6e3Byb3BzOiJidXR0b24gYnV0
dG9ucyBjbGllbnRYIGNsaWVudFkgZnJvbUVsZW1lbnQgb2Zmc2V0WCBvZmZz
ZXRZIHBhZ2VYIHBhZ2VZIHNjcmVlblggc2NyZWVuWSB0b0VsZW1lbnQiLnNw
bGl0KCIgIiksZmlsdGVyOmZ1bmN0aW9uKGUsbil7dmFyIHIsaSxhLHM9bi5i
dXR0b24sdT1uLmZyb21FbGVtZW50O3JldHVybiBudWxsPT1lLnBhZ2VYJiZu
dWxsIT1uLmNsaWVudFgmJihpPWUudGFyZ2V0Lm93bmVyRG9jdW1lbnR8fG8s
YT1pLmRvY3VtZW50RWxlbWVudCxyPWkuYm9keSxlLnBhZ2VYPW4uY2xpZW50
WCsoYSYmYS5zY3JvbGxMZWZ0fHxyJiZyLnNjcm9sbExlZnR8fDApLShhJiZh
LmNsaWVudExlZnR8fHImJnIuY2xpZW50TGVmdHx8MCksZS5wYWdlWT1uLmNs
aWVudFkrKGEmJmEuc2Nyb2xsVG9wfHxyJiZyLnNjcm9sbFRvcHx8MCktKGEm
JmEuY2xpZW50VG9wfHxyJiZyLmNsaWVudFRvcHx8MCkpLCFlLnJlbGF0ZWRU
YXJnZXQmJnUmJihlLnJlbGF0ZWRUYXJnZXQ9dT09PWUudGFyZ2V0P24udG9F
bGVtZW50OnUpLGUud2hpY2h8fHM9PT10fHwoZS53aGljaD0xJnM/MToyJnM/
Mzo0JnM/MjowKSxlfX0sc3BlY2lhbDp7bG9hZDp7bm9CdWJibGU6ITB9LGNs
aWNrOnt0cmlnZ2VyOmZ1bmN0aW9uKCl7cmV0dXJuIGIubm9kZU5hbWUodGhp
cywiaW5wdXQiKSYmImNoZWNrYm94Ij09PXRoaXMudHlwZSYmdGhpcy5jbGlj
az8odGhpcy5jbGljaygpLCExKTp0fX0sZm9jdXM6e3RyaWdnZXI6ZnVuY3Rp
b24oKXtpZih0aGlzIT09by5hY3RpdmVFbGVtZW50JiZ0aGlzLmZvY3VzKXRy
eXtyZXR1cm4gdGhpcy5mb2N1cygpLCExfWNhdGNoKGUpe319LGRlbGVnYXRl
VHlwZToiZm9jdXNpbiJ9LGJsdXI6e3RyaWdnZXI6ZnVuY3Rpb24oKXtyZXR1
cm4gdGhpcz09PW8uYWN0aXZlRWxlbWVudCYmdGhpcy5ibHVyPyh0aGlzLmJs
dXIoKSwhMSk6dH0sZGVsZWdhdGVUeXBlOiJmb2N1c291dCJ9LGJlZm9yZXVu
bG9hZDp7cG9zdERpc3BhdGNoOmZ1bmN0aW9uKGUpe2UucmVzdWx0IT09dCYm
KGUub3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZT1lLnJlc3VsdCl9fX0sc2lt
dWxhdGU6ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9Yi5leHRlbmQobmV3IGIu
RXZlbnQsbix7dHlwZTplLGlzU2ltdWxhdGVkOiEwLG9yaWdpbmFsRXZlbnQ6
e319KTtyP2IuZXZlbnQudHJpZ2dlcihpLG51bGwsdCk6Yi5ldmVudC5kaXNw
YXRjaC5jYWxsKHQsaSksaS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmbi5wcmV2
ZW50RGVmYXVsdCgpfX0sYi5yZW1vdmVFdmVudD1vLnJlbW92ZUV2ZW50TGlz
dGVuZXI/ZnVuY3Rpb24oZSx0LG4pe2UucmVtb3ZlRXZlbnRMaXN0ZW5lciYm
ZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsbiwhMSl9OmZ1bmN0aW9uKGUsdCxu
KXt2YXIgcj0ib24iK3Q7ZS5kZXRhY2hFdmVudCYmKHR5cGVvZiBlW3JdPT09
aSYmKGVbcl09bnVsbCksZS5kZXRhY2hFdmVudChyLG4pKX0sYi5FdmVudD1m
dW5jdGlvbihlLG4pe3JldHVybiB0aGlzIGluc3RhbmNlb2YgYi5FdmVudD8o
ZSYmZS50eXBlPyh0aGlzLm9yaWdpbmFsRXZlbnQ9ZSx0aGlzLnR5cGU9ZS50
eXBlLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWUuZGVmYXVsdFByZXZlbnRl
ZHx8ZS5yZXR1cm5WYWx1ZT09PSExfHxlLmdldFByZXZlbnREZWZhdWx0JiZl
LmdldFByZXZlbnREZWZhdWx0KCk/aXQ6b3QpOnRoaXMudHlwZT1lLG4mJmIu
ZXh0ZW5kKHRoaXMsbiksdGhpcy50aW1lU3RhbXA9ZSYmZS50aW1lU3RhbXB8
fGIubm93KCksdGhpc1tiLmV4cGFuZG9dPSEwLHQpOm5ldyBiLkV2ZW50KGUs
bil9LGIuRXZlbnQucHJvdG90eXBlPXtpc0RlZmF1bHRQcmV2ZW50ZWQ6b3Qs
aXNQcm9wYWdhdGlvblN0b3BwZWQ6b3QsaXNJbW1lZGlhdGVQcm9wYWdhdGlv
blN0b3BwZWQ6b3QscHJldmVudERlZmF1bHQ6ZnVuY3Rpb24oKXt2YXIgZT10
aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9aXQs
ZSYmKGUucHJldmVudERlZmF1bHQ/ZS5wcmV2ZW50RGVmYXVsdCgpOmUucmV0
dXJuVmFsdWU9ITEpfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIg
ZT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBl
ZD1pdCxlJiYoZS5zdG9wUHJvcGFnYXRpb24mJmUuc3RvcFByb3BhZ2F0aW9u
KCksZS5jYW5jZWxCdWJibGU9ITApfSxzdG9wSW1tZWRpYXRlUHJvcGFnYXRp
b246ZnVuY3Rpb24oKXt0aGlzLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9w
cGVkPWl0LHRoaXMuc3RvcFByb3BhZ2F0aW9uKCl9fSxiLmVhY2goe21vdXNl
ZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91c2VvdXQifSxmdW5j
dGlvbihlLHQpe2IuZXZlbnQuc3BlY2lhbFtlXT17ZGVsZWdhdGVUeXBlOnQs
YmluZFR5cGU6dCxoYW5kbGU6ZnVuY3Rpb24oZSl7dmFyIG4scj10aGlzLGk9
ZS5yZWxhdGVkVGFyZ2V0LG89ZS5oYW5kbGVPYmo7CnJldHVybighaXx8aSE9
PXImJiFiLmNvbnRhaW5zKHIsaSkpJiYoZS50eXBlPW8ub3JpZ1R5cGUsbj1v
LmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpLGUudHlwZT10KSxufX19
KSxiLnN1cHBvcnQuc3VibWl0QnViYmxlc3x8KGIuZXZlbnQuc3BlY2lhbC5z
dWJtaXQ9e3NldHVwOmZ1bmN0aW9uKCl7cmV0dXJuIGIubm9kZU5hbWUodGhp
cywiZm9ybSIpPyExOihiLmV2ZW50LmFkZCh0aGlzLCJjbGljay5fc3VibWl0
IGtleXByZXNzLl9zdWJtaXQiLGZ1bmN0aW9uKGUpe3ZhciBuPWUudGFyZ2V0
LHI9Yi5ub2RlTmFtZShuLCJpbnB1dCIpfHxiLm5vZGVOYW1lKG4sImJ1dHRv
biIpP24uZm9ybTp0O3ImJiFiLl9kYXRhKHIsInN1Ym1pdEJ1YmJsZXMiKSYm
KGIuZXZlbnQuYWRkKHIsInN1Ym1pdC5fc3VibWl0IixmdW5jdGlvbihlKXtl
Ll9zdWJtaXRfYnViYmxlPSEwfSksYi5fZGF0YShyLCJzdWJtaXRCdWJibGVz
IiwhMCkpfSksdCl9LHBvc3REaXNwYXRjaDpmdW5jdGlvbihlKXtlLl9zdWJt
aXRfYnViYmxlJiYoZGVsZXRlIGUuX3N1Ym1pdF9idWJibGUsdGhpcy5wYXJl
bnROb2RlJiYhZS5pc1RyaWdnZXImJmIuZXZlbnQuc2ltdWxhdGUoInN1Ym1p
dCIsdGhpcy5wYXJlbnROb2RlLGUsITApKX0sdGVhcmRvd246ZnVuY3Rpb24o
KXtyZXR1cm4gYi5ub2RlTmFtZSh0aGlzLCJmb3JtIik/ITE6KGIuZXZlbnQu
cmVtb3ZlKHRoaXMsIi5fc3VibWl0IiksdCl9fSksYi5zdXBwb3J0LmNoYW5n
ZUJ1YmJsZXN8fChiLmV2ZW50LnNwZWNpYWwuY2hhbmdlPXtzZXR1cDpmdW5j
dGlvbigpe3JldHVybiBaLnRlc3QodGhpcy5ub2RlTmFtZSk/KCgiY2hlY2ti
b3giPT09dGhpcy50eXBlfHwicmFkaW8iPT09dGhpcy50eXBlKSYmKGIuZXZl
bnQuYWRkKHRoaXMsInByb3BlcnR5Y2hhbmdlLl9jaGFuZ2UiLGZ1bmN0aW9u
KGUpeyJjaGVja2VkIj09PWUub3JpZ2luYWxFdmVudC5wcm9wZXJ0eU5hbWUm
Jih0aGlzLl9qdXN0X2NoYW5nZWQ9ITApfSksYi5ldmVudC5hZGQodGhpcywi
Y2xpY2suX2NoYW5nZSIsZnVuY3Rpb24oZSl7dGhpcy5fanVzdF9jaGFuZ2Vk
JiYhZS5pc1RyaWdnZXImJih0aGlzLl9qdXN0X2NoYW5nZWQ9ITEpLGIuZXZl
bnQuc2ltdWxhdGUoImNoYW5nZSIsdGhpcyxlLCEwKX0pKSwhMSk6KGIuZXZl
bnQuYWRkKHRoaXMsImJlZm9yZWFjdGl2YXRlLl9jaGFuZ2UiLGZ1bmN0aW9u
KGUpe3ZhciB0PWUudGFyZ2V0O1oudGVzdCh0Lm5vZGVOYW1lKSYmIWIuX2Rh
dGEodCwiY2hhbmdlQnViYmxlcyIpJiYoYi5ldmVudC5hZGQodCwiY2hhbmdl
Ll9jaGFuZ2UiLGZ1bmN0aW9uKGUpeyF0aGlzLnBhcmVudE5vZGV8fGUuaXNT
aW11bGF0ZWR8fGUuaXNUcmlnZ2VyfHxiLmV2ZW50LnNpbXVsYXRlKCJjaGFu
Z2UiLHRoaXMucGFyZW50Tm9kZSxlLCEwKX0pLGIuX2RhdGEodCwiY2hhbmdl
QnViYmxlcyIsITApKX0pLHQpfSxoYW5kbGU6ZnVuY3Rpb24oZSl7dmFyIG49
ZS50YXJnZXQ7cmV0dXJuIHRoaXMhPT1ufHxlLmlzU2ltdWxhdGVkfHxlLmlz
VHJpZ2dlcnx8InJhZGlvIiE9PW4udHlwZSYmImNoZWNrYm94IiE9PW4udHlw
ZT9lLmhhbmRsZU9iai5oYW5kbGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKTp0
fSx0ZWFyZG93bjpmdW5jdGlvbigpe3JldHVybiBiLmV2ZW50LnJlbW92ZSh0
aGlzLCIuX2NoYW5nZSIpLCFaLnRlc3QodGhpcy5ub2RlTmFtZSl9fSksYi5z
dXBwb3J0LmZvY3VzaW5CdWJibGVzfHxiLmVhY2goe2ZvY3VzOiJmb2N1c2lu
IixibHVyOiJmb2N1c291dCJ9LGZ1bmN0aW9uKGUsdCl7dmFyIG49MCxyPWZ1
bmN0aW9uKGUpe2IuZXZlbnQuc2ltdWxhdGUodCxlLnRhcmdldCxiLmV2ZW50
LmZpeChlKSwhMCl9O2IuZXZlbnQuc3BlY2lhbFt0XT17c2V0dXA6ZnVuY3Rp
b24oKXswPT09bisrJiZvLmFkZEV2ZW50TGlzdGVuZXIoZSxyLCEwKX0sdGVh
cmRvd246ZnVuY3Rpb24oKXswPT09LS1uJiZvLnJlbW92ZUV2ZW50TGlzdGVu
ZXIoZSxyLCEwKX19fSksYi5mbi5leHRlbmQoe29uOmZ1bmN0aW9uKGUsbixy
LGksbyl7dmFyIGEscztpZigib2JqZWN0Ij09dHlwZW9mIGUpeyJzdHJpbmci
IT10eXBlb2YgbiYmKHI9cnx8bixuPXQpO2ZvcihhIGluIGUpdGhpcy5vbihh
LG4scixlW2FdLG8pO3JldHVybiB0aGlzfWlmKG51bGw9PXImJm51bGw9PWk/
KGk9bixyPW49dCk6bnVsbD09aSYmKCJzdHJpbmciPT10eXBlb2Ygbj8oaT1y
LHI9dCk6KGk9cixyPW4sbj10KSksaT09PSExKWk9b3Q7ZWxzZSBpZighaSly
ZXR1cm4gdGhpcztyZXR1cm4gMT09PW8mJihzPWksaT1mdW5jdGlvbihlKXty
ZXR1cm4gYigpLm9mZihlKSxzLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0saS5n
dWlkPXMuZ3VpZHx8KHMuZ3VpZD1iLmd1aWQrKykpLHRoaXMuZWFjaChmdW5j
dGlvbigpe2IuZXZlbnQuYWRkKHRoaXMsZSxpLHIsbil9KX0sb25lOmZ1bmN0
aW9uKGUsdCxuLHIpe3JldHVybiB0aGlzLm9uKGUsdCxuLHIsMSl9LG9mZjpm
dW5jdGlvbihlLG4scil7dmFyIGksbztpZihlJiZlLnByZXZlbnREZWZhdWx0
JiZlLmhhbmRsZU9iailyZXR1cm4gaT1lLmhhbmRsZU9iaixiKGUuZGVsZWdh
dGVUYXJnZXQpLm9mZihpLm5hbWVzcGFjZT9pLm9yaWdUeXBlKyIuIitpLm5h
bWVzcGFjZTppLm9yaWdUeXBlLGkuc2VsZWN0b3IsaS5oYW5kbGVyKSx0aGlz
O2lmKCJvYmplY3QiPT10eXBlb2YgZSl7Zm9yKG8gaW4gZSl0aGlzLm9mZihv
LG4sZVtvXSk7cmV0dXJuIHRoaXN9cmV0dXJuKG49PT0hMXx8ImZ1bmN0aW9u
Ij09dHlwZW9mIG4pJiYocj1uLG49dCkscj09PSExJiYocj1vdCksdGhpcy5l
YWNoKGZ1bmN0aW9uKCl7Yi5ldmVudC5yZW1vdmUodGhpcyxlLHIsbil9KX0s
YmluZDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIHRoaXMub24oZSxudWxsLHQs
bil9LHVuYmluZDpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLm9mZihlLG51
bGwsdCl9LGRlbGVnYXRlOmZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiB0aGlz
Lm9uKHQsZSxuLHIpfSx1bmRlbGVnYXRlOmZ1bmN0aW9uKGUsdCxuKXtyZXR1
cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5vZmYoZSwiKioiKTp0aGlz
Lm9mZih0LGV8fCIqKiIsbil9LHRyaWdnZXI6ZnVuY3Rpb24oZSx0KXtyZXR1
cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Yi5ldmVudC50cmlnZ2VyKGUsdCx0
aGlzKX0pfSx0cmlnZ2VySGFuZGxlcjpmdW5jdGlvbihlLG4pe3ZhciByPXRo
aXNbMF07cmV0dXJuIHI/Yi5ldmVudC50cmlnZ2VyKGUsbixyLCEwKTp0fX0p
LGZ1bmN0aW9uKGUsdCl7dmFyIG4scixpLG8sYSxzLHUsbCxjLHAsZixkLGgs
ZyxtLHksdix4PSJzaXp6bGUiKy1uZXcgRGF0ZSx3PWUuZG9jdW1lbnQsVD17
fSxOPTAsQz0wLGs9aXQoKSxFPWl0KCksUz1pdCgpLEE9dHlwZW9mIHQsaj0x
PDwzMSxEPVtdLEw9RC5wb3AsSD1ELnB1c2gscT1ELnNsaWNlLE09RC5pbmRl
eE9mfHxmdW5jdGlvbihlKXt2YXIgdD0wLG49dGhpcy5sZW5ndGg7Zm9yKDtu
PnQ7dCsrKWlmKHRoaXNbdF09PT1lKXJldHVybiB0O3JldHVybi0xfSxfPSJb
XFx4MjBcXHRcXHJcXG5cXGZdIixGPSIoPzpcXFxcLnxbXFx3LV18W15cXHgw
MC1cXHhhMF0pKyIsTz1GLnJlcGxhY2UoInciLCJ3IyIpLEI9IihbKl4kfCF+
XT89KSIsUD0iXFxbIitfKyIqKCIrRisiKSIrXysiKig/OiIrQitfKyIqKD86
KFsnXCJdKSgoPzpcXFxcLnxbXlxcXFxdKSo/KVxcM3woIitPKyIpfCl8KSIr
XysiKlxcXSIsUj0iOigiK0YrIikoPzpcXCgoKFsnXCJdKSgoPzpcXFxcLnxb
XlxcXFxdKSo/KVxcM3woKD86XFxcXC58W15cXFxcKClbXFxdXXwiK1AucmVw
bGFjZSgzLDgpKyIpKil8LiopXFwpfCkiLFc9UmVnRXhwKCJeIitfKyIrfCgo
PzpefFteXFxcXF0pKD86XFxcXC4pKikiK18rIiskIiwiZyIpLCQ9UmVnRXhw
KCJeIitfKyIqLCIrXysiKiIpLEk9UmVnRXhwKCJeIitfKyIqKFtcXHgyMFxc
dFxcclxcblxcZj4rfl0pIitfKyIqIiksej1SZWdFeHAoUiksWD1SZWdFeHAo
Il4iK08rIiQiKSxVPXtJRDpSZWdFeHAoIl4jKCIrRisiKSIpLENMQVNTOlJl
Z0V4cCgiXlxcLigiK0YrIikiKSxOQU1FOlJlZ0V4cCgiXlxcW25hbWU9Wydc
Il0/KCIrRisiKVsnXCJdP1xcXSIpLFRBRzpSZWdFeHAoIl4oIitGLnJlcGxh
Y2UoInciLCJ3KiIpKyIpIiksQVRUUjpSZWdFeHAoIl4iK1ApLFBTRVVETzpS
ZWdFeHAoIl4iK1IpLENISUxEOlJlZ0V4cCgiXjoob25seXxmaXJzdHxsYXN0
fG50aHxudGgtbGFzdCktKGNoaWxkfG9mLXR5cGUpKD86XFwoIitfKyIqKGV2
ZW58b2RkfCgoWystXXwpKFxcZCopbnwpIitfKyIqKD86KFsrLV18KSIrXysi
KihcXGQrKXwpKSIrXysiKlxcKXwpIiwiaSIpLG5lZWRzQ29udGV4dDpSZWdF
eHAoIl4iK18rIipbPit+XXw6KGV2ZW58b2RkfGVxfGd0fGx0fG50aHxmaXJz
dHxsYXN0KSg/OlxcKCIrXysiKigoPzotXFxkKT9cXGQqKSIrXysiKlxcKXwp
KD89W14tXXwkKSIsImkiKX0sVj0vW1x4MjBcdFxyXG5cZl0qWyt+XS8sWT0v
Xltee10rXHtccypcW25hdGl2ZSBjb2RlLyxKPS9eKD86IyhbXHctXSspfChc
dyspfFwuKFtcdy1dKykpJC8sRz0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJl
YXxidXR0b24pJC9pLFE9L15oXGQkL2ksSz0vJ3xcXC9nLFo9L1w9W1x4MjBc
dFxyXG5cZl0qKFteJyJcXV0qKVtceDIwXHRcclxuXGZdKlxdL2csZXQ9L1xc
KFtcZGEtZkEtRl17MSw2fVtceDIwXHRcclxuXGZdP3wuKS9nLHR0PWZ1bmN0
aW9uKGUsdCl7dmFyIG49IjB4Iit0LTY1NTM2O3JldHVybiBuIT09bj90OjA+
bj9TdHJpbmcuZnJvbUNoYXJDb2RlKG4rNjU1MzYpOlN0cmluZy5mcm9tQ2hh
ckNvZGUoNTUyOTZ8bj4+MTAsNTYzMjB8MTAyMyZuKX07dHJ5e3EuY2FsbCh3
LmRvY3VtZW50RWxlbWVudC5jaGlsZE5vZGVzLDApWzBdLm5vZGVUeXBlfWNh
dGNoKG50KXtxPWZ1bmN0aW9uKGUpe3ZhciB0LG49W107d2hpbGUodD10aGlz
W2UrK10pbi5wdXNoKHQpO3JldHVybiBufX1mdW5jdGlvbiBydChlKXtyZXR1
cm4gWS50ZXN0KGUrIiIpfWZ1bmN0aW9uIGl0KCl7dmFyIGUsdD1bXTtyZXR1
cm4gZT1mdW5jdGlvbihuLHIpe3JldHVybiB0LnB1c2gobis9IiAiKT5pLmNh
Y2hlTGVuZ3RoJiZkZWxldGUgZVt0LnNoaWZ0KCldLGVbbl09cn19ZnVuY3Rp
b24gb3QoZSl7cmV0dXJuIGVbeF09ITAsZX1mdW5jdGlvbiBhdChlKXt2YXIg
dD1wLmNyZWF0ZUVsZW1lbnQoImRpdiIpO3RyeXtyZXR1cm4gZSh0KX1jYXRj
aChuKXtyZXR1cm4hMX1maW5hbGx5e3Q9bnVsbH19ZnVuY3Rpb24gc3QoZSx0
LG4scil7dmFyIGksbyxhLHMsdSxsLGYsZyxtLHY7aWYoKHQ/dC5vd25lckRv
Y3VtZW50fHx0OncpIT09cCYmYyh0KSx0PXR8fHAsbj1ufHxbXSwhZXx8InN0
cmluZyIhPXR5cGVvZiBlKXJldHVybiBuO2lmKDEhPT0ocz10Lm5vZGVUeXBl
KSYmOSE9PXMpcmV0dXJuW107aWYoIWQmJiFyKXtpZihpPUouZXhlYyhlKSlp
ZihhPWlbMV0pe2lmKDk9PT1zKXtpZihvPXQuZ2V0RWxlbWVudEJ5SWQoYSks
IW98fCFvLnBhcmVudE5vZGUpcmV0dXJuIG47aWYoby5pZD09PWEpcmV0dXJu
IG4ucHVzaChvKSxufWVsc2UgaWYodC5vd25lckRvY3VtZW50JiYobz10Lm93
bmVyRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYSkpJiZ5KHQsbykmJm8uaWQ9
PT1hKXJldHVybiBuLnB1c2gobyksbn1lbHNle2lmKGlbMl0pcmV0dXJuIEgu
YXBwbHkobixxLmNhbGwodC5nZXRFbGVtZW50c0J5VGFnTmFtZShlKSwwKSks
bjtpZigoYT1pWzNdKSYmVC5nZXRCeUNsYXNzTmFtZSYmdC5nZXRFbGVtZW50
c0J5Q2xhc3NOYW1lKXJldHVybiBILmFwcGx5KG4scS5jYWxsKHQuZ2V0RWxl
bWVudHNCeUNsYXNzTmFtZShhKSwwKSksbn1pZihULnFzYSYmIWgudGVzdChl
KSl7aWYoZj0hMCxnPXgsbT10LHY9OT09PXMmJmUsMT09PXMmJiJvYmplY3Qi
IT09dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKXtsPWZ0KGUpLChmPXQuZ2V0
QXR0cmlidXRlKCJpZCIpKT9nPWYucmVwbGFjZShLLCJcXCQmIik6dC5zZXRB
dHRyaWJ1dGUoImlkIixnKSxnPSJbaWQ9JyIrZysiJ10gIix1PWwubGVuZ3Ro
O3doaWxlKHUtLSlsW3VdPWcrZHQobFt1XSk7bT1WLnRlc3QoZSkmJnQucGFy
ZW50Tm9kZXx8dCx2PWwuam9pbigiLCIpfWlmKHYpdHJ5e3JldHVybiBILmFw
cGx5KG4scS5jYWxsKG0ucXVlcnlTZWxlY3RvckFsbCh2KSwwKSksbn1jYXRj
aChiKXt9ZmluYWxseXtmfHx0LnJlbW92ZUF0dHJpYnV0ZSgiaWQiKX19fXJl
dHVybiB3dChlLnJlcGxhY2UoVywiJDEiKSx0LG4scil9YT1zdC5pc1hNTD1m
dW5jdGlvbihlKXt2YXIgdD1lJiYoZS5vd25lckRvY3VtZW50fHxlKS5kb2N1
bWVudEVsZW1lbnQ7cmV0dXJuIHQ/IkhUTUwiIT09dC5ub2RlTmFtZTohMX0s
Yz1zdC5zZXREb2N1bWVudD1mdW5jdGlvbihlKXt2YXIgbj1lP2Uub3duZXJE
b2N1bWVudHx8ZTp3O3JldHVybiBuIT09cCYmOT09PW4ubm9kZVR5cGUmJm4u
ZG9jdW1lbnRFbGVtZW50PyhwPW4sZj1uLmRvY3VtZW50RWxlbWVudCxkPWEo
biksVC50YWdOYW1lTm9Db21tZW50cz1hdChmdW5jdGlvbihlKXtyZXR1cm4g
ZS5hcHBlbmRDaGlsZChuLmNyZWF0ZUNvbW1lbnQoIiIpKSwhZS5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aH0pLFQuYXR0cmlidXRlcz1hdChm
dW5jdGlvbihlKXtlLmlubmVySFRNTD0iPHNlbGVjdD48L3NlbGVjdD4iO3Zh
ciB0PXR5cGVvZiBlLmxhc3RDaGlsZC5nZXRBdHRyaWJ1dGUoIm11bHRpcGxl
Iik7cmV0dXJuImJvb2xlYW4iIT09dCYmInN0cmluZyIhPT10fSksVC5nZXRC
eUNsYXNzTmFtZT1hdChmdW5jdGlvbihlKXtyZXR1cm4gZS5pbm5lckhUTUw9
IjxkaXYgY2xhc3M9J2hpZGRlbiBlJz48L2Rpdj48ZGl2IGNsYXNzPSdoaWRk
ZW4nPjwvZGl2PiIsZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lJiZlLmdldEVs
ZW1lbnRzQnlDbGFzc05hbWUoImUiKS5sZW5ndGg/KGUubGFzdENoaWxkLmNs
YXNzTmFtZT0iZSIsMj09PWUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiZSIp
Lmxlbmd0aCk6ITF9KSxULmdldEJ5TmFtZT1hdChmdW5jdGlvbihlKXtlLmlk
PXgrMCxlLmlubmVySFRNTD0iPGEgbmFtZT0nIit4KyInPjwvYT48ZGl2IG5h
bWU9JyIreCsiJz48L2Rpdj4iLGYuaW5zZXJ0QmVmb3JlKGUsZi5maXJzdENo
aWxkKTt2YXIgdD1uLmdldEVsZW1lbnRzQnlOYW1lJiZuLmdldEVsZW1lbnRz
QnlOYW1lKHgpLmxlbmd0aD09PTIrbi5nZXRFbGVtZW50c0J5TmFtZSh4KzAp
Lmxlbmd0aDtyZXR1cm4gVC5nZXRJZE5vdE5hbWU9IW4uZ2V0RWxlbWVudEJ5
SWQoeCksZi5yZW1vdmVDaGlsZChlKSx0fSksaS5hdHRySGFuZGxlPWF0KGZ1
bmN0aW9uKGUpe3JldHVybiBlLmlubmVySFRNTD0iPGEgaHJlZj0nIyc+PC9h
PiIsZS5maXJzdENoaWxkJiZ0eXBlb2YgZS5maXJzdENoaWxkLmdldEF0dHJp
YnV0ZSE9PUEmJiIjIj09PWUuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoImhy
ZWYiKX0pP3t9OntocmVmOmZ1bmN0aW9uKGUpe3JldHVybiBlLmdldEF0dHJp
YnV0ZSgiaHJlZiIsMil9LHR5cGU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0
QXR0cmlidXRlKCJ0eXBlIil9fSxULmdldElkTm90TmFtZT8oaS5maW5kLklE
PWZ1bmN0aW9uKGUsdCl7aWYodHlwZW9mIHQuZ2V0RWxlbWVudEJ5SWQhPT1B
JiYhZCl7dmFyIG49dC5nZXRFbGVtZW50QnlJZChlKTtyZXR1cm4gbiYmbi5w
YXJlbnROb2RlP1tuXTpbXX19LGkuZmlsdGVyLklEPWZ1bmN0aW9uKGUpe3Zh
ciB0PWUucmVwbGFjZShldCx0dCk7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVy
biBlLmdldEF0dHJpYnV0ZSgiaWQiKT09PXR9fSk6KGkuZmluZC5JRD1mdW5j
dGlvbihlLG4pe2lmKHR5cGVvZiBuLmdldEVsZW1lbnRCeUlkIT09QSYmIWQp
e3ZhciByPW4uZ2V0RWxlbWVudEJ5SWQoZSk7cmV0dXJuIHI/ci5pZD09PWV8
fHR5cGVvZiByLmdldEF0dHJpYnV0ZU5vZGUhPT1BJiZyLmdldEF0dHJpYnV0
ZU5vZGUoImlkIikudmFsdWU9PT1lP1tyXTp0OltdfX0saS5maWx0ZXIuSUQ9
ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZXBsYWNlKGV0LHR0KTtyZXR1cm4gZnVu
Y3Rpb24oZSl7dmFyIG49dHlwZW9mIGUuZ2V0QXR0cmlidXRlTm9kZSE9PUEm
JmUuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKTtyZXR1cm4gbiYmbi52YWx1ZT09
PXR9fSksaS5maW5kLlRBRz1ULnRhZ05hbWVOb0NvbW1lbnRzP2Z1bmN0aW9u
KGUsbil7cmV0dXJuIHR5cGVvZiBuLmdldEVsZW1lbnRzQnlUYWdOYW1lIT09
QT9uLmdldEVsZW1lbnRzQnlUYWdOYW1lKGUpOnR9OmZ1bmN0aW9uKGUsdCl7
dmFyIG4scj1bXSxpPTAsbz10LmdldEVsZW1lbnRzQnlUYWdOYW1lKGUpO2lm
KCIqIj09PWUpe3doaWxlKG49b1tpKytdKTE9PT1uLm5vZGVUeXBlJiZyLnB1
c2gobik7cmV0dXJuIHJ9cmV0dXJuIG99LGkuZmluZC5OQU1FPVQuZ2V0QnlO
YW1lJiZmdW5jdGlvbihlLG4pe3JldHVybiB0eXBlb2Ygbi5nZXRFbGVtZW50
c0J5TmFtZSE9PUE/bi5nZXRFbGVtZW50c0J5TmFtZShuYW1lKTp0fSxpLmZp
bmQuQ0xBU1M9VC5nZXRCeUNsYXNzTmFtZSYmZnVuY3Rpb24oZSxuKXtyZXR1
cm4gdHlwZW9mIG4uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZT09PUF8fGQ/dDpu
LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoZSl9LGc9W10saD1bIjpmb2N1cyJd
LChULnFzYT1ydChuLnF1ZXJ5U2VsZWN0b3JBbGwpKSYmKGF0KGZ1bmN0aW9u
KGUpe2UuaW5uZXJIVE1MPSI8c2VsZWN0PjxvcHRpb24gc2VsZWN0ZWQ9Jyc+
PC9vcHRpb24+PC9zZWxlY3Q+IixlLnF1ZXJ5U2VsZWN0b3JBbGwoIltzZWxl
Y3RlZF0iKS5sZW5ndGh8fGgucHVzaCgiXFxbIitfKyIqKD86Y2hlY2tlZHxk
aXNhYmxlZHxpc21hcHxtdWx0aXBsZXxyZWFkb25seXxzZWxlY3RlZHx2YWx1
ZSkiKSxlLnF1ZXJ5U2VsZWN0b3JBbGwoIjpjaGVja2VkIikubGVuZ3RofHxo
LnB1c2goIjpjaGVja2VkIil9KSxhdChmdW5jdGlvbihlKXtlLmlubmVySFRN
TD0iPGlucHV0IHR5cGU9J2hpZGRlbicgaT0nJy8+IixlLnF1ZXJ5U2VsZWN0
b3JBbGwoIltpXj0nJ10iKS5sZW5ndGgmJmgucHVzaCgiWypeJF09IitfKyIq
KD86XCJcInwnJykiKSxlLnF1ZXJ5U2VsZWN0b3JBbGwoIjplbmFibGVkIiku
bGVuZ3RofHxoLnB1c2goIjplbmFibGVkIiwiOmRpc2FibGVkIiksZS5xdWVy
eVNlbGVjdG9yQWxsKCIqLDp4IiksaC5wdXNoKCIsLio6Iil9KSksKFQubWF0
Y2hlc1NlbGVjdG9yPXJ0KG09Zi5tYXRjaGVzU2VsZWN0b3J8fGYubW96TWF0
Y2hlc1NlbGVjdG9yfHxmLndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8Zi5vTWF0
Y2hlc1NlbGVjdG9yfHxmLm1zTWF0Y2hlc1NlbGVjdG9yKSkmJmF0KGZ1bmN0
aW9uKGUpe1QuZGlzY29ubmVjdGVkTWF0Y2g9bS5jYWxsKGUsImRpdiIpLG0u
Y2FsbChlLCJbcyE9JyddOngiKSxnLnB1c2goIiE9IixSKX0pLGg9UmVnRXhw
KGguam9pbigifCIpKSxnPVJlZ0V4cChnLmpvaW4oInwiKSkseT1ydChmLmNv
bnRhaW5zKXx8Zi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbj9mdW5jdGlvbihl
LHQpe3ZhciBuPTk9PT1lLm5vZGVUeXBlP2UuZG9jdW1lbnRFbGVtZW50OmUs
cj10JiZ0LnBhcmVudE5vZGU7cmV0dXJuIGU9PT1yfHwhKCFyfHwxIT09ci5u
b2RlVHlwZXx8IShuLmNvbnRhaW5zP24uY29udGFpbnMocik6ZS5jb21wYXJl
RG9jdW1lbnRQb3NpdGlvbiYmMTYmZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlv
bihyKSkpfTpmdW5jdGlvbihlLHQpe2lmKHQpd2hpbGUodD10LnBhcmVudE5v
ZGUpaWYodD09PWUpcmV0dXJuITA7cmV0dXJuITF9LHY9Zi5jb21wYXJlRG9j
dW1lbnRQb3NpdGlvbj9mdW5jdGlvbihlLHQpe3ZhciByO3JldHVybiBlPT09
dD8odT0hMCwwKToocj10LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uJiZlLmNv
bXBhcmVEb2N1bWVudFBvc2l0aW9uJiZlLmNvbXBhcmVEb2N1bWVudFBvc2l0
aW9uKHQpKT8xJnJ8fGUucGFyZW50Tm9kZSYmMTE9PT1lLnBhcmVudE5vZGUu
bm9kZVR5cGU/ZT09PW58fHkodyxlKT8tMTp0PT09bnx8eSh3LHQpPzE6MDo0
JnI/LTE6MTplLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uPy0xOjF9OmZ1bmN0
aW9uKGUsdCl7dmFyIHIsaT0wLG89ZS5wYXJlbnROb2RlLGE9dC5wYXJlbnRO
b2RlLHM9W2VdLGw9W3RdO2lmKGU9PT10KXJldHVybiB1PSEwLDA7aWYoIW98
fCFhKXJldHVybiBlPT09bj8tMTp0PT09bj8xOm8/LTE6YT8xOjA7aWYobz09
PWEpcmV0dXJuIHV0KGUsdCk7cj1lO3doaWxlKHI9ci5wYXJlbnROb2RlKXMu
dW5zaGlmdChyKTtyPXQ7d2hpbGUocj1yLnBhcmVudE5vZGUpbC51bnNoaWZ0
KHIpO3doaWxlKHNbaV09PT1sW2ldKWkrKztyZXR1cm4gaT91dChzW2ldLGxb
aV0pOnNbaV09PT13Py0xOmxbaV09PT13PzE6MH0sdT0hMSxbMCwwXS5zb3J0
KHYpLFQuZGV0ZWN0RHVwbGljYXRlcz11LHApOnB9LHN0Lm1hdGNoZXM9ZnVu
Y3Rpb24oZSx0KXtyZXR1cm4gc3QoZSxudWxsLG51bGwsdCl9LHN0Lm1hdGNo
ZXNTZWxlY3Rvcj1mdW5jdGlvbihlLHQpe2lmKChlLm93bmVyRG9jdW1lbnR8
fGUpIT09cCYmYyhlKSx0PXQucmVwbGFjZShaLCI9JyQxJ10iKSwhKCFULm1h
dGNoZXNTZWxlY3Rvcnx8ZHx8ZyYmZy50ZXN0KHQpfHxoLnRlc3QodCkpKXRy
eXt2YXIgbj1tLmNhbGwoZSx0KTtpZihufHxULmRpc2Nvbm5lY3RlZE1hdGNo
fHxlLmRvY3VtZW50JiYxMSE9PWUuZG9jdW1lbnQubm9kZVR5cGUpcmV0dXJu
IG59Y2F0Y2gocil7fXJldHVybiBzdCh0LHAsbnVsbCxbZV0pLmxlbmd0aD4w
fSxzdC5jb250YWlucz1mdW5jdGlvbihlLHQpe3JldHVybihlLm93bmVyRG9j
dW1lbnR8fGUpIT09cCYmYyhlKSx5KGUsdCl9LHN0LmF0dHI9ZnVuY3Rpb24o
ZSx0KXt2YXIgbjtyZXR1cm4oZS5vd25lckRvY3VtZW50fHxlKSE9PXAmJmMo
ZSksZHx8KHQ9dC50b0xvd2VyQ2FzZSgpKSwobj1pLmF0dHJIYW5kbGVbdF0p
P24oZSk6ZHx8VC5hdHRyaWJ1dGVzP2UuZ2V0QXR0cmlidXRlKHQpOigobj1l
LmdldEF0dHJpYnV0ZU5vZGUodCkpfHxlLmdldEF0dHJpYnV0ZSh0KSkmJmVb
dF09PT0hMD90Om4mJm4uc3BlY2lmaWVkP24udmFsdWU6bnVsbH0sc3QuZXJy
b3I9ZnVuY3Rpb24oZSl7dGhyb3cgRXJyb3IoIlN5bnRheCBlcnJvciwgdW5y
ZWNvZ25pemVkIGV4cHJlc3Npb246ICIrZSl9LHN0LnVuaXF1ZVNvcnQ9ZnVu
Y3Rpb24oZSl7dmFyIHQsbj1bXSxyPTEsaT0wO2lmKHU9IVQuZGV0ZWN0RHVw
bGljYXRlcyxlLnNvcnQodiksdSl7Zm9yKDt0PWVbcl07cisrKXQ9PT1lW3It
MV0mJihpPW4ucHVzaChyKSk7d2hpbGUoaS0tKWUuc3BsaWNlKG5baV0sMSl9
cmV0dXJuIGV9O2Z1bmN0aW9uIHV0KGUsdCl7dmFyIG49dCYmZSxyPW4mJih+
dC5zb3VyY2VJbmRleHx8aiktKH5lLnNvdXJjZUluZGV4fHxqKTtpZihyKXJl
dHVybiByO2lmKG4pd2hpbGUobj1uLm5leHRTaWJsaW5nKWlmKG49PT10KXJl
dHVybi0xO3JldHVybiBlPzE6LTF9ZnVuY3Rpb24gbHQoZSl7cmV0dXJuIGZ1
bmN0aW9uKHQpe3ZhciBuPXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1
cm4iaW5wdXQiPT09biYmdC50eXBlPT09ZX19ZnVuY3Rpb24gY3QoZSl7cmV0
dXJuIGZ1bmN0aW9uKHQpe3ZhciBuPXQubm9kZU5hbWUudG9Mb3dlckNhc2Uo
KTtyZXR1cm4oImlucHV0Ij09PW58fCJidXR0b24iPT09bikmJnQudHlwZT09
PWV9fWZ1bmN0aW9uIHB0KGUpe3JldHVybiBvdChmdW5jdGlvbih0KXtyZXR1
cm4gdD0rdCxvdChmdW5jdGlvbihuLHIpe3ZhciBpLG89ZShbXSxuLmxlbmd0
aCx0KSxhPW8ubGVuZ3RoO3doaWxlKGEtLSluW2k9b1thXV0mJihuW2ldPSEo
cltpXT1uW2ldKSl9KX0pfW89c3QuZ2V0VGV4dD1mdW5jdGlvbihlKXt2YXIg
dCxuPSIiLHI9MCxpPWUubm9kZVR5cGU7aWYoaSl7aWYoMT09PWl8fDk9PT1p
fHwxMT09PWkpe2lmKCJzdHJpbmciPT10eXBlb2YgZS50ZXh0Q29udGVudCly
ZXR1cm4gZS50ZXh0Q29udGVudDtmb3IoZT1lLmZpcnN0Q2hpbGQ7ZTtlPWUu
bmV4dFNpYmxpbmcpbis9byhlKX1lbHNlIGlmKDM9PT1pfHw0PT09aSlyZXR1
cm4gZS5ub2RlVmFsdWV9ZWxzZSBmb3IoO3Q9ZVtyXTtyKyspbis9byh0KTty
ZXR1cm4gbn0saT1zdC5zZWxlY3RvcnM9e2NhY2hlTGVuZ3RoOjUwLGNyZWF0
ZVBzZXVkbzpvdCxtYXRjaDpVLGZpbmQ6e30scmVsYXRpdmU6eyI+Ijp7ZGly
OiJwYXJlbnROb2RlIixmaXJzdDohMH0sIiAiOntkaXI6InBhcmVudE5vZGUi
fSwiKyI6e2RpcjoicHJldmlvdXNTaWJsaW5nIixmaXJzdDohMH0sIn4iOntk
aXI6InByZXZpb3VzU2libGluZyJ9fSxwcmVGaWx0ZXI6e0FUVFI6ZnVuY3Rp
b24oZSl7cmV0dXJuIGVbMV09ZVsxXS5yZXBsYWNlKGV0LHR0KSxlWzNdPShl
WzRdfHxlWzVdfHwiIikucmVwbGFjZShldCx0dCksIn49Ij09PWVbMl0mJihl
WzNdPSIgIitlWzNdKyIgIiksZS5zbGljZSgwLDQpfSxDSElMRDpmdW5jdGlv
bihlKXtyZXR1cm4gZVsxXT1lWzFdLnRvTG93ZXJDYXNlKCksIm50aCI9PT1l
WzFdLnNsaWNlKDAsMyk/KGVbM118fHN0LmVycm9yKGVbMF0pLGVbNF09Kyhl
WzRdP2VbNV0rKGVbNl18fDEpOjIqKCJldmVuIj09PWVbM118fCJvZGQiPT09
ZVszXSkpLGVbNV09KyhlWzddK2VbOF18fCJvZGQiPT09ZVszXSkpOmVbM10m
JnN0LmVycm9yKGVbMF0pLGV9LFBTRVVETzpmdW5jdGlvbihlKXt2YXIgdCxu
PSFlWzVdJiZlWzJdO3JldHVybiBVLkNISUxELnRlc3QoZVswXSk/bnVsbDoo
ZVs0XT9lWzJdPWVbNF06biYmei50ZXN0KG4pJiYodD1mdChuLCEwKSkmJih0
PW4uaW5kZXhPZigiKSIsbi5sZW5ndGgtdCktbi5sZW5ndGgpJiYoZVswXT1l
WzBdLnNsaWNlKDAsdCksZVsyXT1uLnNsaWNlKDAsdCkpLGUuc2xpY2UoMCwz
KSl9fSxmaWx0ZXI6e1RBRzpmdW5jdGlvbihlKXtyZXR1cm4iKiI9PT1lP2Z1
bmN0aW9uKCl7cmV0dXJuITB9OihlPWUucmVwbGFjZShldCx0dCkudG9Mb3dl
ckNhc2UoKSxmdW5jdGlvbih0KXtyZXR1cm4gdC5ub2RlTmFtZSYmdC5ub2Rl
TmFtZS50b0xvd2VyQ2FzZSgpPT09ZX0pfSxDTEFTUzpmdW5jdGlvbihlKXt2
YXIgdD1rW2UrIiAiXTtyZXR1cm4gdHx8KHQ9UmVnRXhwKCIoXnwiK18rIiki
K2UrIigiK18rInwkKSIpKSYmayhlLGZ1bmN0aW9uKGUpe3JldHVybiB0LnRl
c3QoZS5jbGFzc05hbWV8fHR5cGVvZiBlLmdldEF0dHJpYnV0ZSE9PUEmJmUu
Z2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9KX0sQVRUUjpmdW5jdGlvbihl
LHQsbil7cmV0dXJuIGZ1bmN0aW9uKHIpe3ZhciBpPXN0LmF0dHIocixlKTty
ZXR1cm4gbnVsbD09aT8iIT0iPT09dDp0PyhpKz0iIiwiPSI9PT10P2k9PT1u
OiIhPSI9PT10P2khPT1uOiJePSI9PT10P24mJjA9PT1pLmluZGV4T2Yobik6
Iio9Ij09PXQ/biYmaS5pbmRleE9mKG4pPi0xOiIkPSI9PT10P24mJmkuc2xp
Y2UoLW4ubGVuZ3RoKT09PW46In49Ij09PXQ/KCIgIitpKyIgIikuaW5kZXhP
ZihuKT4tMToifD0iPT09dD9pPT09bnx8aS5zbGljZSgwLG4ubGVuZ3RoKzEp
PT09bisiLSI6ITEpOiEwfX0sQ0hJTEQ6ZnVuY3Rpb24oZSx0LG4scixpKXt2
YXIgbz0ibnRoIiE9PWUuc2xpY2UoMCwzKSxhPSJsYXN0IiE9PWUuc2xpY2Uo
LTQpLHM9Im9mLXR5cGUiPT09dDtyZXR1cm4gMT09PXImJjA9PT1pP2Z1bmN0
aW9uKGUpe3JldHVybiEhZS5wYXJlbnROb2RlfTpmdW5jdGlvbih0LG4sdSl7
dmFyIGwsYyxwLGYsZCxoLGc9byE9PWE/Im5leHRTaWJsaW5nIjoicHJldmlv
dXNTaWJsaW5nIixtPXQucGFyZW50Tm9kZSx5PXMmJnQubm9kZU5hbWUudG9M
b3dlckNhc2UoKSx2PSF1JiYhcztpZihtKXtpZihvKXt3aGlsZShnKXtwPXQ7
d2hpbGUocD1wW2ddKWlmKHM/cC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09
eToxPT09cC5ub2RlVHlwZSlyZXR1cm4hMTtoPWc9Im9ubHkiPT09ZSYmIWgm
JiJuZXh0U2libGluZyJ9cmV0dXJuITB9aWYoaD1bYT9tLmZpcnN0Q2hpbGQ6
bS5sYXN0Q2hpbGRdLGEmJnYpe2M9bVt4XXx8KG1beF09e30pLGw9Y1tlXXx8
W10sZD1sWzBdPT09TiYmbFsxXSxmPWxbMF09PT1OJiZsWzJdLHA9ZCYmbS5j
aGlsZE5vZGVzW2RdO3doaWxlKHA9KytkJiZwJiZwW2ddfHwoZj1kPTApfHxo
LnBvcCgpKWlmKDE9PT1wLm5vZGVUeXBlJiYrK2YmJnA9PT10KXtjW2VdPVtO
LGQsZl07YnJlYWt9fWVsc2UgaWYodiYmKGw9KHRbeF18fCh0W3hdPXt9KSlb
ZV0pJiZsWzBdPT09TilmPWxbMV07ZWxzZSB3aGlsZShwPSsrZCYmcCYmcFtn
XXx8KGY9ZD0wKXx8aC5wb3AoKSlpZigocz9wLm5vZGVOYW1lLnRvTG93ZXJD
YXNlKCk9PT15OjE9PT1wLm5vZGVUeXBlKSYmKytmJiYodiYmKChwW3hdfHwo
cFt4XT17fSkpW2VdPVtOLGZdKSxwPT09dCkpYnJlYWs7cmV0dXJuIGYtPWks
Zj09PXJ8fDA9PT1mJXImJmYvcj49MH19fSxQU0VVRE86ZnVuY3Rpb24oZSx0
KXt2YXIgbixyPWkucHNldWRvc1tlXXx8aS5zZXRGaWx0ZXJzW2UudG9Mb3dl
ckNhc2UoKV18fHN0LmVycm9yKCJ1bnN1cHBvcnRlZCBwc2V1ZG86ICIrZSk7
cmV0dXJuIHJbeF0/cih0KTpyLmxlbmd0aD4xPyhuPVtlLGUsIiIsdF0saS5z
ZXRGaWx0ZXJzLmhhc093blByb3BlcnR5KGUudG9Mb3dlckNhc2UoKSk/b3Qo
ZnVuY3Rpb24oZSxuKXt2YXIgaSxvPXIoZSx0KSxhPW8ubGVuZ3RoO3doaWxl
KGEtLSlpPU0uY2FsbChlLG9bYV0pLGVbaV09IShuW2ldPW9bYV0pfSk6ZnVu
Y3Rpb24oZSl7cmV0dXJuIHIoZSwwLG4pfSk6cn19LHBzZXVkb3M6e25vdDpv
dChmdW5jdGlvbihlKXt2YXIgdD1bXSxuPVtdLHI9cyhlLnJlcGxhY2UoVywi
JDEiKSk7cmV0dXJuIHJbeF0/b3QoZnVuY3Rpb24oZSx0LG4saSl7dmFyIG8s
YT1yKGUsbnVsbCxpLFtdKSxzPWUubGVuZ3RoO3doaWxlKHMtLSkobz1hW3Nd
KSYmKGVbc109ISh0W3NdPW8pKX0pOmZ1bmN0aW9uKGUsaSxvKXtyZXR1cm4g
dFswXT1lLHIodCxudWxsLG8sbiksIW4ucG9wKCl9fSksaGFzOm90KGZ1bmN0
aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gc3QoZSx0KS5sZW5n
dGg+MH19KSxjb250YWluczpvdChmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rp
b24odCl7cmV0dXJuKHQudGV4dENvbnRlbnR8fHQuaW5uZXJUZXh0fHxvKHQp
KS5pbmRleE9mKGUpPi0xfX0pLGxhbmc6b3QoZnVuY3Rpb24oZSl7cmV0dXJu
IFgudGVzdChlfHwiIil8fHN0LmVycm9yKCJ1bnN1cHBvcnRlZCBsYW5nOiAi
K2UpLGU9ZS5yZXBsYWNlKGV0LHR0KS50b0xvd2VyQ2FzZSgpLGZ1bmN0aW9u
KHQpe3ZhciBuO2RvIGlmKG49ZD90LmdldEF0dHJpYnV0ZSgieG1sOmxhbmci
KXx8dC5nZXRBdHRyaWJ1dGUoImxhbmciKTp0LmxhbmcpcmV0dXJuIG49bi50
b0xvd2VyQ2FzZSgpLG49PT1lfHwwPT09bi5pbmRleE9mKGUrIi0iKTt3aGls
ZSgodD10LnBhcmVudE5vZGUpJiYxPT09dC5ub2RlVHlwZSk7cmV0dXJuITF9
fSksdGFyZ2V0OmZ1bmN0aW9uKHQpe3ZhciBuPWUubG9jYXRpb24mJmUubG9j
YXRpb24uaGFzaDtyZXR1cm4gbiYmbi5zbGljZSgxKT09PXQuaWR9LHJvb3Q6
ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT1mfSxmb2N1czpmdW5jdGlvbihlKXty
ZXR1cm4gZT09PXAuYWN0aXZlRWxlbWVudCYmKCFwLmhhc0ZvY3VzfHxwLmhh
c0ZvY3VzKCkpJiYhIShlLnR5cGV8fGUuaHJlZnx8fmUudGFiSW5kZXgpfSxl
bmFibGVkOmZ1bmN0aW9uKGUpe3JldHVybiBlLmRpc2FibGVkPT09ITF9LGRp
c2FibGVkOmZ1bmN0aW9uKGUpe3JldHVybiBlLmRpc2FibGVkPT09ITB9LGNo
ZWNrZWQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5ub2RlTmFtZS50b0xvd2VyQ2Fz
ZSgpO3JldHVybiJpbnB1dCI9PT10JiYhIWUuY2hlY2tlZHx8Im9wdGlvbiI9
PT10JiYhIWUuc2VsZWN0ZWR9LHNlbGVjdGVkOmZ1bmN0aW9uKGUpe3JldHVy
biBlLnBhcmVudE5vZGUmJmUucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4LGUu
c2VsZWN0ZWQ9PT0hMH0sZW1wdHk6ZnVuY3Rpb24oZSl7Zm9yKGU9ZS5maXJz
dENoaWxkO2U7ZT1lLm5leHRTaWJsaW5nKWlmKGUubm9kZU5hbWU+IkAifHwz
PT09ZS5ub2RlVHlwZXx8ND09PWUubm9kZVR5cGUpcmV0dXJuITE7cmV0dXJu
ITB9LHBhcmVudDpmdW5jdGlvbihlKXtyZXR1cm4haS5wc2V1ZG9zLmVtcHR5
KGUpfSxoZWFkZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIFEudGVzdChlLm5vZGVO
YW1lKX0saW5wdXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIEcudGVzdChlLm5vZGVO
YW1lKX0sYnV0dG9uOmZ1bmN0aW9uKGUpe3ZhciB0PWUubm9kZU5hbWUudG9M
b3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09dCYmImJ1dHRvbiI9PT1lLnR5
cGV8fCJidXR0b24iPT09dH0sdGV4dDpmdW5jdGlvbihlKXt2YXIgdDtyZXR1
cm4iaW5wdXQiPT09ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpJiYidGV4dCI9
PT1lLnR5cGUmJihudWxsPT0odD1lLmdldEF0dHJpYnV0ZSgidHlwZSIpKXx8
dC50b0xvd2VyQ2FzZSgpPT09ZS50eXBlKX0sZmlyc3Q6cHQoZnVuY3Rpb24o
KXtyZXR1cm5bMF19KSxsYXN0OnB0KGZ1bmN0aW9uKGUsdCl7cmV0dXJuW3Qt
MV19KSxlcTpwdChmdW5jdGlvbihlLHQsbil7cmV0dXJuWzA+bj9uK3Q6bl19
KSxldmVuOnB0KGZ1bmN0aW9uKGUsdCl7dmFyIG49MDtmb3IoO3Q+bjtuKz0y
KWUucHVzaChuKTtyZXR1cm4gZX0pLG9kZDpwdChmdW5jdGlvbihlLHQpe3Zh
ciBuPTE7Zm9yKDt0Pm47bis9MillLnB1c2gobik7cmV0dXJuIGV9KSxsdDpw
dChmdW5jdGlvbihlLHQsbil7dmFyIHI9MD5uP24rdDpuO2Zvcig7LS1yPj0w
OyllLnB1c2gocik7cmV0dXJuIGV9KSxndDpwdChmdW5jdGlvbihlLHQsbil7
dmFyIHI9MD5uP24rdDpuO2Zvcig7dD4rK3I7KWUucHVzaChyKTtyZXR1cm4g
ZX0pfX07Zm9yKG4gaW57cmFkaW86ITAsY2hlY2tib3g6ITAsZmlsZTohMCxw
YXNzd29yZDohMCxpbWFnZTohMH0paS5wc2V1ZG9zW25dPWx0KG4pO2Zvcihu
IGlue3N1Ym1pdDohMCxyZXNldDohMH0paS5wc2V1ZG9zW25dPWN0KG4pO2Z1
bmN0aW9uIGZ0KGUsdCl7dmFyIG4scixvLGEscyx1LGwsYz1FW2UrIiAiXTtp
ZihjKXJldHVybiB0PzA6Yy5zbGljZSgwKTtzPWUsdT1bXSxsPWkucHJlRmls
dGVyO3doaWxlKHMpeyghbnx8KHI9JC5leGVjKHMpKSkmJihyJiYocz1zLnNs
aWNlKHJbMF0ubGVuZ3RoKXx8cyksdS5wdXNoKG89W10pKSxuPSExLChyPUku
ZXhlYyhzKSkmJihuPXIuc2hpZnQoKSxvLnB1c2goe3ZhbHVlOm4sdHlwZTpy
WzBdLnJlcGxhY2UoVywiICIpfSkscz1zLnNsaWNlKG4ubGVuZ3RoKSk7Zm9y
KGEgaW4gaS5maWx0ZXIpIShyPVVbYV0uZXhlYyhzKSl8fGxbYV0mJiEocj1s
W2FdKHIpKXx8KG49ci5zaGlmdCgpLG8ucHVzaCh7dmFsdWU6bix0eXBlOmEs
bWF0Y2hlczpyfSkscz1zLnNsaWNlKG4ubGVuZ3RoKSk7aWYoIW4pYnJlYWt9
cmV0dXJuIHQ/cy5sZW5ndGg6cz9zdC5lcnJvcihlKTpFKGUsdSkuc2xpY2Uo
MCl9ZnVuY3Rpb24gZHQoZSl7dmFyIHQ9MCxuPWUubGVuZ3RoLHI9IiI7Zm9y
KDtuPnQ7dCsrKXIrPWVbdF0udmFsdWU7cmV0dXJuIHJ9ZnVuY3Rpb24gaHQo
ZSx0LG4pe3ZhciBpPXQuZGlyLG89biYmInBhcmVudE5vZGUiPT09aSxhPUMr
KztyZXR1cm4gdC5maXJzdD9mdW5jdGlvbih0LG4scil7d2hpbGUodD10W2ld
KWlmKDE9PT10Lm5vZGVUeXBlfHxvKXJldHVybiBlKHQsbixyKX06ZnVuY3Rp
b24odCxuLHMpe3ZhciB1LGwsYyxwPU4rIiAiK2E7aWYocyl7d2hpbGUodD10
W2ldKWlmKCgxPT09dC5ub2RlVHlwZXx8bykmJmUodCxuLHMpKXJldHVybiEw
fWVsc2Ugd2hpbGUodD10W2ldKWlmKDE9PT10Lm5vZGVUeXBlfHxvKWlmKGM9
dFt4XXx8KHRbeF09e30pLChsPWNbaV0pJiZsWzBdPT09cCl7aWYoKHU9bFsx
XSk9PT0hMHx8dT09PXIpcmV0dXJuIHU9PT0hMH1lbHNlIGlmKGw9Y1tpXT1b
cF0sbFsxXT1lKHQsbixzKXx8cixsWzFdPT09ITApcmV0dXJuITB9fWZ1bmN0
aW9uIGd0KGUpe3JldHVybiBlLmxlbmd0aD4xP2Z1bmN0aW9uKHQsbixyKXt2
YXIgaT1lLmxlbmd0aDt3aGlsZShpLS0paWYoIWVbaV0odCxuLHIpKXJldHVy
biExO3JldHVybiEwfTplWzBdfWZ1bmN0aW9uIG10KGUsdCxuLHIsaSl7dmFy
IG8sYT1bXSxzPTAsdT1lLmxlbmd0aCxsPW51bGwhPXQ7Zm9yKDt1PnM7cysr
KShvPWVbc10pJiYoIW58fG4obyxyLGkpKSYmKGEucHVzaChvKSxsJiZ0LnB1
c2gocykpO3JldHVybiBhfWZ1bmN0aW9uIHl0KGUsdCxuLHIsaSxvKXtyZXR1
cm4gciYmIXJbeF0mJihyPXl0KHIpKSxpJiYhaVt4XSYmKGk9eXQoaSxvKSks
b3QoZnVuY3Rpb24obyxhLHMsdSl7dmFyIGwsYyxwLGY9W10sZD1bXSxoPWEu
bGVuZ3RoLGc9b3x8eHQodHx8IioiLHMubm9kZVR5cGU/W3NdOnMsW10pLG09
IWV8fCFvJiZ0P2c6bXQoZyxmLGUscyx1KSx5PW4/aXx8KG8/ZTpofHxyKT9b
XTphOm07aWYobiYmbihtLHkscyx1KSxyKXtsPW10KHksZCkscihsLFtdLHMs
dSksYz1sLmxlbmd0aDt3aGlsZShjLS0pKHA9bFtjXSkmJih5W2RbY11dPSEo
bVtkW2NdXT1wKSl9aWYobyl7aWYoaXx8ZSl7aWYoaSl7bD1bXSxjPXkubGVu
Z3RoO3doaWxlKGMtLSkocD15W2NdKSYmbC5wdXNoKG1bY109cCk7aShudWxs
LHk9W10sbCx1KX1jPXkubGVuZ3RoO3doaWxlKGMtLSkocD15W2NdKSYmKGw9
aT9NLmNhbGwobyxwKTpmW2NdKT4tMSYmKG9bbF09IShhW2xdPXApKX19ZWxz
ZSB5PW10KHk9PT1hP3kuc3BsaWNlKGgseS5sZW5ndGgpOnkpLGk/aShudWxs
LGEseSx1KTpILmFwcGx5KGEseSl9KX1mdW5jdGlvbiB2dChlKXt2YXIgdCxu
LHIsbz1lLmxlbmd0aCxhPWkucmVsYXRpdmVbZVswXS50eXBlXSxzPWF8fGku
cmVsYXRpdmVbIiAiXSx1PWE/MTowLGM9aHQoZnVuY3Rpb24oZSl7cmV0dXJu
IGU9PT10fSxzLCEwKSxwPWh0KGZ1bmN0aW9uKGUpe3JldHVybiBNLmNhbGwo
dCxlKT4tMX0scywhMCksZj1bZnVuY3Rpb24oZSxuLHIpe3JldHVybiFhJiYo
cnx8biE9PWwpfHwoKHQ9bikubm9kZVR5cGU/YyhlLG4scik6cChlLG4scikp
fV07Zm9yKDtvPnU7dSsrKWlmKG49aS5yZWxhdGl2ZVtlW3VdLnR5cGVdKWY9
W2h0KGd0KGYpLG4pXTtlbHNle2lmKG49aS5maWx0ZXJbZVt1XS50eXBlXS5h
cHBseShudWxsLGVbdV0ubWF0Y2hlcyksblt4XSl7Zm9yKHI9Kyt1O28+cjty
KyspaWYoaS5yZWxhdGl2ZVtlW3JdLnR5cGVdKWJyZWFrO3JldHVybiB5dCh1
PjEmJmd0KGYpLHU+MSYmZHQoZS5zbGljZSgwLHUtMSkpLnJlcGxhY2UoVywi
JDEiKSxuLHI+dSYmdnQoZS5zbGljZSh1LHIpKSxvPnImJnZ0KGU9ZS5zbGlj
ZShyKSksbz5yJiZkdChlKSl9Zi5wdXNoKG4pfXJldHVybiBndChmKX1mdW5j
dGlvbiBidChlLHQpe3ZhciBuPTAsbz10Lmxlbmd0aD4wLGE9ZS5sZW5ndGg+
MCxzPWZ1bmN0aW9uKHMsdSxjLGYsZCl7dmFyIGgsZyxtLHk9W10sdj0wLGI9
IjAiLHg9cyYmW10sdz1udWxsIT1kLFQ9bCxDPXN8fGEmJmkuZmluZC5UQUco
IioiLGQmJnUucGFyZW50Tm9kZXx8dSksaz1OKz1udWxsPT1UPzE6TWF0aC5y
YW5kb20oKXx8LjE7Zm9yKHcmJihsPXUhPT1wJiZ1LHI9bik7bnVsbCE9KGg9
Q1tiXSk7YisrKXtpZihhJiZoKXtnPTA7d2hpbGUobT1lW2crK10paWYobSho
LHUsYykpe2YucHVzaChoKTticmVha313JiYoTj1rLHI9KytuKX1vJiYoKGg9
IW0mJmgpJiZ2LS0scyYmeC5wdXNoKGgpKX1pZih2Kz1iLG8mJmIhPT12KXtn
PTA7d2hpbGUobT10W2crK10pbSh4LHksdSxjKTtpZihzKXtpZih2PjApd2hp
bGUoYi0tKXhbYl18fHlbYl18fCh5W2JdPUwuY2FsbChmKSk7eT1tdCh5KX1I
LmFwcGx5KGYseSksdyYmIXMmJnkubGVuZ3RoPjAmJnYrdC5sZW5ndGg+MSYm
c3QudW5pcXVlU29ydChmKX1yZXR1cm4gdyYmKE49ayxsPVQpLHh9O3JldHVy
biBvP290KHMpOnN9cz1zdC5jb21waWxlPWZ1bmN0aW9uKGUsdCl7dmFyIG4s
cj1bXSxpPVtdLG89U1tlKyIgIl07aWYoIW8pe3R8fCh0PWZ0KGUpKSxuPXQu
bGVuZ3RoO3doaWxlKG4tLSlvPXZ0KHRbbl0pLG9beF0/ci5wdXNoKG8pOmku
cHVzaChvKTtvPVMoZSxidChpLHIpKX1yZXR1cm4gb307ZnVuY3Rpb24geHQo
ZSx0LG4pe3ZhciByPTAsaT10Lmxlbmd0aDtmb3IoO2k+cjtyKyspc3QoZSx0
W3JdLG4pO3JldHVybiBufWZ1bmN0aW9uIHd0KGUsdCxuLHIpe3ZhciBvLGEs
dSxsLGMscD1mdChlKTtpZighciYmMT09PXAubGVuZ3RoKXtpZihhPXBbMF09
cFswXS5zbGljZSgwKSxhLmxlbmd0aD4yJiYiSUQiPT09KHU9YVswXSkudHlw
ZSYmOT09PXQubm9kZVR5cGUmJiFkJiZpLnJlbGF0aXZlW2FbMV0udHlwZV0p
e2lmKHQ9aS5maW5kLklEKHUubWF0Y2hlc1swXS5yZXBsYWNlKGV0LHR0KSx0
KVswXSwhdClyZXR1cm4gbjtlPWUuc2xpY2UoYS5zaGlmdCgpLnZhbHVlLmxl
bmd0aCl9bz1VLm5lZWRzQ29udGV4dC50ZXN0KGUpPzA6YS5sZW5ndGg7d2hp
bGUoby0tKXtpZih1PWFbb10saS5yZWxhdGl2ZVtsPXUudHlwZV0pYnJlYWs7
aWYoKGM9aS5maW5kW2xdKSYmKHI9Yyh1Lm1hdGNoZXNbMF0ucmVwbGFjZShl
dCx0dCksVi50ZXN0KGFbMF0udHlwZSkmJnQucGFyZW50Tm9kZXx8dCkpKXtp
ZihhLnNwbGljZShvLDEpLGU9ci5sZW5ndGgmJmR0KGEpLCFlKXJldHVybiBI
LmFwcGx5KG4scS5jYWxsKHIsMCkpLG47YnJlYWt9fX1yZXR1cm4gcyhlLHAp
KHIsdCxkLG4sVi50ZXN0KGUpKSxufWkucHNldWRvcy5udGg9aS5wc2V1ZG9z
LmVxO2Z1bmN0aW9uIFR0KCl7fWkuZmlsdGVycz1UdC5wcm90b3R5cGU9aS5w
c2V1ZG9zLGkuc2V0RmlsdGVycz1uZXcgVHQsYygpLHN0LmF0dHI9Yi5hdHRy
LGIuZmluZD1zdCxiLmV4cHI9c3Quc2VsZWN0b3JzLGIuZXhwclsiOiJdPWIu
ZXhwci5wc2V1ZG9zLGIudW5pcXVlPXN0LnVuaXF1ZVNvcnQsYi50ZXh0PXN0
LmdldFRleHQsYi5pc1hNTERvYz1zdC5pc1hNTCxiLmNvbnRhaW5zPXN0LmNv
bnRhaW5zfShlKTt2YXIgYXQ9L1VudGlsJC8sc3Q9L14oPzpwYXJlbnRzfHBy
ZXYoPzpVbnRpbHxBbGwpKS8sdXQ9L14uW146I1xbXC4sXSokLyxsdD1iLmV4
cHIubWF0Y2gubmVlZHNDb250ZXh0LGN0PXtjaGlsZHJlbjohMCxjb250ZW50
czohMCxuZXh0OiEwLHByZXY6ITB9O2IuZm4uZXh0ZW5kKHtmaW5kOmZ1bmN0
aW9uKGUpe3ZhciB0LG4scixpPXRoaXMubGVuZ3RoO2lmKCJzdHJpbmciIT10
eXBlb2YgZSlyZXR1cm4gcj10aGlzLHRoaXMucHVzaFN0YWNrKGIoZSkuZmls
dGVyKGZ1bmN0aW9uKCl7Zm9yKHQ9MDtpPnQ7dCsrKWlmKGIuY29udGFpbnMo
clt0XSx0aGlzKSlyZXR1cm4hMH0pKTtmb3Iobj1bXSx0PTA7aT50O3QrKyli
LmZpbmQoZSx0aGlzW3RdLG4pO3JldHVybiBuPXRoaXMucHVzaFN0YWNrKGk+
MT9iLnVuaXF1ZShuKTpuKSxuLnNlbGVjdG9yPSh0aGlzLnNlbGVjdG9yP3Ro
aXMuc2VsZWN0b3IrIiAiOiIiKStlLG59LGhhczpmdW5jdGlvbihlKXt2YXIg
dCxuPWIoZSx0aGlzKSxyPW4ubGVuZ3RoO3JldHVybiB0aGlzLmZpbHRlcihm
dW5jdGlvbigpe2Zvcih0PTA7cj50O3QrKylpZihiLmNvbnRhaW5zKHRoaXMs
blt0XSkpcmV0dXJuITB9KX0sbm90OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlz
LnB1c2hTdGFjayhmdCh0aGlzLGUsITEpKX0sZmlsdGVyOmZ1bmN0aW9uKGUp
e3JldHVybiB0aGlzLnB1c2hTdGFjayhmdCh0aGlzLGUsITApKX0saXM6ZnVu
Y3Rpb24oZSl7cmV0dXJuISFlJiYoInN0cmluZyI9PXR5cGVvZiBlP2x0LnRl
c3QoZSk/YihlLHRoaXMuY29udGV4dCkuaW5kZXgodGhpc1swXSk+PTA6Yi5m
aWx0ZXIoZSx0aGlzKS5sZW5ndGg+MDp0aGlzLmZpbHRlcihlKS5sZW5ndGg+
MCl9LGNsb3Nlc3Q6ZnVuY3Rpb24oZSx0KXt2YXIgbixyPTAsaT10aGlzLmxl
bmd0aCxvPVtdLGE9bHQudGVzdChlKXx8InN0cmluZyIhPXR5cGVvZiBlP2Io
ZSx0fHx0aGlzLmNvbnRleHQpOjA7Zm9yKDtpPnI7cisrKXtuPXRoaXNbcl07
d2hpbGUobiYmbi5vd25lckRvY3VtZW50JiZuIT09dCYmMTEhPT1uLm5vZGVU
eXBlKXtpZihhP2EuaW5kZXgobik+LTE6Yi5maW5kLm1hdGNoZXNTZWxlY3Rv
cihuLGUpKXtvLnB1c2gobik7YnJlYWt9bj1uLnBhcmVudE5vZGV9fXJldHVy
biB0aGlzLnB1c2hTdGFjayhvLmxlbmd0aD4xP2IudW5pcXVlKG8pOm8pfSxp
bmRleDpmdW5jdGlvbihlKXtyZXR1cm4gZT8ic3RyaW5nIj09dHlwZW9mIGU/
Yi5pbkFycmF5KHRoaXNbMF0sYihlKSk6Yi5pbkFycmF5KGUuanF1ZXJ5P2Vb
MF06ZSx0aGlzKTp0aGlzWzBdJiZ0aGlzWzBdLnBhcmVudE5vZGU/dGhpcy5m
aXJzdCgpLnByZXZBbGwoKS5sZW5ndGg6LTF9LGFkZDpmdW5jdGlvbihlLHQp
e3ZhciBuPSJzdHJpbmciPT10eXBlb2YgZT9iKGUsdCk6Yi5tYWtlQXJyYXko
ZSYmZS5ub2RlVHlwZT9bZV06ZSkscj1iLm1lcmdlKHRoaXMuZ2V0KCksbik7
cmV0dXJuIHRoaXMucHVzaFN0YWNrKGIudW5pcXVlKHIpKX0sYWRkQmFjazpm
dW5jdGlvbihlKXtyZXR1cm4gdGhpcy5hZGQobnVsbD09ZT90aGlzLnByZXZP
YmplY3Q6dGhpcy5wcmV2T2JqZWN0LmZpbHRlcihlKSl9fSksYi5mbi5hbmRT
ZWxmPWIuZm4uYWRkQmFjaztmdW5jdGlvbiBwdChlLHQpe2RvIGU9ZVt0XTt3
aGlsZShlJiYxIT09ZS5ub2RlVHlwZSk7cmV0dXJuIGV9Yi5lYWNoKHtwYXJl
bnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wYXJlbnROb2RlO3JldHVybiB0JiYx
MSE9PXQubm9kZVR5cGU/dDpudWxsfSxwYXJlbnRzOmZ1bmN0aW9uKGUpe3Jl
dHVybiBiLmRpcihlLCJwYXJlbnROb2RlIil9LHBhcmVudHNVbnRpbDpmdW5j
dGlvbihlLHQsbil7cmV0dXJuIGIuZGlyKGUsInBhcmVudE5vZGUiLG4pfSxu
ZXh0OmZ1bmN0aW9uKGUpe3JldHVybiBwdChlLCJuZXh0U2libGluZyIpfSxw
cmV2OmZ1bmN0aW9uKGUpe3JldHVybiBwdChlLCJwcmV2aW91c1NpYmxpbmci
KX0sbmV4dEFsbDpmdW5jdGlvbihlKXtyZXR1cm4gYi5kaXIoZSwibmV4dFNp
YmxpbmciKX0scHJldkFsbDpmdW5jdGlvbihlKXtyZXR1cm4gYi5kaXIoZSwi
cHJldmlvdXNTaWJsaW5nIil9LG5leHRVbnRpbDpmdW5jdGlvbihlLHQsbil7
cmV0dXJuIGIuZGlyKGUsIm5leHRTaWJsaW5nIixuKX0scHJldlVudGlsOmZ1
bmN0aW9uKGUsdCxuKXtyZXR1cm4gYi5kaXIoZSwicHJldmlvdXNTaWJsaW5n
IixuKX0sc2libGluZ3M6ZnVuY3Rpb24oZSl7cmV0dXJuIGIuc2libGluZygo
ZS5wYXJlbnROb2RlfHx7fSkuZmlyc3RDaGlsZCxlKX0sY2hpbGRyZW46ZnVu
Y3Rpb24oZSl7cmV0dXJuIGIuc2libGluZyhlLmZpcnN0Q2hpbGQpfSxjb250
ZW50czpmdW5jdGlvbihlKXtyZXR1cm4gYi5ub2RlTmFtZShlLCJpZnJhbWUi
KT9lLmNvbnRlbnREb2N1bWVudHx8ZS5jb250ZW50V2luZG93LmRvY3VtZW50
OmIubWVyZ2UoW10sZS5jaGlsZE5vZGVzKX19LGZ1bmN0aW9uKGUsdCl7Yi5m
bltlXT1mdW5jdGlvbihuLHIpe3ZhciBpPWIubWFwKHRoaXMsdCxuKTtyZXR1
cm4gYXQudGVzdChlKXx8KHI9biksciYmInN0cmluZyI9PXR5cGVvZiByJiYo
aT1iLmZpbHRlcihyLGkpKSxpPXRoaXMubGVuZ3RoPjEmJiFjdFtlXT9iLnVu
aXF1ZShpKTppLHRoaXMubGVuZ3RoPjEmJnN0LnRlc3QoZSkmJihpPWkucmV2
ZXJzZSgpKSx0aGlzLnB1c2hTdGFjayhpKX19KSxiLmV4dGVuZCh7ZmlsdGVy
OmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbiYmKGU9Ijpub3QoIitlKyIpIiks
MT09PXQubGVuZ3RoP2IuZmluZC5tYXRjaGVzU2VsZWN0b3IodFswXSxlKT9b
dFswXV06W106Yi5maW5kLm1hdGNoZXMoZSx0KX0sZGlyOmZ1bmN0aW9uKGUs
bixyKXt2YXIgaT1bXSxvPWVbbl07d2hpbGUobyYmOSE9PW8ubm9kZVR5cGUm
JihyPT09dHx8MSE9PW8ubm9kZVR5cGV8fCFiKG8pLmlzKHIpKSkxPT09by5u
b2RlVHlwZSYmaS5wdXNoKG8pLG89b1tuXTtyZXR1cm4gaX0sc2libGluZzpm
dW5jdGlvbihlLHQpe3ZhciBuPVtdO2Zvcig7ZTtlPWUubmV4dFNpYmxpbmcp
MT09PWUubm9kZVR5cGUmJmUhPT10JiZuLnB1c2goZSk7cmV0dXJuIG59fSk7
ZnVuY3Rpb24gZnQoZSx0LG4pe2lmKHQ9dHx8MCxiLmlzRnVuY3Rpb24odCkp
cmV0dXJuIGIuZ3JlcChlLGZ1bmN0aW9uKGUscil7dmFyIGk9ISF0LmNhbGwo
ZSxyLGUpO3JldHVybiBpPT09bn0pO2lmKHQubm9kZVR5cGUpcmV0dXJuIGIu
Z3JlcChlLGZ1bmN0aW9uKGUpe3JldHVybiBlPT09dD09PW59KTtpZigic3Ry
aW5nIj09dHlwZW9mIHQpe3ZhciByPWIuZ3JlcChlLGZ1bmN0aW9uKGUpe3Jl
dHVybiAxPT09ZS5ub2RlVHlwZX0pO2lmKHV0LnRlc3QodCkpcmV0dXJuIGIu
ZmlsdGVyKHQsciwhbik7dD1iLmZpbHRlcih0LHIpfXJldHVybiBiLmdyZXAo
ZSxmdW5jdGlvbihlKXtyZXR1cm4gYi5pbkFycmF5KGUsdCk+PTA9PT1ufSl9
ZnVuY3Rpb24gZHQoZSl7dmFyIHQ9aHQuc3BsaXQoInwiKSxuPWUuY3JlYXRl
RG9jdW1lbnRGcmFnbWVudCgpO2lmKG4uY3JlYXRlRWxlbWVudCl3aGlsZSh0
Lmxlbmd0aCluLmNyZWF0ZUVsZW1lbnQodC5wb3AoKSk7cmV0dXJuIG59dmFy
IGh0PSJhYmJyfGFydGljbGV8YXNpZGV8YXVkaW98YmRpfGNhbnZhc3xkYXRh
fGRhdGFsaXN0fGRldGFpbHN8ZmlnY2FwdGlvbnxmaWd1cmV8Zm9vdGVyfGhl
YWRlcnxoZ3JvdXB8bWFya3xtZXRlcnxuYXZ8b3V0cHV0fHByb2dyZXNzfHNl
Y3Rpb258c3VtbWFyeXx0aW1lfHZpZGVvIixndD0vIGpRdWVyeVxkKz0iKD86
bnVsbHxcZCspIi9nLG10PVJlZ0V4cCgiPCg/OiIraHQrIilbXFxzLz5dIiwi
aSIpLHl0PS9eXHMrLyx2dD0vPCg/IWFyZWF8YnJ8Y29sfGVtYmVkfGhyfGlt
Z3xpbnB1dHxsaW5rfG1ldGF8cGFyYW0pKChbXHc6XSspW14+XSopXC8+L2dp
LGJ0PS88KFtcdzpdKykvLHh0PS88dGJvZHkvaSx3dD0vPHwmIz9cdys7LyxU
dD0vPCg/OnNjcmlwdHxzdHlsZXxsaW5rKS9pLE50PS9eKD86Y2hlY2tib3h8
cmFkaW8pJC9pLEN0PS9jaGVja2VkXHMqKD86W149XXw9XHMqLmNoZWNrZWQu
KS9pLGt0PS9eJHxcLyg/OmphdmF8ZWNtYSlzY3JpcHQvaSxFdD0vXnRydWVc
LyguKikvLFN0PS9eXHMqPCEoPzpcW0NEQVRBXFt8LS0pfCg/OlxdXF18LS0p
PlxzKiQvZyxBdD17b3B0aW9uOlsxLCI8c2VsZWN0IG11bHRpcGxlPSdtdWx0
aXBsZSc+IiwiPC9zZWxlY3Q+Il0sbGVnZW5kOlsxLCI8ZmllbGRzZXQ+Iiwi
PC9maWVsZHNldD4iXSxhcmVhOlsxLCI8bWFwPiIsIjwvbWFwPiJdLHBhcmFt
OlsxLCI8b2JqZWN0PiIsIjwvb2JqZWN0PiJdLHRoZWFkOlsxLCI8dGFibGU+
IiwiPC90YWJsZT4iXSx0cjpbMiwiPHRhYmxlPjx0Ym9keT4iLCI8L3Rib2R5
PjwvdGFibGU+Il0sY29sOlsyLCI8dGFibGU+PHRib2R5PjwvdGJvZHk+PGNv
bGdyb3VwPiIsIjwvY29sZ3JvdXA+PC90YWJsZT4iXSx0ZDpbMywiPHRhYmxl
Pjx0Ym9keT48dHI+IiwiPC90cj48L3Rib2R5PjwvdGFibGU+Il0sX2RlZmF1
bHQ6Yi5zdXBwb3J0Lmh0bWxTZXJpYWxpemU/WzAsIiIsIiJdOlsxLCJYPGRp
dj4iLCI8L2Rpdj4iXX0sanQ9ZHQobyksRHQ9anQuYXBwZW5kQ2hpbGQoby5j
cmVhdGVFbGVtZW50KCJkaXYiKSk7QXQub3B0Z3JvdXA9QXQub3B0aW9uLEF0
LnRib2R5PUF0LnRmb290PUF0LmNvbGdyb3VwPUF0LmNhcHRpb249QXQudGhl
YWQsQXQudGg9QXQudGQsYi5mbi5leHRlbmQoe3RleHQ6ZnVuY3Rpb24oZSl7
cmV0dXJuIGIuYWNjZXNzKHRoaXMsZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT10
P2IudGV4dCh0aGlzKTp0aGlzLmVtcHR5KCkuYXBwZW5kKCh0aGlzWzBdJiZ0
aGlzWzBdLm93bmVyRG9jdW1lbnR8fG8pLmNyZWF0ZVRleHROb2RlKGUpKX0s
bnVsbCxlLGFyZ3VtZW50cy5sZW5ndGgpfSx3cmFwQWxsOmZ1bmN0aW9uKGUp
e2lmKGIuaXNGdW5jdGlvbihlKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9u
KHQpe2IodGhpcykud3JhcEFsbChlLmNhbGwodGhpcyx0KSl9KTtpZih0aGlz
WzBdKXt2YXIgdD1iKGUsdGhpc1swXS5vd25lckRvY3VtZW50KS5lcSgwKS5j
bG9uZSghMCk7dGhpc1swXS5wYXJlbnROb2RlJiZ0Lmluc2VydEJlZm9yZSh0
aGlzWzBdKSx0Lm1hcChmdW5jdGlvbigpe3ZhciBlPXRoaXM7d2hpbGUoZS5m
aXJzdENoaWxkJiYxPT09ZS5maXJzdENoaWxkLm5vZGVUeXBlKWU9ZS5maXJz
dENoaWxkO3JldHVybiBlfSkuYXBwZW5kKHRoaXMpfXJldHVybiB0aGlzfSx3
cmFwSW5uZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGIuaXNGdW5jdGlvbihlKT90
aGlzLmVhY2goZnVuY3Rpb24odCl7Yih0aGlzKS53cmFwSW5uZXIoZS5jYWxs
KHRoaXMsdCkpfSk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIHQ9Yih0aGlz
KSxuPXQuY29udGVudHMoKTtuLmxlbmd0aD9uLndyYXBBbGwoZSk6dC5hcHBl
bmQoZSl9KX0sd3JhcDpmdW5jdGlvbihlKXt2YXIgdD1iLmlzRnVuY3Rpb24o
ZSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihuKXtiKHRoaXMpLndyYXBB
bGwodD9lLmNhbGwodGhpcyxuKTplKX0pfSx1bndyYXA6ZnVuY3Rpb24oKXty
ZXR1cm4gdGhpcy5wYXJlbnQoKS5lYWNoKGZ1bmN0aW9uKCl7Yi5ub2RlTmFt
ZSh0aGlzLCJib2R5Iil8fGIodGhpcykucmVwbGFjZVdpdGgodGhpcy5jaGls
ZE5vZGVzKX0pLmVuZCgpfSxhcHBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhp
cy5kb21NYW5pcChhcmd1bWVudHMsITAsZnVuY3Rpb24oZSl7KDE9PT10aGlz
Lm5vZGVUeXBlfHwxMT09PXRoaXMubm9kZVR5cGV8fDk9PT10aGlzLm5vZGVU
eXBlKSYmdGhpcy5hcHBlbmRDaGlsZChlKX0pfSxwcmVwZW5kOmZ1bmN0aW9u
KCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCEwLGZ1bmN0aW9u
KGUpeygxPT09dGhpcy5ub2RlVHlwZXx8MTE9PT10aGlzLm5vZGVUeXBlfHw5
PT09dGhpcy5ub2RlVHlwZSkmJnRoaXMuaW5zZXJ0QmVmb3JlKGUsdGhpcy5m
aXJzdENoaWxkKX0pfSxiZWZvcmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5k
b21NYW5pcChhcmd1bWVudHMsITEsZnVuY3Rpb24oZSl7dGhpcy5wYXJlbnRO
b2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGUsdGhpcyl9KX0s
YWZ0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVu
dHMsITEsZnVuY3Rpb24oZSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVu
dE5vZGUuaW5zZXJ0QmVmb3JlKGUsdGhpcy5uZXh0U2libGluZyl9KX0scmVt
b3ZlOmZ1bmN0aW9uKGUsdCl7dmFyIG4scj0wO2Zvcig7bnVsbCE9KG49dGhp
c1tyXSk7cisrKSghZXx8Yi5maWx0ZXIoZSxbbl0pLmxlbmd0aD4wKSYmKHR8
fDEhPT1uLm5vZGVUeXBlfHxiLmNsZWFuRGF0YShPdChuKSksbi5wYXJlbnRO
b2RlJiYodCYmYi5jb250YWlucyhuLm93bmVyRG9jdW1lbnQsbikmJk10KE90
KG4sInNjcmlwdCIpKSxuLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobikpKTty
ZXR1cm4gdGhpc30sZW1wdHk6ZnVuY3Rpb24oKXt2YXIgZSx0PTA7Zm9yKDtu
dWxsIT0oZT10aGlzW3RdKTt0KyspezE9PT1lLm5vZGVUeXBlJiZiLmNsZWFu
RGF0YShPdChlLCExKSk7d2hpbGUoZS5maXJzdENoaWxkKWUucmVtb3ZlQ2hp
bGQoZS5maXJzdENoaWxkKTtlLm9wdGlvbnMmJmIubm9kZU5hbWUoZSwic2Vs
ZWN0IikmJihlLm9wdGlvbnMubGVuZ3RoPTApfXJldHVybiB0aGlzfSxjbG9u
ZTpmdW5jdGlvbihlLHQpe3JldHVybiBlPW51bGw9PWU/ITE6ZSx0PW51bGw9
PXQ/ZTp0LHRoaXMubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIGIuY2xvbmUodGhp
cyxlLHQpfSl9LGh0bWw6ZnVuY3Rpb24oZSl7cmV0dXJuIGIuYWNjZXNzKHRo
aXMsZnVuY3Rpb24oZSl7dmFyIG49dGhpc1swXXx8e30scj0wLGk9dGhpcy5s
ZW5ndGg7aWYoZT09PXQpcmV0dXJuIDE9PT1uLm5vZGVUeXBlP24uaW5uZXJI
VE1MLnJlcGxhY2UoZ3QsIiIpOnQ7aWYoISgic3RyaW5nIiE9dHlwZW9mIGV8
fFR0LnRlc3QoZSl8fCFiLnN1cHBvcnQuaHRtbFNlcmlhbGl6ZSYmbXQudGVz
dChlKXx8IWIuc3VwcG9ydC5sZWFkaW5nV2hpdGVzcGFjZSYmeXQudGVzdChl
KXx8QXRbKGJ0LmV4ZWMoZSl8fFsiIiwiIl0pWzFdLnRvTG93ZXJDYXNlKCld
KSl7ZT1lLnJlcGxhY2UodnQsIjwkMT48LyQyPiIpO3RyeXtmb3IoO2k+cjty
Kyspbj10aGlzW3JdfHx7fSwxPT09bi5ub2RlVHlwZSYmKGIuY2xlYW5EYXRh
KE90KG4sITEpKSxuLmlubmVySFRNTD1lKTtuPTB9Y2F0Y2gobyl7fX1uJiZ0
aGlzLmVtcHR5KCkuYXBwZW5kKGUpfSxudWxsLGUsYXJndW1lbnRzLmxlbmd0
aCl9LHJlcGxhY2VXaXRoOmZ1bmN0aW9uKGUpe3ZhciB0PWIuaXNGdW5jdGlv
bihlKTtyZXR1cm4gdHx8InN0cmluZyI9PXR5cGVvZiBlfHwoZT1iKGUpLm5v
dCh0aGlzKS5kZXRhY2goKSksdGhpcy5kb21NYW5pcChbZV0sITAsZnVuY3Rp
b24oZSl7dmFyIHQ9dGhpcy5uZXh0U2libGluZyxuPXRoaXMucGFyZW50Tm9k
ZTtuJiYoYih0aGlzKS5yZW1vdmUoKSxuLmluc2VydEJlZm9yZShlLHQpKX0p
fSxkZXRhY2g6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucmVtb3ZlKGUsITAp
fSxkb21NYW5pcDpmdW5jdGlvbihlLG4scil7ZT1mLmFwcGx5KFtdLGUpO3Zh
ciBpLG8sYSxzLHUsbCxjPTAscD10aGlzLmxlbmd0aCxkPXRoaXMsaD1wLTEs
Zz1lWzBdLG09Yi5pc0Z1bmN0aW9uKGcpO2lmKG18fCEoMT49cHx8InN0cmlu
ZyIhPXR5cGVvZiBnfHxiLnN1cHBvcnQuY2hlY2tDbG9uZSkmJkN0LnRlc3Qo
ZykpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihpKXt2YXIgbz1kLmVxKGkp
O20mJihlWzBdPWcuY2FsbCh0aGlzLGksbj9vLmh0bWwoKTp0KSksby5kb21N
YW5pcChlLG4scil9KTtpZihwJiYobD1iLmJ1aWxkRnJhZ21lbnQoZSx0aGlz
WzBdLm93bmVyRG9jdW1lbnQsITEsdGhpcyksaT1sLmZpcnN0Q2hpbGQsMT09
PWwuY2hpbGROb2Rlcy5sZW5ndGgmJihsPWkpLGkpKXtmb3Iobj1uJiZiLm5v
ZGVOYW1lKGksInRyIikscz1iLm1hcChPdChsLCJzY3JpcHQiKSxIdCksYT1z
Lmxlbmd0aDtwPmM7YysrKW89bCxjIT09aCYmKG89Yi5jbG9uZShvLCEwLCEw
KSxhJiZiLm1lcmdlKHMsT3Qobywic2NyaXB0IikpKSxyLmNhbGwobiYmYi5u
b2RlTmFtZSh0aGlzW2NdLCJ0YWJsZSIpP0x0KHRoaXNbY10sInRib2R5Iik6
dGhpc1tjXSxvLGMpO2lmKGEpZm9yKHU9c1tzLmxlbmd0aC0xXS5vd25lckRv
Y3VtZW50LGIubWFwKHMscXQpLGM9MDthPmM7YysrKW89c1tjXSxrdC50ZXN0
KG8udHlwZXx8IiIpJiYhYi5fZGF0YShvLCJnbG9iYWxFdmFsIikmJmIuY29u
dGFpbnModSxvKSYmKG8uc3JjP2IuYWpheCh7dXJsOm8uc3JjLHR5cGU6IkdF
VCIsZGF0YVR5cGU6InNjcmlwdCIsYXN5bmM6ITEsZ2xvYmFsOiExLCJ0aHJv
d3MiOiEwfSk6Yi5nbG9iYWxFdmFsKChvLnRleHR8fG8udGV4dENvbnRlbnR8
fG8uaW5uZXJIVE1MfHwiIikucmVwbGFjZShTdCwiIikpKTtsPWk9bnVsbH1y
ZXR1cm4gdGhpc319KTtmdW5jdGlvbiBMdChlLHQpe3JldHVybiBlLmdldEVs
ZW1lbnRzQnlUYWdOYW1lKHQpWzBdfHxlLmFwcGVuZENoaWxkKGUub3duZXJE
b2N1bWVudC5jcmVhdGVFbGVtZW50KHQpKX1mdW5jdGlvbiBIdChlKXt2YXIg
dD1lLmdldEF0dHJpYnV0ZU5vZGUoInR5cGUiKTtyZXR1cm4gZS50eXBlPSh0
JiZ0LnNwZWNpZmllZCkrIi8iK2UudHlwZSxlfWZ1bmN0aW9uIHF0KGUpe3Zh
ciB0PUV0LmV4ZWMoZS50eXBlKTtyZXR1cm4gdD9lLnR5cGU9dFsxXTplLnJl
bW92ZUF0dHJpYnV0ZSgidHlwZSIpLGV9ZnVuY3Rpb24gTXQoZSx0KXt2YXIg
bixyPTA7Zm9yKDtudWxsIT0obj1lW3JdKTtyKyspYi5fZGF0YShuLCJnbG9i
YWxFdmFsIiwhdHx8Yi5fZGF0YSh0W3JdLCJnbG9iYWxFdmFsIikpfWZ1bmN0
aW9uIF90KGUsdCl7aWYoMT09PXQubm9kZVR5cGUmJmIuaGFzRGF0YShlKSl7
dmFyIG4scixpLG89Yi5fZGF0YShlKSxhPWIuX2RhdGEodCxvKSxzPW8uZXZl
bnRzO2lmKHMpe2RlbGV0ZSBhLmhhbmRsZSxhLmV2ZW50cz17fTtmb3IobiBp
biBzKWZvcihyPTAsaT1zW25dLmxlbmd0aDtpPnI7cisrKWIuZXZlbnQuYWRk
KHQsbixzW25dW3JdKX1hLmRhdGEmJihhLmRhdGE9Yi5leHRlbmQoe30sYS5k
YXRhKSl9fWZ1bmN0aW9uIEZ0KGUsdCl7dmFyIG4scixpO2lmKDE9PT10Lm5v
ZGVUeXBlKXtpZihuPXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSwhYi5zdXBw
b3J0Lm5vQ2xvbmVFdmVudCYmdFtiLmV4cGFuZG9dKXtpPWIuX2RhdGEodCk7
Zm9yKHIgaW4gaS5ldmVudHMpYi5yZW1vdmVFdmVudCh0LHIsaS5oYW5kbGUp
O3QucmVtb3ZlQXR0cmlidXRlKGIuZXhwYW5kbyl9InNjcmlwdCI9PT1uJiZ0
LnRleHQhPT1lLnRleHQ/KEh0KHQpLnRleHQ9ZS50ZXh0LHF0KHQpKToib2Jq
ZWN0Ij09PW4/KHQucGFyZW50Tm9kZSYmKHQub3V0ZXJIVE1MPWUub3V0ZXJI
VE1MKSxiLnN1cHBvcnQuaHRtbDVDbG9uZSYmZS5pbm5lckhUTUwmJiFiLnRy
aW0odC5pbm5lckhUTUwpJiYodC5pbm5lckhUTUw9ZS5pbm5lckhUTUwpKToi
aW5wdXQiPT09biYmTnQudGVzdChlLnR5cGUpPyh0LmRlZmF1bHRDaGVja2Vk
PXQuY2hlY2tlZD1lLmNoZWNrZWQsdC52YWx1ZSE9PWUudmFsdWUmJih0LnZh
bHVlPWUudmFsdWUpKToib3B0aW9uIj09PW4/dC5kZWZhdWx0U2VsZWN0ZWQ9
dC5zZWxlY3RlZD1lLmRlZmF1bHRTZWxlY3RlZDooImlucHV0Ij09PW58fCJ0
ZXh0YXJlYSI9PT1uKSYmKHQuZGVmYXVsdFZhbHVlPWUuZGVmYXVsdFZhbHVl
KX19Yi5lYWNoKHthcHBlbmRUbzoiYXBwZW5kIixwcmVwZW5kVG86InByZXBl
bmQiLGluc2VydEJlZm9yZToiYmVmb3JlIixpbnNlcnRBZnRlcjoiYWZ0ZXIi
LHJlcGxhY2VBbGw6InJlcGxhY2VXaXRoIn0sZnVuY3Rpb24oZSx0KXtiLmZu
W2VdPWZ1bmN0aW9uKGUpe3ZhciBuLHI9MCxpPVtdLG89YihlKSxhPW8ubGVu
Z3RoLTE7Zm9yKDthPj1yO3IrKyluPXI9PT1hP3RoaXM6dGhpcy5jbG9uZSgh
MCksYihvW3JdKVt0XShuKSxkLmFwcGx5KGksbi5nZXQoKSk7cmV0dXJuIHRo
aXMucHVzaFN0YWNrKGkpfX0pO2Z1bmN0aW9uIE90KGUsbil7dmFyIHIsbyxh
PTAscz10eXBlb2YgZS5nZXRFbGVtZW50c0J5VGFnTmFtZSE9PWk/ZS5nZXRF
bGVtZW50c0J5VGFnTmFtZShufHwiKiIpOnR5cGVvZiBlLnF1ZXJ5U2VsZWN0
b3JBbGwhPT1pP2UucXVlcnlTZWxlY3RvckFsbChufHwiKiIpOnQ7aWYoIXMp
Zm9yKHM9W10scj1lLmNoaWxkTm9kZXN8fGU7bnVsbCE9KG89clthXSk7YSsr
KSFufHxiLm5vZGVOYW1lKG8sbik/cy5wdXNoKG8pOmIubWVyZ2UocyxPdChv
LG4pKTtyZXR1cm4gbj09PXR8fG4mJmIubm9kZU5hbWUoZSxuKT9iLm1lcmdl
KFtlXSxzKTpzfWZ1bmN0aW9uIEJ0KGUpe050LnRlc3QoZS50eXBlKSYmKGUu
ZGVmYXVsdENoZWNrZWQ9ZS5jaGVja2VkKX1iLmV4dGVuZCh7Y2xvbmU6ZnVu
Y3Rpb24oZSx0LG4pe3ZhciByLGksbyxhLHMsdT1iLmNvbnRhaW5zKGUub3du
ZXJEb2N1bWVudCxlKTtpZihiLnN1cHBvcnQuaHRtbDVDbG9uZXx8Yi5pc1hN
TERvYyhlKXx8IW10LnRlc3QoIjwiK2Uubm9kZU5hbWUrIj4iKT9vPWUuY2xv
bmVOb2RlKCEwKTooRHQuaW5uZXJIVE1MPWUub3V0ZXJIVE1MLER0LnJlbW92
ZUNoaWxkKG89RHQuZmlyc3RDaGlsZCkpLCEoYi5zdXBwb3J0Lm5vQ2xvbmVF
dmVudCYmYi5zdXBwb3J0Lm5vQ2xvbmVDaGVja2VkfHwxIT09ZS5ub2RlVHlw
ZSYmMTEhPT1lLm5vZGVUeXBlfHxiLmlzWE1MRG9jKGUpKSlmb3Iocj1PdChv
KSxzPU90KGUpLGE9MDtudWxsIT0oaT1zW2FdKTsrK2EpclthXSYmRnQoaSxy
W2FdKTtpZih0KWlmKG4pZm9yKHM9c3x8T3QoZSkscj1yfHxPdChvKSxhPTA7
bnVsbCE9KGk9c1thXSk7YSsrKV90KGksclthXSk7ZWxzZSBfdChlLG8pO3Jl
dHVybiByPU90KG8sInNjcmlwdCIpLHIubGVuZ3RoPjAmJk10KHIsIXUmJk90
KGUsInNjcmlwdCIpKSxyPXM9aT1udWxsLG99LGJ1aWxkRnJhZ21lbnQ6ZnVu
Y3Rpb24oZSx0LG4scil7dmFyIGksbyxhLHMsdSxsLGMscD1lLmxlbmd0aCxm
PWR0KHQpLGQ9W10saD0wO2Zvcig7cD5oO2grKylpZihvPWVbaF0sb3x8MD09
PW8paWYoIm9iamVjdCI9PT1iLnR5cGUobykpYi5tZXJnZShkLG8ubm9kZVR5
cGU/W29dOm8pO2Vsc2UgaWYod3QudGVzdChvKSl7cz1zfHxmLmFwcGVuZENo
aWxkKHQuY3JlYXRlRWxlbWVudCgiZGl2IikpLHU9KGJ0LmV4ZWMobyl8fFsi
IiwiIl0pWzFdLnRvTG93ZXJDYXNlKCksYz1BdFt1XXx8QXQuX2RlZmF1bHQs
cy5pbm5lckhUTUw9Y1sxXStvLnJlcGxhY2UodnQsIjwkMT48LyQyPiIpK2Nb
Ml0saT1jWzBdO3doaWxlKGktLSlzPXMubGFzdENoaWxkO2lmKCFiLnN1cHBv
cnQubGVhZGluZ1doaXRlc3BhY2UmJnl0LnRlc3QobykmJmQucHVzaCh0LmNy
ZWF0ZVRleHROb2RlKHl0LmV4ZWMobylbMF0pKSwhYi5zdXBwb3J0LnRib2R5
KXtvPSJ0YWJsZSIhPT11fHx4dC50ZXN0KG8pPyI8dGFibGU+IiE9PWNbMV18
fHh0LnRlc3Qobyk/MDpzOnMuZmlyc3RDaGlsZCxpPW8mJm8uY2hpbGROb2Rl
cy5sZW5ndGg7d2hpbGUoaS0tKWIubm9kZU5hbWUobD1vLmNoaWxkTm9kZXNb
aV0sInRib2R5IikmJiFsLmNoaWxkTm9kZXMubGVuZ3RoJiZvLnJlbW92ZUNo
aWxkKGwpCn1iLm1lcmdlKGQscy5jaGlsZE5vZGVzKSxzLnRleHRDb250ZW50
PSIiO3doaWxlKHMuZmlyc3RDaGlsZClzLnJlbW92ZUNoaWxkKHMuZmlyc3RD
aGlsZCk7cz1mLmxhc3RDaGlsZH1lbHNlIGQucHVzaCh0LmNyZWF0ZVRleHRO
b2RlKG8pKTtzJiZmLnJlbW92ZUNoaWxkKHMpLGIuc3VwcG9ydC5hcHBlbmRD
aGVja2VkfHxiLmdyZXAoT3QoZCwiaW5wdXQiKSxCdCksaD0wO3doaWxlKG89
ZFtoKytdKWlmKCghcnx8LTE9PT1iLmluQXJyYXkobyxyKSkmJihhPWIuY29u
dGFpbnMoby5vd25lckRvY3VtZW50LG8pLHM9T3QoZi5hcHBlbmRDaGlsZChv
KSwic2NyaXB0IiksYSYmTXQocyksbikpe2k9MDt3aGlsZShvPXNbaSsrXSlr
dC50ZXN0KG8udHlwZXx8IiIpJiZuLnB1c2gobyl9cmV0dXJuIHM9bnVsbCxm
fSxjbGVhbkRhdGE6ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG8sYSxzPTAsdT1i
LmV4cGFuZG8sbD1iLmNhY2hlLHA9Yi5zdXBwb3J0LmRlbGV0ZUV4cGFuZG8s
Zj1iLmV2ZW50LnNwZWNpYWw7Zm9yKDtudWxsIT0obj1lW3NdKTtzKyspaWYo
KHR8fGIuYWNjZXB0RGF0YShuKSkmJihvPW5bdV0sYT1vJiZsW29dKSl7aWYo
YS5ldmVudHMpZm9yKHIgaW4gYS5ldmVudHMpZltyXT9iLmV2ZW50LnJlbW92
ZShuLHIpOmIucmVtb3ZlRXZlbnQobixyLGEuaGFuZGxlKTtsW29dJiYoZGVs
ZXRlIGxbb10scD9kZWxldGUgblt1XTp0eXBlb2Ygbi5yZW1vdmVBdHRyaWJ1
dGUhPT1pP24ucmVtb3ZlQXR0cmlidXRlKHUpOm5bdV09bnVsbCxjLnB1c2go
bykpfX19KTt2YXIgUHQsUnQsV3QsJHQ9L2FscGhhXChbXildKlwpL2ksSXQ9
L29wYWNpdHlccyo9XHMqKFteKV0qKS8senQ9L14odG9wfHJpZ2h0fGJvdHRv
bXxsZWZ0KSQvLFh0PS9eKG5vbmV8dGFibGUoPyEtY1tlYV0pLispLyxVdD0v
Xm1hcmdpbi8sVnQ9UmVnRXhwKCJeKCIreCsiKSguKikkIiwiaSIpLFl0PVJl
Z0V4cCgiXigiK3grIikoPyFweClbYS16JV0rJCIsImkiKSxKdD1SZWdFeHAo
Il4oWystXSk9KCIreCsiKSIsImkiKSxHdD17Qk9EWToiYmxvY2sifSxRdD17
cG9zaXRpb246ImFic29sdXRlIix2aXNpYmlsaXR5OiJoaWRkZW4iLGRpc3Bs
YXk6ImJsb2NrIn0sS3Q9e2xldHRlclNwYWNpbmc6MCxmb250V2VpZ2h0OjQw
MH0sWnQ9WyJUb3AiLCJSaWdodCIsIkJvdHRvbSIsIkxlZnQiXSxlbj1bIldl
YmtpdCIsIk8iLCJNb3oiLCJtcyJdO2Z1bmN0aW9uIHRuKGUsdCl7aWYodCBp
biBlKXJldHVybiB0O3ZhciBuPXQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkr
dC5zbGljZSgxKSxyPXQsaT1lbi5sZW5ndGg7d2hpbGUoaS0tKWlmKHQ9ZW5b
aV0rbix0IGluIGUpcmV0dXJuIHQ7cmV0dXJuIHJ9ZnVuY3Rpb24gbm4oZSx0
KXtyZXR1cm4gZT10fHxlLCJub25lIj09PWIuY3NzKGUsImRpc3BsYXkiKXx8
IWIuY29udGFpbnMoZS5vd25lckRvY3VtZW50LGUpfWZ1bmN0aW9uIHJuKGUs
dCl7dmFyIG4scixpLG89W10sYT0wLHM9ZS5sZW5ndGg7Zm9yKDtzPmE7YSsr
KXI9ZVthXSxyLnN0eWxlJiYob1thXT1iLl9kYXRhKHIsIm9sZGRpc3BsYXki
KSxuPXIuc3R5bGUuZGlzcGxheSx0PyhvW2FdfHwibm9uZSIhPT1ufHwoci5z
dHlsZS5kaXNwbGF5PSIiKSwiIj09PXIuc3R5bGUuZGlzcGxheSYmbm4ocikm
JihvW2FdPWIuX2RhdGEociwib2xkZGlzcGxheSIsdW4oci5ub2RlTmFtZSkp
KSk6b1thXXx8KGk9bm4ociksKG4mJiJub25lIiE9PW58fCFpKSYmYi5fZGF0
YShyLCJvbGRkaXNwbGF5IixpP246Yi5jc3MociwiZGlzcGxheSIpKSkpO2Zv
cihhPTA7cz5hO2ErKylyPWVbYV0sci5zdHlsZSYmKHQmJiJub25lIiE9PXIu
c3R5bGUuZGlzcGxheSYmIiIhPT1yLnN0eWxlLmRpc3BsYXl8fChyLnN0eWxl
LmRpc3BsYXk9dD9vW2FdfHwiIjoibm9uZSIpKTtyZXR1cm4gZX1iLmZuLmV4
dGVuZCh7Y3NzOmZ1bmN0aW9uKGUsbil7cmV0dXJuIGIuYWNjZXNzKHRoaXMs
ZnVuY3Rpb24oZSxuLHIpe3ZhciBpLG8sYT17fSxzPTA7aWYoYi5pc0FycmF5
KG4pKXtmb3Iobz1SdChlKSxpPW4ubGVuZ3RoO2k+cztzKyspYVtuW3NdXT1i
LmNzcyhlLG5bc10sITEsbyk7cmV0dXJuIGF9cmV0dXJuIHIhPT10P2Iuc3R5
bGUoZSxuLHIpOmIuY3NzKGUsbil9LGUsbixhcmd1bWVudHMubGVuZ3RoPjEp
fSxzaG93OmZ1bmN0aW9uKCl7cmV0dXJuIHJuKHRoaXMsITApfSxoaWRlOmZ1
bmN0aW9uKCl7cmV0dXJuIHJuKHRoaXMpfSx0b2dnbGU6ZnVuY3Rpb24oZSl7
dmFyIHQ9ImJvb2xlYW4iPT10eXBlb2YgZTtyZXR1cm4gdGhpcy5lYWNoKGZ1
bmN0aW9uKCl7KHQ/ZTpubih0aGlzKSk/Yih0aGlzKS5zaG93KCk6Yih0aGlz
KS5oaWRlKCl9KX19KSxiLmV4dGVuZCh7Y3NzSG9va3M6e29wYWNpdHk6e2dl
dDpmdW5jdGlvbihlLHQpe2lmKHQpe3ZhciBuPVd0KGUsIm9wYWNpdHkiKTty
ZXR1cm4iIj09PW4/IjEiOm59fX19LGNzc051bWJlcjp7Y29sdW1uQ291bnQ6
ITAsZmlsbE9wYWNpdHk6ITAsZm9udFdlaWdodDohMCxsaW5lSGVpZ2h0OiEw
LG9wYWNpdHk6ITAsb3JwaGFuczohMCx3aWRvd3M6ITAsekluZGV4OiEwLHpv
b206ITB9LGNzc1Byb3BzOnsiZmxvYXQiOmIuc3VwcG9ydC5jc3NGbG9hdD8i
Y3NzRmxvYXQiOiJzdHlsZUZsb2F0In0sc3R5bGU6ZnVuY3Rpb24oZSxuLHIs
aSl7aWYoZSYmMyE9PWUubm9kZVR5cGUmJjghPT1lLm5vZGVUeXBlJiZlLnN0
eWxlKXt2YXIgbyxhLHMsdT1iLmNhbWVsQ2FzZShuKSxsPWUuc3R5bGU7aWYo
bj1iLmNzc1Byb3BzW3VdfHwoYi5jc3NQcm9wc1t1XT10bihsLHUpKSxzPWIu
Y3NzSG9va3Nbbl18fGIuY3NzSG9va3NbdV0scj09PXQpcmV0dXJuIHMmJiJn
ZXQiaW4gcyYmKG89cy5nZXQoZSwhMSxpKSkhPT10P286bFtuXTtpZihhPXR5
cGVvZiByLCJzdHJpbmciPT09YSYmKG89SnQuZXhlYyhyKSkmJihyPShvWzFd
KzEpKm9bMl0rcGFyc2VGbG9hdChiLmNzcyhlLG4pKSxhPSJudW1iZXIiKSwh
KG51bGw9PXJ8fCJudW1iZXIiPT09YSYmaXNOYU4ocil8fCgibnVtYmVyIiE9
PWF8fGIuY3NzTnVtYmVyW3VdfHwocis9InB4IiksYi5zdXBwb3J0LmNsZWFy
Q2xvbmVTdHlsZXx8IiIhPT1yfHwwIT09bi5pbmRleE9mKCJiYWNrZ3JvdW5k
Iil8fChsW25dPSJpbmhlcml0IikscyYmInNldCJpbiBzJiYocj1zLnNldChl
LHIsaSkpPT09dCkpKXRyeXtsW25dPXJ9Y2F0Y2goYyl7fX19LGNzczpmdW5j
dGlvbihlLG4scixpKXt2YXIgbyxhLHMsdT1iLmNhbWVsQ2FzZShuKTtyZXR1
cm4gbj1iLmNzc1Byb3BzW3VdfHwoYi5jc3NQcm9wc1t1XT10bihlLnN0eWxl
LHUpKSxzPWIuY3NzSG9va3Nbbl18fGIuY3NzSG9va3NbdV0scyYmImdldCJp
biBzJiYoYT1zLmdldChlLCEwLHIpKSxhPT09dCYmKGE9V3QoZSxuLGkpKSwi
bm9ybWFsIj09PWEmJm4gaW4gS3QmJihhPUt0W25dKSwiIj09PXJ8fHI/KG89
cGFyc2VGbG9hdChhKSxyPT09ITB8fGIuaXNOdW1lcmljKG8pP298fDA6YSk6
YX0sc3dhcDpmdW5jdGlvbihlLHQsbixyKXt2YXIgaSxvLGE9e307Zm9yKG8g
aW4gdClhW29dPWUuc3R5bGVbb10sZS5zdHlsZVtvXT10W29dO2k9bi5hcHBs
eShlLHJ8fFtdKTtmb3IobyBpbiB0KWUuc3R5bGVbb109YVtvXTtyZXR1cm4g
aX19KSxlLmdldENvbXB1dGVkU3R5bGU/KFJ0PWZ1bmN0aW9uKHQpe3JldHVy
biBlLmdldENvbXB1dGVkU3R5bGUodCxudWxsKX0sV3Q9ZnVuY3Rpb24oZSxu
LHIpe3ZhciBpLG8sYSxzPXJ8fFJ0KGUpLHU9cz9zLmdldFByb3BlcnR5VmFs
dWUobil8fHNbbl06dCxsPWUuc3R5bGU7cmV0dXJuIHMmJigiIiE9PXV8fGIu
Y29udGFpbnMoZS5vd25lckRvY3VtZW50LGUpfHwodT1iLnN0eWxlKGUsbikp
LFl0LnRlc3QodSkmJlV0LnRlc3QobikmJihpPWwud2lkdGgsbz1sLm1pbldp
ZHRoLGE9bC5tYXhXaWR0aCxsLm1pbldpZHRoPWwubWF4V2lkdGg9bC53aWR0
aD11LHU9cy53aWR0aCxsLndpZHRoPWksbC5taW5XaWR0aD1vLGwubWF4V2lk
dGg9YSkpLHV9KTpvLmRvY3VtZW50RWxlbWVudC5jdXJyZW50U3R5bGUmJihS
dD1mdW5jdGlvbihlKXtyZXR1cm4gZS5jdXJyZW50U3R5bGV9LFd0PWZ1bmN0
aW9uKGUsbixyKXt2YXIgaSxvLGEscz1yfHxSdChlKSx1PXM/c1tuXTp0LGw9
ZS5zdHlsZTtyZXR1cm4gbnVsbD09dSYmbCYmbFtuXSYmKHU9bFtuXSksWXQu
dGVzdCh1KSYmIXp0LnRlc3QobikmJihpPWwubGVmdCxvPWUucnVudGltZVN0
eWxlLGE9byYmby5sZWZ0LGEmJihvLmxlZnQ9ZS5jdXJyZW50U3R5bGUubGVm
dCksbC5sZWZ0PSJmb250U2l6ZSI9PT1uPyIxZW0iOnUsdT1sLnBpeGVsTGVm
dCsicHgiLGwubGVmdD1pLGEmJihvLmxlZnQ9YSkpLCIiPT09dT8iYXV0byI6
dX0pO2Z1bmN0aW9uIG9uKGUsdCxuKXt2YXIgcj1WdC5leGVjKHQpO3JldHVy
biByP01hdGgubWF4KDAsclsxXS0obnx8MCkpKyhyWzJdfHwicHgiKTp0fWZ1
bmN0aW9uIGFuKGUsdCxuLHIsaSl7dmFyIG89bj09PShyPyJib3JkZXIiOiJj
b250ZW50Iik/NDoid2lkdGgiPT09dD8xOjAsYT0wO2Zvcig7ND5vO28rPTIp
Im1hcmdpbiI9PT1uJiYoYSs9Yi5jc3MoZSxuK1p0W29dLCEwLGkpKSxyPygi
Y29udGVudCI9PT1uJiYoYS09Yi5jc3MoZSwicGFkZGluZyIrWnRbb10sITAs
aSkpLCJtYXJnaW4iIT09biYmKGEtPWIuY3NzKGUsImJvcmRlciIrWnRbb10r
IldpZHRoIiwhMCxpKSkpOihhKz1iLmNzcyhlLCJwYWRkaW5nIitadFtvXSwh
MCxpKSwicGFkZGluZyIhPT1uJiYoYSs9Yi5jc3MoZSwiYm9yZGVyIitadFtv
XSsiV2lkdGgiLCEwLGkpKSk7cmV0dXJuIGF9ZnVuY3Rpb24gc24oZSx0LG4p
e3ZhciByPSEwLGk9IndpZHRoIj09PXQ/ZS5vZmZzZXRXaWR0aDplLm9mZnNl
dEhlaWdodCxvPVJ0KGUpLGE9Yi5zdXBwb3J0LmJveFNpemluZyYmImJvcmRl
ci1ib3giPT09Yi5jc3MoZSwiYm94U2l6aW5nIiwhMSxvKTtpZigwPj1pfHxu
dWxsPT1pKXtpZihpPVd0KGUsdCxvKSwoMD5pfHxudWxsPT1pKSYmKGk9ZS5z
dHlsZVt0XSksWXQudGVzdChpKSlyZXR1cm4gaTtyPWEmJihiLnN1cHBvcnQu
Ym94U2l6aW5nUmVsaWFibGV8fGk9PT1lLnN0eWxlW3RdKSxpPXBhcnNlRmxv
YXQoaSl8fDB9cmV0dXJuIGkrYW4oZSx0LG58fChhPyJib3JkZXIiOiJjb250
ZW50IikscixvKSsicHgifWZ1bmN0aW9uIHVuKGUpe3ZhciB0PW8sbj1HdFtl
XTtyZXR1cm4gbnx8KG49bG4oZSx0KSwibm9uZSIhPT1uJiZufHwoUHQ9KFB0
fHxiKCI8aWZyYW1lIGZyYW1lYm9yZGVyPScwJyB3aWR0aD0nMCcgaGVpZ2h0
PScwJy8+IikuY3NzKCJjc3NUZXh0IiwiZGlzcGxheTpibG9jayAhaW1wb3J0
YW50IikpLmFwcGVuZFRvKHQuZG9jdW1lbnRFbGVtZW50KSx0PShQdFswXS5j
b250ZW50V2luZG93fHxQdFswXS5jb250ZW50RG9jdW1lbnQpLmRvY3VtZW50
LHQud3JpdGUoIjwhZG9jdHlwZSBodG1sPjxodG1sPjxib2R5PiIpLHQuY2xv
c2UoKSxuPWxuKGUsdCksUHQuZGV0YWNoKCkpLEd0W2VdPW4pLG59ZnVuY3Rp
b24gbG4oZSx0KXt2YXIgbj1iKHQuY3JlYXRlRWxlbWVudChlKSkuYXBwZW5k
VG8odC5ib2R5KSxyPWIuY3NzKG5bMF0sImRpc3BsYXkiKTtyZXR1cm4gbi5y
ZW1vdmUoKSxyfWIuZWFjaChbImhlaWdodCIsIndpZHRoIl0sZnVuY3Rpb24o
ZSxuKXtiLmNzc0hvb2tzW25dPXtnZXQ6ZnVuY3Rpb24oZSxyLGkpe3JldHVy
biByPzA9PT1lLm9mZnNldFdpZHRoJiZYdC50ZXN0KGIuY3NzKGUsImRpc3Bs
YXkiKSk/Yi5zd2FwKGUsUXQsZnVuY3Rpb24oKXtyZXR1cm4gc24oZSxuLGkp
fSk6c24oZSxuLGkpOnR9LHNldDpmdW5jdGlvbihlLHQscil7dmFyIGk9ciYm
UnQoZSk7cmV0dXJuIG9uKGUsdCxyP2FuKGUsbixyLGIuc3VwcG9ydC5ib3hT
aXppbmcmJiJib3JkZXItYm94Ij09PWIuY3NzKGUsImJveFNpemluZyIsITEs
aSksaSk6MCl9fX0pLGIuc3VwcG9ydC5vcGFjaXR5fHwoYi5jc3NIb29rcy5v
cGFjaXR5PXtnZXQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gSXQudGVzdCgodCYm
ZS5jdXJyZW50U3R5bGU/ZS5jdXJyZW50U3R5bGUuZmlsdGVyOmUuc3R5bGUu
ZmlsdGVyKXx8IiIpPy4wMSpwYXJzZUZsb2F0KFJlZ0V4cC4kMSkrIiI6dD8i
MSI6IiJ9LHNldDpmdW5jdGlvbihlLHQpe3ZhciBuPWUuc3R5bGUscj1lLmN1
cnJlbnRTdHlsZSxpPWIuaXNOdW1lcmljKHQpPyJhbHBoYShvcGFjaXR5PSIr
MTAwKnQrIikiOiIiLG89ciYmci5maWx0ZXJ8fG4uZmlsdGVyfHwiIjtuLnpv
b209MSwodD49MXx8IiI9PT10KSYmIiI9PT1iLnRyaW0oby5yZXBsYWNlKCR0
LCIiKSkmJm4ucmVtb3ZlQXR0cmlidXRlJiYobi5yZW1vdmVBdHRyaWJ1dGUo
ImZpbHRlciIpLCIiPT09dHx8ciYmIXIuZmlsdGVyKXx8KG4uZmlsdGVyPSR0
LnRlc3Qobyk/by5yZXBsYWNlKCR0LGkpOm8rIiAiK2kpfX0pLGIoZnVuY3Rp
b24oKXtiLnN1cHBvcnQucmVsaWFibGVNYXJnaW5SaWdodHx8KGIuY3NzSG9v
a3MubWFyZ2luUmlnaHQ9e2dldDpmdW5jdGlvbihlLG4pe3JldHVybiBuP2Iu
c3dhcChlLHtkaXNwbGF5OiJpbmxpbmUtYmxvY2sifSxXdCxbZSwibWFyZ2lu
UmlnaHQiXSk6dH19KSwhYi5zdXBwb3J0LnBpeGVsUG9zaXRpb24mJmIuZm4u
cG9zaXRpb24mJmIuZWFjaChbInRvcCIsImxlZnQiXSxmdW5jdGlvbihlLG4p
e2IuY3NzSG9va3Nbbl09e2dldDpmdW5jdGlvbihlLHIpe3JldHVybiByPyhy
PVd0KGUsbiksWXQudGVzdChyKT9iKGUpLnBvc2l0aW9uKClbbl0rInB4Ijpy
KTp0fX19KX0pLGIuZXhwciYmYi5leHByLmZpbHRlcnMmJihiLmV4cHIuZmls
dGVycy5oaWRkZW49ZnVuY3Rpb24oZSl7cmV0dXJuIDA+PWUub2Zmc2V0V2lk
dGgmJjA+PWUub2Zmc2V0SGVpZ2h0fHwhYi5zdXBwb3J0LnJlbGlhYmxlSGlk
ZGVuT2Zmc2V0cyYmIm5vbmUiPT09KGUuc3R5bGUmJmUuc3R5bGUuZGlzcGxh
eXx8Yi5jc3MoZSwiZGlzcGxheSIpKX0sYi5leHByLmZpbHRlcnMudmlzaWJs
ZT1mdW5jdGlvbihlKXtyZXR1cm4hYi5leHByLmZpbHRlcnMuaGlkZGVuKGUp
fSksYi5lYWNoKHttYXJnaW46IiIscGFkZGluZzoiIixib3JkZXI6IldpZHRo
In0sZnVuY3Rpb24oZSx0KXtiLmNzc0hvb2tzW2UrdF09e2V4cGFuZDpmdW5j
dGlvbihuKXt2YXIgcj0wLGk9e30sbz0ic3RyaW5nIj09dHlwZW9mIG4/bi5z
cGxpdCgiICIpOltuXTtmb3IoOzQ+cjtyKyspaVtlK1p0W3JdK3RdPW9bcl18
fG9bci0yXXx8b1swXTtyZXR1cm4gaX19LFV0LnRlc3QoZSl8fChiLmNzc0hv
b2tzW2UrdF0uc2V0PW9uKX0pO3ZhciBjbj0vJTIwL2cscG49L1xbXF0kLyxm
bj0vXHI/XG4vZyxkbj0vXig/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVzZXR8
ZmlsZSkkL2ksaG49L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8a2V5Z2Vu
KS9pO2IuZm4uZXh0ZW5kKHtzZXJpYWxpemU6ZnVuY3Rpb24oKXtyZXR1cm4g
Yi5wYXJhbSh0aGlzLnNlcmlhbGl6ZUFycmF5KCkpfSxzZXJpYWxpemVBcnJh
eTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBl
PWIucHJvcCh0aGlzLCJlbGVtZW50cyIpO3JldHVybiBlP2IubWFrZUFycmF5
KGUpOnRoaXN9KS5maWx0ZXIoZnVuY3Rpb24oKXt2YXIgZT10aGlzLnR5cGU7
cmV0dXJuIHRoaXMubmFtZSYmIWIodGhpcykuaXMoIjpkaXNhYmxlZCIpJiZo
bi50ZXN0KHRoaXMubm9kZU5hbWUpJiYhZG4udGVzdChlKSYmKHRoaXMuY2hl
Y2tlZHx8IU50LnRlc3QoZSkpfSkubWFwKGZ1bmN0aW9uKGUsdCl7dmFyIG49
Yih0aGlzKS52YWwoKTtyZXR1cm4gbnVsbD09bj9udWxsOmIuaXNBcnJheShu
KT9iLm1hcChuLGZ1bmN0aW9uKGUpe3JldHVybntuYW1lOnQubmFtZSx2YWx1
ZTplLnJlcGxhY2UoZm4sIlxyXG4iKX19KTp7bmFtZTp0Lm5hbWUsdmFsdWU6
bi5yZXBsYWNlKGZuLCJcclxuIil9fSkuZ2V0KCl9fSksYi5wYXJhbT1mdW5j
dGlvbihlLG4pe3ZhciByLGk9W10sbz1mdW5jdGlvbihlLHQpe3Q9Yi5pc0Z1
bmN0aW9uKHQpP3QoKTpudWxsPT10PyIiOnQsaVtpLmxlbmd0aF09ZW5jb2Rl
VVJJQ29tcG9uZW50KGUpKyI9IitlbmNvZGVVUklDb21wb25lbnQodCl9O2lm
KG49PT10JiYobj1iLmFqYXhTZXR0aW5ncyYmYi5hamF4U2V0dGluZ3MudHJh
ZGl0aW9uYWwpLGIuaXNBcnJheShlKXx8ZS5qcXVlcnkmJiFiLmlzUGxhaW5P
YmplY3QoZSkpYi5lYWNoKGUsZnVuY3Rpb24oKXtvKHRoaXMubmFtZSx0aGlz
LnZhbHVlKX0pO2Vsc2UgZm9yKHIgaW4gZSlnbihyLGVbcl0sbixvKTtyZXR1
cm4gaS5qb2luKCImIikucmVwbGFjZShjbiwiKyIpfTtmdW5jdGlvbiBnbihl
LHQsbixyKXt2YXIgaTtpZihiLmlzQXJyYXkodCkpYi5lYWNoKHQsZnVuY3Rp
b24odCxpKXtufHxwbi50ZXN0KGUpP3IoZSxpKTpnbihlKyJbIisoIm9iamVj
dCI9PXR5cGVvZiBpP3Q6IiIpKyJdIixpLG4scil9KTtlbHNlIGlmKG58fCJv
YmplY3QiIT09Yi50eXBlKHQpKXIoZSx0KTtlbHNlIGZvcihpIGluIHQpZ24o
ZSsiWyIraSsiXSIsdFtpXSxuLHIpfWIuZWFjaCgiYmx1ciBmb2N1cyBmb2N1
c2luIGZvY3Vzb3V0IGxvYWQgcmVzaXplIHNjcm9sbCB1bmxvYWQgY2xpY2sg
ZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3Zl
ciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVj
dCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBlcnJvciBjb250ZXh0
bWVudSIuc3BsaXQoIiAiKSxmdW5jdGlvbihlLHQpe2IuZm5bdF09ZnVuY3Rp
b24oZSxuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4wP3RoaXMub24odCxu
dWxsLGUsbik6dGhpcy50cmlnZ2VyKHQpfX0pLGIuZm4uaG92ZXI9ZnVuY3Rp
b24oZSx0KXtyZXR1cm4gdGhpcy5tb3VzZWVudGVyKGUpLm1vdXNlbGVhdmUo
dHx8ZSl9O3ZhciBtbix5bix2bj1iLm5vdygpLGJuPS9cPy8seG49LyMuKiQv
LHduPS8oWz8mXSlfPVteJl0qLyxUbj0vXiguKj8pOlsgXHRdKihbXlxyXG5d
Kilccj8kL2dtLE5uPS9eKD86YWJvdXR8YXBwfGFwcC1zdG9yYWdlfC4rLWV4
dGVuc2lvbnxmaWxlfHJlc3x3aWRnZXQpOiQvLENuPS9eKD86R0VUfEhFQUQp
JC8sa249L15cL1wvLyxFbj0vXihbXHcuKy1dKzopKD86XC9cLyhbXlwvPyM6
XSopKD86OihcZCspfCl8KS8sU249Yi5mbi5sb2FkLEFuPXt9LGpuPXt9LERu
PSIqLyIuY29uY2F0KCIqIik7dHJ5e3luPWEuaHJlZn1jYXRjaChMbil7eW49
by5jcmVhdGVFbGVtZW50KCJhIikseW4uaHJlZj0iIix5bj15bi5ocmVmfW1u
PUVuLmV4ZWMoeW4udG9Mb3dlckNhc2UoKSl8fFtdO2Z1bmN0aW9uIEhuKGUp
e3JldHVybiBmdW5jdGlvbih0LG4peyJzdHJpbmciIT10eXBlb2YgdCYmKG49
dCx0PSIqIik7dmFyIHIsaT0wLG89dC50b0xvd2VyQ2FzZSgpLm1hdGNoKHcp
fHxbXTtpZihiLmlzRnVuY3Rpb24obikpd2hpbGUocj1vW2krK10pIisiPT09
clswXT8ocj1yLnNsaWNlKDEpfHwiKiIsKGVbcl09ZVtyXXx8W10pLnVuc2hp
ZnQobikpOihlW3JdPWVbcl18fFtdKS5wdXNoKG4pfX1mdW5jdGlvbiBxbihl
LG4scixpKXt2YXIgbz17fSxhPWU9PT1qbjtmdW5jdGlvbiBzKHUpe3ZhciBs
O3JldHVybiBvW3VdPSEwLGIuZWFjaChlW3VdfHxbXSxmdW5jdGlvbihlLHUp
e3ZhciBjPXUobixyLGkpO3JldHVybiJzdHJpbmciIT10eXBlb2YgY3x8YXx8
b1tjXT9hPyEobD1jKTp0OihuLmRhdGFUeXBlcy51bnNoaWZ0KGMpLHMoYyks
ITEpfSksbH1yZXR1cm4gcyhuLmRhdGFUeXBlc1swXSl8fCFvWyIqIl0mJnMo
IioiKX1mdW5jdGlvbiBNbihlLG4pe3ZhciByLGksbz1iLmFqYXhTZXR0aW5n
cy5mbGF0T3B0aW9uc3x8e307Zm9yKGkgaW4gbiluW2ldIT09dCYmKChvW2ld
P2U6cnx8KHI9e30pKVtpXT1uW2ldKTtyZXR1cm4gciYmYi5leHRlbmQoITAs
ZSxyKSxlfWIuZm4ubG9hZD1mdW5jdGlvbihlLG4scil7aWYoInN0cmluZyIh
PXR5cGVvZiBlJiZTbilyZXR1cm4gU24uYXBwbHkodGhpcyxhcmd1bWVudHMp
O3ZhciBpLG8sYSxzPXRoaXMsdT1lLmluZGV4T2YoIiAiKTtyZXR1cm4gdT49
MCYmKGk9ZS5zbGljZSh1LGUubGVuZ3RoKSxlPWUuc2xpY2UoMCx1KSksYi5p
c0Z1bmN0aW9uKG4pPyhyPW4sbj10KTpuJiYib2JqZWN0Ij09dHlwZW9mIG4m
JihhPSJQT1NUIikscy5sZW5ndGg+MCYmYi5hamF4KHt1cmw6ZSx0eXBlOmEs
ZGF0YVR5cGU6Imh0bWwiLGRhdGE6bn0pLmRvbmUoZnVuY3Rpb24oZSl7bz1h
cmd1bWVudHMscy5odG1sKGk/YigiPGRpdj4iKS5hcHBlbmQoYi5wYXJzZUhU
TUwoZSkpLmZpbmQoaSk6ZSl9KS5jb21wbGV0ZShyJiZmdW5jdGlvbihlLHQp
e3MuZWFjaChyLG98fFtlLnJlc3BvbnNlVGV4dCx0LGVdKX0pLHRoaXN9LGIu
ZWFjaChbImFqYXhTdGFydCIsImFqYXhTdG9wIiwiYWpheENvbXBsZXRlIiwi
YWpheEVycm9yIiwiYWpheFN1Y2Nlc3MiLCJhamF4U2VuZCJdLGZ1bmN0aW9u
KGUsdCl7Yi5mblt0XT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5vbih0LGUp
fX0pLGIuZWFjaChbImdldCIsInBvc3QiXSxmdW5jdGlvbihlLG4pe2Jbbl09
ZnVuY3Rpb24oZSxyLGksbyl7cmV0dXJuIGIuaXNGdW5jdGlvbihyKSYmKG89
b3x8aSxpPXIscj10KSxiLmFqYXgoe3VybDplLHR5cGU6bixkYXRhVHlwZTpv
LGRhdGE6cixzdWNjZXNzOml9KX19KSxiLmV4dGVuZCh7YWN0aXZlOjAsbGFz
dE1vZGlmaWVkOnt9LGV0YWc6e30sYWpheFNldHRpbmdzOnt1cmw6eW4sdHlw
ZToiR0VUIixpc0xvY2FsOk5uLnRlc3QobW5bMV0pLGdsb2JhbDohMCxwcm9j
ZXNzRGF0YTohMCxhc3luYzohMCxjb250ZW50VHlwZToiYXBwbGljYXRpb24v
eC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04IixhY2NlcHRz
OnsiKiI6RG4sdGV4dDoidGV4dC9wbGFpbiIsaHRtbDoidGV4dC9odG1sIix4
bWw6ImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWwiLGpzb246ImFwcGxpY2F0
aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdCJ9LGNvbnRlbnRzOnt4bWw6L3ht
bC8saHRtbDovaHRtbC8sanNvbjovanNvbi99LHJlc3BvbnNlRmllbGRzOnt4
bWw6InJlc3BvbnNlWE1MIix0ZXh0OiJyZXNwb25zZVRleHQifSxjb252ZXJ0
ZXJzOnsiKiB0ZXh0IjplLlN0cmluZywidGV4dCBodG1sIjohMCwidGV4dCBq
c29uIjpiLnBhcnNlSlNPTiwidGV4dCB4bWwiOmIucGFyc2VYTUx9LGZsYXRP
cHRpb25zOnt1cmw6ITAsY29udGV4dDohMH19LGFqYXhTZXR1cDpmdW5jdGlv
bihlLHQpe3JldHVybiB0P01uKE1uKGUsYi5hamF4U2V0dGluZ3MpLHQpOk1u
KGIuYWpheFNldHRpbmdzLGUpfSxhamF4UHJlZmlsdGVyOkhuKEFuKSxhamF4
VHJhbnNwb3J0OkhuKGpuKSxhamF4OmZ1bmN0aW9uKGUsbil7Im9iamVjdCI9
PXR5cGVvZiBlJiYobj1lLGU9dCksbj1ufHx7fTt2YXIgcixpLG8sYSxzLHUs
bCxjLHA9Yi5hamF4U2V0dXAoe30sbiksZj1wLmNvbnRleHR8fHAsZD1wLmNv
bnRleHQmJihmLm5vZGVUeXBlfHxmLmpxdWVyeSk/YihmKTpiLmV2ZW50LGg9
Yi5EZWZlcnJlZCgpLGc9Yi5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksbT1w
LnN0YXR1c0NvZGV8fHt9LHk9e30sdj17fSx4PTAsVD0iY2FuY2VsZWQiLE49
e3JlYWR5U3RhdGU6MCxnZXRSZXNwb25zZUhlYWRlcjpmdW5jdGlvbihlKXt2
YXIgdDtpZigyPT09eCl7aWYoIWMpe2M9e307d2hpbGUodD1Ubi5leGVjKGEp
KWNbdFsxXS50b0xvd2VyQ2FzZSgpXT10WzJdfXQ9Y1tlLnRvTG93ZXJDYXNl
KCldfXJldHVybiBudWxsPT10P251bGw6dH0sZ2V0QWxsUmVzcG9uc2VIZWFk
ZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIDI9PT14P2E6bnVsbH0sc2V0UmVxdWVz
dEhlYWRlcjpmdW5jdGlvbihlLHQpe3ZhciBuPWUudG9Mb3dlckNhc2UoKTty
ZXR1cm4geHx8KGU9dltuXT12W25dfHxlLHlbZV09dCksdGhpc30sb3ZlcnJp
ZGVNaW1lVHlwZTpmdW5jdGlvbihlKXtyZXR1cm4geHx8KHAubWltZVR5cGU9
ZSksdGhpc30sc3RhdHVzQ29kZTpmdW5jdGlvbihlKXt2YXIgdDtpZihlKWlm
KDI+eClmb3IodCBpbiBlKW1bdF09W21bdF0sZVt0XV07ZWxzZSBOLmFsd2F5
cyhlW04uc3RhdHVzXSk7cmV0dXJuIHRoaXN9LGFib3J0OmZ1bmN0aW9uKGUp
e3ZhciB0PWV8fFQ7cmV0dXJuIGwmJmwuYWJvcnQodCksaygwLHQpLHRoaXN9
fTtpZihoLnByb21pc2UoTikuY29tcGxldGU9Zy5hZGQsTi5zdWNjZXNzPU4u
ZG9uZSxOLmVycm9yPU4uZmFpbCxwLnVybD0oKGV8fHAudXJsfHx5bikrIiIp
LnJlcGxhY2UoeG4sIiIpLnJlcGxhY2Uoa24sbW5bMV0rIi8vIikscC50eXBl
PW4ubWV0aG9kfHxuLnR5cGV8fHAubWV0aG9kfHxwLnR5cGUscC5kYXRhVHlw
ZXM9Yi50cmltKHAuZGF0YVR5cGV8fCIqIikudG9Mb3dlckNhc2UoKS5tYXRj
aCh3KXx8WyIiXSxudWxsPT1wLmNyb3NzRG9tYWluJiYocj1Fbi5leGVjKHAu
dXJsLnRvTG93ZXJDYXNlKCkpLHAuY3Jvc3NEb21haW49ISghcnx8clsxXT09
PW1uWzFdJiZyWzJdPT09bW5bMl0mJihyWzNdfHwoImh0dHA6Ij09PXJbMV0/
ODA6NDQzKSk9PShtblszXXx8KCJodHRwOiI9PT1tblsxXT84MDo0NDMpKSkp
LHAuZGF0YSYmcC5wcm9jZXNzRGF0YSYmInN0cmluZyIhPXR5cGVvZiBwLmRh
dGEmJihwLmRhdGE9Yi5wYXJhbShwLmRhdGEscC50cmFkaXRpb25hbCkpLHFu
KEFuLHAsbixOKSwyPT09eClyZXR1cm4gTjt1PXAuZ2xvYmFsLHUmJjA9PT1i
LmFjdGl2ZSsrJiZiLmV2ZW50LnRyaWdnZXIoImFqYXhTdGFydCIpLHAudHlw
ZT1wLnR5cGUudG9VcHBlckNhc2UoKSxwLmhhc0NvbnRlbnQ9IUNuLnRlc3Qo
cC50eXBlKSxvPXAudXJsLHAuaGFzQ29udGVudHx8KHAuZGF0YSYmKG89cC51
cmwrPShibi50ZXN0KG8pPyImIjoiPyIpK3AuZGF0YSxkZWxldGUgcC5kYXRh
KSxwLmNhY2hlPT09ITEmJihwLnVybD13bi50ZXN0KG8pP28ucmVwbGFjZSh3
biwiJDFfPSIrdm4rKyk6bysoYm4udGVzdChvKT8iJiI6Ij8iKSsiXz0iK3Zu
KyspKSxwLmlmTW9kaWZpZWQmJihiLmxhc3RNb2RpZmllZFtvXSYmTi5zZXRS
ZXF1ZXN0SGVhZGVyKCJJZi1Nb2RpZmllZC1TaW5jZSIsYi5sYXN0TW9kaWZp
ZWRbb10pLGIuZXRhZ1tvXSYmTi5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Ob25l
LU1hdGNoIixiLmV0YWdbb10pKSwocC5kYXRhJiZwLmhhc0NvbnRlbnQmJnAu
Y29udGVudFR5cGUhPT0hMXx8bi5jb250ZW50VHlwZSkmJk4uc2V0UmVxdWVz
dEhlYWRlcigiQ29udGVudC1UeXBlIixwLmNvbnRlbnRUeXBlKSxOLnNldFJl
cXVlc3RIZWFkZXIoIkFjY2VwdCIscC5kYXRhVHlwZXNbMF0mJnAuYWNjZXB0
c1twLmRhdGFUeXBlc1swXV0/cC5hY2NlcHRzW3AuZGF0YVR5cGVzWzBdXSso
IioiIT09cC5kYXRhVHlwZXNbMF0/IiwgIitEbisiOyBxPTAuMDEiOiIiKTpw
LmFjY2VwdHNbIioiXSk7Zm9yKGkgaW4gcC5oZWFkZXJzKU4uc2V0UmVxdWVz
dEhlYWRlcihpLHAuaGVhZGVyc1tpXSk7aWYocC5iZWZvcmVTZW5kJiYocC5i
ZWZvcmVTZW5kLmNhbGwoZixOLHApPT09ITF8fDI9PT14KSlyZXR1cm4gTi5h
Ym9ydCgpO1Q9ImFib3J0Ijtmb3IoaSBpbntzdWNjZXNzOjEsZXJyb3I6MSxj
b21wbGV0ZToxfSlOW2ldKHBbaV0pO2lmKGw9cW4oam4scCxuLE4pKXtOLnJl
YWR5U3RhdGU9MSx1JiZkLnRyaWdnZXIoImFqYXhTZW5kIixbTixwXSkscC5h
c3luYyYmcC50aW1lb3V0PjAmJihzPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtO
LmFib3J0KCJ0aW1lb3V0Iil9LHAudGltZW91dCkpO3RyeXt4PTEsbC5zZW5k
KHksayl9Y2F0Y2goQyl7aWYoISgyPngpKXRocm93IEM7aygtMSxDKX19ZWxz
ZSBrKC0xLCJObyBUcmFuc3BvcnQiKTtmdW5jdGlvbiBrKGUsbixyLGkpe3Zh
ciBjLHksdix3LFQsQz1uOzIhPT14JiYoeD0yLHMmJmNsZWFyVGltZW91dChz
KSxsPXQsYT1pfHwiIixOLnJlYWR5U3RhdGU9ZT4wPzQ6MCxyJiYodz1fbihw
LE4scikpLGU+PTIwMCYmMzAwPmV8fDMwND09PWU/KHAuaWZNb2RpZmllZCYm
KFQ9Ti5nZXRSZXNwb25zZUhlYWRlcigiTGFzdC1Nb2RpZmllZCIpLFQmJihi
Lmxhc3RNb2RpZmllZFtvXT1UKSxUPU4uZ2V0UmVzcG9uc2VIZWFkZXIoImV0
YWciKSxUJiYoYi5ldGFnW29dPVQpKSwyMDQ9PT1lPyhjPSEwLEM9Im5vY29u
dGVudCIpOjMwND09PWU/KGM9ITAsQz0ibm90bW9kaWZpZWQiKTooYz1Gbihw
LHcpLEM9Yy5zdGF0ZSx5PWMuZGF0YSx2PWMuZXJyb3IsYz0hdikpOih2PUMs
KGV8fCFDKSYmKEM9ImVycm9yIiwwPmUmJihlPTApKSksTi5zdGF0dXM9ZSxO
LnN0YXR1c1RleHQ9KG58fEMpKyIiLGM/aC5yZXNvbHZlV2l0aChmLFt5LEMs
Tl0pOmgucmVqZWN0V2l0aChmLFtOLEMsdl0pLE4uc3RhdHVzQ29kZShtKSxt
PXQsdSYmZC50cmlnZ2VyKGM/ImFqYXhTdWNjZXNzIjoiYWpheEVycm9yIixb
TixwLGM/eTp2XSksZy5maXJlV2l0aChmLFtOLENdKSx1JiYoZC50cmlnZ2Vy
KCJhamF4Q29tcGxldGUiLFtOLHBdKSwtLWIuYWN0aXZlfHxiLmV2ZW50LnRy
aWdnZXIoImFqYXhTdG9wIikpKX1yZXR1cm4gTn0sZ2V0U2NyaXB0OmZ1bmN0
aW9uKGUsbil7cmV0dXJuIGIuZ2V0KGUsdCxuLCJzY3JpcHQiKX0sZ2V0SlNP
TjpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGIuZ2V0KGUsdCxuLCJqc29uIil9
fSk7ZnVuY3Rpb24gX24oZSxuLHIpe3ZhciBpLG8sYSxzLHU9ZS5jb250ZW50
cyxsPWUuZGF0YVR5cGVzLGM9ZS5yZXNwb25zZUZpZWxkcztmb3IocyBpbiBj
KXMgaW4gciYmKG5bY1tzXV09cltzXSk7d2hpbGUoIioiPT09bFswXSlsLnNo
aWZ0KCksbz09PXQmJihvPWUubWltZVR5cGV8fG4uZ2V0UmVzcG9uc2VIZWFk
ZXIoIkNvbnRlbnQtVHlwZSIpKTtpZihvKWZvcihzIGluIHUpaWYodVtzXSYm
dVtzXS50ZXN0KG8pKXtsLnVuc2hpZnQocyk7YnJlYWt9aWYobFswXWluIHIp
YT1sWzBdO2Vsc2V7Zm9yKHMgaW4gcil7aWYoIWxbMF18fGUuY29udmVydGVy
c1tzKyIgIitsWzBdXSl7YT1zO2JyZWFrfWl8fChpPXMpfWE9YXx8aX1yZXR1
cm4gYT8oYSE9PWxbMF0mJmwudW5zaGlmdChhKSxyW2FdKTp0fWZ1bmN0aW9u
IEZuKGUsdCl7dmFyIG4scixpLG8sYT17fSxzPTAsdT1lLmRhdGFUeXBlcy5z
bGljZSgpLGw9dVswXTtpZihlLmRhdGFGaWx0ZXImJih0PWUuZGF0YUZpbHRl
cih0LGUuZGF0YVR5cGUpKSx1WzFdKWZvcihpIGluIGUuY29udmVydGVycylh
W2kudG9Mb3dlckNhc2UoKV09ZS5jb252ZXJ0ZXJzW2ldO2Zvcig7cj11Wysr
c107KWlmKCIqIiE9PXIpe2lmKCIqIiE9PWwmJmwhPT1yKXtpZihpPWFbbCsi
ICIrcl18fGFbIiogIityXSwhaSlmb3IobiBpbiBhKWlmKG89bi5zcGxpdCgi
ICIpLG9bMV09PT1yJiYoaT1hW2wrIiAiK29bMF1dfHxhWyIqICIrb1swXV0p
KXtpPT09ITA/aT1hW25dOmFbbl0hPT0hMCYmKHI9b1swXSx1LnNwbGljZShz
LS0sMCxyKSk7YnJlYWt9aWYoaSE9PSEwKWlmKGkmJmVbInRocm93cyJdKXQ9
aSh0KTtlbHNlIHRyeXt0PWkodCl9Y2F0Y2goYyl7cmV0dXJue3N0YXRlOiJw
YXJzZXJlcnJvciIsZXJyb3I6aT9jOiJObyBjb252ZXJzaW9uIGZyb20gIits
KyIgdG8gIityfX19bD1yfXJldHVybntzdGF0ZToic3VjY2VzcyIsZGF0YTp0
fX1iLmFqYXhTZXR1cCh7YWNjZXB0czp7c2NyaXB0OiJ0ZXh0L2phdmFzY3Jp
cHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFz
Y3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdCJ9LGNvbnRlbnRzOntz
Y3JpcHQ6Lyg/OmphdmF8ZWNtYSlzY3JpcHQvfSxjb252ZXJ0ZXJzOnsidGV4
dCBzY3JpcHQiOmZ1bmN0aW9uKGUpe3JldHVybiBiLmdsb2JhbEV2YWwoZSks
ZX19fSksYi5hamF4UHJlZmlsdGVyKCJzY3JpcHQiLGZ1bmN0aW9uKGUpe2Uu
Y2FjaGU9PT10JiYoZS5jYWNoZT0hMSksZS5jcm9zc0RvbWFpbiYmKGUudHlw
ZT0iR0VUIixlLmdsb2JhbD0hMSl9KSxiLmFqYXhUcmFuc3BvcnQoInNjcmlw
dCIsZnVuY3Rpb24oZSl7aWYoZS5jcm9zc0RvbWFpbil7dmFyIG4scj1vLmhl
YWR8fGIoImhlYWQiKVswXXx8by5kb2N1bWVudEVsZW1lbnQ7cmV0dXJue3Nl
bmQ6ZnVuY3Rpb24odCxpKXtuPW8uY3JlYXRlRWxlbWVudCgic2NyaXB0Iiks
bi5hc3luYz0hMCxlLnNjcmlwdENoYXJzZXQmJihuLmNoYXJzZXQ9ZS5zY3Jp
cHRDaGFyc2V0KSxuLnNyYz1lLnVybCxuLm9ubG9hZD1uLm9ucmVhZHlzdGF0
ZWNoYW5nZT1mdW5jdGlvbihlLHQpeyh0fHwhbi5yZWFkeVN0YXRlfHwvbG9h
ZGVkfGNvbXBsZXRlLy50ZXN0KG4ucmVhZHlTdGF0ZSkpJiYobi5vbmxvYWQ9
bi5vbnJlYWR5c3RhdGVjaGFuZ2U9bnVsbCxuLnBhcmVudE5vZGUmJm4ucGFy
ZW50Tm9kZS5yZW1vdmVDaGlsZChuKSxuPW51bGwsdHx8aSgyMDAsInN1Y2Nl
c3MiKSl9LHIuaW5zZXJ0QmVmb3JlKG4sci5maXJzdENoaWxkKX0sYWJvcnQ6
ZnVuY3Rpb24oKXtuJiZuLm9ubG9hZCh0LCEwKX19fX0pO3ZhciBPbj1bXSxC
bj0vKD0pXD8oPz0mfCQpfFw/XD8vO2IuYWpheFNldHVwKHtqc29ucDoiY2Fs
bGJhY2siLGpzb25wQ2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIgZT1Pbi5wb3Ao
KXx8Yi5leHBhbmRvKyJfIit2bisrO3JldHVybiB0aGlzW2VdPSEwLGV9fSks
Yi5hamF4UHJlZmlsdGVyKCJqc29uIGpzb25wIixmdW5jdGlvbihuLHIsaSl7
dmFyIG8sYSxzLHU9bi5qc29ucCE9PSExJiYoQm4udGVzdChuLnVybCk/InVy
bCI6InN0cmluZyI9PXR5cGVvZiBuLmRhdGEmJiEobi5jb250ZW50VHlwZXx8
IiIpLmluZGV4T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2Rl
ZCIpJiZCbi50ZXN0KG4uZGF0YSkmJiJkYXRhIik7cmV0dXJuIHV8fCJqc29u
cCI9PT1uLmRhdGFUeXBlc1swXT8obz1uLmpzb25wQ2FsbGJhY2s9Yi5pc0Z1
bmN0aW9uKG4uanNvbnBDYWxsYmFjayk/bi5qc29ucENhbGxiYWNrKCk6bi5q
c29ucENhbGxiYWNrLHU/blt1XT1uW3VdLnJlcGxhY2UoQm4sIiQxIitvKTpu
Lmpzb25wIT09ITEmJihuLnVybCs9KGJuLnRlc3Qobi51cmwpPyImIjoiPyIp
K24uanNvbnArIj0iK28pLG4uY29udmVydGVyc1sic2NyaXB0IGpzb24iXT1m
dW5jdGlvbigpe3JldHVybiBzfHxiLmVycm9yKG8rIiB3YXMgbm90IGNhbGxl
ZCIpLHNbMF19LG4uZGF0YVR5cGVzWzBdPSJqc29uIixhPWVbb10sZVtvXT1m
dW5jdGlvbigpe3M9YXJndW1lbnRzfSxpLmFsd2F5cyhmdW5jdGlvbigpe2Vb
b109YSxuW29dJiYobi5qc29ucENhbGxiYWNrPXIuanNvbnBDYWxsYmFjayxP
bi5wdXNoKG8pKSxzJiZiLmlzRnVuY3Rpb24oYSkmJmEoc1swXSkscz1hPXR9
KSwic2NyaXB0Iik6dH0pO3ZhciBQbixSbixXbj0wLCRuPWUuQWN0aXZlWE9i
amVjdCYmZnVuY3Rpb24oKXt2YXIgZTtmb3IoZSBpbiBQbilQbltlXSh0LCEw
KX07ZnVuY3Rpb24gSW4oKXt0cnl7cmV0dXJuIG5ldyBlLlhNTEh0dHBSZXF1
ZXN0fWNhdGNoKHQpe319ZnVuY3Rpb24gem4oKXt0cnl7cmV0dXJuIG5ldyBl
LkFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIil9Y2F0Y2godCl7
fX1iLmFqYXhTZXR0aW5ncy54aHI9ZS5BY3RpdmVYT2JqZWN0P2Z1bmN0aW9u
KCl7cmV0dXJuIXRoaXMuaXNMb2NhbCYmSW4oKXx8em4oKX06SW4sUm49Yi5h
amF4U2V0dGluZ3MueGhyKCksYi5zdXBwb3J0LmNvcnM9ISFSbiYmIndpdGhD
cmVkZW50aWFscyJpbiBSbixSbj1iLnN1cHBvcnQuYWpheD0hIVJuLFJuJiZi
LmFqYXhUcmFuc3BvcnQoZnVuY3Rpb24obil7aWYoIW4uY3Jvc3NEb21haW58
fGIuc3VwcG9ydC5jb3JzKXt2YXIgcjtyZXR1cm57c2VuZDpmdW5jdGlvbihp
LG8pe3ZhciBhLHMsdT1uLnhocigpO2lmKG4udXNlcm5hbWU/dS5vcGVuKG4u
dHlwZSxuLnVybCxuLmFzeW5jLG4udXNlcm5hbWUsbi5wYXNzd29yZCk6dS5v
cGVuKG4udHlwZSxuLnVybCxuLmFzeW5jKSxuLnhockZpZWxkcylmb3IocyBp
biBuLnhockZpZWxkcyl1W3NdPW4ueGhyRmllbGRzW3NdO24ubWltZVR5cGUm
JnUub3ZlcnJpZGVNaW1lVHlwZSYmdS5vdmVycmlkZU1pbWVUeXBlKG4ubWlt
ZVR5cGUpLG4uY3Jvc3NEb21haW58fGlbIlgtUmVxdWVzdGVkLVdpdGgiXXx8
KGlbIlgtUmVxdWVzdGVkLVdpdGgiXT0iWE1MSHR0cFJlcXVlc3QiKTt0cnl7
Zm9yKHMgaW4gaSl1LnNldFJlcXVlc3RIZWFkZXIocyxpW3NdKX1jYXRjaChs
KXt9dS5zZW5kKG4uaGFzQ29udGVudCYmbi5kYXRhfHxudWxsKSxyPWZ1bmN0
aW9uKGUsaSl7dmFyIHMsbCxjLHA7dHJ5e2lmKHImJihpfHw0PT09dS5yZWFk
eVN0YXRlKSlpZihyPXQsYSYmKHUub25yZWFkeXN0YXRlY2hhbmdlPWIubm9v
cCwkbiYmZGVsZXRlIFBuW2FdKSxpKTQhPT11LnJlYWR5U3RhdGUmJnUuYWJv
cnQoKTtlbHNle3A9e30scz11LnN0YXR1cyxsPXUuZ2V0QWxsUmVzcG9uc2VI
ZWFkZXJzKCksInN0cmluZyI9PXR5cGVvZiB1LnJlc3BvbnNlVGV4dCYmKHAu
dGV4dD11LnJlc3BvbnNlVGV4dCk7dHJ5e2M9dS5zdGF0dXNUZXh0fWNhdGNo
KGYpe2M9IiJ9c3x8IW4uaXNMb2NhbHx8bi5jcm9zc0RvbWFpbj8xMjIzPT09
cyYmKHM9MjA0KTpzPXAudGV4dD8yMDA6NDA0fX1jYXRjaChkKXtpfHxvKC0x
LGQpfXAmJm8ocyxjLHAsbCl9LG4uYXN5bmM/ND09PXUucmVhZHlTdGF0ZT9z
ZXRUaW1lb3V0KHIpOihhPSsrV24sJG4mJihQbnx8KFBuPXt9LGIoZSkudW5s
b2FkKCRuKSksUG5bYV09ciksdS5vbnJlYWR5c3RhdGVjaGFuZ2U9cik6cigp
fSxhYm9ydDpmdW5jdGlvbigpe3ImJnIodCwhMCl9fX19KTt2YXIgWG4sVW4s
Vm49L14oPzp0b2dnbGV8c2hvd3xoaWRlKSQvLFluPVJlZ0V4cCgiXig/Oihb
Ky1dKT18KSgiK3grIikoW2EteiVdKikkIiwiaSIpLEpuPS9xdWV1ZUhvb2tz
JC8sR249W25yXSxRbj17IioiOltmdW5jdGlvbihlLHQpe3ZhciBuLHIsaT10
aGlzLmNyZWF0ZVR3ZWVuKGUsdCksbz1Zbi5leGVjKHQpLGE9aS5jdXIoKSxz
PSthfHwwLHU9MSxsPTIwO2lmKG8pe2lmKG49K29bMl0scj1vWzNdfHwoYi5j
c3NOdW1iZXJbZV0/IiI6InB4IiksInB4IiE9PXImJnMpe3M9Yi5jc3MoaS5l
bGVtLGUsITApfHxufHwxO2RvIHU9dXx8Ii41IixzLz11LGIuc3R5bGUoaS5l
bGVtLGUscytyKTt3aGlsZSh1IT09KHU9aS5jdXIoKS9hKSYmMSE9PXUmJi0t
bCl9aS51bml0PXIsaS5zdGFydD1zLGkuZW5kPW9bMV0/cysob1sxXSsxKSpu
Om59cmV0dXJuIGl9XX07ZnVuY3Rpb24gS24oKXtyZXR1cm4gc2V0VGltZW91
dChmdW5jdGlvbigpe1huPXR9KSxYbj1iLm5vdygpfWZ1bmN0aW9uIFpuKGUs
dCl7Yi5lYWNoKHQsZnVuY3Rpb24odCxuKXt2YXIgcj0oUW5bdF18fFtdKS5j
b25jYXQoUW5bIioiXSksaT0wLG89ci5sZW5ndGg7Zm9yKDtvPmk7aSsrKWlm
KHJbaV0uY2FsbChlLHQsbikpcmV0dXJufSl9ZnVuY3Rpb24gZXIoZSx0LG4p
e3ZhciByLGksbz0wLGE9R24ubGVuZ3RoLHM9Yi5EZWZlcnJlZCgpLmFsd2F5
cyhmdW5jdGlvbigpe2RlbGV0ZSB1LmVsZW19KSx1PWZ1bmN0aW9uKCl7aWYo
aSlyZXR1cm4hMTt2YXIgdD1Ybnx8S24oKSxuPU1hdGgubWF4KDAsbC5zdGFy
dFRpbWUrbC5kdXJhdGlvbi10KSxyPW4vbC5kdXJhdGlvbnx8MCxvPTEtcixh
PTAsdT1sLnR3ZWVucy5sZW5ndGg7Zm9yKDt1PmE7YSsrKWwudHdlZW5zW2Fd
LnJ1bihvKTtyZXR1cm4gcy5ub3RpZnlXaXRoKGUsW2wsbyxuXSksMT5vJiZ1
P246KHMucmVzb2x2ZVdpdGgoZSxbbF0pLCExKX0sbD1zLnByb21pc2Uoe2Vs
ZW06ZSxwcm9wczpiLmV4dGVuZCh7fSx0KSxvcHRzOmIuZXh0ZW5kKCEwLHtz
cGVjaWFsRWFzaW5nOnt9fSxuKSxvcmlnaW5hbFByb3BlcnRpZXM6dCxvcmln
aW5hbE9wdGlvbnM6bixzdGFydFRpbWU6WG58fEtuKCksZHVyYXRpb246bi5k
dXJhdGlvbix0d2VlbnM6W10sY3JlYXRlVHdlZW46ZnVuY3Rpb24odCxuKXt2
YXIgcj1iLlR3ZWVuKGUsbC5vcHRzLHQsbixsLm9wdHMuc3BlY2lhbEVhc2lu
Z1t0XXx8bC5vcHRzLmVhc2luZyk7cmV0dXJuIGwudHdlZW5zLnB1c2gociks
cn0sc3RvcDpmdW5jdGlvbih0KXt2YXIgbj0wLHI9dD9sLnR3ZWVucy5sZW5n
dGg6MDtpZihpKXJldHVybiB0aGlzO2ZvcihpPSEwO3I+bjtuKyspbC50d2Vl
bnNbbl0ucnVuKDEpO3JldHVybiB0P3MucmVzb2x2ZVdpdGgoZSxbbCx0XSk6
cy5yZWplY3RXaXRoKGUsW2wsdF0pLHRoaXN9fSksYz1sLnByb3BzO2Zvcih0
cihjLGwub3B0cy5zcGVjaWFsRWFzaW5nKTthPm87bysrKWlmKHI9R25bb10u
Y2FsbChsLGUsYyxsLm9wdHMpKXJldHVybiByO3JldHVybiBabihsLGMpLGIu
aXNGdW5jdGlvbihsLm9wdHMuc3RhcnQpJiZsLm9wdHMuc3RhcnQuY2FsbChl
LGwpLGIuZngudGltZXIoYi5leHRlbmQodSx7ZWxlbTplLGFuaW06bCxxdWV1
ZTpsLm9wdHMucXVldWV9KSksbC5wcm9ncmVzcyhsLm9wdHMucHJvZ3Jlc3Mp
LmRvbmUobC5vcHRzLmRvbmUsbC5vcHRzLmNvbXBsZXRlKS5mYWlsKGwub3B0
cy5mYWlsKS5hbHdheXMobC5vcHRzLmFsd2F5cyl9ZnVuY3Rpb24gdHIoZSx0
KXt2YXIgbixyLGksbyxhO2ZvcihpIGluIGUpaWYocj1iLmNhbWVsQ2FzZShp
KSxvPXRbcl0sbj1lW2ldLGIuaXNBcnJheShuKSYmKG89blsxXSxuPWVbaV09
blswXSksaSE9PXImJihlW3JdPW4sZGVsZXRlIGVbaV0pLGE9Yi5jc3NIb29r
c1tyXSxhJiYiZXhwYW5kImluIGEpe249YS5leHBhbmQobiksZGVsZXRlIGVb
cl07Zm9yKGkgaW4gbilpIGluIGV8fChlW2ldPW5baV0sdFtpXT1vKX1lbHNl
IHRbcl09b31iLkFuaW1hdGlvbj1iLmV4dGVuZChlcix7dHdlZW5lcjpmdW5j
dGlvbihlLHQpe2IuaXNGdW5jdGlvbihlKT8odD1lLGU9WyIqIl0pOmU9ZS5z
cGxpdCgiICIpO3ZhciBuLHI9MCxpPWUubGVuZ3RoO2Zvcig7aT5yO3IrKylu
PWVbcl0sUW5bbl09UW5bbl18fFtdLFFuW25dLnVuc2hpZnQodCl9LHByZWZp
bHRlcjpmdW5jdGlvbihlLHQpe3Q/R24udW5zaGlmdChlKTpHbi5wdXNoKGUp
fX0pO2Z1bmN0aW9uIG5yKGUsdCxuKXt2YXIgcixpLG8sYSxzLHUsbCxjLHAs
Zj10aGlzLGQ9ZS5zdHlsZSxoPXt9LGc9W10sbT1lLm5vZGVUeXBlJiZubihl
KTtuLnF1ZXVlfHwoYz1iLl9xdWV1ZUhvb2tzKGUsImZ4IiksbnVsbD09Yy51
bnF1ZXVlZCYmKGMudW5xdWV1ZWQ9MCxwPWMuZW1wdHkuZmlyZSxjLmVtcHR5
LmZpcmU9ZnVuY3Rpb24oKXtjLnVucXVldWVkfHxwKCl9KSxjLnVucXVldWVk
KyssZi5hbHdheXMoZnVuY3Rpb24oKXtmLmFsd2F5cyhmdW5jdGlvbigpe2Mu
dW5xdWV1ZWQtLSxiLnF1ZXVlKGUsImZ4IikubGVuZ3RofHxjLmVtcHR5LmZp
cmUoKX0pfSkpLDE9PT1lLm5vZGVUeXBlJiYoImhlaWdodCJpbiB0fHwid2lk
dGgiaW4gdCkmJihuLm92ZXJmbG93PVtkLm92ZXJmbG93LGQub3ZlcmZsb3dY
LGQub3ZlcmZsb3dZXSwiaW5saW5lIj09PWIuY3NzKGUsImRpc3BsYXkiKSYm
Im5vbmUiPT09Yi5jc3MoZSwiZmxvYXQiKSYmKGIuc3VwcG9ydC5pbmxpbmVC
bG9ja05lZWRzTGF5b3V0JiYiaW5saW5lIiE9PXVuKGUubm9kZU5hbWUpP2Qu
em9vbT0xOmQuZGlzcGxheT0iaW5saW5lLWJsb2NrIikpLG4ub3ZlcmZsb3cm
JihkLm92ZXJmbG93PSJoaWRkZW4iLGIuc3VwcG9ydC5zaHJpbmtXcmFwQmxv
Y2tzfHxmLmFsd2F5cyhmdW5jdGlvbigpe2Qub3ZlcmZsb3c9bi5vdmVyZmxv
d1swXSxkLm92ZXJmbG93WD1uLm92ZXJmbG93WzFdLGQub3ZlcmZsb3dZPW4u
b3ZlcmZsb3dbMl19KSk7Zm9yKGkgaW4gdClpZihhPXRbaV0sVm4uZXhlYyhh
KSl7aWYoZGVsZXRlIHRbaV0sdT11fHwidG9nZ2xlIj09PWEsYT09PShtPyJo
aWRlIjoic2hvdyIpKWNvbnRpbnVlO2cucHVzaChpKX1pZihvPWcubGVuZ3Ro
KXtzPWIuX2RhdGEoZSwiZnhzaG93Iil8fGIuX2RhdGEoZSwiZnhzaG93Iix7
fSksImhpZGRlbiJpbiBzJiYobT1zLmhpZGRlbiksdSYmKHMuaGlkZGVuPSFt
KSxtP2IoZSkuc2hvdygpOmYuZG9uZShmdW5jdGlvbigpe2IoZSkuaGlkZSgp
fSksZi5kb25lKGZ1bmN0aW9uKCl7dmFyIHQ7Yi5fcmVtb3ZlRGF0YShlLCJm
eHNob3ciKTtmb3IodCBpbiBoKWIuc3R5bGUoZSx0LGhbdF0pfSk7Zm9yKGk9
MDtvPmk7aSsrKXI9Z1tpXSxsPWYuY3JlYXRlVHdlZW4ocixtP3Nbcl06MCks
aFtyXT1zW3JdfHxiLnN0eWxlKGUsciksciBpbiBzfHwoc1tyXT1sLnN0YXJ0
LG0mJihsLmVuZD1sLnN0YXJ0LGwuc3RhcnQ9IndpZHRoIj09PXJ8fCJoZWln
aHQiPT09cj8xOjApKX19ZnVuY3Rpb24gcnIoZSx0LG4scixpKXtyZXR1cm4g
bmV3IHJyLnByb3RvdHlwZS5pbml0KGUsdCxuLHIsaSl9Yi5Ud2Vlbj1ycixy
ci5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOnJyLGluaXQ6ZnVuY3Rpb24oZSx0
LG4scixpLG8pe3RoaXMuZWxlbT1lLHRoaXMucHJvcD1uLHRoaXMuZWFzaW5n
PWl8fCJzd2luZyIsdGhpcy5vcHRpb25zPXQsdGhpcy5zdGFydD10aGlzLm5v
dz10aGlzLmN1cigpLHRoaXMuZW5kPXIsdGhpcy51bml0PW98fChiLmNzc051
bWJlcltuXT8iIjoicHgiKX0sY3VyOmZ1bmN0aW9uKCl7dmFyIGU9cnIucHJv
cEhvb2tzW3RoaXMucHJvcF07cmV0dXJuIGUmJmUuZ2V0P2UuZ2V0KHRoaXMp
OnJyLnByb3BIb29rcy5fZGVmYXVsdC5nZXQodGhpcyl9LHJ1bjpmdW5jdGlv
bihlKXt2YXIgdCxuPXJyLnByb3BIb29rc1t0aGlzLnByb3BdO3JldHVybiB0
aGlzLnBvcz10PXRoaXMub3B0aW9ucy5kdXJhdGlvbj9iLmVhc2luZ1t0aGlz
LmVhc2luZ10oZSx0aGlzLm9wdGlvbnMuZHVyYXRpb24qZSwwLDEsdGhpcy5v
cHRpb25zLmR1cmF0aW9uKTplLHRoaXMubm93PSh0aGlzLmVuZC10aGlzLnN0
YXJ0KSp0K3RoaXMuc3RhcnQsdGhpcy5vcHRpb25zLnN0ZXAmJnRoaXMub3B0
aW9ucy5zdGVwLmNhbGwodGhpcy5lbGVtLHRoaXMubm93LHRoaXMpLG4mJm4u
c2V0P24uc2V0KHRoaXMpOnJyLnByb3BIb29rcy5fZGVmYXVsdC5zZXQodGhp
cyksdGhpc319LHJyLnByb3RvdHlwZS5pbml0LnByb3RvdHlwZT1yci5wcm90
b3R5cGUscnIucHJvcEhvb2tzPXtfZGVmYXVsdDp7Z2V0OmZ1bmN0aW9uKGUp
e3ZhciB0O3JldHVybiBudWxsPT1lLmVsZW1bZS5wcm9wXXx8ZS5lbGVtLnN0
eWxlJiZudWxsIT1lLmVsZW0uc3R5bGVbZS5wcm9wXT8odD1iLmNzcyhlLmVs
ZW0sZS5wcm9wLCIiKSx0JiYiYXV0byIhPT10P3Q6MCk6ZS5lbGVtW2UucHJv
cF19LHNldDpmdW5jdGlvbihlKXtiLmZ4LnN0ZXBbZS5wcm9wXT9iLmZ4LnN0
ZXBbZS5wcm9wXShlKTplLmVsZW0uc3R5bGUmJihudWxsIT1lLmVsZW0uc3R5
bGVbYi5jc3NQcm9wc1tlLnByb3BdXXx8Yi5jc3NIb29rc1tlLnByb3BdKT9i
LnN0eWxlKGUuZWxlbSxlLnByb3AsZS5ub3crZS51bml0KTplLmVsZW1bZS5w
cm9wXT1lLm5vd319fSxyci5wcm9wSG9va3Muc2Nyb2xsVG9wPXJyLnByb3BI
b29rcy5zY3JvbGxMZWZ0PXtzZXQ6ZnVuY3Rpb24oZSl7ZS5lbGVtLm5vZGVU
eXBlJiZlLmVsZW0ucGFyZW50Tm9kZSYmKGUuZWxlbVtlLnByb3BdPWUubm93
KX19LGIuZWFjaChbInRvZ2dsZSIsInNob3ciLCJoaWRlIl0sZnVuY3Rpb24o
ZSx0KXt2YXIgbj1iLmZuW3RdO2IuZm5bdF09ZnVuY3Rpb24oZSxyLGkpe3Jl
dHVybiBudWxsPT1lfHwiYm9vbGVhbiI9PXR5cGVvZiBlP24uYXBwbHkodGhp
cyxhcmd1bWVudHMpOnRoaXMuYW5pbWF0ZShpcih0LCEwKSxlLHIsaSl9fSks
Yi5mbi5leHRlbmQoe2ZhZGVUbzpmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4g
dGhpcy5maWx0ZXIobm4pLmNzcygib3BhY2l0eSIsMCkuc2hvdygpLmVuZCgp
LmFuaW1hdGUoe29wYWNpdHk6dH0sZSxuLHIpfSxhbmltYXRlOmZ1bmN0aW9u
KGUsdCxuLHIpe3ZhciBpPWIuaXNFbXB0eU9iamVjdChlKSxvPWIuc3BlZWQo
dCxuLHIpLGE9ZnVuY3Rpb24oKXt2YXIgdD1lcih0aGlzLGIuZXh0ZW5kKHt9
LGUpLG8pO2EuZmluaXNoPWZ1bmN0aW9uKCl7dC5zdG9wKCEwKX0sKGl8fGIu
X2RhdGEodGhpcywiZmluaXNoIikpJiZ0LnN0b3AoITApfTtyZXR1cm4gYS5m
aW5pc2g9YSxpfHxvLnF1ZXVlPT09ITE/dGhpcy5lYWNoKGEpOnRoaXMucXVl
dWUoby5xdWV1ZSxhKX0sc3RvcDpmdW5jdGlvbihlLG4scil7dmFyIGk9ZnVu
Y3Rpb24oZSl7dmFyIHQ9ZS5zdG9wO2RlbGV0ZSBlLnN0b3AsdChyKX07cmV0
dXJuInN0cmluZyIhPXR5cGVvZiBlJiYocj1uLG49ZSxlPXQpLG4mJmUhPT0h
MSYmdGhpcy5xdWV1ZShlfHwiZngiLFtdKSx0aGlzLmVhY2goZnVuY3Rpb24o
KXt2YXIgdD0hMCxuPW51bGwhPWUmJmUrInF1ZXVlSG9va3MiLG89Yi50aW1l
cnMsYT1iLl9kYXRhKHRoaXMpO2lmKG4pYVtuXSYmYVtuXS5zdG9wJiZpKGFb
bl0pO2Vsc2UgZm9yKG4gaW4gYSlhW25dJiZhW25dLnN0b3AmJkpuLnRlc3Qo
bikmJmkoYVtuXSk7Zm9yKG49by5sZW5ndGg7bi0tOylvW25dLmVsZW0hPT10
aGlzfHxudWxsIT1lJiZvW25dLnF1ZXVlIT09ZXx8KG9bbl0uYW5pbS5zdG9w
KHIpLHQ9ITEsby5zcGxpY2UobiwxKSk7KHR8fCFyKSYmYi5kZXF1ZXVlKHRo
aXMsZSl9KX0sZmluaXNoOmZ1bmN0aW9uKGUpe3JldHVybiBlIT09ITEmJihl
PWV8fCJmeCIpLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciB0LG49Yi5fZGF0
YSh0aGlzKSxyPW5bZSsicXVldWUiXSxpPW5bZSsicXVldWVIb29rcyJdLG89
Yi50aW1lcnMsYT1yP3IubGVuZ3RoOjA7Zm9yKG4uZmluaXNoPSEwLGIucXVl
dWUodGhpcyxlLFtdKSxpJiZpLmN1ciYmaS5jdXIuZmluaXNoJiZpLmN1ci5m
aW5pc2guY2FsbCh0aGlzKSx0PW8ubGVuZ3RoO3QtLTspb1t0XS5lbGVtPT09
dGhpcyYmb1t0XS5xdWV1ZT09PWUmJihvW3RdLmFuaW0uc3RvcCghMCksby5z
cGxpY2UodCwxKSk7Zm9yKHQ9MDthPnQ7dCsrKXJbdF0mJnJbdF0uZmluaXNo
JiZyW3RdLmZpbmlzaC5jYWxsKHRoaXMpO2RlbGV0ZSBuLmZpbmlzaH0pfX0p
O2Z1bmN0aW9uIGlyKGUsdCl7dmFyIG4scj17aGVpZ2h0OmV9LGk9MDtmb3Io
dD10PzE6MDs0Pmk7aSs9Mi10KW49WnRbaV0sclsibWFyZ2luIituXT1yWyJw
YWRkaW5nIituXT1lO3JldHVybiB0JiYoci5vcGFjaXR5PXIud2lkdGg9ZSks
cn1iLmVhY2goe3NsaWRlRG93bjppcigic2hvdyIpLHNsaWRlVXA6aXIoImhp
ZGUiKSxzbGlkZVRvZ2dsZTppcigidG9nZ2xlIiksZmFkZUluOntvcGFjaXR5
OiJzaG93In0sZmFkZU91dDp7b3BhY2l0eToiaGlkZSJ9LGZhZGVUb2dnbGU6
e29wYWNpdHk6InRvZ2dsZSJ9fSxmdW5jdGlvbihlLHQpe2IuZm5bZV09ZnVu
Y3Rpb24oZSxuLHIpe3JldHVybiB0aGlzLmFuaW1hdGUodCxlLG4scil9fSks
Yi5zcGVlZD1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZSYmIm9iamVjdCI9PXR5
cGVvZiBlP2IuZXh0ZW5kKHt9LGUpOntjb21wbGV0ZTpufHwhbiYmdHx8Yi5p
c0Z1bmN0aW9uKGUpJiZlLGR1cmF0aW9uOmUsZWFzaW5nOm4mJnR8fHQmJiFi
LmlzRnVuY3Rpb24odCkmJnR9O3JldHVybiByLmR1cmF0aW9uPWIuZngub2Zm
PzA6Im51bWJlciI9PXR5cGVvZiByLmR1cmF0aW9uP3IuZHVyYXRpb246ci5k
dXJhdGlvbiBpbiBiLmZ4LnNwZWVkcz9iLmZ4LnNwZWVkc1tyLmR1cmF0aW9u
XTpiLmZ4LnNwZWVkcy5fZGVmYXVsdCwobnVsbD09ci5xdWV1ZXx8ci5xdWV1
ZT09PSEwKSYmKHIucXVldWU9ImZ4Iiksci5vbGQ9ci5jb21wbGV0ZSxyLmNv
bXBsZXRlPWZ1bmN0aW9uKCl7Yi5pc0Z1bmN0aW9uKHIub2xkKSYmci5vbGQu
Y2FsbCh0aGlzKSxyLnF1ZXVlJiZiLmRlcXVldWUodGhpcyxyLnF1ZXVlKX0s
cn0sYi5lYXNpbmc9e2xpbmVhcjpmdW5jdGlvbihlKXtyZXR1cm4gZX0sc3dp
bmc6ZnVuY3Rpb24oZSl7cmV0dXJuLjUtTWF0aC5jb3MoZSpNYXRoLlBJKS8y
fX0sYi50aW1lcnM9W10sYi5meD1yci5wcm90b3R5cGUuaW5pdCxiLmZ4LnRp
Y2s9ZnVuY3Rpb24oKXt2YXIgZSxuPWIudGltZXJzLHI9MDtmb3IoWG49Yi5u
b3coKTtuLmxlbmd0aD5yO3IrKyllPW5bcl0sZSgpfHxuW3JdIT09ZXx8bi5z
cGxpY2Uoci0tLDEpO24ubGVuZ3RofHxiLmZ4LnN0b3AoKSxYbj10fSxiLmZ4
LnRpbWVyPWZ1bmN0aW9uKGUpe2UoKSYmYi50aW1lcnMucHVzaChlKSYmYi5m
eC5zdGFydCgpfSxiLmZ4LmludGVydmFsPTEzLGIuZnguc3RhcnQ9ZnVuY3Rp
b24oKXtVbnx8KFVuPXNldEludGVydmFsKGIuZngudGljayxiLmZ4LmludGVy
dmFsKSl9LGIuZnguc3RvcD1mdW5jdGlvbigpe2NsZWFySW50ZXJ2YWwoVW4p
LFVuPW51bGx9LGIuZnguc3BlZWRzPXtzbG93OjYwMCxmYXN0OjIwMCxfZGVm
YXVsdDo0MDB9LGIuZnguc3RlcD17fSxiLmV4cHImJmIuZXhwci5maWx0ZXJz
JiYoYi5leHByLmZpbHRlcnMuYW5pbWF0ZWQ9ZnVuY3Rpb24oZSl7cmV0dXJu
IGIuZ3JlcChiLnRpbWVycyxmdW5jdGlvbih0KXtyZXR1cm4gZT09PXQuZWxl
bX0pLmxlbmd0aH0pLGIuZm4ub2Zmc2V0PWZ1bmN0aW9uKGUpe2lmKGFyZ3Vt
ZW50cy5sZW5ndGgpcmV0dXJuIGU9PT10P3RoaXM6dGhpcy5lYWNoKGZ1bmN0
aW9uKHQpe2Iub2Zmc2V0LnNldE9mZnNldCh0aGlzLGUsdCl9KTt2YXIgbixy
LG89e3RvcDowLGxlZnQ6MH0sYT10aGlzWzBdLHM9YSYmYS5vd25lckRvY3Vt
ZW50O2lmKHMpcmV0dXJuIG49cy5kb2N1bWVudEVsZW1lbnQsYi5jb250YWlu
cyhuLGEpPyh0eXBlb2YgYS5nZXRCb3VuZGluZ0NsaWVudFJlY3QhPT1pJiYo
bz1hLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKSxyPW9yKHMpLHt0b3A6by50
b3ArKHIucGFnZVlPZmZzZXR8fG4uc2Nyb2xsVG9wKS0obi5jbGllbnRUb3B8
fDApLGxlZnQ6by5sZWZ0KyhyLnBhZ2VYT2Zmc2V0fHxuLnNjcm9sbExlZnQp
LShuLmNsaWVudExlZnR8fDApfSk6b30sYi5vZmZzZXQ9e3NldE9mZnNldDpm
dW5jdGlvbihlLHQsbil7dmFyIHI9Yi5jc3MoZSwicG9zaXRpb24iKTsic3Rh
dGljIj09PXImJihlLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIpO3ZhciBp
PWIoZSksbz1pLm9mZnNldCgpLGE9Yi5jc3MoZSwidG9wIikscz1iLmNzcyhl
LCJsZWZ0IiksdT0oImFic29sdXRlIj09PXJ8fCJmaXhlZCI9PT1yKSYmYi5p
bkFycmF5KCJhdXRvIixbYSxzXSk+LTEsbD17fSxjPXt9LHAsZjt1PyhjPWku
cG9zaXRpb24oKSxwPWMudG9wLGY9Yy5sZWZ0KToocD1wYXJzZUZsb2F0KGEp
fHwwLGY9cGFyc2VGbG9hdChzKXx8MCksYi5pc0Z1bmN0aW9uKHQpJiYodD10
LmNhbGwoZSxuLG8pKSxudWxsIT10LnRvcCYmKGwudG9wPXQudG9wLW8udG9w
K3ApLG51bGwhPXQubGVmdCYmKGwubGVmdD10LmxlZnQtby5sZWZ0K2YpLCJ1
c2luZyJpbiB0P3QudXNpbmcuY2FsbChlLGwpOmkuY3NzKGwpfX0sYi5mbi5l
eHRlbmQoe3Bvc2l0aW9uOmZ1bmN0aW9uKCl7aWYodGhpc1swXSl7dmFyIGUs
dCxuPXt0b3A6MCxsZWZ0OjB9LHI9dGhpc1swXTtyZXR1cm4iZml4ZWQiPT09
Yi5jc3MociwicG9zaXRpb24iKT90PXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0
KCk6KGU9dGhpcy5vZmZzZXRQYXJlbnQoKSx0PXRoaXMub2Zmc2V0KCksYi5u
b2RlTmFtZShlWzBdLCJodG1sIil8fChuPWUub2Zmc2V0KCkpLG4udG9wKz1i
LmNzcyhlWzBdLCJib3JkZXJUb3BXaWR0aCIsITApLG4ubGVmdCs9Yi5jc3Mo
ZVswXSwiYm9yZGVyTGVmdFdpZHRoIiwhMCkpLHt0b3A6dC50b3Atbi50b3At
Yi5jc3MociwibWFyZ2luVG9wIiwhMCksbGVmdDp0LmxlZnQtbi5sZWZ0LWIu
Y3NzKHIsIm1hcmdpbkxlZnQiLCEwKX19fSxvZmZzZXRQYXJlbnQ6ZnVuY3Rp
b24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9m
ZnNldFBhcmVudHx8by5kb2N1bWVudEVsZW1lbnQ7d2hpbGUoZSYmIWIubm9k
ZU5hbWUoZSwiaHRtbCIpJiYic3RhdGljIj09PWIuY3NzKGUsInBvc2l0aW9u
IikpZT1lLm9mZnNldFBhcmVudDtyZXR1cm4gZXx8by5kb2N1bWVudEVsZW1l
bnR9KX19KSxiLmVhY2goe3Njcm9sbExlZnQ6InBhZ2VYT2Zmc2V0IixzY3Jv
bGxUb3A6InBhZ2VZT2Zmc2V0In0sZnVuY3Rpb24oZSxuKXt2YXIgcj0vWS8u
dGVzdChuKTtiLmZuW2VdPWZ1bmN0aW9uKGkpe3JldHVybiBiLmFjY2Vzcyh0
aGlzLGZ1bmN0aW9uKGUsaSxvKXt2YXIgYT1vcihlKTtyZXR1cm4gbz09PXQ/
YT9uIGluIGE/YVtuXTphLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFtpXTpl
W2ldOihhP2Euc2Nyb2xsVG8ocj9iKGEpLnNjcm9sbExlZnQoKTpvLHI/bzpi
KGEpLnNjcm9sbFRvcCgpKTplW2ldPW8sdCl9LGUsaSxhcmd1bWVudHMubGVu
Z3RoLG51bGwpfX0pO2Z1bmN0aW9uIG9yKGUpe3JldHVybiBiLmlzV2luZG93
KGUpP2U6OT09PWUubm9kZVR5cGU/ZS5kZWZhdWx0Vmlld3x8ZS5wYXJlbnRX
aW5kb3c6ITF9Yi5lYWNoKHtIZWlnaHQ6ImhlaWdodCIsV2lkdGg6IndpZHRo
In0sZnVuY3Rpb24oZSxuKXtiLmVhY2goe3BhZGRpbmc6ImlubmVyIitlLGNv
bnRlbnQ6biwiIjoib3V0ZXIiK2V9LGZ1bmN0aW9uKHIsaSl7Yi5mbltpXT1m
dW5jdGlvbihpLG8pe3ZhciBhPWFyZ3VtZW50cy5sZW5ndGgmJihyfHwiYm9v
bGVhbiIhPXR5cGVvZiBpKSxzPXJ8fChpPT09ITB8fG89PT0hMD8ibWFyZ2lu
IjoiYm9yZGVyIik7cmV0dXJuIGIuYWNjZXNzKHRoaXMsZnVuY3Rpb24obixy
LGkpe3ZhciBvO3JldHVybiBiLmlzV2luZG93KG4pP24uZG9jdW1lbnQuZG9j
dW1lbnRFbGVtZW50WyJjbGllbnQiK2VdOjk9PT1uLm5vZGVUeXBlPyhvPW4u
ZG9jdW1lbnRFbGVtZW50LE1hdGgubWF4KG4uYm9keVsic2Nyb2xsIitlXSxv
WyJzY3JvbGwiK2VdLG4uYm9keVsib2Zmc2V0IitlXSxvWyJvZmZzZXQiK2Vd
LG9bImNsaWVudCIrZV0pKTppPT09dD9iLmNzcyhuLHIscyk6Yi5zdHlsZShu
LHIsaSxzKX0sbixhP2k6dCxhLG51bGwpfX0pfSksZS5qUXVlcnk9ZS4kPWIs
ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZCYmZGVmaW5l
LmFtZC5qUXVlcnkmJmRlZmluZSgianF1ZXJ5IixbXSxmdW5jdGlvbigpe3Jl
dHVybiBifSl9KSh3aW5kb3cpOw==
'></script><script src='data:text/javascript;base64,IWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihuKXtyZXR1cm4gbiYmKG4ub3duZXJE
b2N1bWVudHx8bi5kb2N1bWVudHx8bikuZG9jdW1lbnRFbGVtZW50fWZ1bmN0
aW9uIHQobil7cmV0dXJuIG4mJihuLm93bmVyRG9jdW1lbnQmJm4ub3duZXJE
b2N1bWVudC5kZWZhdWx0Vmlld3x8bi5kb2N1bWVudCYmbnx8bi5kZWZhdWx0
Vmlldyl9ZnVuY3Rpb24gZShuLHQpe3JldHVybiB0Pm4/LTE6bj50PzE6bj49
dD8wOk5hTn1mdW5jdGlvbiByKG4pe3JldHVybiBudWxsPT09bj9OYU46K259
ZnVuY3Rpb24gaShuKXtyZXR1cm4haXNOYU4obil9ZnVuY3Rpb24gdShuKXty
ZXR1cm57bGVmdDpmdW5jdGlvbih0LGUscixpKXtmb3IoYXJndW1lbnRzLmxl
bmd0aDwzJiYocj0wKSxhcmd1bWVudHMubGVuZ3RoPDQmJihpPXQubGVuZ3Ro
KTtpPnI7KXt2YXIgdT1yK2k+Pj4xO24odFt1XSxlKTwwP3I9dSsxOmk9dX1y
ZXR1cm4gcn0scmlnaHQ6ZnVuY3Rpb24odCxlLHIsaSl7Zm9yKGFyZ3VtZW50
cy5sZW5ndGg8MyYmKHI9MCksYXJndW1lbnRzLmxlbmd0aDw0JiYoaT10Lmxl
bmd0aCk7aT5yOyl7dmFyIHU9citpPj4+MTtuKHRbdV0sZSk+MD9pPXU6cj11
KzF9cmV0dXJuIHJ9fX1mdW5jdGlvbiBvKG4pe3JldHVybiBuLmxlbmd0aH1m
dW5jdGlvbiBhKG4pe2Zvcih2YXIgdD0xO24qdCUxOyl0Kj0xMDtyZXR1cm4g
dH1mdW5jdGlvbiBsKG4sdCl7Zm9yKHZhciBlIGluIHQpT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KG4ucHJvdG90eXBlLGUse3ZhbHVlOnRbZV0sZW51bWVyYWJs
ZTohMX0pfWZ1bmN0aW9uIGMoKXt0aGlzLl89T2JqZWN0LmNyZWF0ZShudWxs
KX1mdW5jdGlvbiBmKG4pe3JldHVybihuKz0iIik9PT1ib3x8blswXT09PV9v
P19vK246bn1mdW5jdGlvbiBzKG4pe3JldHVybihuKz0iIilbMF09PT1fbz9u
LnNsaWNlKDEpOm59ZnVuY3Rpb24gaChuKXtyZXR1cm4gZihuKWluIHRoaXMu
X31mdW5jdGlvbiBwKG4pe3JldHVybihuPWYobikpaW4gdGhpcy5fJiZkZWxl
dGUgdGhpcy5fW25dfWZ1bmN0aW9uIGcoKXt2YXIgbj1bXTtmb3IodmFyIHQg
aW4gdGhpcy5fKW4ucHVzaChzKHQpKTtyZXR1cm4gbn1mdW5jdGlvbiB2KCl7
dmFyIG49MDtmb3IodmFyIHQgaW4gdGhpcy5fKSsrbjtyZXR1cm4gbn1mdW5j
dGlvbiBkKCl7Zm9yKHZhciBuIGluIHRoaXMuXylyZXR1cm4hMTtyZXR1cm4h
MH1mdW5jdGlvbiB5KCl7dGhpcy5fPU9iamVjdC5jcmVhdGUobnVsbCl9ZnVu
Y3Rpb24gbShuKXtyZXR1cm4gbn1mdW5jdGlvbiBNKG4sdCxlKXtyZXR1cm4g
ZnVuY3Rpb24oKXt2YXIgcj1lLmFwcGx5KHQsYXJndW1lbnRzKTtyZXR1cm4g
cj09PXQ/bjpyfX1mdW5jdGlvbiB4KG4sdCl7aWYodCBpbiBuKXJldHVybiB0
O3Q9dC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSt0LnNsaWNlKDEpO2Zvcih2
YXIgZT0wLHI9d28ubGVuZ3RoO3I+ZTsrK2Upe3ZhciBpPXdvW2VdK3Q7aWYo
aSBpbiBuKXJldHVybiBpfX1mdW5jdGlvbiBiKCl7fWZ1bmN0aW9uIF8oKXt9
ZnVuY3Rpb24gdyhuKXtmdW5jdGlvbiB0KCl7Zm9yKHZhciB0LHI9ZSxpPS0x
LHU9ci5sZW5ndGg7KytpPHU7KSh0PXJbaV0ub24pJiZ0LmFwcGx5KHRoaXMs
YXJndW1lbnRzKTtyZXR1cm4gbn12YXIgZT1bXSxyPW5ldyBjO3JldHVybiB0
Lm9uPWZ1bmN0aW9uKHQsaSl7dmFyIHUsbz1yLmdldCh0KTtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aDwyP28mJm8ub246KG8mJihvLm9uPW51bGwsZT1lLnNs
aWNlKDAsdT1lLmluZGV4T2YobykpLmNvbmNhdChlLnNsaWNlKHUrMSkpLHIu
cmVtb3ZlKHQpKSxpJiZlLnB1c2goci5zZXQodCx7b246aX0pKSxuKX0sdH1m
dW5jdGlvbiBTKCl7YW8uZXZlbnQucHJldmVudERlZmF1bHQoKX1mdW5jdGlv
biBrKCl7Zm9yKHZhciBuLHQ9YW8uZXZlbnQ7bj10LnNvdXJjZUV2ZW50Oyl0
PW47cmV0dXJuIHR9ZnVuY3Rpb24gTihuKXtmb3IodmFyIHQ9bmV3IF8sZT0w
LHI9YXJndW1lbnRzLmxlbmd0aDsrK2U8cjspdFthcmd1bWVudHNbZV1dPXco
dCk7cmV0dXJuIHQub2Y9ZnVuY3Rpb24oZSxyKXtyZXR1cm4gZnVuY3Rpb24o
aSl7dHJ5e3ZhciB1PWkuc291cmNlRXZlbnQ9YW8uZXZlbnQ7aS50YXJnZXQ9
bixhby5ldmVudD1pLHRbaS50eXBlXS5hcHBseShlLHIpfWZpbmFsbHl7YW8u
ZXZlbnQ9dX19fSx0fWZ1bmN0aW9uIEUobil7cmV0dXJuIGtvKG4sQ28pLG59
ZnVuY3Rpb24gQShuKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOmZ1
bmN0aW9uKCl7cmV0dXJuIE5vKG4sdGhpcyl9fWZ1bmN0aW9uIEMobil7cmV0
dXJuImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpmdW5jdGlvbigpe3JldHVybiBF
byhuLHRoaXMpfX1mdW5jdGlvbiB6KG4sdCl7ZnVuY3Rpb24gZSgpe3RoaXMu
cmVtb3ZlQXR0cmlidXRlKG4pfWZ1bmN0aW9uIHIoKXt0aGlzLnJlbW92ZUF0
dHJpYnV0ZU5TKG4uc3BhY2Usbi5sb2NhbCl9ZnVuY3Rpb24gaSgpe3RoaXMu
c2V0QXR0cmlidXRlKG4sdCl9ZnVuY3Rpb24gdSgpe3RoaXMuc2V0QXR0cmli
dXRlTlMobi5zcGFjZSxuLmxvY2FsLHQpfWZ1bmN0aW9uIG8oKXt2YXIgZT10
LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1lP3RoaXMucmVtb3ZlQXR0
cmlidXRlKG4pOnRoaXMuc2V0QXR0cmlidXRlKG4sZSl9ZnVuY3Rpb24gYSgp
e3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PWU/dGhpcy5y
ZW1vdmVBdHRyaWJ1dGVOUyhuLnNwYWNlLG4ubG9jYWwpOnRoaXMuc2V0QXR0
cmlidXRlTlMobi5zcGFjZSxuLmxvY2FsLGUpfXJldHVybiBuPWFvLm5zLnF1
YWxpZnkobiksbnVsbD09dD9uLmxvY2FsP3I6ZToiZnVuY3Rpb24iPT10eXBl
b2YgdD9uLmxvY2FsP2E6bzpuLmxvY2FsP3U6aX1mdW5jdGlvbiBMKG4pe3Jl
dHVybiBuLnRyaW0oKS5yZXBsYWNlKC9ccysvZywiICIpfWZ1bmN0aW9uIHEo
bil7cmV0dXJuIG5ldyBSZWdFeHAoIig/Ol58XFxzKykiK2FvLnJlcXVvdGUo
bikrIig/Olxccyt8JCkiLCJnIil9ZnVuY3Rpb24gVChuKXtyZXR1cm4obisi
IikudHJpbSgpLnNwbGl0KC9efFxzKy8pfWZ1bmN0aW9uIFIobix0KXtmdW5j
dGlvbiBlKCl7Zm9yKHZhciBlPS0xOysrZTxpOyluW2VdKHRoaXMsdCl9ZnVu
Y3Rpb24gcigpe2Zvcih2YXIgZT0tMSxyPXQuYXBwbHkodGhpcyxhcmd1bWVu
dHMpOysrZTxpOyluW2VdKHRoaXMscil9bj1UKG4pLm1hcChEKTt2YXIgaT1u
Lmxlbmd0aDtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD9yOmV9ZnVuY3Rp
b24gRChuKXt2YXIgdD1xKG4pO3JldHVybiBmdW5jdGlvbihlLHIpe2lmKGk9
ZS5jbGFzc0xpc3QpcmV0dXJuIHI/aS5hZGQobik6aS5yZW1vdmUobik7dmFy
IGk9ZS5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiO3I/KHQubGFzdEluZGV4
PTAsdC50ZXN0KGkpfHxlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLEwoaSsiICIr
bikpKTplLnNldEF0dHJpYnV0ZSgiY2xhc3MiLEwoaS5yZXBsYWNlKHQsIiAi
KSkpfX1mdW5jdGlvbiBQKG4sdCxlKXtmdW5jdGlvbiByKCl7dGhpcy5zdHls
ZS5yZW1vdmVQcm9wZXJ0eShuKX1mdW5jdGlvbiBpKCl7dGhpcy5zdHlsZS5z
ZXRQcm9wZXJ0eShuLHQsZSl9ZnVuY3Rpb24gdSgpe3ZhciByPXQuYXBwbHko
dGhpcyxhcmd1bWVudHMpO251bGw9PXI/dGhpcy5zdHlsZS5yZW1vdmVQcm9w
ZXJ0eShuKTp0aGlzLnN0eWxlLnNldFByb3BlcnR5KG4scixlKX1yZXR1cm4g
bnVsbD09dD9yOiJmdW5jdGlvbiI9PXR5cGVvZiB0P3U6aX1mdW5jdGlvbiBV
KG4sdCl7ZnVuY3Rpb24gZSgpe2RlbGV0ZSB0aGlzW25dfWZ1bmN0aW9uIHIo
KXt0aGlzW25dPXR9ZnVuY3Rpb24gaSgpe3ZhciBlPXQuYXBwbHkodGhpcyxh
cmd1bWVudHMpO251bGw9PWU/ZGVsZXRlIHRoaXNbbl06dGhpc1tuXT1lfXJl
dHVybiBudWxsPT10P2U6ImZ1bmN0aW9uIj09dHlwZW9mIHQ/aTpyfWZ1bmN0
aW9uIGoobil7ZnVuY3Rpb24gdCgpe3ZhciB0PXRoaXMub3duZXJEb2N1bWVu
dCxlPXRoaXMubmFtZXNwYWNlVVJJO3JldHVybiBlPT09em8mJnQuZG9jdW1l
bnRFbGVtZW50Lm5hbWVzcGFjZVVSST09PXpvP3QuY3JlYXRlRWxlbWVudChu
KTp0LmNyZWF0ZUVsZW1lbnROUyhlLG4pfWZ1bmN0aW9uIGUoKXtyZXR1cm4g
dGhpcy5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhuLnNwYWNlLG4u
bG9jYWwpfXJldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBuP246KG49YW8ubnMu
cXVhbGlmeShuKSkubG9jYWw/ZTp0fWZ1bmN0aW9uIEYoKXt2YXIgbj10aGlz
LnBhcmVudE5vZGU7biYmbi5yZW1vdmVDaGlsZCh0aGlzKX1mdW5jdGlvbiBI
KG4pe3JldHVybntfX2RhdGFfXzpufX1mdW5jdGlvbiBPKG4pe3JldHVybiBm
dW5jdGlvbigpe3JldHVybiBBbyh0aGlzLG4pfX1mdW5jdGlvbiBJKG4pe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RofHwobj1lKSxmdW5jdGlvbih0LGUpe3Jl
dHVybiB0JiZlP24odC5fX2RhdGFfXyxlLl9fZGF0YV9fKTohdC0hZX19ZnVu
Y3Rpb24gWShuLHQpe2Zvcih2YXIgZT0wLHI9bi5sZW5ndGg7cj5lO2UrKylm
b3IodmFyIGksdT1uW2VdLG89MCxhPXUubGVuZ3RoO2E+bztvKyspKGk9dVtv
XSkmJnQoaSxvLGUpO3JldHVybiBufWZ1bmN0aW9uIFoobil7cmV0dXJuIGtv
KG4scW8pLG59ZnVuY3Rpb24gVihuKXt2YXIgdCxlO3JldHVybiBmdW5jdGlv
bihyLGksdSl7dmFyIG8sYT1uW3VdLnVwZGF0ZSxsPWEubGVuZ3RoO2Zvcih1
IT1lJiYoZT11LHQ9MCksaT49dCYmKHQ9aSsxKTshKG89YVt0XSkmJisrdDxs
Oyk7cmV0dXJuIG99fWZ1bmN0aW9uIFgobix0LGUpe2Z1bmN0aW9uIHIoKXt2
YXIgdD10aGlzW29dO3QmJih0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIobix0
LHQuJCksZGVsZXRlIHRoaXNbb10pfWZ1bmN0aW9uIGkoKXt2YXIgaT1sKHQs
Y28oYXJndW1lbnRzKSk7ci5jYWxsKHRoaXMpLHRoaXMuYWRkRXZlbnRMaXN0
ZW5lcihuLHRoaXNbb109aSxpLiQ9ZSksaS5fPXR9ZnVuY3Rpb24gdSgpe3Zh
ciB0LGU9bmV3IFJlZ0V4cCgiXl9fb24oW14uXSspIithby5yZXF1b3RlKG4p
KyIkIik7Zm9yKHZhciByIGluIHRoaXMpaWYodD1yLm1hdGNoKGUpKXt2YXIg
aT10aGlzW3JdO3RoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcih0WzFdLGksaS4k
KSxkZWxldGUgdGhpc1tyXX19dmFyIG89Il9fb24iK24sYT1uLmluZGV4T2Yo
Ii4iKSxsPSQ7YT4wJiYobj1uLnNsaWNlKDAsYSkpO3ZhciBjPVRvLmdldChu
KTtyZXR1cm4gYyYmKG49YyxsPUIpLGE/dD9pOnI6dD9iOnV9ZnVuY3Rpb24g
JChuLHQpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgcj1hby5ldmVudDthby5l
dmVudD1lLHRbMF09dGhpcy5fX2RhdGFfXzt0cnl7bi5hcHBseSh0aGlzLHQp
fWZpbmFsbHl7YW8uZXZlbnQ9cn19fWZ1bmN0aW9uIEIobix0KXt2YXIgZT0k
KG4sdCk7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciB0PXRoaXMscj1uLnJlbGF0
ZWRUYXJnZXQ7ciYmKHI9PT10fHw4JnIuY29tcGFyZURvY3VtZW50UG9zaXRp
b24odCkpfHxlLmNhbGwodCxuKX19ZnVuY3Rpb24gVyhlKXt2YXIgcj0iLmRy
YWdzdXBwcmVzcy0iKyArK0RvLGk9ImNsaWNrIityLHU9YW8uc2VsZWN0KHQo
ZSkpLm9uKCJ0b3VjaG1vdmUiK3IsUykub24oImRyYWdzdGFydCIrcixTKS5v
bigic2VsZWN0c3RhcnQiK3IsUyk7aWYobnVsbD09Um8mJihSbz0ib25zZWxl
Y3RzdGFydCJpbiBlPyExOngoZS5zdHlsZSwidXNlclNlbGVjdCIpKSxSbyl7
dmFyIG89bihlKS5zdHlsZSxhPW9bUm9dO29bUm9dPSJub25lIn1yZXR1cm4g
ZnVuY3Rpb24obil7aWYodS5vbihyLG51bGwpLFJvJiYob1tSb109YSksbil7
dmFyIHQ9ZnVuY3Rpb24oKXt1Lm9uKGksbnVsbCl9O3Uub24oaSxmdW5jdGlv
bigpe1MoKSx0KCl9LCEwKSxzZXRUaW1lb3V0KHQsMCl9fX1mdW5jdGlvbiBK
KG4sZSl7ZS5jaGFuZ2VkVG91Y2hlcyYmKGU9ZS5jaGFuZ2VkVG91Y2hlc1sw
XSk7dmFyIHI9bi5vd25lclNWR0VsZW1lbnR8fG47aWYoci5jcmVhdGVTVkdQ
b2ludCl7dmFyIGk9ci5jcmVhdGVTVkdQb2ludCgpO2lmKDA+UG8pe3ZhciB1
PXQobik7aWYodS5zY3JvbGxYfHx1LnNjcm9sbFkpe3I9YW8uc2VsZWN0KCJi
b2R5IikuYXBwZW5kKCJzdmciKS5zdHlsZSh7cG9zaXRpb246ImFic29sdXRl
Iix0b3A6MCxsZWZ0OjAsbWFyZ2luOjAscGFkZGluZzowLGJvcmRlcjoibm9u
ZSJ9LCJpbXBvcnRhbnQiKTt2YXIgbz1yWzBdWzBdLmdldFNjcmVlbkNUTSgp
O1BvPSEoby5mfHxvLmUpLHIucmVtb3ZlKCl9fXJldHVybiBQbz8oaS54PWUu
cGFnZVgsaS55PWUucGFnZVkpOihpLng9ZS5jbGllbnRYLGkueT1lLmNsaWVu
dFkpLGk9aS5tYXRyaXhUcmFuc2Zvcm0obi5nZXRTY3JlZW5DVE0oKS5pbnZl
cnNlKCkpLFtpLngsaS55XX12YXIgYT1uLmdldEJvdW5kaW5nQ2xpZW50UmVj
dCgpO3JldHVybltlLmNsaWVudFgtYS5sZWZ0LW4uY2xpZW50TGVmdCxlLmNs
aWVudFktYS50b3Atbi5jbGllbnRUb3BdfWZ1bmN0aW9uIEcoKXtyZXR1cm4g
YW8uZXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0uaWRlbnRpZmllcn1mdW5jdGlv
biBLKG4pe3JldHVybiBuPjA/MTowPm4/LTE6MH1mdW5jdGlvbiBRKG4sdCxl
KXtyZXR1cm4odFswXS1uWzBdKSooZVsxXS1uWzFdKS0odFsxXS1uWzFdKSoo
ZVswXS1uWzBdKX1mdW5jdGlvbiBubihuKXtyZXR1cm4gbj4xPzA6LTE+bj9G
bzpNYXRoLmFjb3Mobil9ZnVuY3Rpb24gdG4obil7cmV0dXJuIG4+MT9Jbzot
MT5uPy1JbzpNYXRoLmFzaW4obil9ZnVuY3Rpb24gZW4obil7cmV0dXJuKChu
PU1hdGguZXhwKG4pKS0xL24pLzJ9ZnVuY3Rpb24gcm4obil7cmV0dXJuKChu
PU1hdGguZXhwKG4pKSsxL24pLzJ9ZnVuY3Rpb24gdW4obil7cmV0dXJuKChu
PU1hdGguZXhwKDIqbikpLTEpLyhuKzEpfWZ1bmN0aW9uIG9uKG4pe3JldHVy
bihuPU1hdGguc2luKG4vMikpKm59ZnVuY3Rpb24gYW4oKXt9ZnVuY3Rpb24g
bG4obix0LGUpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgbG4/KHRoaXMuaD0r
bix0aGlzLnM9K3Qsdm9pZCh0aGlzLmw9K2UpKTphcmd1bWVudHMubGVuZ3Ro
PDI/biBpbnN0YW5jZW9mIGxuP25ldyBsbihuLmgsbi5zLG4ubCk6X24oIiIr
bix3bixsbik6bmV3IGxuKG4sdCxlKX1mdW5jdGlvbiBjbihuLHQsZSl7ZnVu
Y3Rpb24gcihuKXtyZXR1cm4gbj4zNjA/bi09MzYwOjA+biYmKG4rPTM2MCks
NjA+bj91KyhvLXUpKm4vNjA6MTgwPm4/bzoyNDA+bj91KyhvLXUpKigyNDAt
bikvNjA6dX1mdW5jdGlvbiBpKG4pe3JldHVybiBNYXRoLnJvdW5kKDI1NSpy
KG4pKX12YXIgdSxvO3JldHVybiBuPWlzTmFOKG4pPzA6KG4lPTM2MCk8MD9u
KzM2MDpuLHQ9aXNOYU4odCk/MDowPnQ/MDp0PjE/MTp0LGU9MD5lPzA6ZT4x
PzE6ZSxvPS41Pj1lP2UqKDErdCk6ZSt0LWUqdCx1PTIqZS1vLG5ldyBtbihp
KG4rMTIwKSxpKG4pLGkobi0xMjApKX1mdW5jdGlvbiBmbihuLHQsZSl7cmV0
dXJuIHRoaXMgaW5zdGFuY2VvZiBmbj8odGhpcy5oPStuLHRoaXMuYz0rdCx2
b2lkKHRoaXMubD0rZSkpOmFyZ3VtZW50cy5sZW5ndGg8Mj9uIGluc3RhbmNl
b2YgZm4/bmV3IGZuKG4uaCxuLmMsbi5sKTpuIGluc3RhbmNlb2YgaG4/Z24o
bi5sLG4uYSxuLmIpOmduKChuPVNuKChuPWFvLnJnYihuKSkucixuLmcsbi5i
KSkubCxuLmEsbi5iKTpuZXcgZm4obix0LGUpfWZ1bmN0aW9uIHNuKG4sdCxl
KXtyZXR1cm4gaXNOYU4obikmJihuPTApLGlzTmFOKHQpJiYodD0wKSxuZXcg
aG4oZSxNYXRoLmNvcyhuKj1ZbykqdCxNYXRoLnNpbihuKSp0KX1mdW5jdGlv
biBobihuLHQsZSl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBobj8odGhpcy5s
PStuLHRoaXMuYT0rdCx2b2lkKHRoaXMuYj0rZSkpOmFyZ3VtZW50cy5sZW5n
dGg8Mj9uIGluc3RhbmNlb2YgaG4/bmV3IGhuKG4ubCxuLmEsbi5iKTpuIGlu
c3RhbmNlb2YgZm4/c24obi5oLG4uYyxuLmwpOlNuKChuPW1uKG4pKS5yLG4u
ZyxuLmIpOm5ldyBobihuLHQsZSl9ZnVuY3Rpb24gcG4obix0LGUpe3ZhciBy
PShuKzE2KS8xMTYsaT1yK3QvNTAwLHU9ci1lLzIwMDtyZXR1cm4gaT12bihp
KSpuYSxyPXZuKHIpKnRhLHU9dm4odSkqZWEsbmV3IG1uKHluKDMuMjQwNDU0
MippLTEuNTM3MTM4NSpyLS40OTg1MzE0KnUpLHluKC0uOTY5MjY2KmkrMS44
NzYwMTA4KnIrLjA0MTU1Nip1KSx5biguMDU1NjQzNCppLS4yMDQwMjU5KnIr
MS4wNTcyMjUyKnUpKX1mdW5jdGlvbiBnbihuLHQsZSl7cmV0dXJuIG4+MD9u
ZXcgZm4oTWF0aC5hdGFuMihlLHQpKlpvLE1hdGguc3FydCh0KnQrZSplKSxu
KTpuZXcgZm4oTmFOLE5hTixuKX1mdW5jdGlvbiB2bihuKXtyZXR1cm4gbj4u
MjA2ODkzMDM0P24qbipuOihuLTQvMjkpLzcuNzg3MDM3fWZ1bmN0aW9uIGRu
KG4pe3JldHVybiBuPi4wMDg4NTY/TWF0aC5wb3cobiwxLzMpOjcuNzg3MDM3
Km4rNC8yOX1mdW5jdGlvbiB5bihuKXtyZXR1cm4gTWF0aC5yb3VuZCgyNTUq
KC4wMDMwND49bj8xMi45MipuOjEuMDU1Kk1hdGgucG93KG4sMS8yLjQpLS4w
NTUpKX1mdW5jdGlvbiBtbihuLHQsZSl7cmV0dXJuIHRoaXMgaW5zdGFuY2Vv
ZiBtbj8odGhpcy5yPX5+bix0aGlzLmc9fn50LHZvaWQodGhpcy5iPX5+ZSkp
OmFyZ3VtZW50cy5sZW5ndGg8Mj9uIGluc3RhbmNlb2YgbW4/bmV3IG1uKG4u
cixuLmcsbi5iKTpfbigiIituLG1uLGNuKTpuZXcgbW4obix0LGUpfWZ1bmN0
aW9uIE1uKG4pe3JldHVybiBuZXcgbW4obj4+MTYsbj4+OCYyNTUsMjU1Jm4p
fWZ1bmN0aW9uIHhuKG4pe3JldHVybiBNbihuKSsiIn1mdW5jdGlvbiBibihu
KXtyZXR1cm4gMTY+bj8iMCIrTWF0aC5tYXgoMCxuKS50b1N0cmluZygxNik6
TWF0aC5taW4oMjU1LG4pLnRvU3RyaW5nKDE2KX1mdW5jdGlvbiBfbihuLHQs
ZSl7dmFyIHIsaSx1LG89MCxhPTAsbD0wO2lmKHI9LyhbYS16XSspXCgoLiop
XCkvLmV4ZWMobj1uLnRvTG93ZXJDYXNlKCkpKXN3aXRjaChpPXJbMl0uc3Bs
aXQoIiwiKSxyWzFdKXtjYXNlImhzbCI6cmV0dXJuIGUocGFyc2VGbG9hdChp
WzBdKSxwYXJzZUZsb2F0KGlbMV0pLzEwMCxwYXJzZUZsb2F0KGlbMl0pLzEw
MCk7Y2FzZSJyZ2IiOnJldHVybiB0KE5uKGlbMF0pLE5uKGlbMV0pLE5uKGlb
Ml0pKX1yZXR1cm4odT11YS5nZXQobikpP3QodS5yLHUuZyx1LmIpOihudWxs
PT1ufHwiIyIhPT1uLmNoYXJBdCgwKXx8aXNOYU4odT1wYXJzZUludChuLnNs
aWNlKDEpLDE2KSl8fCg0PT09bi5sZW5ndGg/KG89KDM4NDAmdSk+PjQsbz1v
Pj40fG8sYT0yNDAmdSxhPWE+PjR8YSxsPTE1JnUsbD1sPDw0fGwpOjc9PT1u
Lmxlbmd0aCYmKG89KDE2NzExNjgwJnUpPj4xNixhPSg2NTI4MCZ1KT4+OCxs
PTI1NSZ1KSksdChvLGEsbCkpfWZ1bmN0aW9uIHduKG4sdCxlKXt2YXIgcixp
LHU9TWF0aC5taW4obi89MjU1LHQvPTI1NSxlLz0yNTUpLG89TWF0aC5tYXgo
bix0LGUpLGE9by11LGw9KG8rdSkvMjtyZXR1cm4gYT8oaT0uNT5sP2EvKG8r
dSk6YS8oMi1vLXUpLHI9bj09bz8odC1lKS9hKyhlPnQ/NjowKTp0PT1vPyhl
LW4pL2ErMjoobi10KS9hKzQscio9NjApOihyPU5hTixpPWw+MCYmMT5sPzA6
ciksbmV3IGxuKHIsaSxsKX1mdW5jdGlvbiBTbihuLHQsZSl7bj1rbihuKSx0
PWtuKHQpLGU9a24oZSk7dmFyIHI9ZG4oKC40MTI0NTY0Km4rLjM1NzU3NjEq
dCsuMTgwNDM3NSplKS9uYSksaT1kbigoLjIxMjY3MjkqbisuNzE1MTUyMip0
Ky4wNzIxNzUqZSkvdGEpLHU9ZG4oKC4wMTkzMzM5Km4rLjExOTE5Mip0Ky45
NTAzMDQxKmUpL2VhKTtyZXR1cm4gaG4oMTE2KmktMTYsNTAwKihyLWkpLDIw
MCooaS11KSl9ZnVuY3Rpb24ga24obil7cmV0dXJuKG4vPTI1NSk8PS4wNDA0
NT9uLzEyLjkyOk1hdGgucG93KChuKy4wNTUpLzEuMDU1LDIuNCl9ZnVuY3Rp
b24gTm4obil7dmFyIHQ9cGFyc2VGbG9hdChuKTtyZXR1cm4iJSI9PT1uLmNo
YXJBdChuLmxlbmd0aC0xKT9NYXRoLnJvdW5kKDIuNTUqdCk6dH1mdW5jdGlv
biBFbihuKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOmZ1bmN0aW9u
KCl7cmV0dXJuIG59fWZ1bmN0aW9uIEFuKG4pe3JldHVybiBmdW5jdGlvbih0
LGUscil7cmV0dXJuIDI9PT1hcmd1bWVudHMubGVuZ3RoJiYiZnVuY3Rpb24i
PT10eXBlb2YgZSYmKHI9ZSxlPW51bGwpLENuKHQsZSxuLHIpfX1mdW5jdGlv
biBDbihuLHQsZSxyKXtmdW5jdGlvbiBpKCl7dmFyIG4sdD1sLnN0YXR1cztp
ZighdCYmTG4obCl8fHQ+PTIwMCYmMzAwPnR8fDMwND09PXQpe3RyeXtuPWUu
Y2FsbCh1LGwpfWNhdGNoKHIpe3JldHVybiB2b2lkIG8uZXJyb3IuY2FsbCh1
LHIpfW8ubG9hZC5jYWxsKHUsbil9ZWxzZSBvLmVycm9yLmNhbGwodSxsKX12
YXIgdT17fSxvPWFvLmRpc3BhdGNoKCJiZWZvcmVzZW5kIiwicHJvZ3Jlc3Mi
LCJsb2FkIiwiZXJyb3IiKSxhPXt9LGw9bmV3IFhNTEh0dHBSZXF1ZXN0LGM9
bnVsbDtyZXR1cm4hdGhpcy5YRG9tYWluUmVxdWVzdHx8IndpdGhDcmVkZW50
aWFscyJpbiBsfHwhL14oaHR0cChzKT86KT9cL1wvLy50ZXN0KG4pfHwobD1u
ZXcgWERvbWFpblJlcXVlc3QpLCJvbmxvYWQiaW4gbD9sLm9ubG9hZD1sLm9u
ZXJyb3I9aTpsLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe2wucmVh
ZHlTdGF0ZT4zJiZpKCl9LGwub25wcm9ncmVzcz1mdW5jdGlvbihuKXt2YXIg
dD1hby5ldmVudDthby5ldmVudD1uO3RyeXtvLnByb2dyZXNzLmNhbGwodSxs
KX1maW5hbGx5e2FvLmV2ZW50PXR9fSx1LmhlYWRlcj1mdW5jdGlvbihuLHQp
e3JldHVybiBuPShuKyIiKS50b0xvd2VyQ2FzZSgpLGFyZ3VtZW50cy5sZW5n
dGg8Mj9hW25dOihudWxsPT10P2RlbGV0ZSBhW25dOmFbbl09dCsiIix1KX0s
dS5taW1lVHlwZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8odD1udWxsPT1uP251bGw6bisiIix1KTp0fSx1LnJlc3BvbnNlVHlwZT1m
dW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz1uLHUpOmN9
LHUucmVzcG9uc2U9ZnVuY3Rpb24obil7cmV0dXJuIGU9bix1fSxbImdldCIs
InBvc3QiXS5mb3JFYWNoKGZ1bmN0aW9uKG4pe3Vbbl09ZnVuY3Rpb24oKXty
ZXR1cm4gdS5zZW5kLmFwcGx5KHUsW25dLmNvbmNhdChjbyhhcmd1bWVudHMp
KSl9fSksdS5zZW5kPWZ1bmN0aW9uKGUscixpKXtpZigyPT09YXJndW1lbnRz
Lmxlbmd0aCYmImZ1bmN0aW9uIj09dHlwZW9mIHImJihpPXIscj1udWxsKSxs
Lm9wZW4oZSxuLCEwKSxudWxsPT10fHwiYWNjZXB0ImluIGF8fChhLmFjY2Vw
dD10KyIsKi8qIiksbC5zZXRSZXF1ZXN0SGVhZGVyKWZvcih2YXIgZiBpbiBh
KWwuc2V0UmVxdWVzdEhlYWRlcihmLGFbZl0pO3JldHVybiBudWxsIT10JiZs
Lm92ZXJyaWRlTWltZVR5cGUmJmwub3ZlcnJpZGVNaW1lVHlwZSh0KSxudWxs
IT1jJiYobC5yZXNwb25zZVR5cGU9YyksbnVsbCE9aSYmdS5vbigiZXJyb3Ii
LGkpLm9uKCJsb2FkIixmdW5jdGlvbihuKXtpKG51bGwsbil9KSxvLmJlZm9y
ZXNlbmQuY2FsbCh1LGwpLGwuc2VuZChudWxsPT1yP251bGw6ciksdX0sdS5h
Ym9ydD1mdW5jdGlvbigpe3JldHVybiBsLmFib3J0KCksdX0sYW8ucmViaW5k
KHUsbywib24iKSxudWxsPT1yP3U6dS5nZXQoem4ocikpfWZ1bmN0aW9uIHpu
KG4pe3JldHVybiAxPT09bi5sZW5ndGg/ZnVuY3Rpb24odCxlKXtuKG51bGw9
PXQ/ZTpudWxsKX06bn1mdW5jdGlvbiBMbihuKXt2YXIgdD1uLnJlc3BvbnNl
VHlwZTtyZXR1cm4gdCYmInRleHQiIT09dD9uLnJlc3BvbnNlOm4ucmVzcG9u
c2VUZXh0fWZ1bmN0aW9uIHFuKG4sdCxlKXt2YXIgcj1hcmd1bWVudHMubGVu
Z3RoOzI+ciYmKHQ9MCksMz5yJiYoZT1EYXRlLm5vdygpKTt2YXIgaT1lK3Qs
dT17YzpuLHQ6aSxuOm51bGx9O3JldHVybiBhYT9hYS5uPXU6b2E9dSxhYT11
LGxhfHwoY2E9Y2xlYXJUaW1lb3V0KGNhKSxsYT0xLGZhKFRuKSksdX1mdW5j
dGlvbiBUbigpe3ZhciBuPVJuKCksdD1EbigpLW47dD4yND8oaXNGaW5pdGUo
dCkmJihjbGVhclRpbWVvdXQoY2EpLGNhPXNldFRpbWVvdXQoVG4sdCkpLGxh
PTApOihsYT0xLGZhKFRuKSl9ZnVuY3Rpb24gUm4oKXtmb3IodmFyIG49RGF0
ZS5ub3coKSx0PW9hO3Q7KW4+PXQudCYmdC5jKG4tdC50KSYmKHQuYz1udWxs
KSx0PXQubjtyZXR1cm4gbn1mdW5jdGlvbiBEbigpe2Zvcih2YXIgbix0PW9h
LGU9MS8wO3Q7KXQuYz8odC50PGUmJihlPXQudCksdD0obj10KS5uKTp0PW4/
bi5uPXQubjpvYT10Lm47cmV0dXJuIGFhPW4sZX1mdW5jdGlvbiBQbihuLHQp
e3JldHVybiB0LShuP01hdGguY2VpbChNYXRoLmxvZyhuKS9NYXRoLkxOMTAp
OjEpfWZ1bmN0aW9uIFVuKG4sdCl7dmFyIGU9TWF0aC5wb3coMTAsMyp4byg4
LXQpKTtyZXR1cm57c2NhbGU6dD44P2Z1bmN0aW9uKG4pe3JldHVybiBuL2V9
OmZ1bmN0aW9uKG4pe3JldHVybiBuKmV9LHN5bWJvbDpufX1mdW5jdGlvbiBq
bihuKXt2YXIgdD1uLmRlY2ltYWwsZT1uLnRob3VzYW5kcyxyPW4uZ3JvdXBp
bmcsaT1uLmN1cnJlbmN5LHU9ciYmZT9mdW5jdGlvbihuLHQpe2Zvcih2YXIg
aT1uLmxlbmd0aCx1PVtdLG89MCxhPXJbMF0sbD0wO2k+MCYmYT4wJiYobCth
KzE+dCYmKGE9TWF0aC5tYXgoMSx0LWwpKSx1LnB1c2gobi5zdWJzdHJpbmco
aS09YSxpK2EpKSwhKChsKz1hKzEpPnQpKTspYT1yW289KG8rMSklci5sZW5n
dGhdO3JldHVybiB1LnJldmVyc2UoKS5qb2luKGUpfTptO3JldHVybiBmdW5j
dGlvbihuKXt2YXIgZT1oYS5leGVjKG4pLHI9ZVsxXXx8IiAiLG89ZVsyXXx8
Ij4iLGE9ZVszXXx8Ii0iLGw9ZVs0XXx8IiIsYz1lWzVdLGY9K2VbNl0scz1l
WzddLGg9ZVs4XSxwPWVbOV0sZz0xLHY9IiIsZD0iIix5PSExLG09ITA7c3dp
dGNoKGgmJihoPStoLnN1YnN0cmluZygxKSksKGN8fCIwIj09PXImJiI9Ij09
PW8pJiYoYz1yPSIwIixvPSI9IikscCl7Y2FzZSJuIjpzPSEwLHA9ImciO2Jy
ZWFrO2Nhc2UiJSI6Zz0xMDAsZD0iJSIscD0iZiI7YnJlYWs7Y2FzZSJwIjpn
PTEwMCxkPSIlIixwPSJyIjticmVhaztjYXNlImIiOmNhc2UibyI6Y2FzZSJ4
IjpjYXNlIlgiOiIjIj09PWwmJih2PSIwIitwLnRvTG93ZXJDYXNlKCkpO2Nh
c2UiYyI6bT0hMTtjYXNlImQiOnk9ITAsaD0wO2JyZWFrO2Nhc2UicyI6Zz0t
MSxwPSJyIn0iJCI9PT1sJiYodj1pWzBdLGQ9aVsxXSksInIiIT1wfHxofHwo
cD0iZyIpLG51bGwhPWgmJigiZyI9PXA/aD1NYXRoLm1heCgxLE1hdGgubWlu
KDIxLGgpKToiZSIhPXAmJiJmIiE9cHx8KGg9TWF0aC5tYXgoMCxNYXRoLm1p
bigyMCxoKSkpKSxwPXBhLmdldChwKXx8Rm47dmFyIE09YyYmcztyZXR1cm4g
ZnVuY3Rpb24obil7dmFyIGU9ZDtpZih5JiZuJTEpcmV0dXJuIiI7dmFyIGk9
MD5ufHwwPT09biYmMD4xL24/KG49LW4sIi0iKToiLSI9PT1hPyIiOmE7aWYo
MD5nKXt2YXIgbD1hby5mb3JtYXRQcmVmaXgobixoKTtuPWwuc2NhbGUobiks
ZT1sLnN5bWJvbCtkfWVsc2Ugbio9ZztuPXAobixoKTt2YXIgeCxiLF89bi5s
YXN0SW5kZXhPZigiLiIpO2lmKDA+Xyl7dmFyIHc9bT9uLmxhc3RJbmRleE9m
KCJlIik6LTE7MD53Pyh4PW4sYj0iIik6KHg9bi5zdWJzdHJpbmcoMCx3KSxi
PW4uc3Vic3RyaW5nKHcpKX1lbHNlIHg9bi5zdWJzdHJpbmcoMCxfKSxiPXQr
bi5zdWJzdHJpbmcoXysxKTshYyYmcyYmKHg9dSh4LDEvMCkpO3ZhciBTPXYu
bGVuZ3RoK3gubGVuZ3RoK2IubGVuZ3RoKyhNPzA6aS5sZW5ndGgpLGs9Zj5T
P25ldyBBcnJheShTPWYtUysxKS5qb2luKHIpOiIiO3JldHVybiBNJiYoeD11
KGsreCxrLmxlbmd0aD9mLWIubGVuZ3RoOjEvMCkpLGkrPXYsbj14K2IsKCI8
Ij09PW8/aStuK2s6Ij4iPT09bz9rK2krbjoiXiI9PT1vP2suc3Vic3RyaW5n
KDAsUz4+PTEpK2krbitrLnN1YnN0cmluZyhTKTppKyhNP246aytuKSkrZX19
fWZ1bmN0aW9uIEZuKG4pe3JldHVybiBuKyIifWZ1bmN0aW9uIEhuKCl7dGhp
cy5fPW5ldyBEYXRlKGFyZ3VtZW50cy5sZW5ndGg+MT9EYXRlLlVUQy5hcHBs
eSh0aGlzLGFyZ3VtZW50cyk6YXJndW1lbnRzWzBdKX1mdW5jdGlvbiBPbihu
LHQsZSl7ZnVuY3Rpb24gcih0KXt2YXIgZT1uKHQpLHI9dShlLDEpO3JldHVy
biByLXQ+dC1lP2U6cn1mdW5jdGlvbiBpKGUpe3JldHVybiB0KGU9bihuZXcg
dmEoZS0xKSksMSksZX1mdW5jdGlvbiB1KG4sZSl7cmV0dXJuIHQobj1uZXcg
dmEoK24pLGUpLG59ZnVuY3Rpb24gbyhuLHIsdSl7dmFyIG89aShuKSxhPVtd
O2lmKHU+MSlmb3IoO3I+bzspZShvKSV1fHxhLnB1c2gobmV3IERhdGUoK28p
KSx0KG8sMSk7ZWxzZSBmb3IoO3I+bzspYS5wdXNoKG5ldyBEYXRlKCtvKSks
dChvLDEpO3JldHVybiBhfWZ1bmN0aW9uIGEobix0LGUpe3RyeXt2YT1Ibjt2
YXIgcj1uZXcgSG47cmV0dXJuIHIuXz1uLG8ocix0LGUpfWZpbmFsbHl7dmE9
RGF0ZX19bi5mbG9vcj1uLG4ucm91bmQ9cixuLmNlaWw9aSxuLm9mZnNldD11
LG4ucmFuZ2U9bzt2YXIgbD1uLnV0Yz1JbihuKTtyZXR1cm4gbC5mbG9vcj1s
LGwucm91bmQ9SW4ociksbC5jZWlsPUluKGkpLGwub2Zmc2V0PUluKHUpLGwu
cmFuZ2U9YSxufWZ1bmN0aW9uIEluKG4pe3JldHVybiBmdW5jdGlvbih0LGUp
e3RyeXt2YT1Ibjt2YXIgcj1uZXcgSG47cmV0dXJuIHIuXz10LG4ocixlKS5f
fWZpbmFsbHl7dmE9RGF0ZX19fWZ1bmN0aW9uIFluKG4pe2Z1bmN0aW9uIHQo
bil7ZnVuY3Rpb24gdCh0KXtmb3IodmFyIGUsaSx1LG89W10sYT0tMSxsPTA7
KythPHI7KTM3PT09bi5jaGFyQ29kZUF0KGEpJiYoby5wdXNoKG4uc2xpY2Uo
bCxhKSksbnVsbCE9KGk9eWFbZT1uLmNoYXJBdCgrK2EpXSkmJihlPW4uY2hh
ckF0KCsrYSkpLCh1PUFbZV0pJiYoZT11KHQsbnVsbD09aT8iZSI9PT1lPyIg
IjoiMCI6aSkpLG8ucHVzaChlKSxsPWErMSk7cmV0dXJuIG8ucHVzaChuLnNs
aWNlKGwsYSkpLG8uam9pbigiIil9dmFyIHI9bi5sZW5ndGg7cmV0dXJuIHQu
cGFyc2U9ZnVuY3Rpb24odCl7dmFyIHI9e3k6MTkwMCxtOjAsZDoxLEg6MCxN
OjAsUzowLEw6MCxaOm51bGx9LGk9ZShyLG4sdCwwKTtpZihpIT10Lmxlbmd0
aClyZXR1cm4gbnVsbDsicCJpbiByJiYoci5IPXIuSCUxMisxMipyLnApO3Zh
ciB1PW51bGwhPXIuWiYmdmEhPT1IbixvPW5ldyh1P0huOnZhKTtyZXR1cm4i
aiJpbiByP28uc2V0RnVsbFllYXIoci55LDAsci5qKToiVyJpbiByfHwiVSJp
biByPygidyJpbiByfHwoci53PSJXImluIHI/MTowKSxvLnNldEZ1bGxZZWFy
KHIueSwwLDEpLG8uc2V0RnVsbFllYXIoci55LDAsIlciaW4gcj8oci53KzYp
JTcrNypyLlctKG8uZ2V0RGF5KCkrNSklNzpyLncrNypyLlUtKG8uZ2V0RGF5
KCkrNiklNykpOm8uc2V0RnVsbFllYXIoci55LHIubSxyLmQpLG8uc2V0SG91
cnMoci5IKyhyLlovMTAwfDApLHIuTStyLlolMTAwLHIuUyxyLkwpLHU/by5f
Om99LHQudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gbn0sdH1mdW5jdGlv
biBlKG4sdCxlLHIpe2Zvcih2YXIgaSx1LG8sYT0wLGw9dC5sZW5ndGgsYz1l
Lmxlbmd0aDtsPmE7KXtpZihyPj1jKXJldHVybi0xO2lmKGk9dC5jaGFyQ29k
ZUF0KGErKyksMzc9PT1pKXtpZihvPXQuY2hhckF0KGErKyksdT1DW28gaW4g
eWE/dC5jaGFyQXQoYSsrKTpvXSwhdXx8KHI9dShuLGUscikpPDApcmV0dXJu
LTF9ZWxzZSBpZihpIT1lLmNoYXJDb2RlQXQocisrKSlyZXR1cm4tMX1yZXR1
cm4gcn1mdW5jdGlvbiByKG4sdCxlKXtfLmxhc3RJbmRleD0wO3ZhciByPV8u
ZXhlYyh0LnNsaWNlKGUpKTtyZXR1cm4gcj8obi53PXcuZ2V0KHJbMF0udG9M
b3dlckNhc2UoKSksZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gaShuLHQs
ZSl7eC5sYXN0SW5kZXg9MDt2YXIgcj14LmV4ZWModC5zbGljZShlKSk7cmV0
dXJuIHI/KG4udz1iLmdldChyWzBdLnRvTG93ZXJDYXNlKCkpLGUrclswXS5s
ZW5ndGgpOi0xfWZ1bmN0aW9uIHUobix0LGUpe04ubGFzdEluZGV4PTA7dmFy
IHI9Ti5leGVjKHQuc2xpY2UoZSkpO3JldHVybiByPyhuLm09RS5nZXQoclsw
XS50b0xvd2VyQ2FzZSgpKSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBv
KG4sdCxlKXtTLmxhc3RJbmRleD0wO3ZhciByPVMuZXhlYyh0LnNsaWNlKGUp
KTtyZXR1cm4gcj8obi5tPWsuZ2V0KHJbMF0udG9Mb3dlckNhc2UoKSksZSty
WzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gYShuLHQscil7cmV0dXJuIGUobixB
LmMudG9TdHJpbmcoKSx0LHIpfWZ1bmN0aW9uIGwobix0LHIpe3JldHVybiBl
KG4sQS54LnRvU3RyaW5nKCksdCxyKX1mdW5jdGlvbiBjKG4sdCxyKXtyZXR1
cm4gZShuLEEuWC50b1N0cmluZygpLHQscil9ZnVuY3Rpb24gZihuLHQsZSl7
dmFyIHI9TS5nZXQodC5zbGljZShlLGUrPTIpLnRvTG93ZXJDYXNlKCkpO3Jl
dHVybiBudWxsPT1yPy0xOihuLnA9cixlKX12YXIgcz1uLmRhdGVUaW1lLGg9
bi5kYXRlLHA9bi50aW1lLGc9bi5wZXJpb2RzLHY9bi5kYXlzLGQ9bi5zaG9y
dERheXMseT1uLm1vbnRocyxtPW4uc2hvcnRNb250aHM7dC51dGM9ZnVuY3Rp
b24obil7ZnVuY3Rpb24gZShuKXt0cnl7dmE9SG47dmFyIHQ9bmV3IHZhO3Jl
dHVybiB0Ll89bixyKHQpfWZpbmFsbHl7dmE9RGF0ZX19dmFyIHI9dChuKTty
ZXR1cm4gZS5wYXJzZT1mdW5jdGlvbihuKXt0cnl7dmE9SG47dmFyIHQ9ci5w
YXJzZShuKTtyZXR1cm4gdCYmdC5ffWZpbmFsbHl7dmE9RGF0ZX19LGUudG9T
dHJpbmc9ci50b1N0cmluZyxlfSx0Lm11bHRpPXQudXRjLm11bHRpPWN0O3Zh
ciBNPWFvLm1hcCgpLHg9Vm4odiksYj1Ybih2KSxfPVZuKGQpLHc9WG4oZCks
Uz1Wbih5KSxrPVhuKHkpLE49Vm4obSksRT1YbihtKTtnLmZvckVhY2goZnVu
Y3Rpb24obix0KXtNLnNldChuLnRvTG93ZXJDYXNlKCksdCl9KTt2YXIgQT17
YTpmdW5jdGlvbihuKXtyZXR1cm4gZFtuLmdldERheSgpXX0sQTpmdW5jdGlv
bihuKXtyZXR1cm4gdltuLmdldERheSgpXX0sYjpmdW5jdGlvbihuKXtyZXR1
cm4gbVtuLmdldE1vbnRoKCldfSxCOmZ1bmN0aW9uKG4pe3JldHVybiB5W24u
Z2V0TW9udGgoKV19LGM6dChzKSxkOmZ1bmN0aW9uKG4sdCl7cmV0dXJuIFpu
KG4uZ2V0RGF0ZSgpLHQsMil9LGU6ZnVuY3Rpb24obix0KXtyZXR1cm4gWm4o
bi5nZXREYXRlKCksdCwyKX0sSDpmdW5jdGlvbihuLHQpe3JldHVybiBabihu
LmdldEhvdXJzKCksdCwyKX0sSTpmdW5jdGlvbihuLHQpe3JldHVybiBabihu
LmdldEhvdXJzKCklMTJ8fDEyLHQsMil9LGo6ZnVuY3Rpb24obix0KXtyZXR1
cm4gWm4oMStnYS5kYXlPZlllYXIobiksdCwzKX0sTDpmdW5jdGlvbihuLHQp
e3JldHVybiBabihuLmdldE1pbGxpc2Vjb25kcygpLHQsMyl9LG06ZnVuY3Rp
b24obix0KXtyZXR1cm4gWm4obi5nZXRNb250aCgpKzEsdCwyKX0sTTpmdW5j
dGlvbihuLHQpe3JldHVybiBabihuLmdldE1pbnV0ZXMoKSx0LDIpfSxwOmZ1
bmN0aW9uKG4pe3JldHVybiBnWysobi5nZXRIb3VycygpPj0xMildfSxTOmZ1
bmN0aW9uKG4sdCl7cmV0dXJuIFpuKG4uZ2V0U2Vjb25kcygpLHQsMil9LFU6
ZnVuY3Rpb24obix0KXtyZXR1cm4gWm4oZ2Euc3VuZGF5T2ZZZWFyKG4pLHQs
Mil9LHc6ZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0RGF5KCl9LFc6ZnVuY3Rp
b24obix0KXtyZXR1cm4gWm4oZ2EubW9uZGF5T2ZZZWFyKG4pLHQsMil9LHg6
dChoKSxYOnQocCkseTpmdW5jdGlvbihuLHQpe3JldHVybiBabihuLmdldEZ1
bGxZZWFyKCklMTAwLHQsMil9LFk6ZnVuY3Rpb24obix0KXtyZXR1cm4gWm4o
bi5nZXRGdWxsWWVhcigpJTFlNCx0LDQpfSxaOmF0LCIlIjpmdW5jdGlvbigp
e3JldHVybiIlIn19LEM9e2E6cixBOmksYjp1LEI6byxjOmEsZDp0dCxlOnR0
LEg6cnQsSTpydCxqOmV0LEw6b3QsbTpudCxNOml0LHA6ZixTOnV0LFU6Qm4s
dzokbixXOlduLHg6bCxYOmMseTpHbixZOkpuLFo6S24sIiUiOmx0fTtyZXR1
cm4gdH1mdW5jdGlvbiBabihuLHQsZSl7dmFyIHI9MD5uPyItIjoiIixpPShy
Py1uOm4pKyIiLHU9aS5sZW5ndGg7cmV0dXJuIHIrKGU+dT9uZXcgQXJyYXko
ZS11KzEpLmpvaW4odCkraTppKX1mdW5jdGlvbiBWbihuKXtyZXR1cm4gbmV3
IFJlZ0V4cCgiXig/OiIrbi5tYXAoYW8ucmVxdW90ZSkuam9pbigifCIpKyIp
IiwiaSIpfWZ1bmN0aW9uIFhuKG4pe2Zvcih2YXIgdD1uZXcgYyxlPS0xLHI9
bi5sZW5ndGg7KytlPHI7KXQuc2V0KG5bZV0udG9Mb3dlckNhc2UoKSxlKTty
ZXR1cm4gdH1mdW5jdGlvbiAkbihuLHQsZSl7bWEubGFzdEluZGV4PTA7dmFy
IHI9bWEuZXhlYyh0LnNsaWNlKGUsZSsxKSk7cmV0dXJuIHI/KG4udz0rclsw
XSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBCbihuLHQsZSl7bWEubGFz
dEluZGV4PTA7dmFyIHI9bWEuZXhlYyh0LnNsaWNlKGUpKTtyZXR1cm4gcj8o
bi5VPStyWzBdLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFduKG4sdCxl
KXttYS5sYXN0SW5kZXg9MDt2YXIgcj1tYS5leGVjKHQuc2xpY2UoZSkpO3Jl
dHVybiByPyhuLlc9K3JbMF0sZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24g
Sm4obix0LGUpe21hLmxhc3RJbmRleD0wO3ZhciByPW1hLmV4ZWModC5zbGlj
ZShlLGUrNCkpO3JldHVybiByPyhuLnk9K3JbMF0sZStyWzBdLmxlbmd0aCk6
LTF9ZnVuY3Rpb24gR24obix0LGUpe21hLmxhc3RJbmRleD0wO3ZhciByPW1h
LmV4ZWModC5zbGljZShlLGUrMikpO3JldHVybiByPyhuLnk9UW4oK3JbMF0p
LGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEtuKG4sdCxlKXtyZXR1cm4v
XlsrLV1cZHs0fSQvLnRlc3QodD10LnNsaWNlKGUsZSs1KSk/KG4uWj0tdCxl
KzUpOi0xfWZ1bmN0aW9uIFFuKG4pe3JldHVybiBuKyhuPjY4PzE5MDA6MmUz
KX1mdW5jdGlvbiBudChuLHQsZSl7bWEubGFzdEluZGV4PTA7dmFyIHI9bWEu
ZXhlYyh0LnNsaWNlKGUsZSsyKSk7cmV0dXJuIHI/KG4ubT1yWzBdLTEsZSty
WzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gdHQobix0LGUpe21hLmxhc3RJbmRl
eD0wO3ZhciByPW1hLmV4ZWModC5zbGljZShlLGUrMikpO3JldHVybiByPyhu
LmQ9K3JbMF0sZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gZXQobix0LGUp
e21hLmxhc3RJbmRleD0wO3ZhciByPW1hLmV4ZWModC5zbGljZShlLGUrMykp
O3JldHVybiByPyhuLmo9K3JbMF0sZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rp
b24gcnQobix0LGUpe21hLmxhc3RJbmRleD0wO3ZhciByPW1hLmV4ZWModC5z
bGljZShlLGUrMikpO3JldHVybiByPyhuLkg9K3JbMF0sZStyWzBdLmxlbmd0
aCk6LTF9ZnVuY3Rpb24gaXQobix0LGUpe21hLmxhc3RJbmRleD0wO3ZhciBy
PW1hLmV4ZWModC5zbGljZShlLGUrMikpO3JldHVybiByPyhuLk09K3JbMF0s
ZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gdXQobix0LGUpe21hLmxhc3RJ
bmRleD0wO3ZhciByPW1hLmV4ZWModC5zbGljZShlLGUrMikpO3JldHVybiBy
PyhuLlM9K3JbMF0sZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gb3Qobix0
LGUpe21hLmxhc3RJbmRleD0wO3ZhciByPW1hLmV4ZWModC5zbGljZShlLGUr
MykpO3JldHVybiByPyhuLkw9K3JbMF0sZStyWzBdLmxlbmd0aCk6LTF9ZnVu
Y3Rpb24gYXQobil7dmFyIHQ9bi5nZXRUaW1lem9uZU9mZnNldCgpLGU9dD4w
PyItIjoiKyIscj14byh0KS82MHwwLGk9eG8odCklNjA7cmV0dXJuIGUrWm4o
ciwiMCIsMikrWm4oaSwiMCIsMil9ZnVuY3Rpb24gbHQobix0LGUpe01hLmxh
c3RJbmRleD0wO3ZhciByPU1hLmV4ZWModC5zbGljZShlLGUrMSkpO3JldHVy
biByP2UrclswXS5sZW5ndGg6LTF9ZnVuY3Rpb24gY3Qobil7Zm9yKHZhciB0
PW4ubGVuZ3RoLGU9LTE7KytlPHQ7KW5bZV1bMF09dGhpcyhuW2VdWzBdKTty
ZXR1cm4gZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAscj1uW2VdOyFyWzFdKHQp
OylyPW5bKytlXTtyZXR1cm4gclswXSh0KX19ZnVuY3Rpb24gZnQoKXt9ZnVu
Y3Rpb24gc3Qobix0LGUpe3ZhciByPWUucz1uK3QsaT1yLW4sdT1yLWk7ZS50
PW4tdSsodC1pKX1mdW5jdGlvbiBodChuLHQpe24mJndhLmhhc093blByb3Bl
cnR5KG4udHlwZSkmJndhW24udHlwZV0obix0KX1mdW5jdGlvbiBwdChuLHQs
ZSl7dmFyIHIsaT0tMSx1PW4ubGVuZ3RoLWU7Zm9yKHQubGluZVN0YXJ0KCk7
KytpPHU7KXI9bltpXSx0LnBvaW50KHJbMF0sclsxXSxyWzJdKTt0LmxpbmVF
bmQoKX1mdW5jdGlvbiBndChuLHQpe3ZhciBlPS0xLHI9bi5sZW5ndGg7Zm9y
KHQucG9seWdvblN0YXJ0KCk7KytlPHI7KXB0KG5bZV0sdCwxKTt0LnBvbHln
b25FbmQoKX1mdW5jdGlvbiB2dCgpe2Z1bmN0aW9uIG4obix0KXtuKj1Zbyx0
PXQqWW8vMitGby80O3ZhciBlPW4tcixvPWU+PTA/MTotMSxhPW8qZSxsPU1h
dGguY29zKHQpLGM9TWF0aC5zaW4odCksZj11KmMscz1pKmwrZipNYXRoLmNv
cyhhKSxoPWYqbypNYXRoLnNpbihhKTtrYS5hZGQoTWF0aC5hdGFuMihoLHMp
KSxyPW4saT1sLHU9Y312YXIgdCxlLHIsaSx1O05hLnBvaW50PWZ1bmN0aW9u
KG8sYSl7TmEucG9pbnQ9bixyPSh0PW8pKllvLGk9TWF0aC5jb3MoYT0oZT1h
KSpZby8yK0ZvLzQpLHU9TWF0aC5zaW4oYSl9LE5hLmxpbmVFbmQ9ZnVuY3Rp
b24oKXtuKHQsZSl9fWZ1bmN0aW9uIGR0KG4pe3ZhciB0PW5bMF0sZT1uWzFd
LHI9TWF0aC5jb3MoZSk7cmV0dXJuW3IqTWF0aC5jb3ModCkscipNYXRoLnNp
bih0KSxNYXRoLnNpbihlKV19ZnVuY3Rpb24geXQobix0KXtyZXR1cm4gblsw
XSp0WzBdK25bMV0qdFsxXStuWzJdKnRbMl19ZnVuY3Rpb24gbXQobix0KXty
ZXR1cm5bblsxXSp0WzJdLW5bMl0qdFsxXSxuWzJdKnRbMF0tblswXSp0WzJd
LG5bMF0qdFsxXS1uWzFdKnRbMF1dfWZ1bmN0aW9uIE10KG4sdCl7blswXSs9
dFswXSxuWzFdKz10WzFdLG5bMl0rPXRbMl19ZnVuY3Rpb24geHQobix0KXty
ZXR1cm5bblswXSp0LG5bMV0qdCxuWzJdKnRdfWZ1bmN0aW9uIGJ0KG4pe3Zh
ciB0PU1hdGguc3FydChuWzBdKm5bMF0rblsxXSpuWzFdK25bMl0qblsyXSk7
blswXS89dCxuWzFdLz10LG5bMl0vPXR9ZnVuY3Rpb24gX3Qobil7cmV0dXJu
W01hdGguYXRhbjIoblsxXSxuWzBdKSx0bihuWzJdKV19ZnVuY3Rpb24gd3Qo
bix0KXtyZXR1cm4geG8oblswXS10WzBdKTxVbyYmeG8oblsxXS10WzFdKTxV
b31mdW5jdGlvbiBTdChuLHQpe24qPVlvO3ZhciBlPU1hdGguY29zKHQqPVlv
KTtrdChlKk1hdGguY29zKG4pLGUqTWF0aC5zaW4obiksTWF0aC5zaW4odCkp
fWZ1bmN0aW9uIGt0KG4sdCxlKXsrK0VhLENhKz0obi1DYSkvRWEsemErPSh0
LXphKS9FYSxMYSs9KGUtTGEpL0VhfWZ1bmN0aW9uIE50KCl7ZnVuY3Rpb24g
bihuLGkpe24qPVlvO3ZhciB1PU1hdGguY29zKGkqPVlvKSxvPXUqTWF0aC5j
b3MobiksYT11Kk1hdGguc2luKG4pLGw9TWF0aC5zaW4oaSksYz1NYXRoLmF0
YW4yKE1hdGguc3FydCgoYz1lKmwtciphKSpjKyhjPXIqby10KmwpKmMrKGM9
dCphLWUqbykqYyksdCpvK2UqYStyKmwpO0FhKz1jLHFhKz1jKih0Kyh0PW8p
KSxUYSs9YyooZSsoZT1hKSksUmErPWMqKHIrKHI9bCkpLGt0KHQsZSxyKX12
YXIgdCxlLHI7amEucG9pbnQ9ZnVuY3Rpb24oaSx1KXtpKj1Zbzt2YXIgbz1N
YXRoLmNvcyh1Kj1Zbyk7dD1vKk1hdGguY29zKGkpLGU9bypNYXRoLnNpbihp
KSxyPU1hdGguc2luKHUpLGphLnBvaW50PW4sa3QodCxlLHIpfX1mdW5jdGlv
biBFdCgpe2phLnBvaW50PVN0fWZ1bmN0aW9uIEF0KCl7ZnVuY3Rpb24gbihu
LHQpe24qPVlvO3ZhciBlPU1hdGguY29zKHQqPVlvKSxvPWUqTWF0aC5jb3Mo
biksYT1lKk1hdGguc2luKG4pLGw9TWF0aC5zaW4odCksYz1pKmwtdSphLGY9
dSpvLXIqbCxzPXIqYS1pKm8saD1NYXRoLnNxcnQoYypjK2YqZitzKnMpLHA9
cipvK2kqYSt1KmwsZz1oJiYtbm4ocCkvaCx2PU1hdGguYXRhbjIoaCxwKTtE
YSs9ZypjLFBhKz1nKmYsVWErPWcqcyxBYSs9dixxYSs9dioocisocj1vKSks
VGErPXYqKGkrKGk9YSkpLFJhKz12Kih1Kyh1PWwpKSxrdChyLGksdSl9dmFy
IHQsZSxyLGksdTtqYS5wb2ludD1mdW5jdGlvbihvLGEpe3Q9byxlPWEsamEu
cG9pbnQ9bixvKj1Zbzt2YXIgbD1NYXRoLmNvcyhhKj1Zbyk7cj1sKk1hdGgu
Y29zKG8pLGk9bCpNYXRoLnNpbihvKSx1PU1hdGguc2luKGEpLGt0KHIsaSx1
KX0samEubGluZUVuZD1mdW5jdGlvbigpe24odCxlKSxqYS5saW5lRW5kPUV0
LGphLnBvaW50PVN0fX1mdW5jdGlvbiBDdChuLHQpe2Z1bmN0aW9uIGUoZSxy
KXtyZXR1cm4gZT1uKGUsciksdChlWzBdLGVbMV0pfXJldHVybiBuLmludmVy
dCYmdC5pbnZlcnQmJihlLmludmVydD1mdW5jdGlvbihlLHIpe3JldHVybiBl
PXQuaW52ZXJ0KGUsciksZSYmbi5pbnZlcnQoZVswXSxlWzFdKX0pLGV9ZnVu
Y3Rpb24genQoKXtyZXR1cm4hMH1mdW5jdGlvbiBMdChuLHQsZSxyLGkpe3Zh
ciB1PVtdLG89W107aWYobi5mb3JFYWNoKGZ1bmN0aW9uKG4pe2lmKCEoKHQ9
bi5sZW5ndGgtMSk8PTApKXt2YXIgdCxlPW5bMF0scj1uW3RdO2lmKHd0KGUs
cikpe2kubGluZVN0YXJ0KCk7Zm9yKHZhciBhPTA7dD5hOysrYSlpLnBvaW50
KChlPW5bYV0pWzBdLGVbMV0pO3JldHVybiB2b2lkIGkubGluZUVuZCgpfXZh
ciBsPW5ldyBUdChlLG4sbnVsbCwhMCksYz1uZXcgVHQoZSxudWxsLGwsITEp
O2wubz1jLHUucHVzaChsKSxvLnB1c2goYyksbD1uZXcgVHQocixuLG51bGws
ITEpLGM9bmV3IFR0KHIsbnVsbCxsLCEwKSxsLm89Yyx1LnB1c2gobCksby5w
dXNoKGMpfX0pLG8uc29ydCh0KSxxdCh1KSxxdChvKSx1Lmxlbmd0aCl7Zm9y
KHZhciBhPTAsbD1lLGM9by5sZW5ndGg7Yz5hOysrYSlvW2FdLmU9bD0hbDtm
b3IodmFyIGYscyxoPXVbMF07Oyl7Zm9yKHZhciBwPWgsZz0hMDtwLnY7KWlm
KChwPXAubik9PT1oKXJldHVybjtmPXAueixpLmxpbmVTdGFydCgpO2Rve2lm
KHAudj1wLm8udj0hMCxwLmUpe2lmKGcpZm9yKHZhciBhPTAsYz1mLmxlbmd0
aDtjPmE7KythKWkucG9pbnQoKHM9ZlthXSlbMF0sc1sxXSk7ZWxzZSByKHAu
eCxwLm4ueCwxLGkpO3A9cC5ufWVsc2V7aWYoZyl7Zj1wLnAuejtmb3IodmFy
IGE9Zi5sZW5ndGgtMTthPj0wOy0tYSlpLnBvaW50KChzPWZbYV0pWzBdLHNb
MV0pfWVsc2UgcihwLngscC5wLngsLTEsaSk7cD1wLnB9cD1wLm8sZj1wLnos
Zz0hZ313aGlsZSghcC52KTtpLmxpbmVFbmQoKX19fWZ1bmN0aW9uIHF0KG4p
e2lmKHQ9bi5sZW5ndGgpe2Zvcih2YXIgdCxlLHI9MCxpPW5bMF07KytyPHQ7
KWkubj1lPW5bcl0sZS5wPWksaT1lO2kubj1lPW5bMF0sZS5wPWl9fWZ1bmN0
aW9uIFR0KG4sdCxlLHIpe3RoaXMueD1uLHRoaXMuej10LHRoaXMubz1lLHRo
aXMuZT1yLHRoaXMudj0hMSx0aGlzLm49dGhpcy5wPW51bGx9ZnVuY3Rpb24g
UnQobix0LGUscil7cmV0dXJuIGZ1bmN0aW9uKGksdSl7ZnVuY3Rpb24gbyh0
LGUpe3ZhciByPWkodCxlKTtuKHQ9clswXSxlPXJbMV0pJiZ1LnBvaW50KHQs
ZSl9ZnVuY3Rpb24gYShuLHQpe3ZhciBlPWkobix0KTtkLnBvaW50KGVbMF0s
ZVsxXSl9ZnVuY3Rpb24gbCgpe20ucG9pbnQ9YSxkLmxpbmVTdGFydCgpfWZ1
bmN0aW9uIGMoKXttLnBvaW50PW8sZC5saW5lRW5kKCl9ZnVuY3Rpb24gZihu
LHQpe3YucHVzaChbbix0XSk7dmFyIGU9aShuLHQpO3gucG9pbnQoZVswXSxl
WzFdKX1mdW5jdGlvbiBzKCl7eC5saW5lU3RhcnQoKSx2PVtdfWZ1bmN0aW9u
IGgoKXtmKHZbMF1bMF0sdlswXVsxXSkseC5saW5lRW5kKCk7dmFyIG4sdD14
LmNsZWFuKCksZT1NLmJ1ZmZlcigpLHI9ZS5sZW5ndGg7aWYodi5wb3AoKSxn
LnB1c2godiksdj1udWxsLHIpaWYoMSZ0KXtuPWVbMF07dmFyIGkscj1uLmxl
bmd0aC0xLG89LTE7aWYocj4wKXtmb3IoYnx8KHUucG9seWdvblN0YXJ0KCks
Yj0hMCksdS5saW5lU3RhcnQoKTsrK288cjspdS5wb2ludCgoaT1uW29dKVsw
XSxpWzFdKTt1LmxpbmVFbmQoKX19ZWxzZSByPjEmJjImdCYmZS5wdXNoKGUu
cG9wKCkuY29uY2F0KGUuc2hpZnQoKSkpLHAucHVzaChlLmZpbHRlcihEdCkp
fXZhciBwLGcsdixkPXQodSkseT1pLmludmVydChyWzBdLHJbMV0pLG09e3Bv
aW50Om8sbGluZVN0YXJ0OmwsbGluZUVuZDpjLHBvbHlnb25TdGFydDpmdW5j
dGlvbigpe20ucG9pbnQ9ZixtLmxpbmVTdGFydD1zLG0ubGluZUVuZD1oLHA9
W10sZz1bXX0scG9seWdvbkVuZDpmdW5jdGlvbigpe20ucG9pbnQ9byxtLmxp
bmVTdGFydD1sLG0ubGluZUVuZD1jLHA9YW8ubWVyZ2UocCk7dmFyIG49T3Qo
eSxnKTtwLmxlbmd0aD8oYnx8KHUucG9seWdvblN0YXJ0KCksYj0hMCksTHQo
cCxVdCxuLGUsdSkpOm4mJihifHwodS5wb2x5Z29uU3RhcnQoKSxiPSEwKSx1
LmxpbmVTdGFydCgpLGUobnVsbCxudWxsLDEsdSksdS5saW5lRW5kKCkpLGIm
Jih1LnBvbHlnb25FbmQoKSxiPSExKSxwPWc9bnVsbH0sc3BoZXJlOmZ1bmN0
aW9uKCl7dS5wb2x5Z29uU3RhcnQoKSx1LmxpbmVTdGFydCgpLGUobnVsbCxu
dWxsLDEsdSksdS5saW5lRW5kKCksdS5wb2x5Z29uRW5kKCl9fSxNPVB0KCks
eD10KE0pLGI9ITE7cmV0dXJuIG19fWZ1bmN0aW9uIER0KG4pe3JldHVybiBu
Lmxlbmd0aD4xfWZ1bmN0aW9uIFB0KCl7dmFyIG4sdD1bXTtyZXR1cm57bGlu
ZVN0YXJ0OmZ1bmN0aW9uKCl7dC5wdXNoKG49W10pfSxwb2ludDpmdW5jdGlv
bih0LGUpe24ucHVzaChbdCxlXSl9LGxpbmVFbmQ6YixidWZmZXI6ZnVuY3Rp
b24oKXt2YXIgZT10O3JldHVybiB0PVtdLG49bnVsbCxlfSxyZWpvaW46ZnVu
Y3Rpb24oKXt0Lmxlbmd0aD4xJiZ0LnB1c2godC5wb3AoKS5jb25jYXQodC5z
aGlmdCgpKSl9fX1mdW5jdGlvbiBVdChuLHQpe3JldHVybigobj1uLngpWzBd
PDA/blsxXS1Jby1VbzpJby1uWzFdKS0oKHQ9dC54KVswXTwwP3RbMV0tSW8t
VW86SW8tdFsxXSl9ZnVuY3Rpb24ganQobil7dmFyIHQsZT1OYU4scj1OYU4s
aT1OYU47cmV0dXJue2xpbmVTdGFydDpmdW5jdGlvbigpe24ubGluZVN0YXJ0
KCksdD0xfSxwb2ludDpmdW5jdGlvbih1LG8pe3ZhciBhPXU+MD9GbzotRm8s
bD14byh1LWUpO3hvKGwtRm8pPFVvPyhuLnBvaW50KGUscj0ocitvKS8yPjA/
SW86LUlvKSxuLnBvaW50KGksciksbi5saW5lRW5kKCksbi5saW5lU3RhcnQo
KSxuLnBvaW50KGEsciksbi5wb2ludCh1LHIpLHQ9MCk6aSE9PWEmJmw+PUZv
JiYoeG8oZS1pKTxVbyYmKGUtPWkqVW8pLHhvKHUtYSk8VW8mJih1LT1hKlVv
KSxyPUZ0KGUscix1LG8pLG4ucG9pbnQoaSxyKSxuLmxpbmVFbmQoKSxuLmxp
bmVTdGFydCgpLG4ucG9pbnQoYSxyKSx0PTApLG4ucG9pbnQoZT11LHI9byks
aT1hfSxsaW5lRW5kOmZ1bmN0aW9uKCl7bi5saW5lRW5kKCksZT1yPU5hTn0s
Y2xlYW46ZnVuY3Rpb24oKXtyZXR1cm4gMi10fX19ZnVuY3Rpb24gRnQobix0
LGUscil7dmFyIGksdSxvPU1hdGguc2luKG4tZSk7cmV0dXJuIHhvKG8pPlVv
P01hdGguYXRhbigoTWF0aC5zaW4odCkqKHU9TWF0aC5jb3MocikpKk1hdGgu
c2luKGUpLU1hdGguc2luKHIpKihpPU1hdGguY29zKHQpKSpNYXRoLnNpbihu
KSkvKGkqdSpvKSk6KHQrcikvMn1mdW5jdGlvbiBIdChuLHQsZSxyKXt2YXIg
aTtpZihudWxsPT1uKWk9ZSpJbyxyLnBvaW50KC1GbyxpKSxyLnBvaW50KDAs
aSksci5wb2ludChGbyxpKSxyLnBvaW50KEZvLDApLHIucG9pbnQoRm8sLWkp
LHIucG9pbnQoMCwtaSksci5wb2ludCgtRm8sLWkpLHIucG9pbnQoLUZvLDAp
LHIucG9pbnQoLUZvLGkpO2Vsc2UgaWYoeG8oblswXS10WzBdKT5Vbyl7dmFy
IHU9blswXTx0WzBdP0ZvOi1GbztpPWUqdS8yLHIucG9pbnQoLXUsaSksci5w
b2ludCgwLGkpLHIucG9pbnQodSxpKX1lbHNlIHIucG9pbnQodFswXSx0WzFd
KX1mdW5jdGlvbiBPdChuLHQpe3ZhciBlPW5bMF0scj1uWzFdLGk9W01hdGgu
c2luKGUpLC1NYXRoLmNvcyhlKSwwXSx1PTAsbz0wO2thLnJlc2V0KCk7Zm9y
KHZhciBhPTAsbD10Lmxlbmd0aDtsPmE7KythKXt2YXIgYz10W2FdLGY9Yy5s
ZW5ndGg7aWYoZilmb3IodmFyIHM9Y1swXSxoPXNbMF0scD1zWzFdLzIrRm8v
NCxnPU1hdGguc2luKHApLHY9TWF0aC5jb3MocCksZD0xOzspe2Q9PT1mJiYo
ZD0wKSxuPWNbZF07dmFyIHk9blswXSxtPW5bMV0vMitGby80LE09TWF0aC5z
aW4obSkseD1NYXRoLmNvcyhtKSxiPXktaCxfPWI+PTA/MTotMSx3PV8qYixT
PXc+Rm8saz1nKk07aWYoa2EuYWRkKE1hdGguYXRhbjIoaypfKk1hdGguc2lu
KHcpLHYqeCtrKk1hdGguY29zKHcpKSksdSs9Uz9iK18qSG86YixTXmg+PWVe
eT49ZSl7dmFyIE49bXQoZHQocyksZHQobikpO2J0KE4pO3ZhciBFPW10KGks
Tik7YnQoRSk7dmFyIEE9KFNeYj49MD8tMToxKSp0bihFWzJdKTsocj5BfHxy
PT09QSYmKE5bMF18fE5bMV0pKSYmKG8rPVNeYj49MD8xOi0xKX1pZighZCsr
KWJyZWFrO2g9eSxnPU0sdj14LHM9bn19cmV0dXJuKC1Vbz51fHxVbz51JiYt
VW8+a2EpXjEmb31mdW5jdGlvbiBJdChuKXtmdW5jdGlvbiB0KG4sdCl7cmV0
dXJuIE1hdGguY29zKG4pKk1hdGguY29zKHQpPnV9ZnVuY3Rpb24gZShuKXt2
YXIgZSx1LGwsYyxmO3JldHVybntsaW5lU3RhcnQ6ZnVuY3Rpb24oKXtjPWw9
ITEsZj0xfSxwb2ludDpmdW5jdGlvbihzLGgpe3ZhciBwLGc9W3MsaF0sdj10
KHMsaCksZD1vP3Y/MDppKHMsaCk6dj9pKHMrKDA+cz9GbzotRm8pLGgpOjA7
aWYoIWUmJihjPWw9dikmJm4ubGluZVN0YXJ0KCksdiE9PWwmJihwPXIoZSxn
KSwod3QoZSxwKXx8d3QoZyxwKSkmJihnWzBdKz1VbyxnWzFdKz1Vbyx2PXQo
Z1swXSxnWzFdKSkpLHYhPT1sKWY9MCx2PyhuLmxpbmVTdGFydCgpLHA9cihn
LGUpLG4ucG9pbnQocFswXSxwWzFdKSk6KHA9cihlLGcpLG4ucG9pbnQocFsw
XSxwWzFdKSxuLmxpbmVFbmQoKSksZT1wO2Vsc2UgaWYoYSYmZSYmb152KXt2
YXIgeTtkJnV8fCEoeT1yKGcsZSwhMCkpfHwoZj0wLG8/KG4ubGluZVN0YXJ0
KCksbi5wb2ludCh5WzBdWzBdLHlbMF1bMV0pLG4ucG9pbnQoeVsxXVswXSx5
WzFdWzFdKSxuLmxpbmVFbmQoKSk6KG4ucG9pbnQoeVsxXVswXSx5WzFdWzFd
KSxuLmxpbmVFbmQoKSxuLmxpbmVTdGFydCgpLG4ucG9pbnQoeVswXVswXSx5
WzBdWzFdKSkpfSF2fHxlJiZ3dChlLGcpfHxuLnBvaW50KGdbMF0sZ1sxXSks
ZT1nLGw9dix1PWR9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtsJiZuLmxpbmVFbmQo
KSxlPW51bGx9LGNsZWFuOmZ1bmN0aW9uKCl7cmV0dXJuIGZ8KGMmJmwpPDwx
fX19ZnVuY3Rpb24gcihuLHQsZSl7dmFyIHI9ZHQobiksaT1kdCh0KSxvPVsx
LDAsMF0sYT1tdChyLGkpLGw9eXQoYSxhKSxjPWFbMF0sZj1sLWMqYztpZigh
ZilyZXR1cm4hZSYmbjt2YXIgcz11KmwvZixoPS11KmMvZixwPW10KG8sYSks
Zz14dChvLHMpLHY9eHQoYSxoKTtNdChnLHYpO3ZhciBkPXAseT15dChnLGQp
LG09eXQoZCxkKSxNPXkqeS1tKih5dChnLGcpLTEpO2lmKCEoMD5NKSl7dmFy
IHg9TWF0aC5zcXJ0KE0pLGI9eHQoZCwoLXkteCkvbSk7aWYoTXQoYixnKSxi
PV90KGIpLCFlKXJldHVybiBiO3ZhciBfLHc9blswXSxTPXRbMF0saz1uWzFd
LE49dFsxXTt3PlMmJihfPXcsdz1TLFM9Xyk7dmFyIEU9Uy13LEE9eG8oRS1G
byk8VW8sQz1BfHxVbz5FO2lmKCFBJiZrPk4mJihfPWssaz1OLE49XyksQz9B
P2srTj4wXmJbMV08KHhvKGJbMF0tdyk8VW8/azpOKTprPD1iWzFdJiZiWzFd
PD1OOkU+Rm9eKHc8PWJbMF0mJmJbMF08PVMpKXt2YXIgej14dChkLCgteSt4
KS9tKTtyZXR1cm4gTXQoeixnKSxbYixfdCh6KV19fX1mdW5jdGlvbiBpKHQs
ZSl7dmFyIHI9bz9uOkZvLW4saT0wO3JldHVybi1yPnQ/aXw9MTp0PnImJihp
fD0yKSwtcj5lP2l8PTQ6ZT5yJiYoaXw9OCksaX12YXIgdT1NYXRoLmNvcyhu
KSxvPXU+MCxhPXhvKHUpPlVvLGw9dmUobiw2KllvKTtyZXR1cm4gUnQodCxl
LGwsbz9bMCwtbl06Wy1GbyxuLUZvXSl9ZnVuY3Rpb24gWXQobix0LGUscil7
cmV0dXJuIGZ1bmN0aW9uKGkpe3ZhciB1LG89aS5hLGE9aS5iLGw9by54LGM9
by55LGY9YS54LHM9YS55LGg9MCxwPTEsZz1mLWwsdj1zLWM7aWYodT1uLWws
Z3x8ISh1PjApKXtpZih1Lz1nLDA+Zyl7aWYoaD51KXJldHVybjtwPnUmJihw
PXUpfWVsc2UgaWYoZz4wKXtpZih1PnApcmV0dXJuO3U+aCYmKGg9dSl9aWYo
dT1lLWwsZ3x8ISgwPnUpKXtpZih1Lz1nLDA+Zyl7aWYodT5wKXJldHVybjt1
PmgmJihoPXUpfWVsc2UgaWYoZz4wKXtpZihoPnUpcmV0dXJuO3A+dSYmKHA9
dSl9aWYodT10LWMsdnx8ISh1PjApKXtpZih1Lz12LDA+dil7aWYoaD51KXJl
dHVybjtwPnUmJihwPXUpfWVsc2UgaWYodj4wKXtpZih1PnApcmV0dXJuO3U+
aCYmKGg9dSl9aWYodT1yLWMsdnx8ISgwPnUpKXtpZih1Lz12LDA+dil7aWYo
dT5wKXJldHVybjt1PmgmJihoPXUpfWVsc2UgaWYodj4wKXtpZihoPnUpcmV0
dXJuO3A+dSYmKHA9dSl9cmV0dXJuIGg+MCYmKGkuYT17eDpsK2gqZyx5OmMr
aCp2fSksMT5wJiYoaS5iPXt4OmwrcCpnLHk6YytwKnZ9KSxpfX19fX19ZnVu
Y3Rpb24gWnQobix0LGUscil7ZnVuY3Rpb24gaShyLGkpe3JldHVybiB4byhy
WzBdLW4pPFVvP2k+MD8wOjM6eG8oclswXS1lKTxVbz9pPjA/MjoxOnhvKHJb
MV0tdCk8VW8/aT4wPzE6MDppPjA/MzoyfWZ1bmN0aW9uIHUobix0KXtyZXR1
cm4gbyhuLngsdC54KX1mdW5jdGlvbiBvKG4sdCl7dmFyIGU9aShuLDEpLHI9
aSh0LDEpO3JldHVybiBlIT09cj9lLXI6MD09PWU/dFsxXS1uWzFdOjE9PT1l
P25bMF0tdFswXToyPT09ZT9uWzFdLXRbMV06dFswXS1uWzBdfXJldHVybiBm
dW5jdGlvbihhKXtmdW5jdGlvbiBsKG4pe2Zvcih2YXIgdD0wLGU9ZC5sZW5n
dGgscj1uWzFdLGk9MDtlPmk7KytpKWZvcih2YXIgdSxvPTEsYT1kW2ldLGw9
YS5sZW5ndGgsYz1hWzBdO2w+bzsrK28pdT1hW29dLGNbMV08PXI/dVsxXT5y
JiZRKGMsdSxuKT4wJiYrK3Q6dVsxXTw9ciYmUShjLHUsbik8MCYmLS10LGM9
dTtyZXR1cm4gMCE9PXR9ZnVuY3Rpb24gYyh1LGEsbCxjKXt2YXIgZj0wLHM9
MDtpZihudWxsPT11fHwoZj1pKHUsbCkpIT09KHM9aShhLGwpKXx8byh1LGEp
PDBebD4wKXtkbyBjLnBvaW50KDA9PT1mfHwzPT09Zj9uOmUsZj4xP3I6dCk7
d2hpbGUoKGY9KGYrbCs0KSU0KSE9PXMpfWVsc2UgYy5wb2ludChhWzBdLGFb
MV0pfWZ1bmN0aW9uIGYoaSx1KXtyZXR1cm4gaT49biYmZT49aSYmdT49dCYm
cj49dX1mdW5jdGlvbiBzKG4sdCl7ZihuLHQpJiZhLnBvaW50KG4sdCl9ZnVu
Y3Rpb24gaCgpe0MucG9pbnQ9ZyxkJiZkLnB1c2goeT1bXSksUz0hMCx3PSEx
LGI9Xz1OYU59ZnVuY3Rpb24gcCgpe3YmJihnKG0sTSkseCYmdyYmRS5yZWpv
aW4oKSx2LnB1c2goRS5idWZmZXIoKSkpLEMucG9pbnQ9cyx3JiZhLmxpbmVF
bmQoKX1mdW5jdGlvbiBnKG4sdCl7bj1NYXRoLm1heCgtSGEsTWF0aC5taW4o
SGEsbikpLHQ9TWF0aC5tYXgoLUhhLE1hdGgubWluKEhhLHQpKTt2YXIgZT1m
KG4sdCk7aWYoZCYmeS5wdXNoKFtuLHRdKSxTKW09bixNPXQseD1lLFM9ITEs
ZSYmKGEubGluZVN0YXJ0KCksYS5wb2ludChuLHQpKTtlbHNlIGlmKGUmJncp
YS5wb2ludChuLHQpO2Vsc2V7dmFyIHI9e2E6e3g6Yix5Ol99LGI6e3g6bix5
OnR9fTtBKHIpPyh3fHwoYS5saW5lU3RhcnQoKSxhLnBvaW50KHIuYS54LHIu
YS55KSksYS5wb2ludChyLmIueCxyLmIueSksZXx8YS5saW5lRW5kKCksaz0h
MSk6ZSYmKGEubGluZVN0YXJ0KCksYS5wb2ludChuLHQpLGs9ITEpfWI9bixf
PXQsdz1lfXZhciB2LGQseSxtLE0seCxiLF8sdyxTLGssTj1hLEU9UHQoKSxB
PVl0KG4sdCxlLHIpLEM9e3BvaW50OnMsbGluZVN0YXJ0OmgsbGluZUVuZDpw
LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe2E9RSx2PVtdLGQ9W10saz0hMH0s
cG9seWdvbkVuZDpmdW5jdGlvbigpe2E9Tix2PWFvLm1lcmdlKHYpO3ZhciB0
PWwoW24scl0pLGU9ayYmdCxpPXYubGVuZ3RoOyhlfHxpKSYmKGEucG9seWdv
blN0YXJ0KCksZSYmKGEubGluZVN0YXJ0KCksYyhudWxsLG51bGwsMSxhKSxh
LmxpbmVFbmQoKSksaSYmTHQodix1LHQsYyxhKSxhLnBvbHlnb25FbmQoKSks
dj1kPXk9bnVsbH19O3JldHVybiBDfX1mdW5jdGlvbiBWdChuKXt2YXIgdD0w
LGU9Rm8vMyxyPWFlKG4pLGk9cih0LGUpO3JldHVybiBpLnBhcmFsbGVscz1m
dW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9yKHQ9blswXSpG
by8xODAsZT1uWzFdKkZvLzE4MCk6W3QvRm8qMTgwLGUvRm8qMTgwXX0saX1m
dW5jdGlvbiBYdChuLHQpe2Z1bmN0aW9uIGUobix0KXt2YXIgZT1NYXRoLnNx
cnQodS0yKmkqTWF0aC5zaW4odCkpL2k7cmV0dXJuW2UqTWF0aC5zaW4obio9
aSksby1lKk1hdGguY29zKG4pXX12YXIgcj1NYXRoLnNpbihuKSxpPShyK01h
dGguc2luKHQpKS8yLHU9MStyKigyKmktciksbz1NYXRoLnNxcnQodSkvaTty
ZXR1cm4gZS5pbnZlcnQ9ZnVuY3Rpb24obix0KXt2YXIgZT1vLXQ7cmV0dXJu
W01hdGguYXRhbjIobixlKS9pLHRuKCh1LShuKm4rZSplKSppKmkpLygyKmkp
KV19LGV9ZnVuY3Rpb24gJHQoKXtmdW5jdGlvbiBuKG4sdCl7SWErPWkqbi1y
KnQscj1uLGk9dH12YXIgdCxlLHIsaTskYS5wb2ludD1mdW5jdGlvbih1LG8p
eyRhLnBvaW50PW4sdD1yPXUsZT1pPW99LCRhLmxpbmVFbmQ9ZnVuY3Rpb24o
KXtuKHQsZSl9fWZ1bmN0aW9uIEJ0KG4sdCl7WWE+biYmKFlhPW4pLG4+VmEm
JihWYT1uKSxaYT50JiYoWmE9dCksdD5YYSYmKFhhPXQpfWZ1bmN0aW9uIFd0
KCl7ZnVuY3Rpb24gbihuLHQpe28ucHVzaCgiTSIsbiwiLCIsdCx1KX1mdW5j
dGlvbiB0KG4sdCl7by5wdXNoKCJNIixuLCIsIix0KSxhLnBvaW50PWV9ZnVu
Y3Rpb24gZShuLHQpe28ucHVzaCgiTCIsbiwiLCIsdCl9ZnVuY3Rpb24gcigp
e2EucG9pbnQ9bn1mdW5jdGlvbiBpKCl7by5wdXNoKCJaIil9dmFyIHU9SnQo
NC41KSxvPVtdLGE9e3BvaW50Om4sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7YS5w
b2ludD10fSxsaW5lRW5kOnIscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7YS5s
aW5lRW5kPWl9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXthLmxpbmVFbmQ9cixh
LnBvaW50PW59LHBvaW50UmFkaXVzOmZ1bmN0aW9uKG4pe3JldHVybiB1PUp0
KG4pLGF9LHJlc3VsdDpmdW5jdGlvbigpe2lmKG8ubGVuZ3RoKXt2YXIgbj1v
LmpvaW4oIiIpO3JldHVybiBvPVtdLG59fX07cmV0dXJuIGF9ZnVuY3Rpb24g
SnQobil7cmV0dXJuIm0wLCIrbisiYSIrbisiLCIrbisiIDAgMSwxIDAsIist
MipuKyJhIituKyIsIituKyIgMCAxLDEgMCwiKzIqbisieiJ9ZnVuY3Rpb24g
R3Qobix0KXtDYSs9bix6YSs9dCwrK0xhfWZ1bmN0aW9uIEt0KCl7ZnVuY3Rp
b24gbihuLHIpe3ZhciBpPW4tdCx1PXItZSxvPU1hdGguc3FydChpKmkrdSp1
KTtxYSs9byoodCtuKS8yLFRhKz1vKihlK3IpLzIsUmErPW8sR3QodD1uLGU9
cil9dmFyIHQsZTtXYS5wb2ludD1mdW5jdGlvbihyLGkpe1dhLnBvaW50PW4s
R3QodD1yLGU9aSl9fWZ1bmN0aW9uIFF0KCl7V2EucG9pbnQ9R3R9ZnVuY3Rp
b24gbmUoKXtmdW5jdGlvbiBuKG4sdCl7dmFyIGU9bi1yLHU9dC1pLG89TWF0
aC5zcXJ0KGUqZSt1KnUpO3FhKz1vKihyK24pLzIsVGErPW8qKGkrdCkvMixS
YSs9byxvPWkqbi1yKnQsRGErPW8qKHIrbiksUGErPW8qKGkrdCksVWErPTMq
byxHdChyPW4saT10KX12YXIgdCxlLHIsaTtXYS5wb2ludD1mdW5jdGlvbih1
LG8pe1dhLnBvaW50PW4sR3QodD1yPXUsZT1pPW8pfSxXYS5saW5lRW5kPWZ1
bmN0aW9uKCl7bih0LGUpfX1mdW5jdGlvbiB0ZShuKXtmdW5jdGlvbiB0KHQs
ZSl7bi5tb3ZlVG8odCtvLGUpLG4uYXJjKHQsZSxvLDAsSG8pfWZ1bmN0aW9u
IGUodCxlKXtuLm1vdmVUbyh0LGUpLGEucG9pbnQ9cn1mdW5jdGlvbiByKHQs
ZSl7bi5saW5lVG8odCxlKX1mdW5jdGlvbiBpKCl7YS5wb2ludD10fWZ1bmN0
aW9uIHUoKXtuLmNsb3NlUGF0aCgpfXZhciBvPTQuNSxhPXtwb2ludDp0LGxp
bmVTdGFydDpmdW5jdGlvbigpe2EucG9pbnQ9ZX0sbGluZUVuZDppLHBvbHln
b25TdGFydDpmdW5jdGlvbigpe2EubGluZUVuZD11fSxwb2x5Z29uRW5kOmZ1
bmN0aW9uKCl7YS5saW5lRW5kPWksYS5wb2ludD10fSxwb2ludFJhZGl1czpm
dW5jdGlvbihuKXtyZXR1cm4gbz1uLGF9LHJlc3VsdDpifTtyZXR1cm4gYX1m
dW5jdGlvbiBlZShuKXtmdW5jdGlvbiB0KG4pe3JldHVybihhP3I6ZSkobil9
ZnVuY3Rpb24gZSh0KXtyZXR1cm4gdWUodCxmdW5jdGlvbihlLHIpe2U9bihl
LHIpLHQucG9pbnQoZVswXSxlWzFdKX0pfWZ1bmN0aW9uIHIodCl7ZnVuY3Rp
b24gZShlLHIpe2U9bihlLHIpLHQucG9pbnQoZVswXSxlWzFdKX1mdW5jdGlv
biByKCl7TT1OYU4sUy5wb2ludD11LHQubGluZVN0YXJ0KCl9ZnVuY3Rpb24g
dShlLHIpe3ZhciB1PWR0KFtlLHJdKSxvPW4oZSxyKTtpKE0seCxtLGIsXyx3
LE09b1swXSx4PW9bMV0sbT1lLGI9dVswXSxfPXVbMV0sdz11WzJdLGEsdCks
dC5wb2ludChNLHgpfWZ1bmN0aW9uIG8oKXtTLnBvaW50PWUsdC5saW5lRW5k
KCl9ZnVuY3Rpb24gbCgpewpyKCksUy5wb2ludD1jLFMubGluZUVuZD1mfWZ1
bmN0aW9uIGMobix0KXt1KHM9bixoPXQpLHA9TSxnPXgsdj1iLGQ9Xyx5PXcs
Uy5wb2ludD11fWZ1bmN0aW9uIGYoKXtpKE0seCxtLGIsXyx3LHAsZyxzLHYs
ZCx5LGEsdCksUy5saW5lRW5kPW8sbygpfXZhciBzLGgscCxnLHYsZCx5LG0s
TSx4LGIsXyx3LFM9e3BvaW50OmUsbGluZVN0YXJ0OnIsbGluZUVuZDpvLHBv
bHlnb25TdGFydDpmdW5jdGlvbigpe3QucG9seWdvblN0YXJ0KCksUy5saW5l
U3RhcnQ9bH0scG9seWdvbkVuZDpmdW5jdGlvbigpe3QucG9seWdvbkVuZCgp
LFMubGluZVN0YXJ0PXJ9fTtyZXR1cm4gU31mdW5jdGlvbiBpKHQsZSxyLGEs
bCxjLGYscyxoLHAsZyx2LGQseSl7dmFyIG09Zi10LE09cy1lLHg9bSptK00q
TTtpZih4PjQqdSYmZC0tKXt2YXIgYj1hK3AsXz1sK2csdz1jK3YsUz1NYXRo
LnNxcnQoYipiK18qXyt3KncpLGs9TWF0aC5hc2luKHcvPVMpLE49eG8oeG8o
dyktMSk8VW98fHhvKHItaCk8VW8/KHIraCkvMjpNYXRoLmF0YW4yKF8sYiks
RT1uKE4sayksQT1FWzBdLEM9RVsxXSx6PUEtdCxMPUMtZSxxPU0qei1tKkw7
KHEqcS94PnV8fHhvKChtKnorTSpMKS94LS41KT4uM3x8bz5hKnArbCpnK2Mq
dikmJihpKHQsZSxyLGEsbCxjLEEsQyxOLGIvPVMsXy89Uyx3LGQseSkseS5w
b2ludChBLEMpLGkoQSxDLE4sYixfLHcsZixzLGgscCxnLHYsZCx5KSl9fXZh
ciB1PS41LG89TWF0aC5jb3MoMzAqWW8pLGE9MTY7cmV0dXJuIHQucHJlY2lz
aW9uPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSh1
PW4qbik+MCYmMTYsdCk6TWF0aC5zcXJ0KHUpfSx0fWZ1bmN0aW9uIHJlKG4p
e3ZhciB0PWVlKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4oW3QqWm8sZSpab10p
fSk7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBsZSh0KG4pKX19ZnVuY3Rp
b24gaWUobil7dGhpcy5zdHJlYW09bn1mdW5jdGlvbiB1ZShuLHQpe3JldHVy
bntwb2ludDp0LHNwaGVyZTpmdW5jdGlvbigpe24uc3BoZXJlKCl9LGxpbmVT
dGFydDpmdW5jdGlvbigpe24ubGluZVN0YXJ0KCl9LGxpbmVFbmQ6ZnVuY3Rp
b24oKXtuLmxpbmVFbmQoKX0scG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7bi5w
b2x5Z29uU3RhcnQoKX0scG9seWdvbkVuZDpmdW5jdGlvbigpe24ucG9seWdv
bkVuZCgpfX19ZnVuY3Rpb24gb2Uobil7cmV0dXJuIGFlKGZ1bmN0aW9uKCl7
cmV0dXJuIG59KSgpfWZ1bmN0aW9uIGFlKG4pe2Z1bmN0aW9uIHQobil7cmV0
dXJuIG49YShuWzBdKllvLG5bMV0qWW8pLFtuWzBdKmgrbCxjLW5bMV0qaF19
ZnVuY3Rpb24gZShuKXtyZXR1cm4gbj1hLmludmVydCgoblswXS1sKS9oLChj
LW5bMV0pL2gpLG4mJltuWzBdKlpvLG5bMV0qWm9dfWZ1bmN0aW9uIHIoKXth
PUN0KG89c2UoeSxNLHgpLHUpO3ZhciBuPXUodixkKTtyZXR1cm4gbD1wLW5b
MF0qaCxjPWcrblsxXSpoLGkoKX1mdW5jdGlvbiBpKCl7cmV0dXJuIGYmJihm
LnZhbGlkPSExLGY9bnVsbCksdH12YXIgdSxvLGEsbCxjLGYscz1lZShmdW5j
dGlvbihuLHQpe3JldHVybiBuPXUobix0KSxbblswXSpoK2wsYy1uWzFdKmhd
fSksaD0xNTAscD00ODAsZz0yNTAsdj0wLGQ9MCx5PTAsTT0wLHg9MCxiPUZh
LF89bSx3PW51bGwsUz1udWxsO3JldHVybiB0LnN0cmVhbT1mdW5jdGlvbihu
KXtyZXR1cm4gZiYmKGYudmFsaWQ9ITEpLGY9bGUoYihvLHMoXyhuKSkpKSxm
LnZhbGlkPSEwLGZ9LHQuY2xpcEFuZ2xlPWZ1bmN0aW9uKG4pe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhiPW51bGw9PW4/KHc9bixGYSk6SXQoKHc9K24p
KllvKSxpKCkpOnd9LHQuY2xpcEV4dGVudD1mdW5jdGlvbihuKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8oUz1uLF89bj9adChuWzBdWzBdLG5bMF1bMV0s
blsxXVswXSxuWzFdWzFdKTptLGkoKSk6U30sdC5zY2FsZT1mdW5jdGlvbihu
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD0rbixyKCkpOmh9LHQudHJh
bnNsYXRlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhw
PStuWzBdLGc9K25bMV0scigpKTpbcCxnXX0sdC5jZW50ZXI9ZnVuY3Rpb24o
bil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHY9blswXSUzNjAqWW8sZD1u
WzFdJTM2MCpZbyxyKCkpOlt2KlpvLGQqWm9dfSx0LnJvdGF0ZT1mdW5jdGlv
bihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeT1uWzBdJTM2MCpZbyxN
PW5bMV0lMzYwKllvLHg9bi5sZW5ndGg+Mj9uWzJdJTM2MCpZbzowLHIoKSk6
W3kqWm8sTSpabyx4KlpvXX0sYW8ucmViaW5kKHQscywicHJlY2lzaW9uIiks
ZnVuY3Rpb24oKXtyZXR1cm4gdT1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0
LmludmVydD11LmludmVydCYmZSxyKCl9fWZ1bmN0aW9uIGxlKG4pe3JldHVy
biB1ZShuLGZ1bmN0aW9uKHQsZSl7bi5wb2ludCh0KllvLGUqWW8pfSl9ZnVu
Y3Rpb24gY2Uobix0KXtyZXR1cm5bbix0XX1mdW5jdGlvbiBmZShuLHQpe3Jl
dHVybltuPkZvP24tSG86LUZvPm4/bitIbzpuLHRdfWZ1bmN0aW9uIHNlKG4s
dCxlKXtyZXR1cm4gbj90fHxlP0N0KHBlKG4pLGdlKHQsZSkpOnBlKG4pOnR8
fGU/Z2UodCxlKTpmZX1mdW5jdGlvbiBoZShuKXtyZXR1cm4gZnVuY3Rpb24o
dCxlKXtyZXR1cm4gdCs9bixbdD5Gbz90LUhvOi1Gbz50P3QrSG86dCxlXX19
ZnVuY3Rpb24gcGUobil7dmFyIHQ9aGUobik7cmV0dXJuIHQuaW52ZXJ0PWhl
KC1uKSx0fWZ1bmN0aW9uIGdlKG4sdCl7ZnVuY3Rpb24gZShuLHQpe3ZhciBl
PU1hdGguY29zKHQpLGE9TWF0aC5jb3MobikqZSxsPU1hdGguc2luKG4pKmUs
Yz1NYXRoLnNpbih0KSxmPWMqcithKmk7cmV0dXJuW01hdGguYXRhbjIobCp1
LWYqbyxhKnItYyppKSx0bihmKnUrbCpvKV19dmFyIHI9TWF0aC5jb3Mobiks
aT1NYXRoLnNpbihuKSx1PU1hdGguY29zKHQpLG89TWF0aC5zaW4odCk7cmV0
dXJuIGUuaW52ZXJ0PWZ1bmN0aW9uKG4sdCl7dmFyIGU9TWF0aC5jb3ModCks
YT1NYXRoLmNvcyhuKSplLGw9TWF0aC5zaW4obikqZSxjPU1hdGguc2luKHQp
LGY9Yyp1LWwqbztyZXR1cm5bTWF0aC5hdGFuMihsKnUrYypvLGEqcitmKmkp
LHRuKGYqci1hKmkpXX0sZX1mdW5jdGlvbiB2ZShuLHQpe3ZhciBlPU1hdGgu
Y29zKG4pLHI9TWF0aC5zaW4obik7cmV0dXJuIGZ1bmN0aW9uKGksdSxvLGEp
e3ZhciBsPW8qdDtudWxsIT1pPyhpPWRlKGUsaSksdT1kZShlLHUpLChvPjA/
dT5pOmk+dSkmJihpKz1vKkhvKSk6KGk9bitvKkhvLHU9bi0uNSpsKTtmb3Io
dmFyIGMsZj1pO28+MD9mPnU6dT5mO2YtPWwpYS5wb2ludCgoYz1fdChbZSwt
cipNYXRoLmNvcyhmKSwtcipNYXRoLnNpbihmKV0pKVswXSxjWzFdKX19ZnVu
Y3Rpb24gZGUobix0KXt2YXIgZT1kdCh0KTtlWzBdLT1uLGJ0KGUpO3ZhciBy
PW5uKC1lWzFdKTtyZXR1cm4oKC1lWzJdPDA/LXI6cikrMipNYXRoLlBJLVVv
KSUoMipNYXRoLlBJKX1mdW5jdGlvbiB5ZShuLHQsZSl7dmFyIHI9YW8ucmFu
Z2Uobix0LVVvLGUpLmNvbmNhdCh0KTtyZXR1cm4gZnVuY3Rpb24obil7cmV0
dXJuIHIubWFwKGZ1bmN0aW9uKHQpe3JldHVybltuLHRdfSl9fWZ1bmN0aW9u
IG1lKG4sdCxlKXt2YXIgcj1hby5yYW5nZShuLHQtVW8sZSkuY29uY2F0KHQp
O3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gci5tYXAoZnVuY3Rpb24odCl7
cmV0dXJuW3Qsbl19KX19ZnVuY3Rpb24gTWUobil7cmV0dXJuIG4uc291cmNl
fWZ1bmN0aW9uIHhlKG4pe3JldHVybiBuLnRhcmdldH1mdW5jdGlvbiBiZShu
LHQsZSxyKXt2YXIgaT1NYXRoLmNvcyh0KSx1PU1hdGguc2luKHQpLG89TWF0
aC5jb3MociksYT1NYXRoLnNpbihyKSxsPWkqTWF0aC5jb3MobiksYz1pKk1h
dGguc2luKG4pLGY9bypNYXRoLmNvcyhlKSxzPW8qTWF0aC5zaW4oZSksaD0y
Kk1hdGguYXNpbihNYXRoLnNxcnQob24oci10KStpKm8qb24oZS1uKSkpLHA9
MS9NYXRoLnNpbihoKSxnPWg/ZnVuY3Rpb24obil7dmFyIHQ9TWF0aC5zaW4o
bio9aCkqcCxlPU1hdGguc2luKGgtbikqcCxyPWUqbCt0KmYsaT1lKmMrdCpz
LG89ZSp1K3QqYTtyZXR1cm5bTWF0aC5hdGFuMihpLHIpKlpvLE1hdGguYXRh
bjIobyxNYXRoLnNxcnQocipyK2kqaSkpKlpvXX06ZnVuY3Rpb24oKXtyZXR1
cm5bbipabyx0KlpvXX07cmV0dXJuIGcuZGlzdGFuY2U9aCxnfWZ1bmN0aW9u
IF9lKCl7ZnVuY3Rpb24gbihuLGkpe3ZhciB1PU1hdGguc2luKGkqPVlvKSxv
PU1hdGguY29zKGkpLGE9eG8oKG4qPVlvKS10KSxsPU1hdGguY29zKGEpO0ph
Kz1NYXRoLmF0YW4yKE1hdGguc3FydCgoYT1vKk1hdGguc2luKGEpKSphKyhh
PXIqdS1lKm8qbCkqYSksZSp1K3IqbypsKSx0PW4sZT11LHI9b312YXIgdCxl
LHI7R2EucG9pbnQ9ZnVuY3Rpb24oaSx1KXt0PWkqWW8sZT1NYXRoLnNpbih1
Kj1Zbykscj1NYXRoLmNvcyh1KSxHYS5wb2ludD1ufSxHYS5saW5lRW5kPWZ1
bmN0aW9uKCl7R2EucG9pbnQ9R2EubGluZUVuZD1ifX1mdW5jdGlvbiB3ZShu
LHQpe2Z1bmN0aW9uIGUodCxlKXt2YXIgcj1NYXRoLmNvcyh0KSxpPU1hdGgu
Y29zKGUpLHU9bihyKmkpO3JldHVyblt1KmkqTWF0aC5zaW4odCksdSpNYXRo
LnNpbihlKV19cmV0dXJuIGUuaW52ZXJ0PWZ1bmN0aW9uKG4sZSl7dmFyIHI9
TWF0aC5zcXJ0KG4qbitlKmUpLGk9dChyKSx1PU1hdGguc2luKGkpLG89TWF0
aC5jb3MoaSk7cmV0dXJuW01hdGguYXRhbjIobip1LHIqbyksTWF0aC5hc2lu
KHImJmUqdS9yKV19LGV9ZnVuY3Rpb24gU2Uobix0KXtmdW5jdGlvbiBlKG4s
dCl7bz4wPy1JbytVbz50JiYodD0tSW8rVW8pOnQ+SW8tVW8mJih0PUlvLVVv
KTt2YXIgZT1vL01hdGgucG93KGkodCksdSk7cmV0dXJuW2UqTWF0aC5zaW4o
dSpuKSxvLWUqTWF0aC5jb3ModSpuKV19dmFyIHI9TWF0aC5jb3MobiksaT1m
dW5jdGlvbihuKXtyZXR1cm4gTWF0aC50YW4oRm8vNCtuLzIpfSx1PW49PT10
P01hdGguc2luKG4pOk1hdGgubG9nKHIvTWF0aC5jb3ModCkpL01hdGgubG9n
KGkodCkvaShuKSksbz1yKk1hdGgucG93KGkobiksdSkvdTtyZXR1cm4gdT8o
ZS5pbnZlcnQ9ZnVuY3Rpb24obix0KXt2YXIgZT1vLXQscj1LKHUpKk1hdGgu
c3FydChuKm4rZSplKTtyZXR1cm5bTWF0aC5hdGFuMihuLGUpL3UsMipNYXRo
LmF0YW4oTWF0aC5wb3coby9yLDEvdSkpLUlvXX0sZSk6TmV9ZnVuY3Rpb24g
a2Uobix0KXtmdW5jdGlvbiBlKG4sdCl7dmFyIGU9dS10O3JldHVybltlKk1h
dGguc2luKGkqbiksdS1lKk1hdGguY29zKGkqbildfXZhciByPU1hdGguY29z
KG4pLGk9bj09PXQ/TWF0aC5zaW4obik6KHItTWF0aC5jb3ModCkpLyh0LW4p
LHU9ci9pK247cmV0dXJuIHhvKGkpPFVvP2NlOihlLmludmVydD1mdW5jdGlv
bihuLHQpe3ZhciBlPXUtdDtyZXR1cm5bTWF0aC5hdGFuMihuLGUpL2ksdS1L
KGkpKk1hdGguc3FydChuKm4rZSplKV19LGUpfWZ1bmN0aW9uIE5lKG4sdCl7
cmV0dXJuW24sTWF0aC5sb2coTWF0aC50YW4oRm8vNCt0LzIpKV19ZnVuY3Rp
b24gRWUobil7dmFyIHQsZT1vZShuKSxyPWUuc2NhbGUsaT1lLnRyYW5zbGF0
ZSx1PWUuY2xpcEV4dGVudDtyZXR1cm4gZS5zY2FsZT1mdW5jdGlvbigpe3Zh
ciBuPXIuYXBwbHkoZSxhcmd1bWVudHMpO3JldHVybiBuPT09ZT90P2UuY2xp
cEV4dGVudChudWxsKTplOm59LGUudHJhbnNsYXRlPWZ1bmN0aW9uKCl7dmFy
IG49aS5hcHBseShlLGFyZ3VtZW50cyk7cmV0dXJuIG49PT1lP3Q/ZS5jbGlw
RXh0ZW50KG51bGwpOmU6bn0sZS5jbGlwRXh0ZW50PWZ1bmN0aW9uKG4pe3Zh
ciBvPXUuYXBwbHkoZSxhcmd1bWVudHMpO2lmKG89PT1lKXtpZih0PW51bGw9
PW4pe3ZhciBhPUZvKnIoKSxsPWkoKTt1KFtbbFswXS1hLGxbMV0tYV0sW2xb
MF0rYSxsWzFdK2FdXSl9fWVsc2UgdCYmKG89bnVsbCk7cmV0dXJuIG99LGUu
Y2xpcEV4dGVudChudWxsKX1mdW5jdGlvbiBBZShuLHQpe3JldHVybltNYXRo
LmxvZyhNYXRoLnRhbihGby80K3QvMikpLC1uXX1mdW5jdGlvbiBDZShuKXty
ZXR1cm4gblswXX1mdW5jdGlvbiB6ZShuKXtyZXR1cm4gblsxXX1mdW5jdGlv
biBMZShuKXtmb3IodmFyIHQ9bi5sZW5ndGgsZT1bMCwxXSxyPTIsaT0yO3Q+
aTtpKyspe2Zvcig7cj4xJiZRKG5bZVtyLTJdXSxuW2Vbci0xXV0sbltpXSk8
PTA7KS0tcjtlW3IrK109aX1yZXR1cm4gZS5zbGljZSgwLHIpfWZ1bmN0aW9u
IHFlKG4sdCl7cmV0dXJuIG5bMF0tdFswXXx8blsxXS10WzFdfWZ1bmN0aW9u
IFRlKG4sdCxlKXtyZXR1cm4oZVswXS10WzBdKSooblsxXS10WzFdKTwoZVsx
XS10WzFdKSooblswXS10WzBdKX1mdW5jdGlvbiBSZShuLHQsZSxyKXt2YXIg
aT1uWzBdLHU9ZVswXSxvPXRbMF0taSxhPXJbMF0tdSxsPW5bMV0sYz1lWzFd
LGY9dFsxXS1sLHM9clsxXS1jLGg9KGEqKGwtYyktcyooaS11KSkvKHMqby1h
KmYpO3JldHVybltpK2gqbyxsK2gqZl19ZnVuY3Rpb24gRGUobil7dmFyIHQ9
blswXSxlPW5bbi5sZW5ndGgtMV07cmV0dXJuISh0WzBdLWVbMF18fHRbMV0t
ZVsxXSl9ZnVuY3Rpb24gUGUoKXtycih0aGlzKSx0aGlzLmVkZ2U9dGhpcy5z
aXRlPXRoaXMuY2lyY2xlPW51bGx9ZnVuY3Rpb24gVWUobil7dmFyIHQ9Y2wu
cG9wKCl8fG5ldyBQZTtyZXR1cm4gdC5zaXRlPW4sdH1mdW5jdGlvbiBqZShu
KXtCZShuKSxvbC5yZW1vdmUobiksY2wucHVzaChuKSxycihuKX1mdW5jdGlv
biBGZShuKXt2YXIgdD1uLmNpcmNsZSxlPXQueCxyPXQuY3ksaT17eDplLHk6
cn0sdT1uLlAsbz1uLk4sYT1bbl07amUobik7Zm9yKHZhciBsPXU7bC5jaXJj
bGUmJnhvKGUtbC5jaXJjbGUueCk8VW8mJnhvKHItbC5jaXJjbGUuY3kpPFVv
Oyl1PWwuUCxhLnVuc2hpZnQobCksamUobCksbD11O2EudW5zaGlmdChsKSxC
ZShsKTtmb3IodmFyIGM9bztjLmNpcmNsZSYmeG8oZS1jLmNpcmNsZS54KTxV
byYmeG8oci1jLmNpcmNsZS5jeSk8VW87KW89Yy5OLGEucHVzaChjKSxqZShj
KSxjPW87YS5wdXNoKGMpLEJlKGMpO3ZhciBmLHM9YS5sZW5ndGg7Zm9yKGY9
MTtzPmY7KytmKWM9YVtmXSxsPWFbZi0xXSxucihjLmVkZ2UsbC5zaXRlLGMu
c2l0ZSxpKTtsPWFbMF0sYz1hW3MtMV0sYy5lZGdlPUtlKGwuc2l0ZSxjLnNp
dGUsbnVsbCxpKSwkZShsKSwkZShjKX1mdW5jdGlvbiBIZShuKXtmb3IodmFy
IHQsZSxyLGksdT1uLngsbz1uLnksYT1vbC5fO2E7KWlmKHI9T2UoYSxvKS11
LHI+VW8pYT1hLkw7ZWxzZXtpZihpPXUtSWUoYSxvKSwhKGk+VW8pKXtyPi1V
bz8odD1hLlAsZT1hKTppPi1Vbz8odD1hLGU9YS5OKTp0PWU9YTticmVha31p
ZighYS5SKXt0PWE7YnJlYWt9YT1hLlJ9dmFyIGw9VWUobik7aWYob2wuaW5z
ZXJ0KHQsbCksdHx8ZSl7aWYodD09PWUpcmV0dXJuIEJlKHQpLGU9VWUodC5z
aXRlKSxvbC5pbnNlcnQobCxlKSxsLmVkZ2U9ZS5lZGdlPUtlKHQuc2l0ZSxs
LnNpdGUpLCRlKHQpLHZvaWQgJGUoZSk7aWYoIWUpcmV0dXJuIHZvaWQobC5l
ZGdlPUtlKHQuc2l0ZSxsLnNpdGUpKTtCZSh0KSxCZShlKTt2YXIgYz10LnNp
dGUsZj1jLngscz1jLnksaD1uLngtZixwPW4ueS1zLGc9ZS5zaXRlLHY9Zy54
LWYsZD1nLnktcyx5PTIqKGgqZC1wKnYpLG09aCpoK3AqcCxNPXYqditkKmQs
eD17eDooZCptLXAqTSkveStmLHk6KGgqTS12Km0pL3krc307bnIoZS5lZGdl
LGMsZyx4KSxsLmVkZ2U9S2UoYyxuLG51bGwseCksZS5lZGdlPUtlKG4sZyxu
dWxsLHgpLCRlKHQpLCRlKGUpfX1mdW5jdGlvbiBPZShuLHQpe3ZhciBlPW4u
c2l0ZSxyPWUueCxpPWUueSx1PWktdDtpZighdSlyZXR1cm4gcjt2YXIgbz1u
LlA7aWYoIW8pcmV0dXJuLSgxLzApO2U9by5zaXRlO3ZhciBhPWUueCxsPWUu
eSxjPWwtdDtpZighYylyZXR1cm4gYTt2YXIgZj1hLXIscz0xL3UtMS9jLGg9
Zi9jO3JldHVybiBzPygtaCtNYXRoLnNxcnQoaCpoLTIqcyooZipmLygtMipj
KS1sK2MvMitpLXUvMikpKS9zK3I6KHIrYSkvMn1mdW5jdGlvbiBJZShuLHQp
e3ZhciBlPW4uTjtpZihlKXJldHVybiBPZShlLHQpO3ZhciByPW4uc2l0ZTty
ZXR1cm4gci55PT09dD9yLng6MS8wfWZ1bmN0aW9uIFllKG4pe3RoaXMuc2l0
ZT1uLHRoaXMuZWRnZXM9W119ZnVuY3Rpb24gWmUobil7Zm9yKHZhciB0LGUs
cixpLHUsbyxhLGwsYyxmLHM9blswXVswXSxoPW5bMV1bMF0scD1uWzBdWzFd
LGc9blsxXVsxXSx2PXVsLGQ9di5sZW5ndGg7ZC0tOylpZih1PXZbZF0sdSYm
dS5wcmVwYXJlKCkpZm9yKGE9dS5lZGdlcyxsPWEubGVuZ3RoLG89MDtsPm87
KWY9YVtvXS5lbmQoKSxyPWYueCxpPWYueSxjPWFbKytvJWxdLnN0YXJ0KCks
dD1jLngsZT1jLnksKHhvKHItdCk+VW98fHhvKGktZSk+VW8pJiYoYS5zcGxp
Y2UobywwLG5ldyB0cihRZSh1LnNpdGUsZix4byhyLXMpPFVvJiZnLWk+VW8/
e3g6cyx5OnhvKHQtcyk8VW8/ZTpnfTp4byhpLWcpPFVvJiZoLXI+VW8/e3g6
eG8oZS1nKTxVbz90OmgseTpnfTp4byhyLWgpPFVvJiZpLXA+VW8/e3g6aCx5
OnhvKHQtaCk8VW8/ZTpwfTp4byhpLXApPFVvJiZyLXM+VW8/e3g6eG8oZS1w
KTxVbz90OnMseTpwfTpudWxsKSx1LnNpdGUsbnVsbCkpLCsrbCl9ZnVuY3Rp
b24gVmUobix0KXtyZXR1cm4gdC5hbmdsZS1uLmFuZ2xlfWZ1bmN0aW9uIFhl
KCl7cnIodGhpcyksdGhpcy54PXRoaXMueT10aGlzLmFyYz10aGlzLnNpdGU9
dGhpcy5jeT1udWxsfWZ1bmN0aW9uICRlKG4pe3ZhciB0PW4uUCxlPW4uTjtp
Zih0JiZlKXt2YXIgcj10LnNpdGUsaT1uLnNpdGUsdT1lLnNpdGU7aWYociE9
PXUpe3ZhciBvPWkueCxhPWkueSxsPXIueC1vLGM9ci55LWEsZj11Lngtbyxz
PXUueS1hLGg9MioobCpzLWMqZik7aWYoIShoPj0tam8pKXt2YXIgcD1sKmwr
YypjLGc9ZipmK3Mqcyx2PShzKnAtYypnKS9oLGQ9KGwqZy1mKnApL2gscz1k
K2EseT1mbC5wb3AoKXx8bmV3IFhlO3kuYXJjPW4seS5zaXRlPWkseS54PXYr
byx5Lnk9cytNYXRoLnNxcnQodip2K2QqZCkseS5jeT1zLG4uY2lyY2xlPXk7
Zm9yKHZhciBtPW51bGwsTT1sbC5fO007KWlmKHkueTxNLnl8fHkueT09PU0u
eSYmeS54PD1NLngpe2lmKCFNLkwpe209TS5QO2JyZWFrfU09TS5MfWVsc2V7
aWYoIU0uUil7bT1NO2JyZWFrfU09TS5SfWxsLmluc2VydChtLHkpLG18fChh
bD15KX19fX1mdW5jdGlvbiBCZShuKXt2YXIgdD1uLmNpcmNsZTt0JiYodC5Q
fHwoYWw9dC5OKSxsbC5yZW1vdmUodCksZmwucHVzaCh0KSxycih0KSxuLmNp
cmNsZT1udWxsKX1mdW5jdGlvbiBXZShuKXtmb3IodmFyIHQsZT1pbCxyPVl0
KG5bMF1bMF0sblswXVsxXSxuWzFdWzBdLG5bMV1bMV0pLGk9ZS5sZW5ndGg7
aS0tOyl0PWVbaV0sKCFKZSh0LG4pfHwhcih0KXx8eG8odC5hLngtdC5iLngp
PFVvJiZ4byh0LmEueS10LmIueSk8VW8pJiYodC5hPXQuYj1udWxsLGUuc3Bs
aWNlKGksMSkpfWZ1bmN0aW9uIEplKG4sdCl7dmFyIGU9bi5iO2lmKGUpcmV0
dXJuITA7dmFyIHIsaSx1PW4uYSxvPXRbMF1bMF0sYT10WzFdWzBdLGw9dFsw
XVsxXSxjPXRbMV1bMV0sZj1uLmwscz1uLnIsaD1mLngscD1mLnksZz1zLngs
dj1zLnksZD0oaCtnKS8yLHk9KHArdikvMjtpZih2PT09cCl7aWYobz5kfHxk
Pj1hKXJldHVybjtpZihoPmcpe2lmKHUpe2lmKHUueT49YylyZXR1cm59ZWxz
ZSB1PXt4OmQseTpsfTtlPXt4OmQseTpjfX1lbHNle2lmKHUpe2lmKHUueTxs
KXJldHVybn1lbHNlIHU9e3g6ZCx5OmN9O2U9e3g6ZCx5Omx9fX1lbHNlIGlm
KHI9KGgtZykvKHYtcCksaT15LXIqZCwtMT5yfHxyPjEpaWYoaD5nKXtpZih1
KXtpZih1Lnk+PWMpcmV0dXJufWVsc2UgdT17eDoobC1pKS9yLHk6bH07ZT17
eDooYy1pKS9yLHk6Y319ZWxzZXtpZih1KXtpZih1Lnk8bClyZXR1cm59ZWxz
ZSB1PXt4OihjLWkpL3IseTpjfTtlPXt4OihsLWkpL3IseTpsfX1lbHNlIGlm
KHY+cCl7aWYodSl7aWYodS54Pj1hKXJldHVybn1lbHNlIHU9e3g6byx5OnIq
bytpfTtlPXt4OmEseTpyKmEraX19ZWxzZXtpZih1KXtpZih1Lng8bylyZXR1
cm59ZWxzZSB1PXt4OmEseTpyKmEraX07ZT17eDpvLHk6cipvK2l9fXJldHVy
biBuLmE9dSxuLmI9ZSwhMH1mdW5jdGlvbiBHZShuLHQpe3RoaXMubD1uLHRo
aXMucj10LHRoaXMuYT10aGlzLmI9bnVsbH1mdW5jdGlvbiBLZShuLHQsZSxy
KXt2YXIgaT1uZXcgR2Uobix0KTtyZXR1cm4gaWwucHVzaChpKSxlJiZucihp
LG4sdCxlKSxyJiZucihpLHQsbixyKSx1bFtuLmldLmVkZ2VzLnB1c2gobmV3
IHRyKGksbix0KSksdWxbdC5pXS5lZGdlcy5wdXNoKG5ldyB0cihpLHQsbikp
LGl9ZnVuY3Rpb24gUWUobix0LGUpe3ZhciByPW5ldyBHZShuLG51bGwpO3Jl
dHVybiByLmE9dCxyLmI9ZSxpbC5wdXNoKHIpLHJ9ZnVuY3Rpb24gbnIobix0
LGUscil7bi5hfHxuLmI/bi5sPT09ZT9uLmI9cjpuLmE9cjoobi5hPXIsbi5s
PXQsbi5yPWUpfWZ1bmN0aW9uIHRyKG4sdCxlKXt2YXIgcj1uLmEsaT1uLmI7
dGhpcy5lZGdlPW4sdGhpcy5zaXRlPXQsdGhpcy5hbmdsZT1lP01hdGguYXRh
bjIoZS55LXQueSxlLngtdC54KTpuLmw9PT10P01hdGguYXRhbjIoaS54LXIu
eCxyLnktaS55KTpNYXRoLmF0YW4yKHIueC1pLngsaS55LXIueSl9ZnVuY3Rp
b24gZXIoKXt0aGlzLl89bnVsbH1mdW5jdGlvbiBycihuKXtuLlU9bi5DPW4u
TD1uLlI9bi5QPW4uTj1udWxsfWZ1bmN0aW9uIGlyKG4sdCl7dmFyIGU9dCxy
PXQuUixpPWUuVTtpP2kuTD09PWU/aS5MPXI6aS5SPXI6bi5fPXIsci5VPWks
ZS5VPXIsZS5SPXIuTCxlLlImJihlLlIuVT1lKSxyLkw9ZX1mdW5jdGlvbiB1
cihuLHQpe3ZhciBlPXQscj10LkwsaT1lLlU7aT9pLkw9PT1lP2kuTD1yOmku
Uj1yOm4uXz1yLHIuVT1pLGUuVT1yLGUuTD1yLlIsZS5MJiYoZS5MLlU9ZSks
ci5SPWV9ZnVuY3Rpb24gb3Iobil7Zm9yKDtuLkw7KW49bi5MO3JldHVybiBu
fWZ1bmN0aW9uIGFyKG4sdCl7dmFyIGUscixpLHU9bi5zb3J0KGxyKS5wb3Ao
KTtmb3IoaWw9W10sdWw9bmV3IEFycmF5KG4ubGVuZ3RoKSxvbD1uZXcgZXIs
bGw9bmV3IGVyOzspaWYoaT1hbCx1JiYoIWl8fHUueTxpLnl8fHUueT09PWku
eSYmdS54PGkueCkpdS54PT09ZSYmdS55PT09cnx8KHVsW3UuaV09bmV3IFll
KHUpLEhlKHUpLGU9dS54LHI9dS55KSx1PW4ucG9wKCk7ZWxzZXtpZighaSli
cmVhaztGZShpLmFyYyl9dCYmKFdlKHQpLFplKHQpKTt2YXIgbz17Y2VsbHM6
dWwsZWRnZXM6aWx9O3JldHVybiBvbD1sbD1pbD11bD1udWxsLG99ZnVuY3Rp
b24gbHIobix0KXtyZXR1cm4gdC55LW4ueXx8dC54LW4ueH1mdW5jdGlvbiBj
cihuLHQsZSl7cmV0dXJuKG4ueC1lLngpKih0Lnktbi55KS0obi54LXQueCkq
KGUueS1uLnkpfWZ1bmN0aW9uIGZyKG4pe3JldHVybiBuLnh9ZnVuY3Rpb24g
c3Iobil7cmV0dXJuIG4ueX1mdW5jdGlvbiBocigpe3JldHVybntsZWFmOiEw
LG5vZGVzOltdLHBvaW50Om51bGwseDpudWxsLHk6bnVsbH19ZnVuY3Rpb24g
cHIobix0LGUscixpLHUpe2lmKCFuKHQsZSxyLGksdSkpe3ZhciBvPS41Kihl
K2kpLGE9LjUqKHIrdSksbD10Lm5vZGVzO2xbMF0mJnByKG4sbFswXSxlLHIs
byxhKSxsWzFdJiZwcihuLGxbMV0sbyxyLGksYSksbFsyXSYmcHIobixsWzJd
LGUsYSxvLHUpLGxbM10mJnByKG4sbFszXSxvLGEsaSx1KX19ZnVuY3Rpb24g
Z3Iobix0LGUscixpLHUsbyl7dmFyIGEsbD0xLzA7cmV0dXJuIGZ1bmN0aW9u
IGMobixmLHMsaCxwKXtpZighKGY+dXx8cz5vfHxyPmh8fGk+cCkpe2lmKGc9
bi5wb2ludCl7dmFyIGcsdj10LW4ueCxkPWUtbi55LHk9dip2K2QqZDtpZihs
Pnkpe3ZhciBtPU1hdGguc3FydChsPXkpO3I9dC1tLGk9ZS1tLHU9dCttLG89
ZSttLGE9Z319Zm9yKHZhciBNPW4ubm9kZXMseD0uNSooZitoKSxiPS41Kihz
K3ApLF89dD49eCx3PWU+PWIsUz13PDwxfF8saz1TKzQ7az5TOysrUylpZihu
PU1bMyZTXSlzd2l0Y2goMyZTKXtjYXNlIDA6YyhuLGYscyx4LGIpO2JyZWFr
O2Nhc2UgMTpjKG4seCxzLGgsYik7YnJlYWs7Y2FzZSAyOmMobixmLGIseCxw
KTticmVhaztjYXNlIDM6YyhuLHgsYixoLHApfX19KG4scixpLHUsbyksYX1m
dW5jdGlvbiB2cihuLHQpe249YW8ucmdiKG4pLHQ9YW8ucmdiKHQpO3ZhciBl
PW4ucixyPW4uZyxpPW4uYix1PXQuci1lLG89dC5nLXIsYT10LmItaTtyZXR1
cm4gZnVuY3Rpb24obil7cmV0dXJuIiMiK2JuKE1hdGgucm91bmQoZSt1Km4p
KStibihNYXRoLnJvdW5kKHIrbypuKSkrYm4oTWF0aC5yb3VuZChpK2Eqbikp
fX1mdW5jdGlvbiBkcihuLHQpe3ZhciBlLHI9e30saT17fTtmb3IoZSBpbiBu
KWUgaW4gdD9yW2VdPU1yKG5bZV0sdFtlXSk6aVtlXT1uW2VdO2ZvcihlIGlu
IHQpZSBpbiBufHwoaVtlXT10W2VdKTtyZXR1cm4gZnVuY3Rpb24obil7Zm9y
KGUgaW4gcilpW2VdPXJbZV0obik7cmV0dXJuIGl9fWZ1bmN0aW9uIHlyKG4s
dCl7cmV0dXJuIG49K24sdD0rdCxmdW5jdGlvbihlKXtyZXR1cm4gbiooMS1l
KSt0KmV9fWZ1bmN0aW9uIG1yKG4sdCl7dmFyIGUscixpLHU9aGwubGFzdElu
ZGV4PXBsLmxhc3RJbmRleD0wLG89LTEsYT1bXSxsPVtdO2ZvcihuKz0iIix0
Kz0iIjsoZT1obC5leGVjKG4pKSYmKHI9cGwuZXhlYyh0KSk7KShpPXIuaW5k
ZXgpPnUmJihpPXQuc2xpY2UodSxpKSxhW29dP2Fbb10rPWk6YVsrK29dPWkp
LChlPWVbMF0pPT09KHI9clswXSk/YVtvXT9hW29dKz1yOmFbKytvXT1yOihh
Wysrb109bnVsbCxsLnB1c2goe2k6byx4OnlyKGUscil9KSksdT1wbC5sYXN0
SW5kZXg7cmV0dXJuIHU8dC5sZW5ndGgmJihpPXQuc2xpY2UodSksYVtvXT9h
W29dKz1pOmFbKytvXT1pKSxhLmxlbmd0aDwyP2xbMF0/KHQ9bFswXS54LGZ1
bmN0aW9uKG4pe3JldHVybiB0KG4pKyIifSk6ZnVuY3Rpb24oKXtyZXR1cm4g
dH06KHQ9bC5sZW5ndGgsZnVuY3Rpb24obil7Zm9yKHZhciBlLHI9MDt0PnI7
KytyKWFbKGU9bFtyXSkuaV09ZS54KG4pO3JldHVybiBhLmpvaW4oIiIpfSl9
ZnVuY3Rpb24gTXIobix0KXtmb3IodmFyIGUscj1hby5pbnRlcnBvbGF0b3Jz
Lmxlbmd0aDstLXI+PTAmJiEoZT1hby5pbnRlcnBvbGF0b3JzW3JdKG4sdCkp
Oyk7cmV0dXJuIGV9ZnVuY3Rpb24geHIobix0KXt2YXIgZSxyPVtdLGk9W10s
dT1uLmxlbmd0aCxvPXQubGVuZ3RoLGE9TWF0aC5taW4obi5sZW5ndGgsdC5s
ZW5ndGgpO2ZvcihlPTA7YT5lOysrZSlyLnB1c2goTXIobltlXSx0W2VdKSk7
Zm9yKDt1PmU7KytlKWlbZV09bltlXTtmb3IoO28+ZTsrK2UpaVtlXT10W2Vd
O3JldHVybiBmdW5jdGlvbihuKXtmb3IoZT0wO2E+ZTsrK2UpaVtlXT1yW2Vd
KG4pO3JldHVybiBpfX1mdW5jdGlvbiBicihuKXtyZXR1cm4gZnVuY3Rpb24o
dCl7cmV0dXJuIDA+PXQ/MDp0Pj0xPzE6bih0KX19ZnVuY3Rpb24gX3Iobil7
cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiAxLW4oMS10KX19ZnVuY3Rpb24g
d3Iobil7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybi41KiguNT50P24oMip0
KToyLW4oMi0yKnQpKX19ZnVuY3Rpb24gU3Iobil7cmV0dXJuIG4qbn1mdW5j
dGlvbiBrcihuKXtyZXR1cm4gbipuKm59ZnVuY3Rpb24gTnIobil7aWYoMD49
bilyZXR1cm4gMDtpZihuPj0xKXJldHVybiAxO3ZhciB0PW4qbixlPXQqbjty
ZXR1cm4gNCooLjU+bj9lOjMqKG4tdCkrZS0uNzUpfWZ1bmN0aW9uIEVyKG4p
e3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5wb3codCxuKX19ZnVu
Y3Rpb24gQXIobil7cmV0dXJuIDEtTWF0aC5jb3MobipJbyl9ZnVuY3Rpb24g
Q3Iobil7cmV0dXJuIE1hdGgucG93KDIsMTAqKG4tMSkpfWZ1bmN0aW9uIHpy
KG4pe3JldHVybiAxLU1hdGguc3FydCgxLW4qbil9ZnVuY3Rpb24gTHIobix0
KXt2YXIgZTtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyJiYodD0uNDUpLGFy
Z3VtZW50cy5sZW5ndGg/ZT10L0hvKk1hdGguYXNpbigxL24pOihuPTEsZT10
LzQpLGZ1bmN0aW9uKHIpe3JldHVybiAxK24qTWF0aC5wb3coMiwtMTAqcikq
TWF0aC5zaW4oKHItZSkqSG8vdCl9fWZ1bmN0aW9uIHFyKG4pe3JldHVybiBu
fHwobj0xLjcwMTU4KSxmdW5jdGlvbih0KXtyZXR1cm4gdCp0KigobisxKSp0
LW4pfX1mdW5jdGlvbiBUcihuKXtyZXR1cm4gMS8yLjc1Pm4/Ny41NjI1Km4q
bjoyLzIuNzU+bj83LjU2MjUqKG4tPTEuNS8yLjc1KSpuKy43NToyLjUvMi43
NT5uPzcuNTYyNSoobi09Mi4yNS8yLjc1KSpuKy45Mzc1OjcuNTYyNSoobi09
Mi42MjUvMi43NSkqbisuOTg0Mzc1fWZ1bmN0aW9uIFJyKG4sdCl7bj1hby5o
Y2wobiksdD1hby5oY2wodCk7dmFyIGU9bi5oLHI9bi5jLGk9bi5sLHU9dC5o
LWUsbz10LmMtcixhPXQubC1pO3JldHVybiBpc05hTihvKSYmKG89MCxyPWlz
TmFOKHIpP3QuYzpyKSxpc05hTih1KT8odT0wLGU9aXNOYU4oZSk/dC5oOmUp
OnU+MTgwP3UtPTM2MDotMTgwPnUmJih1Kz0zNjApLGZ1bmN0aW9uKG4pe3Jl
dHVybiBzbihlK3UqbixyK28qbixpK2EqbikrIiJ9fWZ1bmN0aW9uIERyKG4s
dCl7bj1hby5oc2wobiksdD1hby5oc2wodCk7dmFyIGU9bi5oLHI9bi5zLGk9
bi5sLHU9dC5oLWUsbz10LnMtcixhPXQubC1pO3JldHVybiBpc05hTihvKSYm
KG89MCxyPWlzTmFOKHIpP3QuczpyKSxpc05hTih1KT8odT0wLGU9aXNOYU4o
ZSk/dC5oOmUpOnU+MTgwP3UtPTM2MDotMTgwPnUmJih1Kz0zNjApLGZ1bmN0
aW9uKG4pe3JldHVybiBjbihlK3UqbixyK28qbixpK2EqbikrIiJ9fWZ1bmN0
aW9uIFByKG4sdCl7bj1hby5sYWIobiksdD1hby5sYWIodCk7dmFyIGU9bi5s
LHI9bi5hLGk9bi5iLHU9dC5sLWUsbz10LmEtcixhPXQuYi1pO3JldHVybiBm
dW5jdGlvbihuKXtyZXR1cm4gcG4oZSt1Km4scitvKm4saSthKm4pKyIifX1m
dW5jdGlvbiBVcihuLHQpe3JldHVybiB0LT1uLGZ1bmN0aW9uKGUpe3JldHVy
biBNYXRoLnJvdW5kKG4rdCplKX19ZnVuY3Rpb24ganIobil7dmFyIHQ9W24u
YSxuLmJdLGU9W24uYyxuLmRdLHI9SHIodCksaT1Gcih0LGUpLHU9SHIoT3Io
ZSx0LC1pKSl8fDA7dFswXSplWzFdPGVbMF0qdFsxXSYmKHRbMF0qPS0xLHRb
MV0qPS0xLHIqPS0xLGkqPS0xKSx0aGlzLnJvdGF0ZT0ocj9NYXRoLmF0YW4y
KHRbMV0sdFswXSk6TWF0aC5hdGFuMigtZVswXSxlWzFdKSkqWm8sdGhpcy50
cmFuc2xhdGU9W24uZSxuLmZdLHRoaXMuc2NhbGU9W3IsdV0sdGhpcy5za2V3
PXU/TWF0aC5hdGFuMihpLHUpKlpvOjB9ZnVuY3Rpb24gRnIobix0KXtyZXR1
cm4gblswXSp0WzBdK25bMV0qdFsxXX1mdW5jdGlvbiBIcihuKXt2YXIgdD1N
YXRoLnNxcnQoRnIobixuKSk7cmV0dXJuIHQmJihuWzBdLz10LG5bMV0vPXQp
LHR9ZnVuY3Rpb24gT3Iobix0LGUpe3JldHVybiBuWzBdKz1lKnRbMF0sblsx
XSs9ZSp0WzFdLG59ZnVuY3Rpb24gSXIobil7cmV0dXJuIG4ubGVuZ3RoP24u
cG9wKCkrIiwiOiIifWZ1bmN0aW9uIFlyKG4sdCxlLHIpe2lmKG5bMF0hPT10
WzBdfHxuWzFdIT09dFsxXSl7dmFyIGk9ZS5wdXNoKCJ0cmFuc2xhdGUoIixu
dWxsLCIsIixudWxsLCIpIik7ci5wdXNoKHtpOmktNCx4OnlyKG5bMF0sdFsw
XSl9LHtpOmktMix4OnlyKG5bMV0sdFsxXSl9KX1lbHNlKHRbMF18fHRbMV0p
JiZlLnB1c2goInRyYW5zbGF0ZSgiK3QrIikiKX1mdW5jdGlvbiBacihuLHQs
ZSxyKXtuIT09dD8obi10PjE4MD90Kz0zNjA6dC1uPjE4MCYmKG4rPTM2MCks
ci5wdXNoKHtpOmUucHVzaChJcihlKSsicm90YXRlKCIsbnVsbCwiKSIpLTIs
eDp5cihuLHQpfSkpOnQmJmUucHVzaChJcihlKSsicm90YXRlKCIrdCsiKSIp
fWZ1bmN0aW9uIFZyKG4sdCxlLHIpe24hPT10P3IucHVzaCh7aTplLnB1c2go
SXIoZSkrInNrZXdYKCIsbnVsbCwiKSIpLTIseDp5cihuLHQpfSk6dCYmZS5w
dXNoKElyKGUpKyJza2V3WCgiK3QrIikiKX1mdW5jdGlvbiBYcihuLHQsZSxy
KXtpZihuWzBdIT09dFswXXx8blsxXSE9PXRbMV0pe3ZhciBpPWUucHVzaChJ
cihlKSsic2NhbGUoIixudWxsLCIsIixudWxsLCIpIik7ci5wdXNoKHtpOmkt
NCx4OnlyKG5bMF0sdFswXSl9LHtpOmktMix4OnlyKG5bMV0sdFsxXSl9KX1l
bHNlIDE9PT10WzBdJiYxPT09dFsxXXx8ZS5wdXNoKElyKGUpKyJzY2FsZSgi
K3QrIikiKX1mdW5jdGlvbiAkcihuLHQpe3ZhciBlPVtdLHI9W107cmV0dXJu
IG49YW8udHJhbnNmb3JtKG4pLHQ9YW8udHJhbnNmb3JtKHQpLFlyKG4udHJh
bnNsYXRlLHQudHJhbnNsYXRlLGUsciksWnIobi5yb3RhdGUsdC5yb3RhdGUs
ZSxyKSxWcihuLnNrZXcsdC5za2V3LGUsciksWHIobi5zY2FsZSx0LnNjYWxl
LGUsciksbj10PW51bGwsZnVuY3Rpb24obil7Zm9yKHZhciB0LGk9LTEsdT1y
Lmxlbmd0aDsrK2k8dTspZVsodD1yW2ldKS5pXT10Lngobik7cmV0dXJuIGUu
am9pbigiIil9fWZ1bmN0aW9uIEJyKG4sdCl7cmV0dXJuIHQ9KHQtPW49K24p
fHwxL3QsZnVuY3Rpb24oZSl7cmV0dXJuKGUtbikvdH19ZnVuY3Rpb24gV3Io
bix0KXtyZXR1cm4gdD0odC09bj0rbil8fDEvdCxmdW5jdGlvbihlKXtyZXR1
cm4gTWF0aC5tYXgoMCxNYXRoLm1pbigxLChlLW4pL3QpKX19ZnVuY3Rpb24g
SnIobil7Zm9yKHZhciB0PW4uc291cmNlLGU9bi50YXJnZXQscj1Lcih0LGUp
LGk9W3RdO3QhPT1yOyl0PXQucGFyZW50LGkucHVzaCh0KTtmb3IodmFyIHU9
aS5sZW5ndGg7ZSE9PXI7KWkuc3BsaWNlKHUsMCxlKSxlPWUucGFyZW50O3Jl
dHVybiBpfWZ1bmN0aW9uIEdyKG4pe2Zvcih2YXIgdD1bXSxlPW4ucGFyZW50
O251bGwhPWU7KXQucHVzaChuKSxuPWUsZT1lLnBhcmVudDtyZXR1cm4gdC5w
dXNoKG4pLHR9ZnVuY3Rpb24gS3Iobix0KXtpZihuPT09dClyZXR1cm4gbjtm
b3IodmFyIGU9R3Iobikscj1Hcih0KSxpPWUucG9wKCksdT1yLnBvcCgpLG89
bnVsbDtpPT09dTspbz1pLGk9ZS5wb3AoKSx1PXIucG9wKCk7cmV0dXJuIG99
ZnVuY3Rpb24gUXIobil7bi5maXhlZHw9Mn1mdW5jdGlvbiBuaShuKXtuLmZp
eGVkJj0tN31mdW5jdGlvbiB0aShuKXtuLmZpeGVkfD00LG4ucHg9bi54LG4u
cHk9bi55fWZ1bmN0aW9uIGVpKG4pe24uZml4ZWQmPS01fWZ1bmN0aW9uIHJp
KG4sdCxlKXt2YXIgcj0wLGk9MDtpZihuLmNoYXJnZT0wLCFuLmxlYWYpZm9y
KHZhciB1LG89bi5ub2RlcyxhPW8ubGVuZ3RoLGw9LTE7KytsPGE7KXU9b1ts
XSxudWxsIT11JiYocmkodSx0LGUpLG4uY2hhcmdlKz11LmNoYXJnZSxyKz11
LmNoYXJnZSp1LmN4LGkrPXUuY2hhcmdlKnUuY3kpO2lmKG4ucG9pbnQpe24u
bGVhZnx8KG4ucG9pbnQueCs9TWF0aC5yYW5kb20oKS0uNSxuLnBvaW50Lnkr
PU1hdGgucmFuZG9tKCktLjUpO3ZhciBjPXQqZVtuLnBvaW50LmluZGV4XTtu
LmNoYXJnZSs9bi5wb2ludENoYXJnZT1jLHIrPWMqbi5wb2ludC54LGkrPWMq
bi5wb2ludC55fW4uY3g9ci9uLmNoYXJnZSxuLmN5PWkvbi5jaGFyZ2V9ZnVu
Y3Rpb24gaWkobix0KXtyZXR1cm4gYW8ucmViaW5kKG4sdCwic29ydCIsImNo
aWxkcmVuIiwidmFsdWUiKSxuLm5vZGVzPW4sbi5saW5rcz1maSxufWZ1bmN0
aW9uIHVpKG4sdCl7Zm9yKHZhciBlPVtuXTtudWxsIT0obj1lLnBvcCgpKTsp
aWYodChuKSwoaT1uLmNoaWxkcmVuKSYmKHI9aS5sZW5ndGgpKWZvcih2YXIg
cixpOy0tcj49MDspZS5wdXNoKGlbcl0pfWZ1bmN0aW9uIG9pKG4sdCl7Zm9y
KHZhciBlPVtuXSxyPVtdO251bGwhPShuPWUucG9wKCkpOylpZihyLnB1c2go
biksKHU9bi5jaGlsZHJlbikmJihpPXUubGVuZ3RoKSlmb3IodmFyIGksdSxv
PS0xOysrbzxpOyllLnB1c2godVtvXSk7Zm9yKDtudWxsIT0obj1yLnBvcCgp
KTspdChuKX1mdW5jdGlvbiBhaShuKXtyZXR1cm4gbi5jaGlsZHJlbn1mdW5j
dGlvbiBsaShuKXtyZXR1cm4gbi52YWx1ZX1mdW5jdGlvbiBjaShuLHQpe3Jl
dHVybiB0LnZhbHVlLW4udmFsdWV9ZnVuY3Rpb24gZmkobil7cmV0dXJuIGFv
Lm1lcmdlKG4ubWFwKGZ1bmN0aW9uKG4pe3JldHVybihuLmNoaWxkcmVufHxb
XSkubWFwKGZ1bmN0aW9uKHQpe3JldHVybntzb3VyY2U6bix0YXJnZXQ6dH19
KX0pKX1mdW5jdGlvbiBzaShuKXtyZXR1cm4gbi54fWZ1bmN0aW9uIGhpKG4p
e3JldHVybiBuLnl9ZnVuY3Rpb24gcGkobix0LGUpe24ueTA9dCxuLnk9ZX1m
dW5jdGlvbiBnaShuKXtyZXR1cm4gYW8ucmFuZ2Uobi5sZW5ndGgpfWZ1bmN0
aW9uIHZpKG4pe2Zvcih2YXIgdD0tMSxlPW5bMF0ubGVuZ3RoLHI9W107Kyt0
PGU7KXJbdF09MDtyZXR1cm4gcn1mdW5jdGlvbiBkaShuKXtmb3IodmFyIHQs
ZT0xLHI9MCxpPW5bMF1bMV0sdT1uLmxlbmd0aDt1PmU7KytlKSh0PW5bZV1b
MV0pPmkmJihyPWUsaT10KTtyZXR1cm4gcn1mdW5jdGlvbiB5aShuKXtyZXR1
cm4gbi5yZWR1Y2UobWksMCl9ZnVuY3Rpb24gbWkobix0KXtyZXR1cm4gbit0
WzFdfWZ1bmN0aW9uIE1pKG4sdCl7cmV0dXJuIHhpKG4sTWF0aC5jZWlsKE1h
dGgubG9nKHQubGVuZ3RoKS9NYXRoLkxOMisxKSl9ZnVuY3Rpb24geGkobix0
KXtmb3IodmFyIGU9LTEscj0rblswXSxpPShuWzFdLXIpL3QsdT1bXTsrK2U8
PXQ7KXVbZV09aSplK3I7cmV0dXJuIHV9ZnVuY3Rpb24gYmkobil7cmV0dXJu
W2FvLm1pbihuKSxhby5tYXgobildfWZ1bmN0aW9uIF9pKG4sdCl7cmV0dXJu
IG4udmFsdWUtdC52YWx1ZX1mdW5jdGlvbiB3aShuLHQpe3ZhciBlPW4uX3Bh
Y2tfbmV4dDtuLl9wYWNrX25leHQ9dCx0Ll9wYWNrX3ByZXY9bix0Ll9wYWNr
X25leHQ9ZSxlLl9wYWNrX3ByZXY9dH1mdW5jdGlvbiBTaShuLHQpe24uX3Bh
Y2tfbmV4dD10LHQuX3BhY2tfcHJldj1ufWZ1bmN0aW9uIGtpKG4sdCl7dmFy
IGU9dC54LW4ueCxyPXQueS1uLnksaT1uLnIrdC5yO3JldHVybi45OTkqaSpp
PmUqZStyKnJ9ZnVuY3Rpb24gTmkobil7ZnVuY3Rpb24gdChuKXtmPU1hdGgu
bWluKG4ueC1uLnIsZikscz1NYXRoLm1heChuLngrbi5yLHMpLGg9TWF0aC5t
aW4obi55LW4ucixoKSxwPU1hdGgubWF4KG4ueStuLnIscCl9aWYoKGU9bi5j
aGlsZHJlbikmJihjPWUubGVuZ3RoKSl7dmFyIGUscixpLHUsbyxhLGwsYyxm
PTEvMCxzPS0oMS8wKSxoPTEvMCxwPS0oMS8wKTtpZihlLmZvckVhY2goRWkp
LHI9ZVswXSxyLng9LXIucixyLnk9MCx0KHIpLGM+MSYmKGk9ZVsxXSxpLng9
aS5yLGkueT0wLHQoaSksYz4yKSlmb3IodT1lWzJdLHppKHIsaSx1KSx0KHUp
LHdpKHIsdSksci5fcGFja19wcmV2PXUsd2kodSxpKSxpPXIuX3BhY2tfbmV4
dCxvPTM7Yz5vO28rKyl7emkocixpLHU9ZVtvXSk7dmFyIGc9MCx2PTEsZD0x
O2ZvcihhPWkuX3BhY2tfbmV4dDthIT09aTthPWEuX3BhY2tfbmV4dCx2Kysp
aWYoa2koYSx1KSl7Zz0xO2JyZWFrfWlmKDE9PWcpZm9yKGw9ci5fcGFja19w
cmV2O2whPT1hLl9wYWNrX3ByZXYmJiFraShsLHUpO2w9bC5fcGFja19wcmV2
LGQrKyk7Zz8oZD52fHx2PT1kJiZpLnI8ci5yP1NpKHIsaT1hKTpTaShyPWws
aSksby0tKTood2kocix1KSxpPXUsdCh1KSl9dmFyIHk9KGYrcykvMixtPSho
K3ApLzIsTT0wO2ZvcihvPTA7Yz5vO28rKyl1PWVbb10sdS54LT15LHUueS09
bSxNPU1hdGgubWF4KE0sdS5yK01hdGguc3FydCh1LngqdS54K3UueSp1Lnkp
KTtuLnI9TSxlLmZvckVhY2goQWkpfX1mdW5jdGlvbiBFaShuKXtuLl9wYWNr
X25leHQ9bi5fcGFja19wcmV2PW59ZnVuY3Rpb24gQWkobil7ZGVsZXRlIG4u
X3BhY2tfbmV4dCxkZWxldGUgbi5fcGFja19wcmV2fWZ1bmN0aW9uIENpKG4s
dCxlLHIpe3ZhciBpPW4uY2hpbGRyZW47aWYobi54PXQrPXIqbi54LG4ueT1l
Kz1yKm4ueSxuLnIqPXIsaSlmb3IodmFyIHU9LTEsbz1pLmxlbmd0aDsrK3U8
bzspQ2koaVt1XSx0LGUscil9ZnVuY3Rpb24gemkobix0LGUpe3ZhciByPW4u
citlLnIsaT10Lngtbi54LHU9dC55LW4ueTtpZihyJiYoaXx8dSkpe3ZhciBv
PXQucitlLnIsYT1pKmkrdSp1O28qPW8scio9cjt2YXIgbD0uNSsoci1vKS8o
MiphKSxjPU1hdGguc3FydChNYXRoLm1heCgwLDIqbyoocithKS0oci09YSkq
ci1vKm8pKS8oMiphKTtlLng9bi54K2wqaStjKnUsZS55PW4ueStsKnUtYypp
fWVsc2UgZS54PW4ueCtyLGUueT1uLnl9ZnVuY3Rpb24gTGkobix0KXtyZXR1
cm4gbi5wYXJlbnQ9PXQucGFyZW50PzE6Mn1mdW5jdGlvbiBxaShuKXt2YXIg
dD1uLmNoaWxkcmVuO3JldHVybiB0Lmxlbmd0aD90WzBdOm4udH1mdW5jdGlv
biBUaShuKXt2YXIgdCxlPW4uY2hpbGRyZW47cmV0dXJuKHQ9ZS5sZW5ndGgp
P2VbdC0xXTpuLnR9ZnVuY3Rpb24gUmkobix0LGUpe3ZhciByPWUvKHQuaS1u
LmkpO3QuYy09cix0LnMrPWUsbi5jKz1yLHQueis9ZSx0Lm0rPWV9ZnVuY3Rp
b24gRGkobil7Zm9yKHZhciB0LGU9MCxyPTAsaT1uLmNoaWxkcmVuLHU9aS5s
ZW5ndGg7LS11Pj0wOyl0PWlbdV0sdC56Kz1lLHQubSs9ZSxlKz10LnMrKHIr
PXQuYyl9ZnVuY3Rpb24gUGkobix0LGUpe3JldHVybiBuLmEucGFyZW50PT09
dC5wYXJlbnQ/bi5hOmV9ZnVuY3Rpb24gVWkobil7cmV0dXJuIDErYW8ubWF4
KG4sZnVuY3Rpb24obil7cmV0dXJuIG4ueX0pfWZ1bmN0aW9uIGppKG4pe3Jl
dHVybiBuLnJlZHVjZShmdW5jdGlvbihuLHQpe3JldHVybiBuK3QueH0sMCkv
bi5sZW5ndGh9ZnVuY3Rpb24gRmkobil7dmFyIHQ9bi5jaGlsZHJlbjtyZXR1
cm4gdCYmdC5sZW5ndGg/RmkodFswXSk6bn1mdW5jdGlvbiBIaShuKXt2YXIg
dCxlPW4uY2hpbGRyZW47cmV0dXJuIGUmJih0PWUubGVuZ3RoKT9IaShlW3Qt
MV0pOm59ZnVuY3Rpb24gT2kobil7cmV0dXJue3g6bi54LHk6bi55LGR4Om4u
ZHgsZHk6bi5keX19ZnVuY3Rpb24gSWkobix0KXt2YXIgZT1uLngrdFszXSxy
PW4ueSt0WzBdLGk9bi5keC10WzFdLXRbM10sdT1uLmR5LXRbMF0tdFsyXTty
ZXR1cm4gMD5pJiYoZSs9aS8yLGk9MCksMD51JiYocis9dS8yLHU9MCkse3g6
ZSx5OnIsZHg6aSxkeTp1fX1mdW5jdGlvbiBZaShuKXt2YXIgdD1uWzBdLGU9
bltuLmxlbmd0aC0xXTtyZXR1cm4gZT50P1t0LGVdOltlLHRdfWZ1bmN0aW9u
IFppKG4pe3JldHVybiBuLnJhbmdlRXh0ZW50P24ucmFuZ2VFeHRlbnQoKTpZ
aShuLnJhbmdlKCkpfWZ1bmN0aW9uIFZpKG4sdCxlLHIpe3ZhciBpPWUoblsw
XSxuWzFdKSx1PXIodFswXSx0WzFdKTtyZXR1cm4gZnVuY3Rpb24obil7cmV0
dXJuIHUoaShuKSl9fWZ1bmN0aW9uIFhpKG4sdCl7dmFyIGUscj0wLGk9bi5s
ZW5ndGgtMSx1PW5bcl0sbz1uW2ldO3JldHVybiB1Pm8mJihlPXIscj1pLGk9
ZSxlPXUsdT1vLG89ZSksbltyXT10LmZsb29yKHUpLG5baV09dC5jZWlsKG8p
LG59ZnVuY3Rpb24gJGkobil7cmV0dXJuIG4/e2Zsb29yOmZ1bmN0aW9uKHQp
e3JldHVybiBNYXRoLmZsb29yKHQvbikqbn0sY2VpbDpmdW5jdGlvbih0KXty
ZXR1cm4gTWF0aC5jZWlsKHQvbikqbn19OlNsfWZ1bmN0aW9uIEJpKG4sdCxl
LHIpe3ZhciBpPVtdLHU9W10sbz0wLGE9TWF0aC5taW4obi5sZW5ndGgsdC5s
ZW5ndGgpLTE7Zm9yKG5bYV08blswXSYmKG49bi5zbGljZSgpLnJldmVyc2Uo
KSx0PXQuc2xpY2UoKS5yZXZlcnNlKCkpOysrbzw9YTspaS5wdXNoKGUobltv
LTFdLG5bb10pKSx1LnB1c2gocih0W28tMV0sdFtvXSkpO3JldHVybiBmdW5j
dGlvbih0KXt2YXIgZT1hby5iaXNlY3Qobix0LDEsYSktMTtyZXR1cm4gdVtl
XShpW2VdKHQpKX19ZnVuY3Rpb24gV2kobix0LGUscil7ZnVuY3Rpb24gaSgp
e3ZhciBpPU1hdGgubWluKG4ubGVuZ3RoLHQubGVuZ3RoKT4yP0JpOlZpLGw9
cj9XcjpCcjtyZXR1cm4gbz1pKG4sdCxsLGUpLGE9aSh0LG4sbCxNciksdX1m
dW5jdGlvbiB1KG4pe3JldHVybiBvKG4pfXZhciBvLGE7cmV0dXJuIHUuaW52
ZXJ0PWZ1bmN0aW9uKG4pe3JldHVybiBhKG4pfSx1LmRvbWFpbj1mdW5jdGlv
bih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10Lm1hcChOdW1iZXIp
LGkoKSk6bn0sdS5yYW5nZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8odD1uLGkoKSk6dH0sdS5yYW5nZVJvdW5kPWZ1bmN0aW9uKG4p
e3JldHVybiB1LnJhbmdlKG4pLmludGVycG9sYXRlKFVyKX0sdS5jbGFtcD1m
dW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1uLGkoKSk6
cn0sdS5pbnRlcnBvbGF0ZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8oZT1uLGkoKSk6ZX0sdS50aWNrcz1mdW5jdGlvbih0KXtyZXR1
cm4gUWkobix0KX0sdS50aWNrRm9ybWF0PWZ1bmN0aW9uKHQsZSl7cmV0dXJu
IG51KG4sdCxlKX0sdS5uaWNlPWZ1bmN0aW9uKHQpe3JldHVybiBHaShuLHQp
LGkoKX0sdS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIFdpKG4sdCxlLHIpfSxp
KCl9ZnVuY3Rpb24gSmkobix0KXtyZXR1cm4gYW8ucmViaW5kKG4sdCwicmFu
Z2UiLCJyYW5nZVJvdW5kIiwiaW50ZXJwb2xhdGUiLCJjbGFtcCIpfWZ1bmN0
aW9uIEdpKG4sdCl7cmV0dXJuIFhpKG4sJGkoS2kobix0KVsyXSkpLFhpKG4s
JGkoS2kobix0KVsyXSkpLG59ZnVuY3Rpb24gS2kobix0KXtudWxsPT10JiYo
dD0xMCk7dmFyIGU9WWkobikscj1lWzFdLWVbMF0saT1NYXRoLnBvdygxMCxN
YXRoLmZsb29yKE1hdGgubG9nKHIvdCkvTWF0aC5MTjEwKSksdT10L3IqaTty
ZXR1cm4uMTU+PXU/aSo9MTA6LjM1Pj11P2kqPTU6Ljc1Pj11JiYoaSo9Miks
ZVswXT1NYXRoLmNlaWwoZVswXS9pKSppLGVbMV09TWF0aC5mbG9vcihlWzFd
L2kpKmkrLjUqaSxlWzJdPWksZX1mdW5jdGlvbiBRaShuLHQpe3JldHVybiBh
by5yYW5nZS5hcHBseShhbyxLaShuLHQpKX1mdW5jdGlvbiBudShuLHQsZSl7
dmFyIHI9S2kobix0KTtpZihlKXt2YXIgaT1oYS5leGVjKGUpO2lmKGkuc2hp
ZnQoKSwicyI9PT1pWzhdKXt2YXIgdT1hby5mb3JtYXRQcmVmaXgoTWF0aC5t
YXgoeG8oclswXSkseG8oclsxXSkpKTtyZXR1cm4gaVs3XXx8KGlbN109Ii4i
K3R1KHUuc2NhbGUoclsyXSkpKSxpWzhdPSJmIixlPWFvLmZvcm1hdChpLmpv
aW4oIiIpKSxmdW5jdGlvbihuKXtyZXR1cm4gZSh1LnNjYWxlKG4pKSt1LnN5
bWJvbH19aVs3XXx8KGlbN109Ii4iK2V1KGlbOF0scikpLGU9aS5qb2luKCIi
KX1lbHNlIGU9IiwuIit0dShyWzJdKSsiZiI7cmV0dXJuIGFvLmZvcm1hdChl
KX1mdW5jdGlvbiB0dShuKXtyZXR1cm4tTWF0aC5mbG9vcihNYXRoLmxvZyhu
KS9NYXRoLkxOMTArLjAxKX1mdW5jdGlvbiBldShuLHQpe3ZhciBlPXR1KHRb
Ml0pO3JldHVybiBuIGluIGtsP01hdGguYWJzKGUtdHUoTWF0aC5tYXgoeG8o
dFswXSkseG8odFsxXSkpKSkrICsoImUiIT09bik6ZS0yKigiJSI9PT1uKX1m
dW5jdGlvbiBydShuLHQsZSxyKXtmdW5jdGlvbiBpKG4pe3JldHVybihlP01h
dGgubG9nKDA+bj8wOm4pOi1NYXRoLmxvZyhuPjA/MDotbikpL01hdGgubG9n
KHQpfWZ1bmN0aW9uIHUobil7cmV0dXJuIGU/TWF0aC5wb3codCxuKTotTWF0
aC5wb3codCwtbil9ZnVuY3Rpb24gbyh0KXtyZXR1cm4gbihpKHQpKX1yZXR1
cm4gby5pbnZlcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHUobi5pbnZlcnQodCkp
fSxvLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8oZT10WzBdPj0wLG4uZG9tYWluKChyPXQubWFwKE51bWJlcikpLm1hcChp
KSksbyk6cn0sby5iYXNlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyh0PStlLG4uZG9tYWluKHIubWFwKGkpKSxvKTp0fSxvLm5pY2U9
ZnVuY3Rpb24oKXt2YXIgdD1YaShyLm1hcChpKSxlP01hdGg6RWwpO3JldHVy
biBuLmRvbWFpbih0KSxyPXQubWFwKHUpLG99LG8udGlja3M9ZnVuY3Rpb24o
KXt2YXIgbj1ZaShyKSxvPVtdLGE9blswXSxsPW5bMV0sYz1NYXRoLmZsb29y
KGkoYSkpLGY9TWF0aC5jZWlsKGkobCkpLHM9dCUxPzI6dDtpZihpc0Zpbml0
ZShmLWMpKXtpZihlKXtmb3IoO2Y+YztjKyspZm9yKHZhciBoPTE7cz5oO2gr
KylvLnB1c2godShjKSpoKTtvLnB1c2godShjKSl9ZWxzZSBmb3Ioby5wdXNo
KHUoYykpO2MrKzxmOylmb3IodmFyIGg9cy0xO2g+MDtoLS0pby5wdXNoKHUo
YykqaCk7Zm9yKGM9MDtvW2NdPGE7YysrKTtmb3IoZj1vLmxlbmd0aDtvW2Yt
MV0+bDtmLS0pO289by5zbGljZShjLGYpfXJldHVybiBvfSxvLnRpY2tGb3Jt
YXQ9ZnVuY3Rpb24obixlKXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4g
Tmw7YXJndW1lbnRzLmxlbmd0aDwyP2U9Tmw6ImZ1bmN0aW9uIiE9dHlwZW9m
IGUmJihlPWFvLmZvcm1hdChlKSk7dmFyIHI9TWF0aC5tYXgoMSx0Km4vby50
aWNrcygpLmxlbmd0aCk7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciBvPW4vdShN
YXRoLnJvdW5kKGkobikpKTtyZXR1cm4gdC0uNT5vKnQmJihvKj10KSxyPj1v
P2Uobik6IiJ9fSxvLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gcnUobi5jb3B5
KCksdCxlLHIpfSxKaShvLG4pfWZ1bmN0aW9uIGl1KG4sdCxlKXtmdW5jdGlv
biByKHQpe3JldHVybiBuKGkodCkpfXZhciBpPXV1KHQpLHU9dXUoMS90KTty
ZXR1cm4gci5pbnZlcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHUobi5pbnZlcnQo
dCkpfSxyLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8obi5kb21haW4oKGU9dC5tYXAoTnVtYmVyKSkubWFwKGkpKSxyKTpl
fSxyLnRpY2tzPWZ1bmN0aW9uKG4pe3JldHVybiBRaShlLG4pfSxyLnRpY2tG
b3JtYXQ9ZnVuY3Rpb24obix0KXtyZXR1cm4gbnUoZSxuLHQpfSxyLm5pY2U9
ZnVuY3Rpb24obil7cmV0dXJuIHIuZG9tYWluKEdpKGUsbikpfSxyLmV4cG9u
ZW50PWZ1bmN0aW9uKG8pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPXV1
KHQ9byksdT11dSgxL3QpLG4uZG9tYWluKGUubWFwKGkpKSxyKTp0fSxyLmNv
cHk9ZnVuY3Rpb24oKXtyZXR1cm4gaXUobi5jb3B5KCksdCxlKX0sSmkocixu
KX1mdW5jdGlvbiB1dShuKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIDA+
dD8tTWF0aC5wb3coLXQsbik6TWF0aC5wb3codCxuKX19ZnVuY3Rpb24gb3Uo
bix0KXtmdW5jdGlvbiBlKGUpe3JldHVybiB1WygoaS5nZXQoZSl8fCgicmFu
Z2UiPT09dC50P2kuc2V0KGUsbi5wdXNoKGUpKTpOYU4pKS0xKSV1Lmxlbmd0
aF19ZnVuY3Rpb24gcih0LGUpe3JldHVybiBhby5yYW5nZShuLmxlbmd0aCku
bWFwKGZ1bmN0aW9uKG4pe3JldHVybiB0K2Uqbn0pfXZhciBpLHUsbztyZXR1
cm4gZS5kb21haW49ZnVuY3Rpb24ocil7aWYoIWFyZ3VtZW50cy5sZW5ndGgp
cmV0dXJuIG47bj1bXSxpPW5ldyBjO2Zvcih2YXIgdSxvPS0xLGE9ci5sZW5n
dGg7KytvPGE7KWkuaGFzKHU9cltvXSl8fGkuc2V0KHUsbi5wdXNoKHUpKTty
ZXR1cm4gZVt0LnRdLmFwcGx5KGUsdC5hKX0sZS5yYW5nZT1mdW5jdGlvbihu
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT1uLG89MCx0PXt0OiJyYW5n
ZSIsYTphcmd1bWVudHN9LGUpOnV9LGUucmFuZ2VQb2ludHM9ZnVuY3Rpb24o
aSxhKXthcmd1bWVudHMubGVuZ3RoPDImJihhPTApO3ZhciBsPWlbMF0sYz1p
WzFdLGY9bi5sZW5ndGg8Mj8obD0obCtjKS8yLDApOihjLWwpLyhuLmxlbmd0
aC0xK2EpO3JldHVybiB1PXIobCtmKmEvMixmKSxvPTAsdD17dDoicmFuZ2VQ
b2ludHMiLGE6YXJndW1lbnRzfSxlfSxlLnJhbmdlUm91bmRQb2ludHM9ZnVu
Y3Rpb24oaSxhKXthcmd1bWVudHMubGVuZ3RoPDImJihhPTApO3ZhciBsPWlb
MF0sYz1pWzFdLGY9bi5sZW5ndGg8Mj8obD1jPU1hdGgucm91bmQoKGwrYykv
MiksMCk6KGMtbCkvKG4ubGVuZ3RoLTErYSl8MDtyZXR1cm4gdT1yKGwrTWF0
aC5yb3VuZChmKmEvMisoYy1sLShuLmxlbmd0aC0xK2EpKmYpLzIpLGYpLG89
MCx0PXt0OiJyYW5nZVJvdW5kUG9pbnRzIixhOmFyZ3VtZW50c30sZX0sZS5y
YW5nZUJhbmRzPWZ1bmN0aW9uKGksYSxsKXthcmd1bWVudHMubGVuZ3RoPDIm
JihhPTApLGFyZ3VtZW50cy5sZW5ndGg8MyYmKGw9YSk7dmFyIGM9aVsxXTxp
WzBdLGY9aVtjLTBdLHM9aVsxLWNdLGg9KHMtZikvKG4ubGVuZ3RoLWErMips
KTtyZXR1cm4gdT1yKGYraCpsLGgpLGMmJnUucmV2ZXJzZSgpLG89aCooMS1h
KSx0PXt0OiJyYW5nZUJhbmRzIixhOmFyZ3VtZW50c30sZX0sZS5yYW5nZVJv
dW5kQmFuZHM9ZnVuY3Rpb24oaSxhLGwpe2FyZ3VtZW50cy5sZW5ndGg8MiYm
KGE9MCksYXJndW1lbnRzLmxlbmd0aDwzJiYobD1hKTt2YXIgYz1pWzFdPGlb
MF0sZj1pW2MtMF0scz1pWzEtY10saD1NYXRoLmZsb29yKChzLWYpLyhuLmxl
bmd0aC1hKzIqbCkpO3JldHVybiB1PXIoZitNYXRoLnJvdW5kKChzLWYtKG4u
bGVuZ3RoLWEpKmgpLzIpLGgpLGMmJnUucmV2ZXJzZSgpLG89TWF0aC5yb3Vu
ZChoKigxLWEpKSx0PXt0OiJyYW5nZVJvdW5kQmFuZHMiLGE6YXJndW1lbnRz
fSxlfSxlLnJhbmdlQmFuZD1mdW5jdGlvbigpe3JldHVybiBvfSxlLnJhbmdl
RXh0ZW50PWZ1bmN0aW9uKCl7cmV0dXJuIFlpKHQuYVswXSl9LGUuY29weT1m
dW5jdGlvbigpe3JldHVybiBvdShuLHQpfSxlLmRvbWFpbihuKX1mdW5jdGlv
biBhdShuLHQpe2Z1bmN0aW9uIHUoKXt2YXIgZT0wLHI9dC5sZW5ndGg7Zm9y
KGE9W107KytlPHI7KWFbZS0xXT1hby5xdWFudGlsZShuLGUvcik7cmV0dXJu
IG99ZnVuY3Rpb24gbyhuKXtyZXR1cm4gaXNOYU4obj0rbik/dm9pZCAwOnRb
YW8uYmlzZWN0KGEsbildfXZhciBhO3JldHVybiBvLmRvbWFpbj1mdW5jdGlv
bih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10Lm1hcChyKS5maWx0
ZXIoaSkuc29ydChlKSx1KCkpOm59LG8ucmFuZ2U9ZnVuY3Rpb24obil7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9bix1KCkpOnR9LG8ucXVhbnRpbGVz
PWZ1bmN0aW9uKCl7cmV0dXJuIGF9LG8uaW52ZXJ0RXh0ZW50PWZ1bmN0aW9u
KGUpe3JldHVybiBlPXQuaW5kZXhPZihlKSwwPmU/W05hTixOYU5dOltlPjA/
YVtlLTFdOm5bMF0sZTxhLmxlbmd0aD9hW2VdOm5bbi5sZW5ndGgtMV1dfSxv
LmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gYXUobix0KX0sdSgpfWZ1bmN0aW9u
IGx1KG4sdCxlKXtmdW5jdGlvbiByKHQpe3JldHVybiBlW01hdGgubWF4KDAs
TWF0aC5taW4obyxNYXRoLmZsb29yKHUqKHQtbikpKSldfWZ1bmN0aW9uIGko
KXtyZXR1cm4gdT1lLmxlbmd0aC8odC1uKSxvPWUubGVuZ3RoLTEscn12YXIg
dSxvO3JldHVybiByLmRvbWFpbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8obj0rZVswXSx0PStlW2UubGVuZ3RoLTFdLGkoKSk6W24s
dF19LHIucmFuZ2U9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KGU9bixpKCkpOmV9LHIuaW52ZXJ0RXh0ZW50PWZ1bmN0aW9uKHQpe3Jl
dHVybiB0PWUuaW5kZXhPZih0KSx0PTA+dD9OYU46dC91K24sW3QsdCsxL3Vd
fSxyLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gbHUobix0LGUpfSxpKCl9ZnVu
Y3Rpb24gY3Uobix0KXtmdW5jdGlvbiBlKGUpe3JldHVybiBlPj1lP3RbYW8u
YmlzZWN0KG4sZSldOnZvaWQgMH1yZXR1cm4gZS5kb21haW49ZnVuY3Rpb24o
dCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dCxlKTpufSxlLnJhbmdl
PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PW4sZSk6
dH0sZS5pbnZlcnRFeHRlbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9dC5pbmRl
eE9mKGUpLFtuW2UtMV0sbltlXV19LGUuY29weT1mdW5jdGlvbigpe3JldHVy
biBjdShuLHQpfSxlfWZ1bmN0aW9uIGZ1KG4pe2Z1bmN0aW9uIHQobil7cmV0
dXJuK259cmV0dXJuIHQuaW52ZXJ0PXQsdC5kb21haW49dC5yYW5nZT1mdW5j
dGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1lLm1hcCh0KSx0
KTpufSx0LnRpY2tzPWZ1bmN0aW9uKHQpe3JldHVybiBRaShuLHQpfSx0LnRp
Y2tGb3JtYXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnUobix0LGUpfSx0LmNv
cHk9ZnVuY3Rpb24oKXtyZXR1cm4gZnUobil9LHR9ZnVuY3Rpb24gc3UoKXty
ZXR1cm4gMH1mdW5jdGlvbiBodShuKXtyZXR1cm4gbi5pbm5lclJhZGl1c31m
dW5jdGlvbiBwdShuKXtyZXR1cm4gbi5vdXRlclJhZGl1c31mdW5jdGlvbiBn
dShuKXtyZXR1cm4gbi5zdGFydEFuZ2xlfWZ1bmN0aW9uIHZ1KG4pe3JldHVy
biBuLmVuZEFuZ2xlfWZ1bmN0aW9uIGR1KG4pe3JldHVybiBuJiZuLnBhZEFu
Z2xlfWZ1bmN0aW9uIHl1KG4sdCxlLHIpe3JldHVybihuLWUpKnQtKHQtcikq
bj4wPzA6MX1mdW5jdGlvbiBtdShuLHQsZSxyLGkpe3ZhciB1PW5bMF0tdFsw
XSxvPW5bMV0tdFsxXSxhPShpP3I6LXIpL01hdGguc3FydCh1KnUrbypvKSxs
PWEqbyxjPS1hKnUsZj1uWzBdK2wscz1uWzFdK2MsaD10WzBdK2wscD10WzFd
K2MsZz0oZitoKS8yLHY9KHMrcCkvMixkPWgtZix5PXAtcyxtPWQqZCt5Knks
TT1lLXIseD1mKnAtaCpzLGI9KDA+eT8tMToxKSpNYXRoLnNxcnQoTWF0aC5t
YXgoMCxNKk0qbS14KngpKSxfPSh4KnktZCpiKS9tLHc9KC14KmQteSpiKS9t
LFM9KHgqeStkKmIpL20saz0oLXgqZCt5KmIpL20sTj1fLWcsRT13LXYsQT1T
LWcsQz1rLXY7cmV0dXJuIE4qTitFKkU+QSpBK0MqQyYmKF89Uyx3PWspLFtb
Xy1sLHctY10sW18qZS9NLHcqZS9NXV19ZnVuY3Rpb24gTXUobil7ZnVuY3Rp
b24gdCh0KXtmdW5jdGlvbiBvKCl7Yy5wdXNoKCJNIix1KG4oZiksYSkpfWZv
cih2YXIgbCxjPVtdLGY9W10scz0tMSxoPXQubGVuZ3RoLHA9RW4oZSksZz1F
bihyKTsrK3M8aDspaS5jYWxsKHRoaXMsbD10W3NdLHMpP2YucHVzaChbK3Au
Y2FsbCh0aGlzLGwscyksK2cuY2FsbCh0aGlzLGwscyldKTpmLmxlbmd0aCYm
KG8oKSxmPVtdKTtyZXR1cm4gZi5sZW5ndGgmJm8oKSxjLmxlbmd0aD9jLmpv
aW4oIiIpOm51bGx9dmFyIGU9Q2Uscj16ZSxpPXp0LHU9eHUsbz11LmtleSxh
PS43O3JldHVybiB0Lng9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KGU9bix0KTplfSx0Lnk9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KHI9bix0KTpyfSx0LmRlZmluZWQ9ZnVuY3Rpb24obil7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9bix0KTppfSx0LmludGVycG9s
YXRlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSJm
dW5jdGlvbiI9PXR5cGVvZiBuP3U9bjoodT1UbC5nZXQobil8fHh1KS5rZXks
dCk6b30sdC50ZW5zaW9uPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhhPW4sdCk6YX0sdH1mdW5jdGlvbiB4dShuKXtyZXR1cm4gbi5s
ZW5ndGg+MT9uLmpvaW4oIkwiKTpuKyJaIn1mdW5jdGlvbiBidShuKXtyZXR1
cm4gbi5qb2luKCJMIikrIloifWZ1bmN0aW9uIF91KG4pe2Zvcih2YXIgdD0w
LGU9bi5sZW5ndGgscj1uWzBdLGk9W3JbMF0sIiwiLHJbMV1dOysrdDxlOylp
LnB1c2goIkgiLChyWzBdKyhyPW5bdF0pWzBdKS8yLCJWIixyWzFdKTtyZXR1
cm4gZT4xJiZpLnB1c2goIkgiLHJbMF0pLGkuam9pbigiIil9ZnVuY3Rpb24g
d3Uobil7Zm9yKHZhciB0PTAsZT1uLmxlbmd0aCxyPW5bMF0saT1bclswXSwi
LCIsclsxXV07Kyt0PGU7KWkucHVzaCgiViIsKHI9blt0XSlbMV0sIkgiLHJb
MF0pO3JldHVybiBpLmpvaW4oIiIpfWZ1bmN0aW9uIFN1KG4pe2Zvcih2YXIg
dD0wLGU9bi5sZW5ndGgscj1uWzBdLGk9W3JbMF0sIiwiLHJbMV1dOysrdDxl
OylpLnB1c2goIkgiLChyPW5bdF0pWzBdLCJWIixyWzFdKTtyZXR1cm4gaS5q
b2luKCIiKX1mdW5jdGlvbiBrdShuLHQpe3JldHVybiBuLmxlbmd0aDw0P3h1
KG4pOm5bMV0rQXUobi5zbGljZSgxLC0xKSxDdShuLHQpKX1mdW5jdGlvbiBO
dShuLHQpe3JldHVybiBuLmxlbmd0aDwzP2J1KG4pOm5bMF0rQXUoKG4ucHVz
aChuWzBdKSxuKSxDdShbbltuLmxlbmd0aC0yXV0uY29uY2F0KG4sW25bMV1d
KSx0KSl9ZnVuY3Rpb24gRXUobix0KXtyZXR1cm4gbi5sZW5ndGg8Mz94dShu
KTpuWzBdK0F1KG4sQ3Uobix0KSl9ZnVuY3Rpb24gQXUobix0KXtpZih0Lmxl
bmd0aDwxfHxuLmxlbmd0aCE9dC5sZW5ndGgmJm4ubGVuZ3RoIT10Lmxlbmd0
aCsyKXJldHVybiB4dShuKTt2YXIgZT1uLmxlbmd0aCE9dC5sZW5ndGgscj0i
IixpPW5bMF0sdT1uWzFdLG89dFswXSxhPW8sbD0xO2lmKGUmJihyKz0iUSIr
KHVbMF0tMipvWzBdLzMpKyIsIisodVsxXS0yKm9bMV0vMykrIiwiK3VbMF0r
IiwiK3VbMV0saT1uWzFdLGw9MiksdC5sZW5ndGg+MSl7YT10WzFdLHU9blts
XSxsKysscis9IkMiKyhpWzBdK29bMF0pKyIsIisoaVsxXStvWzFdKSsiLCIr
KHVbMF0tYVswXSkrIiwiKyh1WzFdLWFbMV0pKyIsIit1WzBdKyIsIit1WzFd
O2Zvcih2YXIgYz0yO2M8dC5sZW5ndGg7YysrLGwrKyl1PW5bbF0sYT10W2Nd
LHIrPSJTIisodVswXS1hWzBdKSsiLCIrKHVbMV0tYVsxXSkrIiwiK3VbMF0r
IiwiK3VbMV19aWYoZSl7dmFyIGY9bltsXTtyKz0iUSIrKHVbMF0rMiphWzBd
LzMpKyIsIisodVsxXSsyKmFbMV0vMykrIiwiK2ZbMF0rIiwiK2ZbMV19cmV0
dXJuIHJ9ZnVuY3Rpb24gQ3Uobix0KXtmb3IodmFyIGUscj1bXSxpPSgxLXQp
LzIsdT1uWzBdLG89blsxXSxhPTEsbD1uLmxlbmd0aDsrK2E8bDspZT11LHU9
byxvPW5bYV0sci5wdXNoKFtpKihvWzBdLWVbMF0pLGkqKG9bMV0tZVsxXSld
KTtyZXR1cm4gcn1mdW5jdGlvbiB6dShuKXtpZihuLmxlbmd0aDwzKXJldHVy
biB4dShuKTt2YXIgdD0xLGU9bi5sZW5ndGgscj1uWzBdLGk9clswXSx1PXJb
MV0sbz1baSxpLGksKHI9blsxXSlbMF1dLGE9W3UsdSx1LHJbMV1dLGw9W2ks
IiwiLHUsIkwiLFJ1KFBsLG8pLCIsIixSdShQbCxhKV07Zm9yKG4ucHVzaChu
W2UtMV0pOysrdDw9ZTspcj1uW3RdLG8uc2hpZnQoKSxvLnB1c2goclswXSks
YS5zaGlmdCgpLGEucHVzaChyWzFdKSxEdShsLG8sYSk7cmV0dXJuIG4ucG9w
KCksbC5wdXNoKCJMIixyKSxsLmpvaW4oIiIpfWZ1bmN0aW9uIEx1KG4pe2lm
KG4ubGVuZ3RoPDQpcmV0dXJuIHh1KG4pO2Zvcih2YXIgdCxlPVtdLHI9LTEs
aT1uLmxlbmd0aCx1PVswXSxvPVswXTsrK3I8MzspdD1uW3JdLHUucHVzaCh0
WzBdKSxvLnB1c2godFsxXSk7Zm9yKGUucHVzaChSdShQbCx1KSsiLCIrUnUo
UGwsbykpLC0tcjsrK3I8aTspdD1uW3JdLHUuc2hpZnQoKSx1LnB1c2godFsw
XSksby5zaGlmdCgpLG8ucHVzaCh0WzFdKSxEdShlLHUsbyk7cmV0dXJuIGUu
am9pbigiIil9ZnVuY3Rpb24gcXUobil7Zm9yKHZhciB0LGUscj0tMSxpPW4u
bGVuZ3RoLHU9aSs0LG89W10sYT1bXTsrK3I8NDspZT1uW3IlaV0sby5wdXNo
KGVbMF0pLGEucHVzaChlWzFdKTtmb3IodD1bUnUoUGwsbyksIiwiLFJ1KFBs
LGEpXSwtLXI7KytyPHU7KWU9bltyJWldLG8uc2hpZnQoKSxvLnB1c2goZVsw
XSksYS5zaGlmdCgpLGEucHVzaChlWzFdKSxEdSh0LG8sYSk7cmV0dXJuIHQu
am9pbigiIil9ZnVuY3Rpb24gVHUobix0KXt2YXIgZT1uLmxlbmd0aC0xO2lm
KGUpZm9yKHZhciByLGksdT1uWzBdWzBdLG89blswXVsxXSxhPW5bZV1bMF0t
dSxsPW5bZV1bMV0tbyxjPS0xOysrYzw9ZTspcj1uW2NdLGk9Yy9lLHJbMF09
dCpyWzBdKygxLXQpKih1K2kqYSksclsxXT10KnJbMV0rKDEtdCkqKG8raSps
KTtyZXR1cm4genUobil9ZnVuY3Rpb24gUnUobix0KXtyZXR1cm4gblswXSp0
WzBdK25bMV0qdFsxXStuWzJdKnRbMl0rblszXSp0WzNdfWZ1bmN0aW9uIER1
KG4sdCxlKXtuLnB1c2goIkMiLFJ1KFJsLHQpLCIsIixSdShSbCxlKSwiLCIs
UnUoRGwsdCksIiwiLFJ1KERsLGUpLCIsIixSdShQbCx0KSwiLCIsUnUoUGws
ZSkpfWZ1bmN0aW9uIFB1KG4sdCl7cmV0dXJuKHRbMV0tblsxXSkvKHRbMF0t
blswXSl9ZnVuY3Rpb24gVXUobil7Zm9yKHZhciB0PTAsZT1uLmxlbmd0aC0x
LHI9W10saT1uWzBdLHU9blsxXSxvPXJbMF09UHUoaSx1KTsrK3Q8ZTspclt0
XT0obysobz1QdShpPXUsdT1uW3QrMV0pKSkvMjtyZXR1cm4gclt0XT1vLHJ9
ZnVuY3Rpb24ganUobil7Zm9yKHZhciB0LGUscixpLHU9W10sbz1VdShuKSxh
PS0xLGw9bi5sZW5ndGgtMTsrK2E8bDspdD1QdShuW2FdLG5bYSsxXSkseG8o
dCk8VW8/b1thXT1vW2ErMV09MDooZT1vW2FdL3Qscj1vW2ErMV0vdCxpPWUq
ZStyKnIsaT45JiYoaT0zKnQvTWF0aC5zcXJ0KGkpLG9bYV09aSplLG9bYSsx
XT1pKnIpKTtmb3IoYT0tMTsrK2E8PWw7KWk9KG5bTWF0aC5taW4obCxhKzEp
XVswXS1uW01hdGgubWF4KDAsYS0xKV1bMF0pLyg2KigxK29bYV0qb1thXSkp
LHUucHVzaChbaXx8MCxvW2FdKml8fDBdKTtyZXR1cm4gdX1mdW5jdGlvbiBG
dShuKXtyZXR1cm4gbi5sZW5ndGg8Mz94dShuKTpuWzBdK0F1KG4sanUobikp
fWZ1bmN0aW9uIEh1KG4pe2Zvcih2YXIgdCxlLHIsaT0tMSx1PW4ubGVuZ3Ro
OysraTx1Oyl0PW5baV0sZT10WzBdLHI9dFsxXS1Jbyx0WzBdPWUqTWF0aC5j
b3MociksdFsxXT1lKk1hdGguc2luKHIpO3JldHVybiBufWZ1bmN0aW9uIE91
KG4pe2Z1bmN0aW9uIHQodCl7ZnVuY3Rpb24gbCgpe3YucHVzaCgiTSIsYShu
KHkpLHMpLGYsYyhuKGQucmV2ZXJzZSgpKSxzKSwiWiIpfWZvcih2YXIgaCxw
LGcsdj1bXSxkPVtdLHk9W10sbT0tMSxNPXQubGVuZ3RoLHg9RW4oZSksYj1F
bihpKSxfPWU9PT1yP2Z1bmN0aW9uKCl7CnJldHVybiBwfTpFbihyKSx3PWk9
PT11P2Z1bmN0aW9uKCl7cmV0dXJuIGd9OkVuKHUpOysrbTxNOylvLmNhbGwo
dGhpcyxoPXRbbV0sbSk/KGQucHVzaChbcD0reC5jYWxsKHRoaXMsaCxtKSxn
PStiLmNhbGwodGhpcyxoLG0pXSkseS5wdXNoKFsrXy5jYWxsKHRoaXMsaCxt
KSwrdy5jYWxsKHRoaXMsaCxtKV0pKTpkLmxlbmd0aCYmKGwoKSxkPVtdLHk9
W10pO3JldHVybiBkLmxlbmd0aCYmbCgpLHYubGVuZ3RoP3Yuam9pbigiIik6
bnVsbH12YXIgZT1DZSxyPUNlLGk9MCx1PXplLG89enQsYT14dSxsPWEua2V5
LGM9YSxmPSJMIixzPS43O3JldHVybiB0Lng9ZnVuY3Rpb24obil7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KGU9cj1uLHQpOnJ9LHQueDA9ZnVuY3Rpb24o
bil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9bix0KTplfSx0LngxPWZ1
bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPW4sdCk6cn0s
dC55PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPXU9
bix0KTp1fSx0LnkwPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhpPW4sdCk6aX0sdC55MT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8odT1uLHQpOnV9LHQuZGVmaW5lZD1mdW5jdGlvbihuKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1uLHQpOm99LHQuaW50ZXJwb2xh
dGU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9ImZ1
bmN0aW9uIj09dHlwZW9mIG4/YT1uOihhPVRsLmdldChuKXx8eHUpLmtleSxj
PWEucmV2ZXJzZXx8YSxmPWEuY2xvc2VkPyJNIjoiTCIsdCk6bH0sdC50ZW5z
aW9uPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPW4s
dCk6c30sdH1mdW5jdGlvbiBJdShuKXtyZXR1cm4gbi5yYWRpdXN9ZnVuY3Rp
b24gWXUobil7cmV0dXJuW24ueCxuLnldfWZ1bmN0aW9uIFp1KG4pe3JldHVy
biBmdW5jdGlvbigpe3ZhciB0PW4uYXBwbHkodGhpcyxhcmd1bWVudHMpLGU9
dFswXSxyPXRbMV0tSW87cmV0dXJuW2UqTWF0aC5jb3MociksZSpNYXRoLnNp
bihyKV19fWZ1bmN0aW9uIFZ1KCl7cmV0dXJuIDY0fWZ1bmN0aW9uIFh1KCl7
cmV0dXJuImNpcmNsZSJ9ZnVuY3Rpb24gJHUobil7dmFyIHQ9TWF0aC5zcXJ0
KG4vRm8pO3JldHVybiJNMCwiK3QrIkEiK3QrIiwiK3QrIiAwIDEsMSAwLCIr
LXQrIkEiK3QrIiwiK3QrIiAwIDEsMSAwLCIrdCsiWiJ9ZnVuY3Rpb24gQnUo
bil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQsZSxyOyh0PXRoaXNbbl0pJiYo
cj10W2U9dC5hY3RpdmVdKSYmKHIudGltZXIuYz1udWxsLHIudGltZXIudD1O
YU4sLS10LmNvdW50P2RlbGV0ZSB0W2VdOmRlbGV0ZSB0aGlzW25dLHQuYWN0
aXZlKz0uNSxyLmV2ZW50JiZyLmV2ZW50LmludGVycnVwdC5jYWxsKHRoaXMs
dGhpcy5fX2RhdGFfXyxyLmluZGV4KSl9fWZ1bmN0aW9uIFd1KG4sdCxlKXty
ZXR1cm4ga28obixZbCksbi5uYW1lc3BhY2U9dCxuLmlkPWUsbn1mdW5jdGlv
biBKdShuLHQsZSxyKXt2YXIgaT1uLmlkLHU9bi5uYW1lc3BhY2U7cmV0dXJu
IFkobiwiZnVuY3Rpb24iPT10eXBlb2YgZT9mdW5jdGlvbihuLG8sYSl7blt1
XVtpXS50d2Vlbi5zZXQodCxyKGUuY2FsbChuLG4uX19kYXRhX18sbyxhKSkp
fTooZT1yKGUpLGZ1bmN0aW9uKG4pe25bdV1baV0udHdlZW4uc2V0KHQsZSl9
KSl9ZnVuY3Rpb24gR3Uobil7cmV0dXJuIG51bGw9PW4mJihuPSIiKSxmdW5j
dGlvbigpe3RoaXMudGV4dENvbnRlbnQ9bn19ZnVuY3Rpb24gS3Uobil7cmV0
dXJuIG51bGw9PW4/Il9fdHJhbnNpdGlvbl9fIjoiX190cmFuc2l0aW9uXyIr
bisiX18ifWZ1bmN0aW9uIFF1KG4sdCxlLHIsaSl7ZnVuY3Rpb24gdShuKXt2
YXIgdD12LmRlbGF5O3JldHVybiBmLnQ9dCtsLG4+PXQ/byhuLXQpOnZvaWQo
Zi5jPW8pfWZ1bmN0aW9uIG8oZSl7dmFyIGk9Zy5hY3RpdmUsdT1nW2ldO3Um
Jih1LnRpbWVyLmM9bnVsbCx1LnRpbWVyLnQ9TmFOLC0tZy5jb3VudCxkZWxl
dGUgZ1tpXSx1LmV2ZW50JiZ1LmV2ZW50LmludGVycnVwdC5jYWxsKG4sbi5f
X2RhdGFfXyx1LmluZGV4KSk7Zm9yKHZhciBvIGluIGcpaWYocj4rbyl7dmFy
IGM9Z1tvXTtjLnRpbWVyLmM9bnVsbCxjLnRpbWVyLnQ9TmFOLC0tZy5jb3Vu
dCxkZWxldGUgZ1tvXX1mLmM9YSxxbihmdW5jdGlvbigpe3JldHVybiBmLmMm
JmEoZXx8MSkmJihmLmM9bnVsbCxmLnQ9TmFOKSwxfSwwLGwpLGcuYWN0aXZl
PXIsdi5ldmVudCYmdi5ldmVudC5zdGFydC5jYWxsKG4sbi5fX2RhdGFfXyx0
KSxwPVtdLHYudHdlZW4uZm9yRWFjaChmdW5jdGlvbihlLHIpeyhyPXIuY2Fs
bChuLG4uX19kYXRhX18sdCkpJiZwLnB1c2gocil9KSxoPXYuZWFzZSxzPXYu
ZHVyYXRpb259ZnVuY3Rpb24gYShpKXtmb3IodmFyIHU9aS9zLG89aCh1KSxh
PXAubGVuZ3RoO2E+MDspcFstLWFdLmNhbGwobixvKTtyZXR1cm4gdT49MT8o
di5ldmVudCYmdi5ldmVudC5lbmQuY2FsbChuLG4uX19kYXRhX18sdCksLS1n
LmNvdW50P2RlbGV0ZSBnW3JdOmRlbGV0ZSBuW2VdLDEpOnZvaWQgMH12YXIg
bCxmLHMsaCxwLGc9bltlXXx8KG5bZV09e2FjdGl2ZTowLGNvdW50OjB9KSx2
PWdbcl07dnx8KGw9aS50aW1lLGY9cW4odSwwLGwpLHY9Z1tyXT17dHdlZW46
bmV3IGMsdGltZTpsLHRpbWVyOmYsZGVsYXk6aS5kZWxheSxkdXJhdGlvbjpp
LmR1cmF0aW9uLGVhc2U6aS5lYXNlLGluZGV4OnR9LGk9bnVsbCwrK2cuY291
bnQpfWZ1bmN0aW9uIG5vKG4sdCxlKXtuLmF0dHIoInRyYW5zZm9ybSIsZnVu
Y3Rpb24obil7dmFyIHI9dChuKTtyZXR1cm4idHJhbnNsYXRlKCIrKGlzRmlu
aXRlKHIpP3I6ZShuKSkrIiwwKSJ9KX1mdW5jdGlvbiB0byhuLHQsZSl7bi5h
dHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKG4pe3ZhciByPXQobik7cmV0dXJu
InRyYW5zbGF0ZSgwLCIrKGlzRmluaXRlKHIpP3I6ZShuKSkrIikifSl9ZnVu
Y3Rpb24gZW8obil7cmV0dXJuIG4udG9JU09TdHJpbmcoKX1mdW5jdGlvbiBy
byhuLHQsZSl7ZnVuY3Rpb24gcih0KXtyZXR1cm4gbih0KX1mdW5jdGlvbiBp
KG4sZSl7dmFyIHI9blsxXS1uWzBdLGk9ci9lLHU9YW8uYmlzZWN0KEtsLGkp
O3JldHVybiB1PT1LbC5sZW5ndGg/W3QueWVhcixLaShuLm1hcChmdW5jdGlv
bihuKXtyZXR1cm4gbi8zMTUzNmU2fSksZSlbMl1dOnU/dFtpL0tsW3UtMV08
S2xbdV0vaT91LTE6dV06W3RjLEtpKG4sZSlbMl1dfXJldHVybiByLmludmVy
dD1mdW5jdGlvbih0KXtyZXR1cm4gaW8obi5pbnZlcnQodCkpfSxyLmRvbWFp
bj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obi5kb21h
aW4odCkscik6bi5kb21haW4oKS5tYXAoaW8pfSxyLm5pY2U9ZnVuY3Rpb24o
bix0KXtmdW5jdGlvbiBlKGUpe3JldHVybiFpc05hTihlKSYmIW4ucmFuZ2Uo
ZSxpbygrZSsxKSx0KS5sZW5ndGh9dmFyIHU9ci5kb21haW4oKSxvPVlpKHUp
LGE9bnVsbD09bj9pKG8sMTApOiJudW1iZXIiPT10eXBlb2YgbiYmaShvLG4p
O3JldHVybiBhJiYobj1hWzBdLHQ9YVsxXSksci5kb21haW4oWGkodSx0PjE/
e2Zsb29yOmZ1bmN0aW9uKHQpe2Zvcig7ZSh0PW4uZmxvb3IodCkpOyl0PWlv
KHQtMSk7cmV0dXJuIHR9LGNlaWw6ZnVuY3Rpb24odCl7Zm9yKDtlKHQ9bi5j
ZWlsKHQpKTspdD1pbygrdCsxKTtyZXR1cm4gdH19Om4pKX0sci50aWNrcz1m
dW5jdGlvbihuLHQpe3ZhciBlPVlpKHIuZG9tYWluKCkpLHU9bnVsbD09bj9p
KGUsMTApOiJudW1iZXIiPT10eXBlb2Ygbj9pKGUsbik6IW4ucmFuZ2UmJlt7
cmFuZ2U6bn0sdF07cmV0dXJuIHUmJihuPXVbMF0sdD11WzFdKSxuLnJhbmdl
KGVbMF0saW8oK2VbMV0rMSksMT50PzE6dCl9LHIudGlja0Zvcm1hdD1mdW5j
dGlvbigpe3JldHVybiBlfSxyLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gcm8o
bi5jb3B5KCksdCxlKX0sSmkocixuKX1mdW5jdGlvbiBpbyhuKXtyZXR1cm4g
bmV3IERhdGUobil9ZnVuY3Rpb24gdW8obil7cmV0dXJuIEpTT04ucGFyc2Uo
bi5yZXNwb25zZVRleHQpfWZ1bmN0aW9uIG9vKG4pe3ZhciB0PWZvLmNyZWF0
ZVJhbmdlKCk7cmV0dXJuIHQuc2VsZWN0Tm9kZShmby5ib2R5KSx0LmNyZWF0
ZUNvbnRleHR1YWxGcmFnbWVudChuLnJlc3BvbnNlVGV4dCl9dmFyIGFvPXt2
ZXJzaW9uOiIzLjUuMTcifSxsbz1bXS5zbGljZSxjbz1mdW5jdGlvbihuKXty
ZXR1cm4gbG8uY2FsbChuKX0sZm89dGhpcy5kb2N1bWVudDtpZihmbyl0cnl7
Y28oZm8uZG9jdW1lbnRFbGVtZW50LmNoaWxkTm9kZXMpWzBdLm5vZGVUeXBl
fWNhdGNoKHNvKXtjbz1mdW5jdGlvbihuKXtmb3IodmFyIHQ9bi5sZW5ndGgs
ZT1uZXcgQXJyYXkodCk7dC0tOyllW3RdPW5bdF07cmV0dXJuIGV9fWlmKERh
dGUubm93fHwoRGF0ZS5ub3c9ZnVuY3Rpb24oKXtyZXR1cm4rbmV3IERhdGV9
KSxmbyl0cnl7Zm8uY3JlYXRlRWxlbWVudCgiRElWIikuc3R5bGUuc2V0UHJv
cGVydHkoIm9wYWNpdHkiLDAsIiIpfWNhdGNoKGhvKXt2YXIgcG89dGhpcy5F
bGVtZW50LnByb3RvdHlwZSxnbz1wby5zZXRBdHRyaWJ1dGUsdm89cG8uc2V0
QXR0cmlidXRlTlMseW89dGhpcy5DU1NTdHlsZURlY2xhcmF0aW9uLnByb3Rv
dHlwZSxtbz15by5zZXRQcm9wZXJ0eTtwby5zZXRBdHRyaWJ1dGU9ZnVuY3Rp
b24obix0KXtnby5jYWxsKHRoaXMsbix0KyIiKX0scG8uc2V0QXR0cmlidXRl
TlM9ZnVuY3Rpb24obix0LGUpe3ZvLmNhbGwodGhpcyxuLHQsZSsiIil9LHlv
LnNldFByb3BlcnR5PWZ1bmN0aW9uKG4sdCxlKXttby5jYWxsKHRoaXMsbix0
KyIiLGUpfX1hby5hc2NlbmRpbmc9ZSxhby5kZXNjZW5kaW5nPWZ1bmN0aW9u
KG4sdCl7cmV0dXJuIG4+dD8tMTp0Pm4/MTp0Pj1uPzA6TmFOfSxhby5taW49
ZnVuY3Rpb24obix0KXt2YXIgZSxyLGk9LTEsdT1uLmxlbmd0aDtpZigxPT09
YXJndW1lbnRzLmxlbmd0aCl7Zm9yKDsrK2k8dTspaWYobnVsbCE9KHI9bltp
XSkmJnI+PXIpe2U9cjticmVha31mb3IoOysraTx1OyludWxsIT0ocj1uW2ld
KSYmZT5yJiYoZT1yKX1lbHNle2Zvcig7KytpPHU7KWlmKG51bGwhPShyPXQu
Y2FsbChuLG5baV0saSkpJiZyPj1yKXtlPXI7YnJlYWt9Zm9yKDsrK2k8dTsp
bnVsbCE9KHI9dC5jYWxsKG4sbltpXSxpKSkmJmU+ciYmKGU9cil9cmV0dXJu
IGV9LGFvLm1heD1mdW5jdGlvbihuLHQpe3ZhciBlLHIsaT0tMSx1PW4ubGVu
Z3RoO2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXtmb3IoOysraTx1OylpZihu
dWxsIT0ocj1uW2ldKSYmcj49cil7ZT1yO2JyZWFrfWZvcig7KytpPHU7KW51
bGwhPShyPW5baV0pJiZyPmUmJihlPXIpfWVsc2V7Zm9yKDsrK2k8dTspaWYo
bnVsbCE9KHI9dC5jYWxsKG4sbltpXSxpKSkmJnI+PXIpe2U9cjticmVha31m
b3IoOysraTx1OyludWxsIT0ocj10LmNhbGwobixuW2ldLGkpKSYmcj5lJiYo
ZT1yKX1yZXR1cm4gZX0sYW8uZXh0ZW50PWZ1bmN0aW9uKG4sdCl7dmFyIGUs
cixpLHU9LTEsbz1uLmxlbmd0aDtpZigxPT09YXJndW1lbnRzLmxlbmd0aCl7
Zm9yKDsrK3U8bzspaWYobnVsbCE9KHI9blt1XSkmJnI+PXIpe2U9aT1yO2Jy
ZWFrfWZvcig7Kyt1PG87KW51bGwhPShyPW5bdV0pJiYoZT5yJiYoZT1yKSxy
PmkmJihpPXIpKX1lbHNle2Zvcig7Kyt1PG87KWlmKG51bGwhPShyPXQuY2Fs
bChuLG5bdV0sdSkpJiZyPj1yKXtlPWk9cjticmVha31mb3IoOysrdTxvOylu
dWxsIT0ocj10LmNhbGwobixuW3VdLHUpKSYmKGU+ciYmKGU9cikscj5pJiYo
aT1yKSl9cmV0dXJuW2UsaV19LGFvLnN1bT1mdW5jdGlvbihuLHQpe3ZhciBl
LHI9MCx1PW4ubGVuZ3RoLG89LTE7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgp
Zm9yKDsrK288dTspaShlPStuW29dKSYmKHIrPWUpO2Vsc2UgZm9yKDsrK288
dTspaShlPSt0LmNhbGwobixuW29dLG8pKSYmKHIrPWUpO3JldHVybiByfSxh
by5tZWFuPWZ1bmN0aW9uKG4sdCl7dmFyIGUsdT0wLG89bi5sZW5ndGgsYT0t
MSxsPW87aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpZm9yKDsrK2E8bzspaShl
PXIoblthXSkpP3UrPWU6LS1sO2Vsc2UgZm9yKDsrK2E8bzspaShlPXIodC5j
YWxsKG4sblthXSxhKSkpP3UrPWU6LS1sO3JldHVybiBsP3UvbDp2b2lkIDB9
LGFvLnF1YW50aWxlPWZ1bmN0aW9uKG4sdCl7dmFyIGU9KG4ubGVuZ3RoLTEp
KnQrMSxyPU1hdGguZmxvb3IoZSksaT0rbltyLTFdLHU9ZS1yO3JldHVybiB1
P2krdSoobltyXS1pKTppfSxhby5tZWRpYW49ZnVuY3Rpb24obix0KXt2YXIg
dSxvPVtdLGE9bi5sZW5ndGgsbD0tMTtpZigxPT09YXJndW1lbnRzLmxlbmd0
aClmb3IoOysrbDxhOylpKHU9cihuW2xdKSkmJm8ucHVzaCh1KTtlbHNlIGZv
cig7KytsPGE7KWkodT1yKHQuY2FsbChuLG5bbF0sbCkpKSYmby5wdXNoKHUp
O3JldHVybiBvLmxlbmd0aD9hby5xdWFudGlsZShvLnNvcnQoZSksLjUpOnZv
aWQgMH0sYW8udmFyaWFuY2U9ZnVuY3Rpb24obix0KXt2YXIgZSx1LG89bi5s
ZW5ndGgsYT0wLGw9MCxjPS0xLGY9MDtpZigxPT09YXJndW1lbnRzLmxlbmd0
aClmb3IoOysrYzxvOylpKGU9cihuW2NdKSkmJih1PWUtYSxhKz11LysrZixs
Kz11KihlLWEpKTtlbHNlIGZvcig7KytjPG87KWkoZT1yKHQuY2FsbChuLG5b
Y10sYykpKSYmKHU9ZS1hLGErPXUvKytmLGwrPXUqKGUtYSkpO3JldHVybiBm
PjE/bC8oZi0xKTp2b2lkIDB9LGFvLmRldmlhdGlvbj1mdW5jdGlvbigpe3Zh
ciBuPWFvLnZhcmlhbmNlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4g
bj9NYXRoLnNxcnQobik6bn07dmFyIE1vPXUoZSk7YW8uYmlzZWN0TGVmdD1N
by5sZWZ0LGFvLmJpc2VjdD1hby5iaXNlY3RSaWdodD1Nby5yaWdodCxhby5i
aXNlY3Rvcj1mdW5jdGlvbihuKXtyZXR1cm4gdSgxPT09bi5sZW5ndGg/ZnVu
Y3Rpb24odCxyKXtyZXR1cm4gZShuKHQpLHIpfTpuKX0sYW8uc2h1ZmZsZT1m
dW5jdGlvbihuLHQsZSl7KHU9YXJndW1lbnRzLmxlbmd0aCk8MyYmKGU9bi5s
ZW5ndGgsMj51JiYodD0wKSk7Zm9yKHZhciByLGksdT1lLXQ7dTspaT1NYXRo
LnJhbmRvbSgpKnUtLXwwLHI9blt1K3RdLG5bdSt0XT1uW2krdF0sbltpK3Rd
PXI7cmV0dXJuIG59LGFvLnBlcm11dGU9ZnVuY3Rpb24obix0KXtmb3IodmFy
IGU9dC5sZW5ndGgscj1uZXcgQXJyYXkoZSk7ZS0tOylyW2VdPW5bdFtlXV07
cmV0dXJuIHJ9LGFvLnBhaXJzPWZ1bmN0aW9uKG4pe2Zvcih2YXIgdCxlPTAs
cj1uLmxlbmd0aC0xLGk9blswXSx1PW5ldyBBcnJheSgwPnI/MDpyKTtyPmU7
KXVbZV09W3Q9aSxpPW5bKytlXV07cmV0dXJuIHV9LGFvLnRyYW5zcG9zZT1m
dW5jdGlvbihuKXtpZighKGk9bi5sZW5ndGgpKXJldHVybltdO2Zvcih2YXIg
dD0tMSxlPWFvLm1pbihuLG8pLHI9bmV3IEFycmF5KGUpOysrdDxlOylmb3Io
dmFyIGksdT0tMSxhPXJbdF09bmV3IEFycmF5KGkpOysrdTxpOylhW3VdPW5b
dV1bdF07cmV0dXJuIHJ9LGFvLnppcD1mdW5jdGlvbigpe3JldHVybiBhby50
cmFuc3Bvc2UoYXJndW1lbnRzKX0sYW8ua2V5cz1mdW5jdGlvbihuKXt2YXIg
dD1bXTtmb3IodmFyIGUgaW4gbil0LnB1c2goZSk7cmV0dXJuIHR9LGFvLnZh
bHVlcz1mdW5jdGlvbihuKXt2YXIgdD1bXTtmb3IodmFyIGUgaW4gbil0LnB1
c2gobltlXSk7cmV0dXJuIHR9LGFvLmVudHJpZXM9ZnVuY3Rpb24obil7dmFy
IHQ9W107Zm9yKHZhciBlIGluIG4pdC5wdXNoKHtrZXk6ZSx2YWx1ZTpuW2Vd
fSk7cmV0dXJuIHR9LGFvLm1lcmdlPWZ1bmN0aW9uKG4pe2Zvcih2YXIgdCxl
LHIsaT1uLmxlbmd0aCx1PS0xLG89MDsrK3U8aTspbys9blt1XS5sZW5ndGg7
Zm9yKGU9bmV3IEFycmF5KG8pOy0taT49MDspZm9yKHI9bltpXSx0PXIubGVu
Z3RoOy0tdD49MDspZVstLW9dPXJbdF07cmV0dXJuIGV9O3ZhciB4bz1NYXRo
LmFiczthby5yYW5nZT1mdW5jdGlvbihuLHQsZSl7aWYoYXJndW1lbnRzLmxl
bmd0aDwzJiYoZT0xLGFyZ3VtZW50cy5sZW5ndGg8MiYmKHQ9bixuPTApKSwo
dC1uKS9lPT09MS8wKXRocm93IG5ldyBFcnJvcigiaW5maW5pdGUgcmFuZ2Ui
KTt2YXIgcixpPVtdLHU9YSh4byhlKSksbz0tMTtpZihuKj11LHQqPXUsZSo9
dSwwPmUpZm9yKDsocj1uK2UqKytvKT50OylpLnB1c2goci91KTtlbHNlIGZv
cig7KHI9bitlKisrbyk8dDspaS5wdXNoKHIvdSk7cmV0dXJuIGl9LGFvLm1h
cD1mdW5jdGlvbihuLHQpe3ZhciBlPW5ldyBjO2lmKG4gaW5zdGFuY2VvZiBj
KW4uZm9yRWFjaChmdW5jdGlvbihuLHQpe2Uuc2V0KG4sdCl9KTtlbHNlIGlm
KEFycmF5LmlzQXJyYXkobikpe3ZhciByLGk9LTEsdT1uLmxlbmd0aDtpZigx
PT09YXJndW1lbnRzLmxlbmd0aClmb3IoOysraTx1OyllLnNldChpLG5baV0p
O2Vsc2UgZm9yKDsrK2k8dTspZS5zZXQodC5jYWxsKG4scj1uW2ldLGkpLHIp
fWVsc2UgZm9yKHZhciBvIGluIG4pZS5zZXQobyxuW29dKTtyZXR1cm4gZX07
dmFyIGJvPSJfX3Byb3RvX18iLF9vPSJceDAwIjtsKGMse2hhczpoLGdldDpm
dW5jdGlvbihuKXtyZXR1cm4gdGhpcy5fW2YobildfSxzZXQ6ZnVuY3Rpb24o
bix0KXtyZXR1cm4gdGhpcy5fW2YobildPXR9LHJlbW92ZTpwLGtleXM6Zyx2
YWx1ZXM6ZnVuY3Rpb24oKXt2YXIgbj1bXTtmb3IodmFyIHQgaW4gdGhpcy5f
KW4ucHVzaCh0aGlzLl9bdF0pO3JldHVybiBufSxlbnRyaWVzOmZ1bmN0aW9u
KCl7dmFyIG49W107Zm9yKHZhciB0IGluIHRoaXMuXyluLnB1c2goe2tleTpz
KHQpLHZhbHVlOnRoaXMuX1t0XX0pO3JldHVybiBufSxzaXplOnYsZW1wdHk6
ZCxmb3JFYWNoOmZ1bmN0aW9uKG4pe2Zvcih2YXIgdCBpbiB0aGlzLl8pbi5j
YWxsKHRoaXMscyh0KSx0aGlzLl9bdF0pfX0pLGFvLm5lc3Q9ZnVuY3Rpb24o
KXtmdW5jdGlvbiBuKHQsbyxhKXtpZihhPj11Lmxlbmd0aClyZXR1cm4gcj9y
LmNhbGwoaSxvKTplP28uc29ydChlKTpvO2Zvcih2YXIgbCxmLHMsaCxwPS0x
LGc9by5sZW5ndGgsdj11W2ErK10sZD1uZXcgYzsrK3A8ZzspKGg9ZC5nZXQo
bD12KGY9b1twXSkpKT9oLnB1c2goZik6ZC5zZXQobCxbZl0pO3JldHVybiB0
PyhmPXQoKSxzPWZ1bmN0aW9uKGUscil7Zi5zZXQoZSxuKHQscixhKSl9KToo
Zj17fSxzPWZ1bmN0aW9uKGUscil7ZltlXT1uKHQscixhKX0pLGQuZm9yRWFj
aChzKSxmfWZ1bmN0aW9uIHQobixlKXtpZihlPj11Lmxlbmd0aClyZXR1cm4g
bjt2YXIgcj1bXSxpPW9bZSsrXTtyZXR1cm4gbi5mb3JFYWNoKGZ1bmN0aW9u
KG4saSl7ci5wdXNoKHtrZXk6bix2YWx1ZXM6dChpLGUpfSl9KSxpP3Iuc29y
dChmdW5jdGlvbihuLHQpe3JldHVybiBpKG4ua2V5LHQua2V5KX0pOnJ9dmFy
IGUscixpPXt9LHU9W10sbz1bXTtyZXR1cm4gaS5tYXA9ZnVuY3Rpb24odCxl
KXtyZXR1cm4gbihlLHQsMCl9LGkuZW50cmllcz1mdW5jdGlvbihlKXtyZXR1
cm4gdChuKGFvLm1hcCxlLDApLDApfSxpLmtleT1mdW5jdGlvbihuKXtyZXR1
cm4gdS5wdXNoKG4pLGl9LGkuc29ydEtleXM9ZnVuY3Rpb24obil7cmV0dXJu
IG9bdS5sZW5ndGgtMV09bixpfSxpLnNvcnRWYWx1ZXM9ZnVuY3Rpb24obil7
cmV0dXJuIGU9bixpfSxpLnJvbGx1cD1mdW5jdGlvbihuKXtyZXR1cm4gcj1u
LGl9LGl9LGFvLnNldD1mdW5jdGlvbihuKXt2YXIgdD1uZXcgeTtpZihuKWZv
cih2YXIgZT0wLHI9bi5sZW5ndGg7cj5lOysrZSl0LmFkZChuW2VdKTtyZXR1
cm4gdH0sbCh5LHtoYXM6aCxhZGQ6ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMu
X1tmKG4rPSIiKV09ITAsbn0scmVtb3ZlOnAsdmFsdWVzOmcsc2l6ZTp2LGVt
cHR5OmQsZm9yRWFjaDpmdW5jdGlvbihuKXtmb3IodmFyIHQgaW4gdGhpcy5f
KW4uY2FsbCh0aGlzLHModCkpfX0pLGFvLmJlaGF2aW9yPXt9LGFvLnJlYmlu
ZD1mdW5jdGlvbihuLHQpe2Zvcih2YXIgZSxyPTEsaT1hcmd1bWVudHMubGVu
Z3RoOysrcjxpOyluW2U9YXJndW1lbnRzW3JdXT1NKG4sdCx0W2VdKTtyZXR1
cm4gbn07dmFyIHdvPVsid2Via2l0IiwibXMiLCJtb3oiLCJNb3oiLCJvIiwi
TyJdO2FvLmRpc3BhdGNoPWZ1bmN0aW9uKCl7Zm9yKHZhciBuPW5ldyBfLHQ9
LTEsZT1hcmd1bWVudHMubGVuZ3RoOysrdDxlOyluW2FyZ3VtZW50c1t0XV09
dyhuKTtyZXR1cm4gbn0sXy5wcm90b3R5cGUub249ZnVuY3Rpb24obix0KXt2
YXIgZT1uLmluZGV4T2YoIi4iKSxyPSIiO2lmKGU+PTAmJihyPW4uc2xpY2Uo
ZSsxKSxuPW4uc2xpY2UoMCxlKSksbilyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aDwyP3RoaXNbbl0ub24ocik6dGhpc1tuXS5vbihyLHQpO2lmKDI9PT1hcmd1
bWVudHMubGVuZ3RoKXtpZihudWxsPT10KWZvcihuIGluIHRoaXMpdGhpcy5o
YXNPd25Qcm9wZXJ0eShuKSYmdGhpc1tuXS5vbihyLG51bGwpO3JldHVybiB0
aGlzfX0sYW8uZXZlbnQ9bnVsbCxhby5yZXF1b3RlPWZ1bmN0aW9uKG4pe3Jl
dHVybiBuLnJlcGxhY2UoU28sIlxcJCYiKX07dmFyIFNvPS9bXFxcXlwkXCpc
K1w/XHxcW1xdXChcKVwuXHtcfV0vZyxrbz17fS5fX3Byb3RvX18/ZnVuY3Rp
b24obix0KXtuLl9fcHJvdG9fXz10fTpmdW5jdGlvbihuLHQpe2Zvcih2YXIg
ZSBpbiB0KW5bZV09dFtlXX0sTm89ZnVuY3Rpb24obix0KXtyZXR1cm4gdC5x
dWVyeVNlbGVjdG9yKG4pfSxFbz1mdW5jdGlvbihuLHQpe3JldHVybiB0LnF1
ZXJ5U2VsZWN0b3JBbGwobil9LEFvPWZ1bmN0aW9uKG4sdCl7dmFyIGU9bi5t
YXRjaGVzfHxuW3gobiwibWF0Y2hlc1NlbGVjdG9yIildO3JldHVybihBbz1m
dW5jdGlvbihuLHQpe3JldHVybiBlLmNhbGwobix0KX0pKG4sdCl9OyJmdW5j
dGlvbiI9PXR5cGVvZiBTaXp6bGUmJihObz1mdW5jdGlvbihuLHQpe3JldHVy
biBTaXp6bGUobix0KVswXXx8bnVsbH0sRW89U2l6emxlLEFvPVNpenpsZS5t
YXRjaGVzU2VsZWN0b3IpLGFvLnNlbGVjdGlvbj1mdW5jdGlvbigpe3JldHVy
biBhby5zZWxlY3QoZm8uZG9jdW1lbnRFbGVtZW50KX07dmFyIENvPWFvLnNl
bGVjdGlvbi5wcm90b3R5cGU9W107Q28uc2VsZWN0PWZ1bmN0aW9uKG4pe3Zh
ciB0LGUscixpLHU9W107bj1BKG4pO2Zvcih2YXIgbz0tMSxhPXRoaXMubGVu
Z3RoOysrbzxhOyl7dS5wdXNoKHQ9W10pLHQucGFyZW50Tm9kZT0ocj10aGlz
W29dKS5wYXJlbnROb2RlO2Zvcih2YXIgbD0tMSxjPXIubGVuZ3RoOysrbDxj
OykoaT1yW2xdKT8odC5wdXNoKGU9bi5jYWxsKGksaS5fX2RhdGFfXyxsLG8p
KSxlJiYiX19kYXRhX18iaW4gaSYmKGUuX19kYXRhX189aS5fX2RhdGFfXykp
OnQucHVzaChudWxsKX1yZXR1cm4gRSh1KX0sQ28uc2VsZWN0QWxsPWZ1bmN0
aW9uKG4pe3ZhciB0LGUscj1bXTtuPUMobik7Zm9yKHZhciBpPS0xLHU9dGhp
cy5sZW5ndGg7KytpPHU7KWZvcih2YXIgbz10aGlzW2ldLGE9LTEsbD1vLmxl
bmd0aDsrK2E8bDspKGU9b1thXSkmJihyLnB1c2godD1jbyhuLmNhbGwoZSxl
Ll9fZGF0YV9fLGEsaSkpKSx0LnBhcmVudE5vZGU9ZSk7cmV0dXJuIEUocil9
O3ZhciB6bz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsTG89e3N2
ZzoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHhodG1sOnpvLHhsaW5r
OiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIix4bWw6Imh0dHA6Ly93
d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIseG1sbnM6Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAveG1sbnMvIn07YW8ubnM9e3ByZWZpeDpMbyxxdWFs
aWZ5OmZ1bmN0aW9uKG4pe3ZhciB0PW4uaW5kZXhPZigiOiIpLGU9bjtyZXR1
cm4gdD49MCYmInhtbG5zIiE9PShlPW4uc2xpY2UoMCx0KSkmJihuPW4uc2xp
Y2UodCsxKSksTG8uaGFzT3duUHJvcGVydHkoZSk/e3NwYWNlOkxvW2VdLGxv
Y2FsOm59Om59fSxDby5hdHRyPWZ1bmN0aW9uKG4sdCl7aWYoYXJndW1lbnRz
Lmxlbmd0aDwyKXtpZigic3RyaW5nIj09dHlwZW9mIG4pe3ZhciBlPXRoaXMu
bm9kZSgpO3JldHVybiBuPWFvLm5zLnF1YWxpZnkobiksbi5sb2NhbD9lLmdl
dEF0dHJpYnV0ZU5TKG4uc3BhY2Usbi5sb2NhbCk6ZS5nZXRBdHRyaWJ1dGUo
bil9Zm9yKHQgaW4gbil0aGlzLmVhY2goeih0LG5bdF0pKTtyZXR1cm4gdGhp
c31yZXR1cm4gdGhpcy5lYWNoKHoobix0KSl9LENvLmNsYXNzZWQ9ZnVuY3Rp
b24obix0KXtpZihhcmd1bWVudHMubGVuZ3RoPDIpe2lmKCJzdHJpbmciPT10
eXBlb2Ygbil7dmFyIGU9dGhpcy5ub2RlKCkscj0obj1UKG4pKS5sZW5ndGgs
aT0tMTtpZih0PWUuY2xhc3NMaXN0KXtmb3IoOysraTxyOylpZighdC5jb250
YWlucyhuW2ldKSlyZXR1cm4hMX1lbHNlIGZvcih0PWUuZ2V0QXR0cmlidXRl
KCJjbGFzcyIpOysraTxyOylpZighcShuW2ldKS50ZXN0KHQpKXJldHVybiEx
O3JldHVybiEwfWZvcih0IGluIG4pdGhpcy5lYWNoKFIodCxuW3RdKSk7cmV0
dXJuIHRoaXN9cmV0dXJuIHRoaXMuZWFjaChSKG4sdCkpfSxDby5zdHlsZT1m
dW5jdGlvbihuLGUscil7dmFyIGk9YXJndW1lbnRzLmxlbmd0aDtpZigzPmkp
e2lmKCJzdHJpbmciIT10eXBlb2Ygbil7Mj5pJiYoZT0iIik7Zm9yKHIgaW4g
bil0aGlzLmVhY2goUChyLG5bcl0sZSkpO3JldHVybiB0aGlzfWlmKDI+aSl7
dmFyIHU9dGhpcy5ub2RlKCk7cmV0dXJuIHQodSkuZ2V0Q29tcHV0ZWRTdHls
ZSh1LG51bGwpLmdldFByb3BlcnR5VmFsdWUobil9cj0iIn1yZXR1cm4gdGhp
cy5lYWNoKFAobixlLHIpKX0sQ28ucHJvcGVydHk9ZnVuY3Rpb24obix0KXtp
Zihhcmd1bWVudHMubGVuZ3RoPDIpe2lmKCJzdHJpbmciPT10eXBlb2Ygbily
ZXR1cm4gdGhpcy5ub2RlKClbbl07Zm9yKHQgaW4gbil0aGlzLmVhY2goVSh0
LG5bdF0pKTtyZXR1cm4gdGhpc31yZXR1cm4gdGhpcy5lYWNoKFUobix0KSl9
LENvLnRleHQ9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
dGhpcy5lYWNoKCJmdW5jdGlvbiI9PXR5cGVvZiBuP2Z1bmN0aW9uKCl7dmFy
IHQ9bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy50ZXh0Q29udGVudD1u
dWxsPT10PyIiOnR9Om51bGw9PW4/ZnVuY3Rpb24oKXt0aGlzLnRleHRDb250
ZW50PSIifTpmdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9bn0pOnRoaXMu
bm9kZSgpLnRleHRDb250ZW50fSxDby5odG1sPWZ1bmN0aW9uKG4pe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaCgiZnVuY3Rpb24iPT10eXBl
b2Ygbj9mdW5jdGlvbigpe3ZhciB0PW4uYXBwbHkodGhpcyxhcmd1bWVudHMp
O3RoaXMuaW5uZXJIVE1MPW51bGw9PXQ/IiI6dH06bnVsbD09bj9mdW5jdGlv
bigpe3RoaXMuaW5uZXJIVE1MPSIifTpmdW5jdGlvbigpe3RoaXMuaW5uZXJI
VE1MPW59KTp0aGlzLm5vZGUoKS5pbm5lckhUTUx9LENvLmFwcGVuZD1mdW5j
dGlvbihuKXtyZXR1cm4gbj1qKG4pLHRoaXMuc2VsZWN0KGZ1bmN0aW9uKCl7
cmV0dXJuIHRoaXMuYXBwZW5kQ2hpbGQobi5hcHBseSh0aGlzLGFyZ3VtZW50
cykpfSl9LENvLmluc2VydD1mdW5jdGlvbihuLHQpe3JldHVybiBuPWoobiks
dD1BKHQpLHRoaXMuc2VsZWN0KGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5z
ZXJ0QmVmb3JlKG4uYXBwbHkodGhpcyxhcmd1bWVudHMpLHQuYXBwbHkodGhp
cyxhcmd1bWVudHMpfHxudWxsKX0pfSxDby5yZW1vdmU9ZnVuY3Rpb24oKXty
ZXR1cm4gdGhpcy5lYWNoKEYpfSxDby5kYXRhPWZ1bmN0aW9uKG4sdCl7ZnVu
Y3Rpb24gZShuLGUpe3ZhciByLGksdSxvPW4ubGVuZ3RoLHM9ZS5sZW5ndGgs
aD1NYXRoLm1pbihvLHMpLHA9bmV3IEFycmF5KHMpLGc9bmV3IEFycmF5KHMp
LHY9bmV3IEFycmF5KG8pO2lmKHQpe3ZhciBkLHk9bmV3IGMsbT1uZXcgQXJy
YXkobyk7Zm9yKHI9LTE7KytyPG87KShpPW5bcl0pJiYoeS5oYXMoZD10LmNh
bGwoaSxpLl9fZGF0YV9fLHIpKT92W3JdPWk6eS5zZXQoZCxpKSxtW3JdPWQp
O2ZvcihyPS0xOysrcjxzOykoaT15LmdldChkPXQuY2FsbChlLHU9ZVtyXSxy
KSkpP2khPT0hMCYmKHBbcl09aSxpLl9fZGF0YV9fPXUpOmdbcl09SCh1KSx5
LnNldChkLCEwKTtmb3Iocj0tMTsrK3I8bzspciBpbiBtJiZ5LmdldChtW3Jd
KSE9PSEwJiYodltyXT1uW3JdKX1lbHNle2ZvcihyPS0xOysrcjxoOylpPW5b
cl0sdT1lW3JdLGk/KGkuX19kYXRhX189dSxwW3JdPWkpOmdbcl09SCh1KTtm
b3IoO3M+cjsrK3IpZ1tyXT1IKGVbcl0pO2Zvcig7bz5yOysrcil2W3JdPW5b
cl19Zy51cGRhdGU9cCxnLnBhcmVudE5vZGU9cC5wYXJlbnROb2RlPXYucGFy
ZW50Tm9kZT1uLnBhcmVudE5vZGUsYS5wdXNoKGcpLGwucHVzaChwKSxmLnB1
c2godil9dmFyIHIsaSx1PS0xLG89dGhpcy5sZW5ndGg7aWYoIWFyZ3VtZW50
cy5sZW5ndGgpe2ZvcihuPW5ldyBBcnJheShvPShyPXRoaXNbMF0pLmxlbmd0
aCk7Kyt1PG87KShpPXJbdV0pJiYoblt1XT1pLl9fZGF0YV9fKTtyZXR1cm4g
bn12YXIgYT1aKFtdKSxsPUUoW10pLGY9RShbXSk7aWYoImZ1bmN0aW9uIj09
dHlwZW9mIG4pZm9yKDsrK3U8bzspZShyPXRoaXNbdV0sbi5jYWxsKHIsci5w
YXJlbnROb2RlLl9fZGF0YV9fLHUpKTtlbHNlIGZvcig7Kyt1PG87KWUocj10
aGlzW3VdLG4pO3JldHVybiBsLmVudGVyPWZ1bmN0aW9uKCl7cmV0dXJuIGF9
LGwuZXhpdD1mdW5jdGlvbigpe3JldHVybiBmfSxsfSxDby5kYXR1bT1mdW5j
dGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLnByb3BlcnR5
KCJfX2RhdGFfXyIsbik6dGhpcy5wcm9wZXJ0eSgiX19kYXRhX18iKX0sQ28u
ZmlsdGVyPWZ1bmN0aW9uKG4pe3ZhciB0LGUscixpPVtdOyJmdW5jdGlvbiIh
PXR5cGVvZiBuJiYobj1PKG4pKTtmb3IodmFyIHU9MCxvPXRoaXMubGVuZ3Ro
O28+dTt1Kyspe2kucHVzaCh0PVtdKSx0LnBhcmVudE5vZGU9KGU9dGhpc1t1
XSkucGFyZW50Tm9kZTtmb3IodmFyIGE9MCxsPWUubGVuZ3RoO2w+YTthKysp
KHI9ZVthXSkmJm4uY2FsbChyLHIuX19kYXRhX18sYSx1KSYmdC5wdXNoKHIp
fXJldHVybiBFKGkpfSxDby5vcmRlcj1mdW5jdGlvbigpe2Zvcih2YXIgbj0t
MSx0PXRoaXMubGVuZ3RoOysrbjx0Oylmb3IodmFyIGUscj10aGlzW25dLGk9
ci5sZW5ndGgtMSx1PXJbaV07LS1pPj0wOykoZT1yW2ldKSYmKHUmJnUhPT1l
Lm5leHRTaWJsaW5nJiZ1LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGUsdSks
dT1lKTtyZXR1cm4gdGhpc30sQ28uc29ydD1mdW5jdGlvbihuKXtuPUkuYXBw
bHkodGhpcyxhcmd1bWVudHMpO2Zvcih2YXIgdD0tMSxlPXRoaXMubGVuZ3Ro
OysrdDxlOyl0aGlzW3RdLnNvcnQobik7cmV0dXJuIHRoaXMub3JkZXIoKX0s
Q28uZWFjaD1mdW5jdGlvbihuKXtyZXR1cm4gWSh0aGlzLGZ1bmN0aW9uKHQs
ZSxyKXtuLmNhbGwodCx0Ll9fZGF0YV9fLGUscil9KX0sQ28uY2FsbD1mdW5j
dGlvbihuKXt2YXIgdD1jbyhhcmd1bWVudHMpO3JldHVybiBuLmFwcGx5KHRb
MF09dGhpcyx0KSx0aGlzfSxDby5lbXB0eT1mdW5jdGlvbigpe3JldHVybiF0
aGlzLm5vZGUoKX0sQ28ubm9kZT1mdW5jdGlvbigpe2Zvcih2YXIgbj0wLHQ9
dGhpcy5sZW5ndGg7dD5uO24rKylmb3IodmFyIGU9dGhpc1tuXSxyPTAsaT1l
Lmxlbmd0aDtpPnI7cisrKXt2YXIgdT1lW3JdO2lmKHUpcmV0dXJuIHV9cmV0
dXJuIG51bGx9LENvLnNpemU9ZnVuY3Rpb24oKXt2YXIgbj0wO3JldHVybiBZ
KHRoaXMsZnVuY3Rpb24oKXsrK259KSxufTt2YXIgcW89W107YW8uc2VsZWN0
aW9uLmVudGVyPVosYW8uc2VsZWN0aW9uLmVudGVyLnByb3RvdHlwZT1xbyxx
by5hcHBlbmQ9Q28uYXBwZW5kLHFvLmVtcHR5PUNvLmVtcHR5LHFvLm5vZGU9
Q28ubm9kZSxxby5jYWxsPUNvLmNhbGwscW8uc2l6ZT1Dby5zaXplLHFvLnNl
bGVjdD1mdW5jdGlvbihuKXtmb3IodmFyIHQsZSxyLGksdSxvPVtdLGE9LTEs
bD10aGlzLmxlbmd0aDsrK2E8bDspe3I9KGk9dGhpc1thXSkudXBkYXRlLG8u
cHVzaCh0PVtdKSx0LnBhcmVudE5vZGU9aS5wYXJlbnROb2RlO2Zvcih2YXIg
Yz0tMSxmPWkubGVuZ3RoOysrYzxmOykodT1pW2NdKT8odC5wdXNoKHJbY109
ZT1uLmNhbGwoaS5wYXJlbnROb2RlLHUuX19kYXRhX18sYyxhKSksZS5fX2Rh
dGFfXz11Ll9fZGF0YV9fKTp0LnB1c2gobnVsbCl9cmV0dXJuIEUobyl9LHFv
Lmluc2VydD1mdW5jdGlvbihuLHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PDImJih0PVYodGhpcykpLENvLmluc2VydC5jYWxsKHRoaXMsbix0KX0sYW8u
c2VsZWN0PWZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiJzdHJpbmciPT10eXBl
b2YgdD8oZT1bTm8odCxmbyldLGUucGFyZW50Tm9kZT1mby5kb2N1bWVudEVs
ZW1lbnQpOihlPVt0XSxlLnBhcmVudE5vZGU9bih0KSksRShbZV0pfSxhby5z
ZWxlY3RBbGw9ZnVuY3Rpb24obil7dmFyIHQ7cmV0dXJuInN0cmluZyI9PXR5
cGVvZiBuPyh0PWNvKEVvKG4sZm8pKSx0LnBhcmVudE5vZGU9Zm8uZG9jdW1l
bnRFbGVtZW50KToodD1jbyhuKSx0LnBhcmVudE5vZGU9bnVsbCksRShbdF0p
fSxDby5vbj1mdW5jdGlvbihuLHQsZSl7dmFyIHI9YXJndW1lbnRzLmxlbmd0
aDtpZigzPnIpe2lmKCJzdHJpbmciIT10eXBlb2Ygbil7Mj5yJiYodD0hMSk7
Zm9yKGUgaW4gbil0aGlzLmVhY2goWChlLG5bZV0sdCkpO3JldHVybiB0aGlz
fWlmKDI+cilyZXR1cm4ocj10aGlzLm5vZGUoKVsiX19vbiIrbl0pJiZyLl87
ZT0hMX1yZXR1cm4gdGhpcy5lYWNoKFgobix0LGUpKX07dmFyIFRvPWFvLm1h
cCh7bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91
dCJ9KTtmbyYmVG8uZm9yRWFjaChmdW5jdGlvbihuKXsib24iK24gaW4gZm8m
JlRvLnJlbW92ZShuKX0pO3ZhciBSbyxEbz0wO2FvLm1vdXNlPWZ1bmN0aW9u
KG4pe3JldHVybiBKKG4saygpKX07dmFyIFBvPXRoaXMubmF2aWdhdG9yJiYv
V2ViS2l0Ly50ZXN0KHRoaXMubmF2aWdhdG9yLnVzZXJBZ2VudCk/LTE6MDth
by50b3VjaD1mdW5jdGlvbihuLHQsZSl7aWYoYXJndW1lbnRzLmxlbmd0aDwz
JiYoZT10LHQ9aygpLmNoYW5nZWRUb3VjaGVzKSx0KWZvcih2YXIgcixpPTAs
dT10Lmxlbmd0aDt1Pmk7KytpKWlmKChyPXRbaV0pLmlkZW50aWZpZXI9PT1l
KXJldHVybiBKKG4scil9LGFvLmJlaGF2aW9yLmRyYWc9ZnVuY3Rpb24oKXtm
dW5jdGlvbiBuKCl7dGhpcy5vbigibW91c2Vkb3duLmRyYWciLHUpLm9uKCJ0
b3VjaHN0YXJ0LmRyYWciLG8pfWZ1bmN0aW9uIGUobix0LGUsdSxvKXtyZXR1
cm4gZnVuY3Rpb24oKXtmdW5jdGlvbiBhKCl7dmFyIG4sZSxyPXQoaCx2KTty
JiYobj1yWzBdLU1bMF0sZT1yWzFdLU1bMV0sZ3w9bnxlLE09cixwKHt0eXBl
OiJkcmFnIix4OnJbMF0rY1swXSx5OnJbMV0rY1sxXSxkeDpuLGR5OmV9KSl9
ZnVuY3Rpb24gbCgpe3QoaCx2KSYmKHkub24odStkLG51bGwpLm9uKG8rZCxu
dWxsKSxtKGcpLHAoe3R5cGU6ImRyYWdlbmQifSkpfXZhciBjLGY9dGhpcyxz
PWFvLmV2ZW50LnRhcmdldC5jb3JyZXNwb25kaW5nRWxlbWVudHx8YW8uZXZl
bnQudGFyZ2V0LGg9Zi5wYXJlbnROb2RlLHA9ci5vZihmLGFyZ3VtZW50cyks
Zz0wLHY9bigpLGQ9Ii5kcmFnIisobnVsbD09dj8iIjoiLSIrdikseT1hby5z
ZWxlY3QoZShzKSkub24odStkLGEpLm9uKG8rZCxsKSxtPVcocyksTT10KGgs
dik7aT8oYz1pLmFwcGx5KGYsYXJndW1lbnRzKSxjPVtjLngtTVswXSxjLnkt
TVsxXV0pOmM9WzAsMF0scCh7dHlwZToiZHJhZ3N0YXJ0In0pfX12YXIgcj1O
KG4sImRyYWciLCJkcmFnc3RhcnQiLCJkcmFnZW5kIiksaT1udWxsLHU9ZShi
LGFvLm1vdXNlLHQsIm1vdXNlbW92ZSIsIm1vdXNldXAiKSxvPWUoRyxhby50
b3VjaCxtLCJ0b3VjaG1vdmUiLCJ0b3VjaGVuZCIpO3JldHVybiBuLm9yaWdp
bj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT10LG4p
Oml9LGFvLnJlYmluZChuLHIsIm9uIil9LGFvLnRvdWNoZXM9ZnVuY3Rpb24o
bix0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyJiYodD1rKCkudG91Y2hl
cyksdD9jbyh0KS5tYXAoZnVuY3Rpb24odCl7dmFyIGU9SihuLHQpO3JldHVy
biBlLmlkZW50aWZpZXI9dC5pZGVudGlmaWVyLGV9KTpbXX07dmFyIFVvPTFl
LTYsam89VW8qVW8sRm89TWF0aC5QSSxIbz0yKkZvLE9vPUhvLVVvLElvPUZv
LzIsWW89Rm8vMTgwLFpvPTE4MC9GbyxWbz1NYXRoLlNRUlQyLFhvPTIsJG89
NDthby5pbnRlcnBvbGF0ZVpvb209ZnVuY3Rpb24obix0KXt2YXIgZSxyLGk9
blswXSx1PW5bMV0sbz1uWzJdLGE9dFswXSxsPXRbMV0sYz10WzJdLGY9YS1p
LHM9bC11LGg9ZipmK3MqcztpZihqbz5oKXI9TWF0aC5sb2coYy9vKS9Wbyxl
PWZ1bmN0aW9uKG4pe3JldHVybltpK24qZix1K24qcyxvKk1hdGguZXhwKFZv
Km4qcildfTtlbHNle3ZhciBwPU1hdGguc3FydChoKSxnPShjKmMtbypvKyRv
KmgpLygyKm8qWG8qcCksdj0oYypjLW8qby0kbypoKS8oMipjKlhvKnApLGQ9
TWF0aC5sb2coTWF0aC5zcXJ0KGcqZysxKS1nKSx5PU1hdGgubG9nKE1hdGgu
c3FydCh2KnYrMSktdik7cj0oeS1kKS9WbyxlPWZ1bmN0aW9uKG4pe3ZhciB0
PW4qcixlPXJuKGQpLGE9by8oWG8qcCkqKGUqdW4oVm8qdCtkKS1lbihkKSk7
cmV0dXJuW2krYSpmLHUrYSpzLG8qZS9ybihWbyp0K2QpXX19cmV0dXJuIGUu
ZHVyYXRpb249MWUzKnIsZX0sYW8uYmVoYXZpb3Iuem9vbT1mdW5jdGlvbigp
e2Z1bmN0aW9uIG4obil7bi5vbihMLHMpLm9uKFdvKyIuem9vbSIscCkub24o
ImRibGNsaWNrLnpvb20iLGcpLm9uKFIsaCl9ZnVuY3Rpb24gZShuKXtyZXR1
cm5bKG5bMF0tay54KS9rLmssKG5bMV0tay55KS9rLmtdfWZ1bmN0aW9uIHIo
bil7cmV0dXJuW25bMF0qay5rK2sueCxuWzFdKmsuaytrLnldfWZ1bmN0aW9u
IGkobil7ay5rPU1hdGgubWF4KEFbMF0sTWF0aC5taW4oQVsxXSxuKSl9ZnVu
Y3Rpb24gdShuLHQpe3Q9cih0KSxrLngrPW5bMF0tdFswXSxrLnkrPW5bMV0t
dFsxXX1mdW5jdGlvbiBvKHQsZSxyLG8pe3QuX19jaGFydF9fPXt4OmsueCx5
OmsueSxrOmsua30saShNYXRoLnBvdygyLG8pKSx1KGQ9ZSxyKSx0PWFvLnNl
bGVjdCh0KSxDPjAmJih0PXQudHJhbnNpdGlvbigpLmR1cmF0aW9uKEMpKSx0
LmNhbGwobi5ldmVudCl9ZnVuY3Rpb24gYSgpe2ImJmIuZG9tYWluKHgucmFu
Z2UoKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuKG4tay54KS9rLmt9KS5tYXAo
eC5pbnZlcnQpKSx3JiZ3LmRvbWFpbihfLnJhbmdlKCkubWFwKGZ1bmN0aW9u
KG4pe3JldHVybihuLWsueSkvay5rfSkubWFwKF8uaW52ZXJ0KSl9ZnVuY3Rp
b24gbChuKXt6Kyt8fG4oe3R5cGU6Inpvb21zdGFydCJ9KX1mdW5jdGlvbiBj
KG4pe2EoKSxuKHt0eXBlOiJ6b29tIixzY2FsZTprLmssdHJhbnNsYXRlOltr
Lngsay55XX0pfWZ1bmN0aW9uIGYobil7LS16fHwobih7dHlwZToiem9vbWVu
ZCJ9KSxkPW51bGwpfWZ1bmN0aW9uIHMoKXtmdW5jdGlvbiBuKCl7YT0xLHUo
YW8ubW91c2UoaSksaCksYyhvKX1mdW5jdGlvbiByKCl7cy5vbihxLG51bGwp
Lm9uKFQsbnVsbCkscChhKSxmKG8pfXZhciBpPXRoaXMsbz1ELm9mKGksYXJn
dW1lbnRzKSxhPTAscz1hby5zZWxlY3QodChpKSkub24ocSxuKS5vbihULHIp
LGg9ZShhby5tb3VzZShpKSkscD1XKGkpO0lsLmNhbGwoaSksbChvKX1mdW5j
dGlvbiBoKCl7ZnVuY3Rpb24gbigpe3ZhciBuPWFvLnRvdWNoZXMoZyk7cmV0
dXJuIHA9ay5rLG4uZm9yRWFjaChmdW5jdGlvbihuKXtuLmlkZW50aWZpZXIg
aW4gZCYmKGRbbi5pZGVudGlmaWVyXT1lKG4pKX0pLG59ZnVuY3Rpb24gdCgp
e3ZhciB0PWFvLmV2ZW50LnRhcmdldDthby5zZWxlY3QodCkub24oeCxyKS5v
bihiLGEpLF8ucHVzaCh0KTtmb3IodmFyIGU9YW8uZXZlbnQuY2hhbmdlZFRv
dWNoZXMsaT0wLHU9ZS5sZW5ndGg7dT5pOysraSlkW2VbaV0uaWRlbnRpZmll
cl09bnVsbDt2YXIgbD1uKCksYz1EYXRlLm5vdygpO2lmKDE9PT1sLmxlbmd0
aCl7aWYoNTAwPmMtTSl7dmFyIGY9bFswXTtvKGcsZixkW2YuaWRlbnRpZmll
cl0sTWF0aC5mbG9vcihNYXRoLmxvZyhrLmspL01hdGguTE4yKSsxKSxTKCl9
TT1jfWVsc2UgaWYobC5sZW5ndGg+MSl7dmFyIGY9bFswXSxzPWxbMV0saD1m
WzBdLXNbMF0scD1mWzFdLXNbMV07eT1oKmgrcCpwfX1mdW5jdGlvbiByKCl7
dmFyIG4sdCxlLHIsbz1hby50b3VjaGVzKGcpO0lsLmNhbGwoZyk7Zm9yKHZh
ciBhPTAsbD1vLmxlbmd0aDtsPmE7KythLHI9bnVsbClpZihlPW9bYV0scj1k
W2UuaWRlbnRpZmllcl0pe2lmKHQpYnJlYWs7bj1lLHQ9cn1pZihyKXt2YXIg
Zj0oZj1lWzBdLW5bMF0pKmYrKGY9ZVsxXS1uWzFdKSpmLHM9eSYmTWF0aC5z
cXJ0KGYveSk7bj1bKG5bMF0rZVswXSkvMiwoblsxXStlWzFdKS8yXSx0PVso
dFswXStyWzBdKS8yLCh0WzFdK3JbMV0pLzJdLGkocypwKX1NPW51bGwsdShu
LHQpLGModil9ZnVuY3Rpb24gYSgpe2lmKGFvLmV2ZW50LnRvdWNoZXMubGVu
Z3RoKXtmb3IodmFyIHQ9YW8uZXZlbnQuY2hhbmdlZFRvdWNoZXMsZT0wLHI9
dC5sZW5ndGg7cj5lOysrZSlkZWxldGUgZFt0W2VdLmlkZW50aWZpZXJdO2Zv
cih2YXIgaSBpbiBkKXJldHVybiB2b2lkIG4oKX1hby5zZWxlY3RBbGwoXyku
b24obSxudWxsKSx3Lm9uKEwscykub24oUixoKSxOKCksZih2KX12YXIgcCxn
PXRoaXMsdj1ELm9mKGcsYXJndW1lbnRzKSxkPXt9LHk9MCxtPSIuem9vbS0i
K2FvLmV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLmlkZW50aWZpZXIseD0idG91
Y2htb3ZlIittLGI9InRvdWNoZW5kIittLF89W10sdz1hby5zZWxlY3QoZyks
Tj1XKGcpO3QoKSxsKHYpLHcub24oTCxudWxsKS5vbihSLHQpfWZ1bmN0aW9u
IHAoKXt2YXIgbj1ELm9mKHRoaXMsYXJndW1lbnRzKTttP2NsZWFyVGltZW91
dChtKTooSWwuY2FsbCh0aGlzKSx2PWUoZD15fHxhby5tb3VzZSh0aGlzKSks
bChuKSksbT1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bT1udWxsLGYobil9LDUw
KSxTKCksaShNYXRoLnBvdygyLC4wMDIqQm8oKSkqay5rKSx1KGQsdiksYyhu
KX1mdW5jdGlvbiBnKCl7dmFyIG49YW8ubW91c2UodGhpcyksdD1NYXRoLmxv
ZyhrLmspL01hdGguTE4yO28odGhpcyxuLGUobiksYW8uZXZlbnQuc2hpZnRL
ZXk/TWF0aC5jZWlsKHQpLTE6TWF0aC5mbG9vcih0KSsxKX12YXIgdixkLHks
bSxNLHgsYixfLHcsaz17eDowLHk6MCxrOjF9LEU9Wzk2MCw1MDBdLEE9Sm8s
Qz0yNTAsej0wLEw9Im1vdXNlZG93bi56b29tIixxPSJtb3VzZW1vdmUuem9v
bSIsVD0ibW91c2V1cC56b29tIixSPSJ0b3VjaHN0YXJ0Lnpvb20iLEQ9Tihu
LCJ6b29tc3RhcnQiLCJ6b29tIiwiem9vbWVuZCIpO3JldHVybiBXb3x8KFdv
PSJvbndoZWVsImluIGZvPyhCbz1mdW5jdGlvbigpe3JldHVybi1hby5ldmVu
dC5kZWx0YVkqKGFvLmV2ZW50LmRlbHRhTW9kZT8xMjA6MSl9LCJ3aGVlbCIp
OiJvbm1vdXNld2hlZWwiaW4gZm8/KEJvPWZ1bmN0aW9uKCl7cmV0dXJuIGFv
LmV2ZW50LndoZWVsRGVsdGF9LCJtb3VzZXdoZWVsIik6KEJvPWZ1bmN0aW9u
KCl7cmV0dXJuLWFvLmV2ZW50LmRldGFpbH0sIk1vek1vdXNlUGl4ZWxTY3Jv
bGwiKSksbi5ldmVudD1mdW5jdGlvbihuKXtuLmVhY2goZnVuY3Rpb24oKXt2
YXIgbj1ELm9mKHRoaXMsYXJndW1lbnRzKSx0PWs7SGw/YW8uc2VsZWN0KHRo
aXMpLnRyYW5zaXRpb24oKS5lYWNoKCJzdGFydC56b29tIixmdW5jdGlvbigp
e2s9dGhpcy5fX2NoYXJ0X198fHt4OjAseTowLGs6MX0sbChuKX0pLnR3ZWVu
KCJ6b29tOnpvb20iLGZ1bmN0aW9uKCl7dmFyIGU9RVswXSxyPUVbMV0saT1k
P2RbMF06ZS8yLHU9ZD9kWzFdOnIvMixvPWFvLmludGVycG9sYXRlWm9vbShb
KGktay54KS9rLmssKHUtay55KS9rLmssZS9rLmtdLFsoaS10LngpL3Quaywo
dS10LnkpL3QuayxlL3Qua10pO3JldHVybiBmdW5jdGlvbih0KXt2YXIgcj1v
KHQpLGE9ZS9yWzJdO3RoaXMuX19jaGFydF9fPWs9e3g6aS1yWzBdKmEseTp1
LXJbMV0qYSxrOmF9LGMobil9fSkuZWFjaCgiaW50ZXJydXB0Lnpvb20iLGZ1
bmN0aW9uKCl7ZihuKX0pLmVhY2goImVuZC56b29tIixmdW5jdGlvbigpe2Yo
bil9KToodGhpcy5fX2NoYXJ0X189ayxsKG4pLGMobiksZihuKSl9KX0sbi50
cmFuc2xhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KGs9e3g6K3RbMF0seTordFsxXSxrOmsua30sYSgpLG4pOltrLngsay55XX0s
bi5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
az17eDprLngseTprLnksazpudWxsfSxpKCt0KSxhKCksbik6ay5rfSxuLnNj
YWxlRXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhBPW51bGw9PXQ/Sm86Wyt0WzBdLCt0WzFdXSxuKTpBfSxuLmNlbnRlcj1m
dW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeT10JiZbK3Rb
MF0sK3RbMV1dLG4pOnl9LG4uc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8oRT10JiZbK3RbMF0sK3RbMV1dLG4pOkV9LG4uZHVy
YXRpb249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEM9
K3Qsbik6Q30sbi54PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhiPXQseD10LmNvcHkoKSxrPXt4OjAseTowLGs6MX0sbik6Yn0sbi55
PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh3PXQsXz10
LmNvcHkoKSxrPXt4OjAseTowLGs6MX0sbik6d30sYW8ucmViaW5kKG4sRCwi
b24iKX07dmFyIEJvLFdvLEpvPVswLDEvMF07YW8uY29sb3I9YW4sYW4ucHJv
dG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmdiKCkr
IiJ9LGFvLmhzbD1sbjt2YXIgR289bG4ucHJvdG90eXBlPW5ldyBhbjtHby5i
cmlnaHRlcj1mdW5jdGlvbihuKXtyZXR1cm4gbj1NYXRoLnBvdyguNyxhcmd1
bWVudHMubGVuZ3RoP246MSksbmV3IGxuKHRoaXMuaCx0aGlzLnMsdGhpcy5s
L24pfSxHby5kYXJrZXI9ZnVuY3Rpb24obil7cmV0dXJuIG49TWF0aC5wb3co
LjcsYXJndW1lbnRzLmxlbmd0aD9uOjEpLG5ldyBsbih0aGlzLmgsdGhpcy5z
LG4qdGhpcy5sKX0sR28ucmdiPWZ1bmN0aW9uKCl7cmV0dXJuIGNuKHRoaXMu
aCx0aGlzLnMsdGhpcy5sKX0sYW8uaGNsPWZuO3ZhciBLbz1mbi5wcm90b3R5
cGU9bmV3IGFuO0tvLmJyaWdodGVyPWZ1bmN0aW9uKG4pe3JldHVybiBuZXcg
Zm4odGhpcy5oLHRoaXMuYyxNYXRoLm1pbigxMDAsdGhpcy5sK1FvKihhcmd1
bWVudHMubGVuZ3RoP246MSkpKX0sS28uZGFya2VyPWZ1bmN0aW9uKG4pe3Jl
dHVybiBuZXcgZm4odGhpcy5oLHRoaXMuYyxNYXRoLm1heCgwLHRoaXMubC1R
byooYXJndW1lbnRzLmxlbmd0aD9uOjEpKSl9LEtvLnJnYj1mdW5jdGlvbigp
e3JldHVybiBzbih0aGlzLmgsdGhpcy5jLHRoaXMubCkucmdiKCl9LGFvLmxh
Yj1objt2YXIgUW89MTgsbmE9Ljk1MDQ3LHRhPTEsZWE9MS4wODg4MyxyYT1o
bi5wcm90b3R5cGU9bmV3IGFuO3JhLmJyaWdodGVyPWZ1bmN0aW9uKG4pe3Jl
dHVybiBuZXcgaG4oTWF0aC5taW4oMTAwLHRoaXMubCtRbyooYXJndW1lbnRz
Lmxlbmd0aD9uOjEpKSx0aGlzLmEsdGhpcy5iKX0scmEuZGFya2VyPWZ1bmN0
aW9uKG4pe3JldHVybiBuZXcgaG4oTWF0aC5tYXgoMCx0aGlzLmwtUW8qKGFy
Z3VtZW50cy5sZW5ndGg/bjoxKSksdGhpcy5hLHRoaXMuYil9LHJhLnJnYj1m
dW5jdGlvbigpe3JldHVybiBwbih0aGlzLmwsdGhpcy5hLHRoaXMuYil9LGFv
LnJnYj1tbjt2YXIgaWE9bW4ucHJvdG90eXBlPW5ldyBhbjtpYS5icmlnaHRl
cj1mdW5jdGlvbihuKXtuPU1hdGgucG93KC43LGFyZ3VtZW50cy5sZW5ndGg/
bjoxKTt2YXIgdD10aGlzLnIsZT10aGlzLmcscj10aGlzLmIsaT0zMDtyZXR1
cm4gdHx8ZXx8cj8odCYmaT50JiYodD1pKSxlJiZpPmUmJihlPWkpLHImJmk+
ciYmKHI9aSksbmV3IG1uKE1hdGgubWluKDI1NSx0L24pLE1hdGgubWluKDI1
NSxlL24pLE1hdGgubWluKDI1NSxyL24pKSk6bmV3IG1uKGksaSxpKX0saWEu
ZGFya2VyPWZ1bmN0aW9uKG4pe3JldHVybiBuPU1hdGgucG93KC43LGFyZ3Vt
ZW50cy5sZW5ndGg/bjoxKSxuZXcgbW4obip0aGlzLnIsbip0aGlzLmcsbip0
aGlzLmIpfSxpYS5oc2w9ZnVuY3Rpb24oKXtyZXR1cm4gd24odGhpcy5yLHRo
aXMuZyx0aGlzLmIpfSxpYS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiIj
Iitibih0aGlzLnIpK2JuKHRoaXMuZykrYm4odGhpcy5iKX07dmFyIHVhPWFv
Lm1hcCh7YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3
NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3
NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFu
Y2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUy
MDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1
ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0
NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Ju
c2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFy
a2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5
MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5
OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5
NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUy
MCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2Fs
bW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJs
dWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3Jl
eTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5
NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdy
YXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5
LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jl
c3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0
NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xk
ZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVu
eWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2
MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286
NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRl
cjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4
MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMy
NTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGln
aHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIz
LGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRw
aW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3Jl
ZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3Jh
eTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJs
dWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxs
aW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzEx
OTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixt
ZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVy
cGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0
ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10
dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlk
bmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9z
ZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2
ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYs
b2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDox
NjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEz
MCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2Nixw
YWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVh
Y2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxw
bHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3
MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJv
d246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEy
NzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFn
cmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5
NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2
OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNu
b3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5
ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0
b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMx
MDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6
MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0
fSk7dWEuZm9yRWFjaChmdW5jdGlvbihuLHQpe3VhLnNldChuLE1uKHQpKX0p
LGFvLmZ1bmN0b3I9RW4sYW8ueGhyPUFuKG0pLGFvLmRzdj1mdW5jdGlvbihu
LHQpe2Z1bmN0aW9uIGUobixlLHUpe2FyZ3VtZW50cy5sZW5ndGg8MyYmKHU9
ZSxlPW51bGwpO3ZhciBvPUNuKG4sdCxudWxsPT1lP3I6aShlKSx1KTtyZXR1
cm4gby5yb3c9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
by5yZXNwb25zZShudWxsPT0oZT1uKT9yOmkobikpOmV9LG99ZnVuY3Rpb24g
cihuKXtyZXR1cm4gZS5wYXJzZShuLnJlc3BvbnNlVGV4dCl9ZnVuY3Rpb24g
aShuKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUucGFyc2UodC5yZXNw
b25zZVRleHQsbil9fWZ1bmN0aW9uIHUodCl7cmV0dXJuIHQubWFwKG8pLmpv
aW4obil9ZnVuY3Rpb24gbyhuKXtyZXR1cm4gYS50ZXN0KG4pPyciJytuLnJl
cGxhY2UoL1wiL2csJyIiJykrJyInOm59dmFyIGE9bmV3IFJlZ0V4cCgnWyIn
K24rIlxuXSIpLGw9bi5jaGFyQ29kZUF0KDApO3JldHVybiBlLnBhcnNlPWZ1
bmN0aW9uKG4sdCl7dmFyIHI7cmV0dXJuIGUucGFyc2VSb3dzKG4sZnVuY3Rp
b24obixlKXtpZihyKXJldHVybiByKG4sZS0xKTt2YXIgaT1uZXcgRnVuY3Rp
b24oImQiLCJyZXR1cm4geyIrbi5tYXAoZnVuY3Rpb24obix0KXtyZXR1cm4g
SlNPTi5zdHJpbmdpZnkobikrIjogZFsiK3QrIl0ifSkuam9pbigiLCIpKyJ9
Iik7cj10P2Z1bmN0aW9uKG4sZSl7cmV0dXJuIHQoaShuKSxlKX06aX0pfSxl
LnBhcnNlUm93cz1mdW5jdGlvbihuLHQpe2Z1bmN0aW9uIGUoKXtpZihmPj1j
KXJldHVybiBvO2lmKGkpcmV0dXJuIGk9ITEsdTt2YXIgdD1mO2lmKDM0PT09
bi5jaGFyQ29kZUF0KHQpKXtmb3IodmFyIGU9dDtlKys8YzspaWYoMzQ9PT1u
LmNoYXJDb2RlQXQoZSkpe2lmKDM0IT09bi5jaGFyQ29kZUF0KGUrMSkpYnJl
YWs7KytlfWY9ZSsyO3ZhciByPW4uY2hhckNvZGVBdChlKzEpO3JldHVybiAx
Mz09PXI/KGk9ITAsMTA9PT1uLmNoYXJDb2RlQXQoZSsyKSYmKytmKToxMD09
PXImJihpPSEwKSxuLnNsaWNlKHQrMSxlKS5yZXBsYWNlKC8iIi9nLCciJyl9
Zm9yKDtjPmY7KXt2YXIgcj1uLmNoYXJDb2RlQXQoZisrKSxhPTE7aWYoMTA9
PT1yKWk9ITA7ZWxzZSBpZigxMz09PXIpaT0hMCwxMD09PW4uY2hhckNvZGVB
dChmKSYmKCsrZiwrK2EpO2Vsc2UgaWYociE9PWwpY29udGludWU7cmV0dXJu
IG4uc2xpY2UodCxmLWEpfXJldHVybiBuLnNsaWNlKHQpfWZvcih2YXIgcixp
LHU9e30sbz17fSxhPVtdLGM9bi5sZW5ndGgsZj0wLHM9MDsocj1lKCkpIT09
bzspe2Zvcih2YXIgaD1bXTtyIT09dSYmciE9PW87KWgucHVzaChyKSxyPWUo
KTt0JiZudWxsPT0oaD10KGgscysrKSl8fGEucHVzaChoKX1yZXR1cm4gYX0s
ZS5mb3JtYXQ9ZnVuY3Rpb24odCl7aWYoQXJyYXkuaXNBcnJheSh0WzBdKSly
ZXR1cm4gZS5mb3JtYXRSb3dzKHQpO3ZhciByPW5ldyB5LGk9W107cmV0dXJu
IHQuZm9yRWFjaChmdW5jdGlvbihuKXtmb3IodmFyIHQgaW4gbilyLmhhcyh0
KXx8aS5wdXNoKHIuYWRkKHQpKX0pLFtpLm1hcChvKS5qb2luKG4pXS5jb25j
YXQodC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIGkubWFwKGZ1bmN0aW9uKG4p
e3JldHVybiBvKHRbbl0pfSkuam9pbihuKX0pKS5qb2luKCJcbiIpfSxlLmZv
cm1hdFJvd3M9ZnVuY3Rpb24obil7cmV0dXJuIG4ubWFwKHUpLmpvaW4oIlxu
Iil9LGV9LGFvLmNzdj1hby5kc3YoIiwiLCJ0ZXh0L2NzdiIpLGFvLnRzdj1h
by5kc3YoIgkiLCJ0ZXh0L3RhYi1zZXBhcmF0ZWQtdmFsdWVzIik7dmFyIG9h
LGFhLGxhLGNhLGZhPXRoaXNbeCh0aGlzLCJyZXF1ZXN0QW5pbWF0aW9uRnJh
bWUiKV18fGZ1bmN0aW9uKG4pe3NldFRpbWVvdXQobiwxNyl9O2FvLnRpbWVy
PWZ1bmN0aW9uKCl7cW4uYXBwbHkodGhpcyxhcmd1bWVudHMpfSxhby50aW1l
ci5mbHVzaD1mdW5jdGlvbigpe1JuKCksRG4oKX0sYW8ucm91bmQ9ZnVuY3Rp
b24obix0KXtyZXR1cm4gdD9NYXRoLnJvdW5kKG4qKHQ9TWF0aC5wb3coMTAs
dCkpKS90Ok1hdGgucm91bmQobil9O3ZhciBzYT1bInkiLCJ6IiwiYSIsImYi
LCJwIiwibiIsIlx4YjUiLCJtIiwiIiwiayIsIk0iLCJHIiwiVCIsIlAiLCJF
IiwiWiIsIlkiXS5tYXAoVW4pO2FvLmZvcm1hdFByZWZpeD1mdW5jdGlvbihu
LHQpe3ZhciBlPTA7cmV0dXJuKG49K24pJiYoMD5uJiYobio9LTEpLHQmJihu
PWFvLnJvdW5kKG4sUG4obix0KSkpLGU9MStNYXRoLmZsb29yKDFlLTEyK01h
dGgubG9nKG4pL01hdGguTE4xMCksZT1NYXRoLm1heCgtMjQsTWF0aC5taW4o
MjQsMypNYXRoLmZsb29yKChlLTEpLzMpKSkpLHNhWzgrZS8zXX07dmFyIGhh
PS8oPzooW157XSk/KFs8Pj1eXSkpPyhbK1wtIF0pPyhbJCNdKT8oMCk/KFxk
Kyk/KCwpPyhcLi0/XGQrKT8oW2EteiVdKT8vaSxwYT1hby5tYXAoe2I6ZnVu
Y3Rpb24obil7cmV0dXJuIG4udG9TdHJpbmcoMil9LGM6ZnVuY3Rpb24obil7
cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUobil9LG86ZnVuY3Rpb24obil7
cmV0dXJuIG4udG9TdHJpbmcoOCl9LHg6ZnVuY3Rpb24obil7cmV0dXJuIG4u
dG9TdHJpbmcoMTYpfSxYOmZ1bmN0aW9uKG4pe3JldHVybiBuLnRvU3RyaW5n
KDE2KS50b1VwcGVyQ2FzZSgpfSxnOmZ1bmN0aW9uKG4sdCl7cmV0dXJuIG4u
dG9QcmVjaXNpb24odCl9LGU6ZnVuY3Rpb24obix0KXtyZXR1cm4gbi50b0V4
cG9uZW50aWFsKHQpfSxmOmZ1bmN0aW9uKG4sdCl7cmV0dXJuIG4udG9GaXhl
ZCh0KX0scjpmdW5jdGlvbihuLHQpe3JldHVybihuPWFvLnJvdW5kKG4sUG4o
bix0KSkpLnRvRml4ZWQoTWF0aC5tYXgoMCxNYXRoLm1pbigyMCxQbihuKigx
KzFlLTE1KSx0KSkpKX19KSxnYT1hby50aW1lPXt9LHZhPURhdGU7SG4ucHJv
dG90eXBlPXtnZXREYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuXy5nZXRV
VENEYXRlKCl9LGdldERheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl8uZ2V0
VVRDRGF5KCl9LGdldEZ1bGxZZWFyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu
Xy5nZXRVVENGdWxsWWVhcigpfSxnZXRIb3VyczpmdW5jdGlvbigpe3JldHVy
biB0aGlzLl8uZ2V0VVRDSG91cnMoKX0sZ2V0TWlsbGlzZWNvbmRzOmZ1bmN0
aW9uKCl7cmV0dXJuIHRoaXMuXy5nZXRVVENNaWxsaXNlY29uZHMoKX0sZ2V0
TWludXRlczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl8uZ2V0VVRDTWludXRl
cygpfSxnZXRNb250aDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl8uZ2V0VVRD
TW9udGgoKX0sZ2V0U2Vjb25kczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl8u
Z2V0VVRDU2Vjb25kcygpfSxnZXRUaW1lOmZ1bmN0aW9uKCl7cmV0dXJuIHRo
aXMuXy5nZXRUaW1lKCl9LGdldFRpbWV6b25lT2Zmc2V0OmZ1bmN0aW9uKCl7
cmV0dXJuIDB9LHZhbHVlT2Y6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fLnZh
bHVlT2YoKX0sc2V0RGF0ZTpmdW5jdGlvbigpe2RhLnNldFVUQ0RhdGUuYXBw
bHkodGhpcy5fLGFyZ3VtZW50cyl9LHNldERheTpmdW5jdGlvbigpe2RhLnNl
dFVUQ0RheS5hcHBseSh0aGlzLl8sYXJndW1lbnRzKX0sc2V0RnVsbFllYXI6
ZnVuY3Rpb24oKXtkYS5zZXRVVENGdWxsWWVhci5hcHBseSh0aGlzLl8sYXJn
dW1lbnRzKX0sc2V0SG91cnM6ZnVuY3Rpb24oKXtkYS5zZXRVVENIb3Vycy5h
cHBseSh0aGlzLl8sYXJndW1lbnRzKX0sc2V0TWlsbGlzZWNvbmRzOmZ1bmN0
aW9uKCl7ZGEuc2V0VVRDTWlsbGlzZWNvbmRzLmFwcGx5KHRoaXMuXyxhcmd1
bWVudHMpfSxzZXRNaW51dGVzOmZ1bmN0aW9uKCl7ZGEuc2V0VVRDTWludXRl
cy5hcHBseSh0aGlzLl8sYXJndW1lbnRzKX0sc2V0TW9udGg6ZnVuY3Rpb24o
KXtkYS5zZXRVVENNb250aC5hcHBseSh0aGlzLl8sYXJndW1lbnRzKX0sc2V0
U2Vjb25kczpmdW5jdGlvbigpe2RhLnNldFVUQ1NlY29uZHMuYXBwbHkodGhp
cy5fLGFyZ3VtZW50cyl9LHNldFRpbWU6ZnVuY3Rpb24oKXtkYS5zZXRUaW1l
LmFwcGx5KHRoaXMuXyxhcmd1bWVudHMpfX07dmFyIGRhPURhdGUucHJvdG90
eXBlO2dhLnllYXI9T24oZnVuY3Rpb24obil7cmV0dXJuIG49Z2EuZGF5KG4p
LG4uc2V0TW9udGgoMCwxKSxufSxmdW5jdGlvbihuLHQpe24uc2V0RnVsbFll
YXIobi5nZXRGdWxsWWVhcigpK3QpfSxmdW5jdGlvbihuKXtyZXR1cm4gbi5n
ZXRGdWxsWWVhcigpfSksZ2EueWVhcnM9Z2EueWVhci5yYW5nZSxnYS55ZWFy
cy51dGM9Z2EueWVhci51dGMucmFuZ2UsZ2EuZGF5PU9uKGZ1bmN0aW9uKG4p
e3ZhciB0PW5ldyB2YSgyZTMsMCk7cmV0dXJuIHQuc2V0RnVsbFllYXIobi5n
ZXRGdWxsWWVhcigpLG4uZ2V0TW9udGgoKSxuLmdldERhdGUoKSksdH0sZnVu
Y3Rpb24obix0KXtuLnNldERhdGUobi5nZXREYXRlKCkrdCl9LGZ1bmN0aW9u
KG4pe3JldHVybiBuLmdldERhdGUoKS0xfSksZ2EuZGF5cz1nYS5kYXkucmFu
Z2UsZ2EuZGF5cy51dGM9Z2EuZGF5LnV0Yy5yYW5nZSxnYS5kYXlPZlllYXI9
ZnVuY3Rpb24obil7dmFyIHQ9Z2EueWVhcihuKTtyZXR1cm4gTWF0aC5mbG9v
cigobi10LTZlNCoobi5nZXRUaW1lem9uZU9mZnNldCgpLXQuZ2V0VGltZXpv
bmVPZmZzZXQoKSkpLzg2NGU1KX0sWyJzdW5kYXkiLCJtb25kYXkiLCJ0dWVz
ZGF5Iiwid2VkbmVzZGF5IiwidGh1cnNkYXkiLCJmcmlkYXkiLCJzYXR1cmRh
eSJdLmZvckVhY2goZnVuY3Rpb24obix0KXt0PTctdDt2YXIgZT1nYVtuXT1P
bihmdW5jdGlvbihuKXtyZXR1cm4obj1nYS5kYXkobikpLnNldERhdGUobi5n
ZXREYXRlKCktKG4uZ2V0RGF5KCkrdCklNyksbn0sZnVuY3Rpb24obix0KXtu
LnNldERhdGUobi5nZXREYXRlKCkrNypNYXRoLmZsb29yKHQpKX0sZnVuY3Rp
b24obil7dmFyIGU9Z2EueWVhcihuKS5nZXREYXkoKTtyZXR1cm4gTWF0aC5m
bG9vcigoZ2EuZGF5T2ZZZWFyKG4pKyhlK3QpJTcpLzcpLShlIT09dCl9KTtn
YVtuKyJzIl09ZS5yYW5nZSxnYVtuKyJzIl0udXRjPWUudXRjLnJhbmdlLGdh
W24rIk9mWWVhciJdPWZ1bmN0aW9uKG4pe3ZhciBlPWdhLnllYXIobikuZ2V0
RGF5KCk7cmV0dXJuIE1hdGguZmxvb3IoKGdhLmRheU9mWWVhcihuKSsoZSt0
KSU3KS83KX19KSxnYS53ZWVrPWdhLnN1bmRheSxnYS53ZWVrcz1nYS5zdW5k
YXkucmFuZ2UsZ2Eud2Vla3MudXRjPWdhLnN1bmRheS51dGMucmFuZ2UsZ2Eu
d2Vla09mWWVhcj1nYS5zdW5kYXlPZlllYXI7dmFyIHlhPXsiLSI6IiIsXzoi
ICIsMDoiMCJ9LG1hPS9eXHMqXGQrLyxNYT0vXiUvO2FvLmxvY2FsZT1mdW5j
dGlvbihuKXtyZXR1cm57bnVtYmVyRm9ybWF0OmpuKG4pLHRpbWVGb3JtYXQ6
WW4obil9fTt2YXIgeGE9YW8ubG9jYWxlKHtkZWNpbWFsOiIuIix0aG91c2Fu
ZHM6IiwiLGdyb3VwaW5nOlszXSxjdXJyZW5jeTpbIiQiLCIiXSxkYXRlVGlt
ZToiJWEgJWIgJWUgJVggJVkiLGRhdGU6IiVtLyVkLyVZIix0aW1lOiIlSDol
TTolUyIscGVyaW9kczpbIkFNIiwiUE0iXSxkYXlzOlsiU3VuZGF5IiwiTW9u
ZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5
IiwiU2F0dXJkYXkiXSwKc2hvcnREYXlzOlsiU3VuIiwiTW9uIiwiVHVlIiwi
V2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sbW9udGhzOlsiSmFudWFyeSIsIkZl
YnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5Iiwi
QXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVj
ZW1iZXIiXSxzaG9ydE1vbnRoczpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIs
Ik1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRl
YyJdfSk7YW8uZm9ybWF0PXhhLm51bWJlckZvcm1hdCxhby5nZW89e30sZnQu
cHJvdG90eXBlPXtzOjAsdDowLGFkZDpmdW5jdGlvbihuKXtzdChuLHRoaXMu
dCxiYSksc3QoYmEucyx0aGlzLnMsdGhpcyksdGhpcy5zP3RoaXMudCs9YmEu
dDp0aGlzLnM9YmEudH0scmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLnM9dGhpcy50
PTB9LHZhbHVlT2Y6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zfX07dmFyIGJh
PW5ldyBmdDthby5nZW8uc3RyZWFtPWZ1bmN0aW9uKG4sdCl7biYmX2EuaGFz
T3duUHJvcGVydHkobi50eXBlKT9fYVtuLnR5cGVdKG4sdCk6aHQobix0KX07
dmFyIF9hPXtGZWF0dXJlOmZ1bmN0aW9uKG4sdCl7aHQobi5nZW9tZXRyeSx0
KX0sRmVhdHVyZUNvbGxlY3Rpb246ZnVuY3Rpb24obix0KXtmb3IodmFyIGU9
bi5mZWF0dXJlcyxyPS0xLGk9ZS5sZW5ndGg7KytyPGk7KWh0KGVbcl0uZ2Vv
bWV0cnksdCl9fSx3YT17U3BoZXJlOmZ1bmN0aW9uKG4sdCl7dC5zcGhlcmUo
KX0sUG9pbnQ6ZnVuY3Rpb24obix0KXtuPW4uY29vcmRpbmF0ZXMsdC5wb2lu
dChuWzBdLG5bMV0sblsyXSl9LE11bHRpUG9pbnQ6ZnVuY3Rpb24obix0KXtm
b3IodmFyIGU9bi5jb29yZGluYXRlcyxyPS0xLGk9ZS5sZW5ndGg7KytyPGk7
KW49ZVtyXSx0LnBvaW50KG5bMF0sblsxXSxuWzJdKX0sTGluZVN0cmluZzpm
dW5jdGlvbihuLHQpe3B0KG4uY29vcmRpbmF0ZXMsdCwwKX0sTXVsdGlMaW5l
U3RyaW5nOmZ1bmN0aW9uKG4sdCl7Zm9yKHZhciBlPW4uY29vcmRpbmF0ZXMs
cj0tMSxpPWUubGVuZ3RoOysrcjxpOylwdChlW3JdLHQsMCl9LFBvbHlnb246
ZnVuY3Rpb24obix0KXtndChuLmNvb3JkaW5hdGVzLHQpfSxNdWx0aVBvbHln
b246ZnVuY3Rpb24obix0KXtmb3IodmFyIGU9bi5jb29yZGluYXRlcyxyPS0x
LGk9ZS5sZW5ndGg7KytyPGk7KWd0KGVbcl0sdCl9LEdlb21ldHJ5Q29sbGVj
dGlvbjpmdW5jdGlvbihuLHQpe2Zvcih2YXIgZT1uLmdlb21ldHJpZXMscj0t
MSxpPWUubGVuZ3RoOysrcjxpOylodChlW3JdLHQpfX07YW8uZ2VvLmFyZWE9
ZnVuY3Rpb24obil7cmV0dXJuIFNhPTAsYW8uZ2VvLnN0cmVhbShuLE5hKSxT
YX07dmFyIFNhLGthPW5ldyBmdCxOYT17c3BoZXJlOmZ1bmN0aW9uKCl7U2Er
PTQqRm99LHBvaW50OmIsbGluZVN0YXJ0OmIsbGluZUVuZDpiLHBvbHlnb25T
dGFydDpmdW5jdGlvbigpe2thLnJlc2V0KCksTmEubGluZVN0YXJ0PXZ0fSxw
b2x5Z29uRW5kOmZ1bmN0aW9uKCl7dmFyIG49MiprYTtTYSs9MD5uPzQqRm8r
bjpuLE5hLmxpbmVTdGFydD1OYS5saW5lRW5kPU5hLnBvaW50PWJ9fTthby5n
ZW8uYm91bmRzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihuLHQpe00ucHVzaCh4
PVtmPW4saD1uXSkscz50JiYocz10KSx0PnAmJihwPXQpfWZ1bmN0aW9uIHQo
dCxlKXt2YXIgcj1kdChbdCpZbyxlKllvXSk7aWYoeSl7dmFyIGk9bXQoeSxy
KSx1PVtpWzFdLC1pWzBdLDBdLG89bXQodSxpKTtidChvKSxvPV90KG8pO3Zh
ciBsPXQtZyxjPWw+MD8xOi0xLHY9b1swXSpabypjLGQ9eG8obCk+MTgwO2lm
KGReKHY+YypnJiZjKnQ+dikpe3ZhciBtPW9bMV0qWm87bT5wJiYocD1tKX1l
bHNlIGlmKHY9KHYrMzYwKSUzNjAtMTgwLGReKHY+YypnJiZjKnQ+dikpe3Zh
ciBtPS1vWzFdKlpvO3M+bSYmKHM9bSl9ZWxzZSBzPmUmJihzPWUpLGU+cCYm
KHA9ZSk7ZD9nPnQ/YShmLHQpPmEoZixoKSYmKGg9dCk6YSh0LGgpPmEoZixo
KSYmKGY9dCk6aD49Zj8oZj50JiYoZj10KSx0PmgmJihoPXQpKTp0Pmc/YShm
LHQpPmEoZixoKSYmKGg9dCk6YSh0LGgpPmEoZixoKSYmKGY9dCl9ZWxzZSBu
KHQsZSk7eT1yLGc9dH1mdW5jdGlvbiBlKCl7Yi5wb2ludD10fWZ1bmN0aW9u
IHIoKXt4WzBdPWYseFsxXT1oLGIucG9pbnQ9bix5PW51bGx9ZnVuY3Rpb24g
aShuLGUpe2lmKHkpe3ZhciByPW4tZzttKz14byhyKT4xODA/cisocj4wPzM2
MDotMzYwKTpyfWVsc2Ugdj1uLGQ9ZTtOYS5wb2ludChuLGUpLHQobixlKX1m
dW5jdGlvbiB1KCl7TmEubGluZVN0YXJ0KCl9ZnVuY3Rpb24gbygpe2kodixk
KSxOYS5saW5lRW5kKCkseG8obSk+VW8mJihmPS0oaD0xODApKSx4WzBdPWYs
eFsxXT1oLHk9bnVsbH1mdW5jdGlvbiBhKG4sdCl7cmV0dXJuKHQtPW4pPDA/
dCszNjA6dH1mdW5jdGlvbiBsKG4sdCl7cmV0dXJuIG5bMF0tdFswXX1mdW5j
dGlvbiBjKG4sdCl7cmV0dXJuIHRbMF08PXRbMV0/dFswXTw9biYmbjw9dFsx
XTpuPHRbMF18fHRbMV08bn12YXIgZixzLGgscCxnLHYsZCx5LG0sTSx4LGI9
e3BvaW50Om4sbGluZVN0YXJ0OmUsbGluZUVuZDpyLHBvbHlnb25TdGFydDpm
dW5jdGlvbigpe2IucG9pbnQ9aSxiLmxpbmVTdGFydD11LGIubGluZUVuZD1v
LG09MCxOYS5wb2x5Z29uU3RhcnQoKX0scG9seWdvbkVuZDpmdW5jdGlvbigp
e05hLnBvbHlnb25FbmQoKSxiLnBvaW50PW4sYi5saW5lU3RhcnQ9ZSxiLmxp
bmVFbmQ9ciwwPmthPyhmPS0oaD0xODApLHM9LShwPTkwKSk6bT5Vbz9wPTkw
Oi1Vbz5tJiYocz0tOTApLHhbMF09Zix4WzFdPWh9fTtyZXR1cm4gZnVuY3Rp
b24obil7cD1oPS0oZj1zPTEvMCksTT1bXSxhby5nZW8uc3RyZWFtKG4sYik7
dmFyIHQ9TS5sZW5ndGg7aWYodCl7TS5zb3J0KGwpO2Zvcih2YXIgZSxyPTEs
aT1NWzBdLHU9W2ldO3Q+cjsrK3IpZT1NW3JdLGMoZVswXSxpKXx8YyhlWzFd
LGkpPyhhKGlbMF0sZVsxXSk+YShpWzBdLGlbMV0pJiYoaVsxXT1lWzFdKSxh
KGVbMF0saVsxXSk+YShpWzBdLGlbMV0pJiYoaVswXT1lWzBdKSk6dS5wdXNo
KGk9ZSk7Zm9yKHZhciBvLGUsZz0tKDEvMCksdD11Lmxlbmd0aC0xLHI9MCxp
PXVbdF07dD49cjtpPWUsKytyKWU9dVtyXSwobz1hKGlbMV0sZVswXSkpPmcm
JihnPW8sZj1lWzBdLGg9aVsxXSl9cmV0dXJuIE09eD1udWxsLGY9PT0xLzB8
fHM9PT0xLzA/W1tOYU4sTmFOXSxbTmFOLE5hTl1dOltbZixzXSxbaCxwXV19
fSgpLGFvLmdlby5jZW50cm9pZD1mdW5jdGlvbihuKXtFYT1BYT1DYT16YT1M
YT1xYT1UYT1SYT1EYT1QYT1VYT0wLGFvLmdlby5zdHJlYW0obixqYSk7dmFy
IHQ9RGEsZT1QYSxyPVVhLGk9dCp0K2UqZStyKnI7cmV0dXJuIGpvPmkmJih0
PXFhLGU9VGEscj1SYSxVbz5BYSYmKHQ9Q2EsZT16YSxyPUxhKSxpPXQqdCtl
KmUrcipyLGpvPmkpP1tOYU4sTmFOXTpbTWF0aC5hdGFuMihlLHQpKlpvLHRu
KHIvTWF0aC5zcXJ0KGkpKSpab119O3ZhciBFYSxBYSxDYSx6YSxMYSxxYSxU
YSxSYSxEYSxQYSxVYSxqYT17c3BoZXJlOmIscG9pbnQ6U3QsbGluZVN0YXJ0
Ok50LGxpbmVFbmQ6RXQscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7amEubGlu
ZVN0YXJ0PUF0fSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7amEubGluZVN0YXJ0
PU50fX0sRmE9UnQoenQsanQsSHQsWy1GbywtRm8vMl0pLEhhPTFlOTthby5n
ZW8uY2xpcEV4dGVudD1mdW5jdGlvbigpe3ZhciBuLHQsZSxyLGksdSxvPXtz
dHJlYW06ZnVuY3Rpb24obil7cmV0dXJuIGkmJihpLnZhbGlkPSExKSxpPXUo
biksaS52YWxpZD0hMCxpfSxleHRlbnQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KHU9WnQobj0rYVswXVswXSx0PSthWzBdWzFdLGU9
K2FbMV1bMF0scj0rYVsxXVsxXSksaSYmKGkudmFsaWQ9ITEsaT1udWxsKSxv
KTpbW24sdF0sW2Uscl1dfX07cmV0dXJuIG8uZXh0ZW50KFtbMCwwXSxbOTYw
LDUwMF1dKX0sKGFvLmdlby5jb25pY0VxdWFsQXJlYT1mdW5jdGlvbigpe3Jl
dHVybiBWdChYdCl9KS5yYXc9WHQsYW8uZ2VvLmFsYmVycz1mdW5jdGlvbigp
e3JldHVybiBhby5nZW8uY29uaWNFcXVhbEFyZWEoKS5yb3RhdGUoWzk2LDBd
KS5jZW50ZXIoWy0uNiwzOC43XSkucGFyYWxsZWxzKFsyOS41LDQ1LjVdKS5z
Y2FsZSgxMDcwKX0sYW8uZ2VvLmFsYmVyc1VzYT1mdW5jdGlvbigpe2Z1bmN0
aW9uIG4obil7dmFyIHU9blswXSxvPW5bMV07cmV0dXJuIHQ9bnVsbCxlKHUs
byksdHx8KHIodSxvKSx0KXx8aSh1LG8pLHR9dmFyIHQsZSxyLGksdT1hby5n
ZW8uYWxiZXJzKCksbz1hby5nZW8uY29uaWNFcXVhbEFyZWEoKS5yb3RhdGUo
WzE1NCwwXSkuY2VudGVyKFstMiw1OC41XSkucGFyYWxsZWxzKFs1NSw2NV0p
LGE9YW8uZ2VvLmNvbmljRXF1YWxBcmVhKCkucm90YXRlKFsxNTcsMF0pLmNl
bnRlcihbLTMsMTkuOV0pLnBhcmFsbGVscyhbOCwxOF0pLGw9e3BvaW50OmZ1
bmN0aW9uKG4sZSl7dD1bbixlXX19O3JldHVybiBuLmludmVydD1mdW5jdGlv
bihuKXt2YXIgdD11LnNjYWxlKCksZT11LnRyYW5zbGF0ZSgpLHI9KG5bMF0t
ZVswXSkvdCxpPShuWzFdLWVbMV0pL3Q7cmV0dXJuKGk+PS4xMiYmLjIzND5p
JiZyPj0tLjQyNSYmLS4yMTQ+cj9vOmk+PS4xNjYmJi4yMzQ+aSYmcj49LS4y
MTQmJi0uMTE1PnI/YTp1KS5pbnZlcnQobil9LG4uc3RyZWFtPWZ1bmN0aW9u
KG4pe3ZhciB0PXUuc3RyZWFtKG4pLGU9by5zdHJlYW0obikscj1hLnN0cmVh
bShuKTtyZXR1cm57cG9pbnQ6ZnVuY3Rpb24obixpKXt0LnBvaW50KG4saSks
ZS5wb2ludChuLGkpLHIucG9pbnQobixpKX0sc3BoZXJlOmZ1bmN0aW9uKCl7
dC5zcGhlcmUoKSxlLnNwaGVyZSgpLHIuc3BoZXJlKCl9LGxpbmVTdGFydDpm
dW5jdGlvbigpe3QubGluZVN0YXJ0KCksZS5saW5lU3RhcnQoKSxyLmxpbmVT
dGFydCgpfSxsaW5lRW5kOmZ1bmN0aW9uKCl7dC5saW5lRW5kKCksZS5saW5l
RW5kKCksci5saW5lRW5kKCl9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3Qu
cG9seWdvblN0YXJ0KCksZS5wb2x5Z29uU3RhcnQoKSxyLnBvbHlnb25TdGFy
dCgpfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dC5wb2x5Z29uRW5kKCksZS5w
b2x5Z29uRW5kKCksci5wb2x5Z29uRW5kKCl9fX0sbi5wcmVjaXNpb249ZnVu
Y3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHUucHJlY2lzaW9u
KHQpLG8ucHJlY2lzaW9uKHQpLGEucHJlY2lzaW9uKHQpLG4pOnUucHJlY2lz
aW9uKCl9LG4uc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KHUuc2NhbGUodCksby5zY2FsZSguMzUqdCksYS5zY2FsZSh0KSxu
LnRyYW5zbGF0ZSh1LnRyYW5zbGF0ZSgpKSk6dS5zY2FsZSgpfSxuLnRyYW5z
bGF0ZT1mdW5jdGlvbih0KXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4g
dS50cmFuc2xhdGUoKTt2YXIgYz11LnNjYWxlKCksZj0rdFswXSxzPSt0WzFd
O3JldHVybiBlPXUudHJhbnNsYXRlKHQpLmNsaXBFeHRlbnQoW1tmLS40NTUq
YyxzLS4yMzgqY10sW2YrLjQ1NSpjLHMrLjIzOCpjXV0pLnN0cmVhbShsKS5w
b2ludCxyPW8udHJhbnNsYXRlKFtmLS4zMDcqYyxzKy4yMDEqY10pLmNsaXBF
eHRlbnQoW1tmLS40MjUqYytVbyxzKy4xMipjK1VvXSxbZi0uMjE0KmMtVW8s
cysuMjM0KmMtVW9dXSkuc3RyZWFtKGwpLnBvaW50LGk9YS50cmFuc2xhdGUo
W2YtLjIwNSpjLHMrLjIxMipjXSkuY2xpcEV4dGVudChbW2YtLjIxNCpjK1Vv
LHMrLjE2NipjK1VvXSxbZi0uMTE1KmMtVW8scysuMjM0KmMtVW9dXSkuc3Ry
ZWFtKGwpLnBvaW50LG59LG4uc2NhbGUoMTA3MCl9O3ZhciBPYSxJYSxZYSxa
YSxWYSxYYSwkYT17cG9pbnQ6YixsaW5lU3RhcnQ6YixsaW5lRW5kOmIscG9s
eWdvblN0YXJ0OmZ1bmN0aW9uKCl7SWE9MCwkYS5saW5lU3RhcnQ9JHR9LHBv
bHlnb25FbmQ6ZnVuY3Rpb24oKXskYS5saW5lU3RhcnQ9JGEubGluZUVuZD0k
YS5wb2ludD1iLE9hKz14byhJYS8yKX19LEJhPXtwb2ludDpCdCxsaW5lU3Rh
cnQ6YixsaW5lRW5kOmIscG9seWdvblN0YXJ0OmIscG9seWdvbkVuZDpifSxX
YT17cG9pbnQ6R3QsbGluZVN0YXJ0Okt0LGxpbmVFbmQ6UXQscG9seWdvblN0
YXJ0OmZ1bmN0aW9uKCl7V2EubGluZVN0YXJ0PW5lfSxwb2x5Z29uRW5kOmZ1
bmN0aW9uKCl7V2EucG9pbnQ9R3QsV2EubGluZVN0YXJ0PUt0LFdhLmxpbmVF
bmQ9UXR9fTthby5nZW8ucGF0aD1mdW5jdGlvbigpe2Z1bmN0aW9uIG4obil7
cmV0dXJuIG4mJigiZnVuY3Rpb24iPT10eXBlb2YgYSYmdS5wb2ludFJhZGl1
cygrYS5hcHBseSh0aGlzLGFyZ3VtZW50cykpLG8mJm8udmFsaWR8fChvPWko
dSkpLGFvLmdlby5zdHJlYW0obixvKSksdS5yZXN1bHQoKX1mdW5jdGlvbiB0
KCl7cmV0dXJuIG89bnVsbCxufXZhciBlLHIsaSx1LG8sYT00LjU7cmV0dXJu
IG4uYXJlYT1mdW5jdGlvbihuKXtyZXR1cm4gT2E9MCxhby5nZW8uc3RyZWFt
KG4saSgkYSkpLE9hfSxuLmNlbnRyb2lkPWZ1bmN0aW9uKG4pe3JldHVybiBD
YT16YT1MYT1xYT1UYT1SYT1EYT1QYT1VYT0wLGFvLmdlby5zdHJlYW0obixp
KFdhKSksVWE/W0RhL1VhLFBhL1VhXTpSYT9bcWEvUmEsVGEvUmFdOkxhP1tD
YS9MYSx6YS9MYV06W05hTixOYU5dfSxuLmJvdW5kcz1mdW5jdGlvbihuKXty
ZXR1cm4gVmE9WGE9LShZYT1aYT0xLzApLGFvLmdlby5zdHJlYW0obixpKEJh
KSksW1tZYSxaYV0sW1ZhLFhhXV19LG4ucHJvamVjdGlvbj1mdW5jdGlvbihu
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0oZT1uKT9uLnN0cmVhbXx8
cmUobik6bSx0KCkpOmV9LG4uY29udGV4dD1mdW5jdGlvbihuKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8odT1udWxsPT0ocj1uKT9uZXcgV3Q6bmV3IHRl
KG4pLCJmdW5jdGlvbiIhPXR5cGVvZiBhJiZ1LnBvaW50UmFkaXVzKGEpLHQo
KSk6cn0sbi5wb2ludFJhZGl1cz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8oYT0iZnVuY3Rpb24iPT10eXBlb2YgdD90Oih1LnBvaW50
UmFkaXVzKCt0KSwrdCksbik6YX0sbi5wcm9qZWN0aW9uKGFvLmdlby5hbGJl
cnNVc2EoKSkuY29udGV4dChudWxsKX0sYW8uZ2VvLnRyYW5zZm9ybT1mdW5j
dGlvbihuKXtyZXR1cm57c3RyZWFtOmZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBp
ZSh0KTtmb3IodmFyIHIgaW4gbillW3JdPW5bcl07cmV0dXJuIGV9fX0saWUu
cHJvdG90eXBlPXtwb2ludDpmdW5jdGlvbihuLHQpe3RoaXMuc3RyZWFtLnBv
aW50KG4sdCl9LHNwaGVyZTpmdW5jdGlvbigpe3RoaXMuc3RyZWFtLnNwaGVy
ZSgpfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbS5saW5lU3Rh
cnQoKX0sbGluZUVuZDpmdW5jdGlvbigpe3RoaXMuc3RyZWFtLmxpbmVFbmQo
KX0scG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0ucG9seWdv
blN0YXJ0KCl9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbS5w
b2x5Z29uRW5kKCl9fSxhby5nZW8ucHJvamVjdGlvbj1vZSxhby5nZW8ucHJv
amVjdGlvbk11dGF0b3I9YWUsKGFvLmdlby5lcXVpcmVjdGFuZ3VsYXI9ZnVu
Y3Rpb24oKXtyZXR1cm4gb2UoY2UpfSkucmF3PWNlLmludmVydD1jZSxhby5n
ZW8ucm90YXRpb249ZnVuY3Rpb24obil7ZnVuY3Rpb24gdCh0KXtyZXR1cm4g
dD1uKHRbMF0qWW8sdFsxXSpZbyksdFswXSo9Wm8sdFsxXSo9Wm8sdH1yZXR1
cm4gbj1zZShuWzBdJTM2MCpZbyxuWzFdKllvLG4ubGVuZ3RoPjI/blsyXSpZ
bzowKSx0LmludmVydD1mdW5jdGlvbih0KXtyZXR1cm4gdD1uLmludmVydCh0
WzBdKllvLHRbMV0qWW8pLHRbMF0qPVpvLHRbMV0qPVpvLHR9LHR9LGZlLmlu
dmVydD1jZSxhby5nZW8uY2lyY2xlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbigp
e3ZhciBuPSJmdW5jdGlvbiI9PXR5cGVvZiByP3IuYXBwbHkodGhpcyxhcmd1
bWVudHMpOnIsdD1zZSgtblswXSpZbywtblsxXSpZbywwKS5pbnZlcnQsaT1b
XTtyZXR1cm4gZShudWxsLG51bGwsMSx7cG9pbnQ6ZnVuY3Rpb24obixlKXtp
LnB1c2gobj10KG4sZSkpLG5bMF0qPVpvLG5bMV0qPVpvfX0pLHt0eXBlOiJQ
b2x5Z29uIixjb29yZGluYXRlczpbaV19fXZhciB0LGUscj1bMCwwXSxpPTY7
cmV0dXJuIG4ub3JpZ2luPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhyPXQsbik6cn0sbi5hbmdsZT1mdW5jdGlvbihyKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8oZT12ZSgodD0rcikqWW8saSpZbyksbik6dH0s
bi5wcmVjaXNpb249ZnVuY3Rpb24ocil7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KGU9dmUodCpZbywoaT0rcikqWW8pLG4pOml9LG4uYW5nbGUoOTApfSxh
by5nZW8uZGlzdGFuY2U9ZnVuY3Rpb24obix0KXt2YXIgZSxyPSh0WzBdLW5b
MF0pKllvLGk9blsxXSpZbyx1PXRbMV0qWW8sbz1NYXRoLnNpbihyKSxhPU1h
dGguY29zKHIpLGw9TWF0aC5zaW4oaSksYz1NYXRoLmNvcyhpKSxmPU1hdGgu
c2luKHUpLHM9TWF0aC5jb3ModSk7cmV0dXJuIE1hdGguYXRhbjIoTWF0aC5z
cXJ0KChlPXMqbykqZSsoZT1jKmYtbCpzKmEpKmUpLGwqZitjKnMqYSl9LGFv
Lmdlby5ncmF0aWN1bGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKCl7cmV0dXJu
e3R5cGU6Ik11bHRpTGluZVN0cmluZyIsY29vcmRpbmF0ZXM6dCgpfX1mdW5j
dGlvbiB0KCl7cmV0dXJuIGFvLnJhbmdlKE1hdGguY2VpbCh1L2QpKmQsaSxk
KS5tYXAoaCkuY29uY2F0KGFvLnJhbmdlKE1hdGguY2VpbChjL3kpKnksbCx5
KS5tYXAocCkpLmNvbmNhdChhby5yYW5nZShNYXRoLmNlaWwoci9nKSpnLGUs
ZykuZmlsdGVyKGZ1bmN0aW9uKG4pe3JldHVybiB4byhuJWQpPlVvfSkubWFw
KGYpKS5jb25jYXQoYW8ucmFuZ2UoTWF0aC5jZWlsKGEvdikqdixvLHYpLmZp
bHRlcihmdW5jdGlvbihuKXtyZXR1cm4geG8obiV5KT5Vb30pLm1hcChzKSl9
dmFyIGUscixpLHUsbyxhLGwsYyxmLHMsaCxwLGc9MTAsdj1nLGQ9OTAseT0z
NjAsbT0yLjU7cmV0dXJuIG4ubGluZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdCgp
Lm1hcChmdW5jdGlvbihuKXtyZXR1cm57dHlwZToiTGluZVN0cmluZyIsY29v
cmRpbmF0ZXM6bn19KX0sbi5vdXRsaW5lPWZ1bmN0aW9uKCl7cmV0dXJue3R5
cGU6IlBvbHlnb24iLGNvb3JkaW5hdGVzOltoKHUpLmNvbmNhdChwKGwpLnNs
aWNlKDEpLGgoaSkucmV2ZXJzZSgpLnNsaWNlKDEpLHAoYykucmV2ZXJzZSgp
LnNsaWNlKDEpKV19fSxuLmV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD9uLm1ham9yRXh0ZW50KHQpLm1pbm9yRXh0ZW50KHQp
Om4ubWlub3JFeHRlbnQoKX0sbi5tYWpvckV4dGVudD1mdW5jdGlvbih0KXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0rdFswXVswXSxpPSt0WzFdWzBd
LGM9K3RbMF1bMV0sbD0rdFsxXVsxXSx1PmkmJih0PXUsdT1pLGk9dCksYz5s
JiYodD1jLGM9bCxsPXQpLG4ucHJlY2lzaW9uKG0pKTpbW3UsY10sW2ksbF1d
fSxuLm1pbm9yRXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhyPSt0WzBdWzBdLGU9K3RbMV1bMF0sYT0rdFswXVsxXSxvPSt0
WzFdWzFdLHI+ZSYmKHQ9cixyPWUsZT10KSxhPm8mJih0PWEsYT1vLG89dCks
bi5wcmVjaXNpb24obSkpOltbcixhXSxbZSxvXV19LG4uc3RlcD1mdW5jdGlv
bih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9uLm1ham9yU3RlcCh0KS5t
aW5vclN0ZXAodCk6bi5taW5vclN0ZXAoKX0sbi5tYWpvclN0ZXA9ZnVuY3Rp
b24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9K3RbMF0seT0rdFsx
XSxuKTpbZCx5XX0sbi5taW5vclN0ZXA9ZnVuY3Rpb24odCl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KGc9K3RbMF0sdj0rdFsxXSxuKTpbZyx2XX0sbi5w
cmVjaXNpb249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KG09K3QsZj15ZShhLG8sOTApLHM9bWUocixlLG0pLGg9eWUoYyxsLDkwKSxw
PW1lKHUsaSxtKSxuKTptfSxuLm1ham9yRXh0ZW50KFtbLTE4MCwtOTArVW9d
LFsxODAsOTAtVW9dXSkubWlub3JFeHRlbnQoW1stMTgwLC04MC1Vb10sWzE4
MCw4MCtVb11dKX0sYW8uZ2VvLmdyZWF0QXJjPWZ1bmN0aW9uKCl7ZnVuY3Rp
b24gbigpe3JldHVybnt0eXBlOiJMaW5lU3RyaW5nIixjb29yZGluYXRlczpb
dHx8ci5hcHBseSh0aGlzLGFyZ3VtZW50cyksZXx8aS5hcHBseSh0aGlzLGFy
Z3VtZW50cyldfX12YXIgdCxlLHI9TWUsaT14ZTtyZXR1cm4gbi5kaXN0YW5j
ZT1mdW5jdGlvbigpe3JldHVybiBhby5nZW8uZGlzdGFuY2UodHx8ci5hcHBs
eSh0aGlzLGFyZ3VtZW50cyksZXx8aS5hcHBseSh0aGlzLGFyZ3VtZW50cykp
fSxuLnNvdXJjZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8ocj1lLHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/bnVsbDplLG4pOnJ9LG4u
dGFyZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhp
PXQsZT0iZnVuY3Rpb24iPT10eXBlb2YgdD9udWxsOnQsbik6aX0sbi5wcmVj
aXNpb249ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9uOjB9
LG59LGFvLmdlby5pbnRlcnBvbGF0ZT1mdW5jdGlvbihuLHQpe3JldHVybiBi
ZShuWzBdKllvLG5bMV0qWW8sdFswXSpZbyx0WzFdKllvKX0sYW8uZ2VvLmxl
bmd0aD1mdW5jdGlvbihuKXtyZXR1cm4gSmE9MCxhby5nZW8uc3RyZWFtKG4s
R2EpLEphfTt2YXIgSmEsR2E9e3NwaGVyZTpiLHBvaW50OmIsbGluZVN0YXJ0
Ol9lLGxpbmVFbmQ6Yixwb2x5Z29uU3RhcnQ6Yixwb2x5Z29uRW5kOmJ9LEth
PXdlKGZ1bmN0aW9uKG4pe3JldHVybiBNYXRoLnNxcnQoMi8oMStuKSl9LGZ1
bmN0aW9uKG4pe3JldHVybiAyKk1hdGguYXNpbihuLzIpfSk7KGFvLmdlby5h
emltdXRoYWxFcXVhbEFyZWE9ZnVuY3Rpb24oKXtyZXR1cm4gb2UoS2EpfSku
cmF3PUthO3ZhciBRYT13ZShmdW5jdGlvbihuKXt2YXIgdD1NYXRoLmFjb3Mo
bik7cmV0dXJuIHQmJnQvTWF0aC5zaW4odCl9LG0pOyhhby5nZW8uYXppbXV0
aGFsRXF1aWRpc3RhbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gb2UoUWEpfSkucmF3
PVFhLChhby5nZW8uY29uaWNDb25mb3JtYWw9ZnVuY3Rpb24oKXtyZXR1cm4g
VnQoU2UpfSkucmF3PVNlLChhby5nZW8uY29uaWNFcXVpZGlzdGFudD1mdW5j
dGlvbigpe3JldHVybiBWdChrZSl9KS5yYXc9a2U7dmFyIG5sPXdlKGZ1bmN0
aW9uKG4pe3JldHVybiAxL259LE1hdGguYXRhbik7KGFvLmdlby5nbm9tb25p
Yz1mdW5jdGlvbigpe3JldHVybiBvZShubCl9KS5yYXc9bmwsTmUuaW52ZXJ0
PWZ1bmN0aW9uKG4sdCl7cmV0dXJuW24sMipNYXRoLmF0YW4oTWF0aC5leHAo
dCkpLUlvXX0sKGFvLmdlby5tZXJjYXRvcj1mdW5jdGlvbigpe3JldHVybiBF
ZShOZSl9KS5yYXc9TmU7dmFyIHRsPXdlKGZ1bmN0aW9uKCl7cmV0dXJuIDF9
LE1hdGguYXNpbik7KGFvLmdlby5vcnRob2dyYXBoaWM9ZnVuY3Rpb24oKXty
ZXR1cm4gb2UodGwpfSkucmF3PXRsO3ZhciBlbD13ZShmdW5jdGlvbihuKXty
ZXR1cm4gMS8oMStuKX0sZnVuY3Rpb24obil7cmV0dXJuIDIqTWF0aC5hdGFu
KG4pfSk7KGFvLmdlby5zdGVyZW9ncmFwaGljPWZ1bmN0aW9uKCl7cmV0dXJu
IG9lKGVsKX0pLnJhdz1lbCxBZS5pbnZlcnQ9ZnVuY3Rpb24obix0KXtyZXR1
cm5bLXQsMipNYXRoLmF0YW4oTWF0aC5leHAobikpLUlvXX0sKGFvLmdlby50
cmFuc3ZlcnNlTWVyY2F0b3I9ZnVuY3Rpb24oKXt2YXIgbj1FZShBZSksdD1u
LmNlbnRlcixlPW4ucm90YXRlO3JldHVybiBuLmNlbnRlcj1mdW5jdGlvbihu
KXtyZXR1cm4gbj90KFstblsxXSxuWzBdXSk6KG49dCgpLFtuWzFdLC1uWzBd
XSl9LG4ucm90YXRlPWZ1bmN0aW9uKG4pe3JldHVybiBuP2UoW25bMF0sblsx
XSxuLmxlbmd0aD4yP25bMl0rOTA6OTBdKToobj1lKCksW25bMF0sblsxXSxu
WzJdLTkwXSl9LGUoWzAsMCw5MF0pfSkucmF3PUFlLGFvLmdlb209e30sYW8u
Z2VvbS5odWxsPWZ1bmN0aW9uKG4pe2Z1bmN0aW9uIHQobil7aWYobi5sZW5n
dGg8MylyZXR1cm5bXTt2YXIgdCxpPUVuKGUpLHU9RW4ociksbz1uLmxlbmd0
aCxhPVtdLGw9W107Zm9yKHQ9MDtvPnQ7dCsrKWEucHVzaChbK2kuY2FsbCh0
aGlzLG5bdF0sdCksK3UuY2FsbCh0aGlzLG5bdF0sdCksdF0pO2ZvcihhLnNv
cnQocWUpLHQ9MDtvPnQ7dCsrKWwucHVzaChbYVt0XVswXSwtYVt0XVsxXV0p
O3ZhciBjPUxlKGEpLGY9TGUobCkscz1mWzBdPT09Y1swXSxoPWZbZi5sZW5n
dGgtMV09PT1jW2MubGVuZ3RoLTFdLHA9W107Zm9yKHQ9Yy5sZW5ndGgtMTt0
Pj0wOy0tdClwLnB1c2goblthW2NbdF1dWzJdXSk7Zm9yKHQ9K3M7dDxmLmxl
bmd0aC1oOysrdClwLnB1c2goblthW2ZbdF1dWzJdXSk7cmV0dXJuIHB9dmFy
IGU9Q2Uscj16ZTtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90KG4pOih0Lng9
ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9bix0KTpl
fSx0Lnk9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9
bix0KTpyfSx0KX0sYW8uZ2VvbS5wb2x5Z29uPWZ1bmN0aW9uKG4pe3JldHVy
biBrbyhuLHJsKSxufTt2YXIgcmw9YW8uZ2VvbS5wb2x5Z29uLnByb3RvdHlw
ZT1bXTtybC5hcmVhPWZ1bmN0aW9uKCl7Zm9yKHZhciBuLHQ9LTEsZT10aGlz
Lmxlbmd0aCxyPXRoaXNbZS0xXSxpPTA7Kyt0PGU7KW49cixyPXRoaXNbdF0s
aSs9blsxXSpyWzBdLW5bMF0qclsxXTtyZXR1cm4uNSppfSxybC5jZW50cm9p
ZD1mdW5jdGlvbihuKXt2YXIgdCxlLHI9LTEsaT10aGlzLmxlbmd0aCx1PTAs
bz0wLGE9dGhpc1tpLTFdO2Zvcihhcmd1bWVudHMubGVuZ3RofHwobj0tMS8o
Nip0aGlzLmFyZWEoKSkpOysrcjxpOyl0PWEsYT10aGlzW3JdLGU9dFswXSph
WzFdLWFbMF0qdFsxXSx1Kz0odFswXSthWzBdKSplLG8rPSh0WzFdK2FbMV0p
KmU7cmV0dXJuW3UqbixvKm5dfSxybC5jbGlwPWZ1bmN0aW9uKG4pe2Zvcih2
YXIgdCxlLHIsaSx1LG8sYT1EZShuKSxsPS0xLGM9dGhpcy5sZW5ndGgtRGUo
dGhpcyksZj10aGlzW2MtMV07KytsPGM7KXtmb3IodD1uLnNsaWNlKCksbi5s
ZW5ndGg9MCxpPXRoaXNbbF0sdT10WyhyPXQubGVuZ3RoLWEpLTFdLGU9LTE7
KytlPHI7KW89dFtlXSxUZShvLGYsaSk/KFRlKHUsZixpKXx8bi5wdXNoKFJl
KHUsbyxmLGkpKSxuLnB1c2gobykpOlRlKHUsZixpKSYmbi5wdXNoKFJlKHUs
byxmLGkpKSx1PW87YSYmbi5wdXNoKG5bMF0pLGY9aX1yZXR1cm4gbn07dmFy
IGlsLHVsLG9sLGFsLGxsLGNsPVtdLGZsPVtdO1llLnByb3RvdHlwZS5wcmVw
YXJlPWZ1bmN0aW9uKCl7Zm9yKHZhciBuLHQ9dGhpcy5lZGdlcyxlPXQubGVu
Z3RoO2UtLTspbj10W2VdLmVkZ2Usbi5iJiZuLmF8fHQuc3BsaWNlKGUsMSk7
cmV0dXJuIHQuc29ydChWZSksdC5sZW5ndGh9LHRyLnByb3RvdHlwZT17c3Rh
cnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGdlLmw9PT10aGlzLnNpdGU/
dGhpcy5lZGdlLmE6dGhpcy5lZGdlLmJ9LGVuZDpmdW5jdGlvbigpe3JldHVy
biB0aGlzLmVkZ2UubD09PXRoaXMuc2l0ZT90aGlzLmVkZ2UuYjp0aGlzLmVk
Z2UuYX19LGVyLnByb3RvdHlwZT17aW5zZXJ0OmZ1bmN0aW9uKG4sdCl7dmFy
IGUscixpO2lmKG4pe2lmKHQuUD1uLHQuTj1uLk4sbi5OJiYobi5OLlA9dCks
bi5OPXQsbi5SKXtmb3Iobj1uLlI7bi5MOyluPW4uTDtuLkw9dH1lbHNlIG4u
Uj10O2U9bn1lbHNlIHRoaXMuXz8obj1vcih0aGlzLl8pLHQuUD1udWxsLHQu
Tj1uLG4uUD1uLkw9dCxlPW4pOih0LlA9dC5OPW51bGwsdGhpcy5fPXQsZT1u
dWxsKTtmb3IodC5MPXQuUj1udWxsLHQuVT1lLHQuQz0hMCxuPXQ7ZSYmZS5D
OylyPWUuVSxlPT09ci5MPyhpPXIuUixpJiZpLkM/KGUuQz1pLkM9ITEsci5D
PSEwLG49cik6KG49PT1lLlImJihpcih0aGlzLGUpLG49ZSxlPW4uVSksZS5D
PSExLHIuQz0hMCx1cih0aGlzLHIpKSk6KGk9ci5MLGkmJmkuQz8oZS5DPWku
Qz0hMSxyLkM9ITAsbj1yKToobj09PWUuTCYmKHVyKHRoaXMsZSksbj1lLGU9
bi5VKSxlLkM9ITEsci5DPSEwLGlyKHRoaXMscikpKSxlPW4uVTt0aGlzLl8u
Qz0hMX0scmVtb3ZlOmZ1bmN0aW9uKG4pe24uTiYmKG4uTi5QPW4uUCksbi5Q
JiYobi5QLk49bi5OKSxuLk49bi5QPW51bGw7dmFyIHQsZSxyLGk9bi5VLHU9
bi5MLG89bi5SO2lmKGU9dT9vP29yKG8pOnU6byxpP2kuTD09PW4/aS5MPWU6
aS5SPWU6dGhpcy5fPWUsdSYmbz8ocj1lLkMsZS5DPW4uQyxlLkw9dSx1LlU9
ZSxlIT09bz8oaT1lLlUsZS5VPW4uVSxuPWUuUixpLkw9bixlLlI9byxvLlU9
ZSk6KGUuVT1pLGk9ZSxuPWUuUikpOihyPW4uQyxuPWUpLG4mJihuLlU9aSks
IXIpe2lmKG4mJm4uQylyZXR1cm4gdm9pZChuLkM9ITEpO2Rve2lmKG49PT10
aGlzLl8pYnJlYWs7aWYobj09PWkuTCl7aWYodD1pLlIsdC5DJiYodC5DPSEx
LGkuQz0hMCxpcih0aGlzLGkpLHQ9aS5SKSx0LkwmJnQuTC5DfHx0LlImJnQu
Ui5DKXt0LlImJnQuUi5DfHwodC5MLkM9ITEsdC5DPSEwLHVyKHRoaXMsdCks
dD1pLlIpLHQuQz1pLkMsaS5DPXQuUi5DPSExLGlyKHRoaXMsaSksbj10aGlz
Ll87YnJlYWt9fWVsc2UgaWYodD1pLkwsdC5DJiYodC5DPSExLGkuQz0hMCx1
cih0aGlzLGkpLHQ9aS5MKSx0LkwmJnQuTC5DfHx0LlImJnQuUi5DKXt0Lkwm
JnQuTC5DfHwodC5SLkM9ITEsdC5DPSEwLGlyKHRoaXMsdCksdD1pLkwpLHQu
Qz1pLkMsaS5DPXQuTC5DPSExLHVyKHRoaXMsaSksbj10aGlzLl87YnJlYWt9
dC5DPSEwLG49aSxpPWkuVX13aGlsZSghbi5DKTtuJiYobi5DPSExKX19fSxh
by5nZW9tLnZvcm9ub2k9ZnVuY3Rpb24obil7ZnVuY3Rpb24gdChuKXt2YXIg
dD1uZXcgQXJyYXkobi5sZW5ndGgpLHI9YVswXVswXSxpPWFbMF1bMV0sdT1h
WzFdWzBdLG89YVsxXVsxXTtyZXR1cm4gYXIoZShuKSxhKS5jZWxscy5mb3JF
YWNoKGZ1bmN0aW9uKGUsYSl7dmFyIGw9ZS5lZGdlcyxjPWUuc2l0ZSxmPXRb
YV09bC5sZW5ndGg/bC5tYXAoZnVuY3Rpb24obil7dmFyIHQ9bi5zdGFydCgp
O3JldHVyblt0LngsdC55XX0pOmMueD49ciYmYy54PD11JiZjLnk+PWkmJmMu
eTw9bz9bW3Isb10sW3Usb10sW3UsaV0sW3IsaV1dOltdO2YucG9pbnQ9blth
XX0pLHR9ZnVuY3Rpb24gZShuKXtyZXR1cm4gbi5tYXAoZnVuY3Rpb24obix0
KXtyZXR1cm57eDpNYXRoLnJvdW5kKHUobix0KS9VbykqVW8seTpNYXRoLnJv
dW5kKG8obix0KS9VbykqVW8saTp0fX0pfXZhciByPUNlLGk9emUsdT1yLG89
aSxhPXNsO3JldHVybiBuP3Qobik6KHQubGlua3M9ZnVuY3Rpb24obil7cmV0
dXJuIGFyKGUobikpLmVkZ2VzLmZpbHRlcihmdW5jdGlvbihuKXtyZXR1cm4g
bi5sJiZuLnJ9KS5tYXAoZnVuY3Rpb24odCl7cmV0dXJue3NvdXJjZTpuW3Qu
bC5pXSx0YXJnZXQ6blt0LnIuaV19fSl9LHQudHJpYW5nbGVzPWZ1bmN0aW9u
KG4pe3ZhciB0PVtdO3JldHVybiBhcihlKG4pKS5jZWxscy5mb3JFYWNoKGZ1
bmN0aW9uKGUscil7Zm9yKHZhciBpLHUsbz1lLnNpdGUsYT1lLmVkZ2VzLnNv
cnQoVmUpLGw9LTEsYz1hLmxlbmd0aCxmPWFbYy0xXS5lZGdlLHM9Zi5sPT09
bz9mLnI6Zi5sOysrbDxjOylpPWYsdT1zLGY9YVtsXS5lZGdlLHM9Zi5sPT09
bz9mLnI6Zi5sLHI8dS5pJiZyPHMuaSYmY3Iobyx1LHMpPDAmJnQucHVzaChb
bltyXSxuW3UuaV0sbltzLmldXSl9KSx0fSx0Lng9ZnVuY3Rpb24obil7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9RW4ocj1uKSx0KTpyfSx0Lnk9ZnVu
Y3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89RW4oaT1uKSx0
KTppfSx0LmNsaXBFeHRlbnQ9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KGE9bnVsbD09bj9zbDpuLHQpOmE9PT1zbD9udWxsOmF9LHQu
c2l6ZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90LmNs
aXBFeHRlbnQobiYmW1swLDBdLG5dKTphPT09c2w/bnVsbDphJiZhWzFdfSx0
KX07dmFyIHNsPVtbLTFlNiwtMWU2XSxbMWU2LDFlNl1dO2FvLmdlb20uZGVs
YXVuYXk9ZnVuY3Rpb24obil7cmV0dXJuIGFvLmdlb20udm9yb25vaSgpLnRy
aWFuZ2xlcyhuKX0sYW8uZ2VvbS5xdWFkdHJlZT1mdW5jdGlvbihuLHQsZSxy
LGkpe2Z1bmN0aW9uIHUobil7ZnVuY3Rpb24gdShuLHQsZSxyLGksdSxvLGEp
e2lmKCFpc05hTihlKSYmIWlzTmFOKHIpKWlmKG4ubGVhZil7dmFyIGw9bi54
LGY9bi55O2lmKG51bGwhPWwpaWYoeG8obC1lKSt4byhmLXIpPC4wMSljKG4s
dCxlLHIsaSx1LG8sYSk7ZWxzZXt2YXIgcz1uLnBvaW50O24ueD1uLnk9bi5w
b2ludD1udWxsLGMobixzLGwsZixpLHUsbyxhKSxjKG4sdCxlLHIsaSx1LG8s
YSl9ZWxzZSBuLng9ZSxuLnk9cixuLnBvaW50PXR9ZWxzZSBjKG4sdCxlLHIs
aSx1LG8sYSl9ZnVuY3Rpb24gYyhuLHQsZSxyLGksbyxhLGwpe3ZhciBjPS41
KihpK2EpLGY9LjUqKG8rbCkscz1lPj1jLGg9cj49ZixwPWg8PDF8cztuLmxl
YWY9ITEsbj1uLm5vZGVzW3BdfHwobi5ub2Rlc1twXT1ocigpKSxzP2k9Yzph
PWMsaD9vPWY6bD1mLHUobix0LGUscixpLG8sYSxsKX12YXIgZixzLGgscCxn
LHYsZCx5LG0sTT1FbihhKSx4PUVuKGwpO2lmKG51bGwhPXQpdj10LGQ9ZSx5
PXIsbT1pO2Vsc2UgaWYoeT1tPS0odj1kPTEvMCkscz1bXSxoPVtdLGc9bi5s
ZW5ndGgsbylmb3IocD0wO2c+cDsrK3ApZj1uW3BdLGYueDx2JiYodj1mLngp
LGYueTxkJiYoZD1mLnkpLGYueD55JiYoeT1mLngpLGYueT5tJiYobT1mLnkp
LHMucHVzaChmLngpLGgucHVzaChmLnkpO2Vsc2UgZm9yKHA9MDtnPnA7Kytw
KXt2YXIgYj0rTShmPW5bcF0scCksXz0reChmLHApO3Y+YiYmKHY9YiksZD5f
JiYoZD1fKSxiPnkmJih5PWIpLF8+bSYmKG09Xykscy5wdXNoKGIpLGgucHVz
aChfKX12YXIgdz15LXYsUz1tLWQ7dz5TP209ZCt3Onk9ditTO3ZhciBrPWhy
KCk7aWYoay5hZGQ9ZnVuY3Rpb24obil7dShrLG4sK00obiwrK3ApLCt4KG4s
cCksdixkLHksbSl9LGsudmlzaXQ9ZnVuY3Rpb24obil7cHIobixrLHYsZCx5
LG0pfSxrLmZpbmQ9ZnVuY3Rpb24obil7cmV0dXJuIGdyKGssblswXSxuWzFd
LHYsZCx5LG0pfSxwPS0xLG51bGw9PXQpe2Zvcig7KytwPGc7KXUoayxuW3Bd
LHNbcF0saFtwXSx2LGQseSxtKTstLXB9ZWxzZSBuLmZvckVhY2goay5hZGQp
O3JldHVybiBzPWg9bj1mPW51bGwsa312YXIgbyxhPUNlLGw9emU7cmV0dXJu
KG89YXJndW1lbnRzLmxlbmd0aCk/KGE9ZnIsbD1zciwzPT09byYmKGk9ZSxy
PXQsZT10PTApLHUobikpOih1Lng9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KGE9bix1KTphfSx1Lnk9ZnVuY3Rpb24obil7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KGw9bix1KTpsfSx1LmV4dGVudD1mdW5jdGlv
bihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obnVsbD09bj90PWU9cj1p
PW51bGw6KHQ9K25bMF1bMF0sZT0rblswXVsxXSxyPStuWzFdWzBdLGk9K25b
MV1bMV0pLHUpOm51bGw9PXQ/bnVsbDpbW3QsZV0sW3IsaV1dfSx1LnNpemU9
ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG51bGw9PW4/
dD1lPXI9aT1udWxsOih0PWU9MCxyPStuWzBdLGk9K25bMV0pLHUpOm51bGw9
PXQ/bnVsbDpbci10LGktZV19LHUpfSxhby5pbnRlcnBvbGF0ZVJnYj12cixh
by5pbnRlcnBvbGF0ZU9iamVjdD1kcixhby5pbnRlcnBvbGF0ZU51bWJlcj15
cixhby5pbnRlcnBvbGF0ZVN0cmluZz1tcjt2YXIgaGw9L1stK10/KD86XGQr
XC4/XGQqfFwuP1xkKykoPzpbZUVdWy0rXT9cZCspPy9nLHBsPW5ldyBSZWdF
eHAoaGwuc291cmNlLCJnIik7YW8uaW50ZXJwb2xhdGU9TXIsYW8uaW50ZXJw
b2xhdG9ycz1bZnVuY3Rpb24obix0KXt2YXIgZT10eXBlb2YgdDtyZXR1cm4o
InN0cmluZyI9PT1lP3VhLmhhcyh0LnRvTG93ZXJDYXNlKCkpfHwvXigjfHJn
YlwofGhzbFwoKS9pLnRlc3QodCk/dnI6bXI6dCBpbnN0YW5jZW9mIGFuP3Zy
OkFycmF5LmlzQXJyYXkodCk/eHI6Im9iamVjdCI9PT1lJiZpc05hTih0KT9k
cjp5cikobix0KX1dLGFvLmludGVycG9sYXRlQXJyYXk9eHI7dmFyIGdsPWZ1
bmN0aW9uKCl7cmV0dXJuIG19LHZsPWFvLm1hcCh7bGluZWFyOmdsLHBvbHk6
RXIscXVhZDpmdW5jdGlvbigpe3JldHVybiBTcn0sY3ViaWM6ZnVuY3Rpb24o
KXtyZXR1cm4ga3J9LHNpbjpmdW5jdGlvbigpe3JldHVybiBBcn0sZXhwOmZ1
bmN0aW9uKCl7cmV0dXJuIENyfSxjaXJjbGU6ZnVuY3Rpb24oKXtyZXR1cm4g
enJ9LGVsYXN0aWM6THIsYmFjazpxcixib3VuY2U6ZnVuY3Rpb24oKXtyZXR1
cm4gVHJ9fSksZGw9YW8ubWFwKHsiaW4iOm0sb3V0Ol9yLCJpbi1vdXQiOndy
LCJvdXQtaW4iOmZ1bmN0aW9uKG4pe3JldHVybiB3cihfcihuKSl9fSk7YW8u
ZWFzZT1mdW5jdGlvbihuKXt2YXIgdD1uLmluZGV4T2YoIi0iKSxlPXQ+PTA/
bi5zbGljZSgwLHQpOm4scj10Pj0wP24uc2xpY2UodCsxKToiaW4iO3JldHVy
biBlPXZsLmdldChlKXx8Z2wscj1kbC5nZXQocil8fG0sYnIocihlLmFwcGx5
KG51bGwsbG8uY2FsbChhcmd1bWVudHMsMSkpKSl9LGFvLmludGVycG9sYXRl
SGNsPVJyLGFvLmludGVycG9sYXRlSHNsPURyLGFvLmludGVycG9sYXRlTGFi
PVByLGFvLmludGVycG9sYXRlUm91bmQ9VXIsYW8udHJhbnNmb3JtPWZ1bmN0
aW9uKG4pe3ZhciB0PWZvLmNyZWF0ZUVsZW1lbnROUyhhby5ucy5wcmVmaXgu
c3ZnLCJnIik7cmV0dXJuKGFvLnRyYW5zZm9ybT1mdW5jdGlvbihuKXtpZihu
dWxsIT1uKXt0LnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIixuKTt2YXIgZT10
LnRyYW5zZm9ybS5iYXNlVmFsLmNvbnNvbGlkYXRlKCl9cmV0dXJuIG5ldyBq
cihlP2UubWF0cml4OnlsKX0pKG4pfSxqci5wcm90b3R5cGUudG9TdHJpbmc9
ZnVuY3Rpb24oKXtyZXR1cm4idHJhbnNsYXRlKCIrdGhpcy50cmFuc2xhdGUr
Iilyb3RhdGUoIit0aGlzLnJvdGF0ZSsiKXNrZXdYKCIrdGhpcy5za2V3KyIp
c2NhbGUoIit0aGlzLnNjYWxlKyIpIn07dmFyIHlsPXthOjEsYjowLGM6MCxk
OjEsZTowLGY6MH07YW8uaW50ZXJwb2xhdGVUcmFuc2Zvcm09JHIsYW8ubGF5
b3V0PXt9LGFvLmxheW91dC5idW5kbGU9ZnVuY3Rpb24oKXtyZXR1cm4gZnVu
Y3Rpb24obil7Zm9yKHZhciB0PVtdLGU9LTEscj1uLmxlbmd0aDsrK2U8cjsp
dC5wdXNoKEpyKG5bZV0pKTtyZXR1cm4gdH19LGFvLmxheW91dC5jaG9yZD1m
dW5jdGlvbigpe2Z1bmN0aW9uIG4oKXt2YXIgbixjLHMsaCxwLGc9e30sdj1b
XSxkPWFvLnJhbmdlKHUpLHk9W107Zm9yKGU9W10scj1bXSxuPTAsaD0tMTsr
K2g8dTspe2ZvcihjPTAscD0tMTsrK3A8dTspYys9aVtoXVtwXTt2LnB1c2go
YykseS5wdXNoKGFvLnJhbmdlKHUpKSxuKz1jfWZvcihvJiZkLnNvcnQoZnVu
Y3Rpb24obix0KXtyZXR1cm4gbyh2W25dLHZbdF0pfSksYSYmeS5mb3JFYWNo
KGZ1bmN0aW9uKG4sdCl7bi5zb3J0KGZ1bmN0aW9uKG4sZSl7cmV0dXJuIGEo
aVt0XVtuXSxpW3RdW2VdKX0pfSksbj0oSG8tZip1KS9uLGM9MCxoPS0xOysr
aDx1Oyl7Zm9yKHM9YyxwPS0xOysrcDx1Oyl7dmFyIG09ZFtoXSxNPXlbbV1b
cF0seD1pW21dW01dLGI9YyxfPWMrPXgqbjtnW20rIi0iK01dPXtpbmRleDpt
LHN1YmluZGV4Ok0sc3RhcnRBbmdsZTpiLGVuZEFuZ2xlOl8sdmFsdWU6eH19
clttXT17aW5kZXg6bSxzdGFydEFuZ2xlOnMsZW5kQW5nbGU6Yyx2YWx1ZTp2
W21dfSxjKz1mfWZvcihoPS0xOysraDx1Oylmb3IocD1oLTE7KytwPHU7KXt2
YXIgdz1nW2grIi0iK3BdLFM9Z1twKyItIitoXTsody52YWx1ZXx8Uy52YWx1
ZSkmJmUucHVzaCh3LnZhbHVlPFMudmFsdWU/e3NvdXJjZTpTLHRhcmdldDp3
fTp7c291cmNlOncsdGFyZ2V0OlN9KX1sJiZ0KCl9ZnVuY3Rpb24gdCgpe2Uu
c29ydChmdW5jdGlvbihuLHQpe3JldHVybiBsKChuLnNvdXJjZS52YWx1ZStu
LnRhcmdldC52YWx1ZSkvMiwodC5zb3VyY2UudmFsdWUrdC50YXJnZXQudmFs
dWUpLzIpfSl9dmFyIGUscixpLHUsbyxhLGwsYz17fSxmPTA7cmV0dXJuIGMu
bWF0cml4PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1
PShpPW4pJiZpLmxlbmd0aCxlPXI9bnVsbCxjKTppfSxjLnBhZGRpbmc9ZnVu
Y3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9bixlPXI9bnVs
bCxjKTpmfSxjLnNvcnRHcm91cHM9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KG89bixlPXI9bnVsbCxjKTpvfSxjLnNvcnRTdWJncm91
cHM9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9bixl
PW51bGwsYyk6YX0sYy5zb3J0Q2hvcmRzPWZ1bmN0aW9uKG4pe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhsPW4sZSYmdCgpLGMpOmx9LGMuY2hvcmRzPWZ1
bmN0aW9uKCl7cmV0dXJuIGV8fG4oKSxlfSxjLmdyb3Vwcz1mdW5jdGlvbigp
e3JldHVybiByfHxuKCkscn0sY30sYW8ubGF5b3V0LmZvcmNlPWZ1bmN0aW9u
KCl7ZnVuY3Rpb24gbihuKXtyZXR1cm4gZnVuY3Rpb24odCxlLHIsaSl7aWYo
dC5wb2ludCE9PW4pe3ZhciB1PXQuY3gtbi54LG89dC5jeS1uLnksYT1pLWUs
bD11KnUrbypvO2lmKGw+YSphL3kpe2lmKHY+bCl7dmFyIGM9dC5jaGFyZ2Uv
bDtuLnB4LT11KmMsbi5weS09bypjfXJldHVybiEwfWlmKHQucG9pbnQmJmwm
JnY+bCl7dmFyIGM9dC5wb2ludENoYXJnZS9sO24ucHgtPXUqYyxuLnB5LT1v
KmN9fXJldHVybiF0LmNoYXJnZX19ZnVuY3Rpb24gdChuKXtuLnB4PWFvLmV2
ZW50Lngsbi5weT1hby5ldmVudC55LGwucmVzdW1lKCl9dmFyIGUscixpLHUs
byxhLGw9e30sYz1hby5kaXNwYXRjaCgic3RhcnQiLCJ0aWNrIiwiZW5kIiks
Zj1bMSwxXSxzPS45LGg9bWwscD1NbCxnPS0zMCx2PXhsLGQ9LjEseT0uNjQs
TT1bXSx4PVtdO3JldHVybiBsLnRpY2s9ZnVuY3Rpb24oKXtpZigoaSo9Ljk5
KTwuMDA1KXJldHVybiBlPW51bGwsYy5lbmQoe3R5cGU6ImVuZCIsYWxwaGE6
aT0wfSksITA7dmFyIHQscixsLGgscCx2LHksbSxiLF89TS5sZW5ndGgsdz14
Lmxlbmd0aDtmb3Iocj0wO3c+cjsrK3IpbD14W3JdLGg9bC5zb3VyY2UscD1s
LnRhcmdldCxtPXAueC1oLngsYj1wLnktaC55LCh2PW0qbStiKmIpJiYodj1p
Km9bcl0qKCh2PU1hdGguc3FydCh2KSktdVtyXSkvdixtKj12LGIqPXYscC54
LT1tKih5PWgud2VpZ2h0K3Aud2VpZ2h0P2gud2VpZ2h0LyhoLndlaWdodCtw
LndlaWdodCk6LjUpLHAueS09Yip5LGgueCs9bSooeT0xLXkpLGgueSs9Yip5
KTtpZigoeT1pKmQpJiYobT1mWzBdLzIsYj1mWzFdLzIscj0tMSx5KSlmb3Io
OysrcjxfOylsPU1bcl0sbC54Kz0obS1sLngpKnksbC55Kz0oYi1sLnkpKnk7
aWYoZylmb3IocmkodD1hby5nZW9tLnF1YWR0cmVlKE0pLGksYSkscj0tMTsr
K3I8XzspKGw9TVtyXSkuZml4ZWR8fHQudmlzaXQobihsKSk7Zm9yKHI9LTE7
KytyPF87KWw9TVtyXSxsLmZpeGVkPyhsLng9bC5weCxsLnk9bC5weSk6KGwu
eC09KGwucHgtKGwucHg9bC54KSkqcyxsLnktPShsLnB5LShsLnB5PWwueSkp
KnMpO2MudGljayh7dHlwZToidGljayIsYWxwaGE6aX0pfSxsLm5vZGVzPWZ1
bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhNPW4sbCk6TX0s
bC5saW5rcz1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
eD1uLGwpOnh9LGwuc2l6ZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8oZj1uLGwpOmZ9LGwubGlua0Rpc3RhbmNlPWZ1bmN0aW9uKG4p
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPSJmdW5jdGlvbiI9PXR5cGVv
ZiBuP246K24sbCk6aH0sbC5kaXN0YW5jZT1sLmxpbmtEaXN0YW5jZSxsLmxp
bmtTdHJlbmd0aD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8ocD0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOituLGwpOnB9LGwuZnJpY3Rp
b249ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9K24s
bCk6c30sbC5jaGFyZ2U9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KGc9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjorbixsKTpnfSxsLmNo
YXJnZURpc3RhbmNlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyh2PW4qbixsKTpNYXRoLnNxcnQodil9LGwuZ3Jhdml0eT1mdW5jdGlv
bihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD0rbixsKTpkfSxsLnRo
ZXRhPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh5PW4q
bixsKTpNYXRoLnNxcnQoeSl9LGwuYWxwaGE9ZnVuY3Rpb24obil7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KG49K24saT9uPjA/aT1uOihlLmM9bnVsbCxl
LnQ9TmFOLGU9bnVsbCxjLmVuZCh7dHlwZToiZW5kIixhbHBoYTppPTB9KSk6
bj4wJiYoYy5zdGFydCh7dHlwZToic3RhcnQiLGFscGhhOmk9bn0pLGU9cW4o
bC50aWNrKSksbCk6aX0sbC5zdGFydD1mdW5jdGlvbigpe2Z1bmN0aW9uIG4o
bixyKXtpZighZSl7Zm9yKGU9bmV3IEFycmF5KGkpLGw9MDtpPmw7KytsKWVb
bF09W107Zm9yKGw9MDtjPmw7KytsKXt2YXIgdT14W2xdO2VbdS5zb3VyY2Uu
aW5kZXhdLnB1c2godS50YXJnZXQpLGVbdS50YXJnZXQuaW5kZXhdLnB1c2go
dS5zb3VyY2UpfX1mb3IodmFyIG8sYT1lW3RdLGw9LTEsZj1hLmxlbmd0aDsr
K2w8ZjspaWYoIWlzTmFOKG89YVtsXVtuXSkpcmV0dXJuIG87cmV0dXJuIE1h
dGgucmFuZG9tKCkqcn12YXIgdCxlLHIsaT1NLmxlbmd0aCxjPXgubGVuZ3Ro
LHM9ZlswXSx2PWZbMV07Zm9yKHQ9MDtpPnQ7Kyt0KShyPU1bdF0pLmluZGV4
PXQsci53ZWlnaHQ9MDtmb3IodD0wO2M+dDsrK3Qpcj14W3RdLCJudW1iZXIi
PT10eXBlb2Ygci5zb3VyY2UmJihyLnNvdXJjZT1NW3Iuc291cmNlXSksIm51
bWJlciI9PXR5cGVvZiByLnRhcmdldCYmKHIudGFyZ2V0PU1bci50YXJnZXRd
KSwrK3Iuc291cmNlLndlaWdodCwrK3IudGFyZ2V0LndlaWdodDtmb3IodD0w
O2k+dDsrK3Qpcj1NW3RdLGlzTmFOKHIueCkmJihyLng9bigieCIscykpLGlz
TmFOKHIueSkmJihyLnk9bigieSIsdikpLGlzTmFOKHIucHgpJiYoci5weD1y
LngpLGlzTmFOKHIucHkpJiYoci5weT1yLnkpO2lmKHU9W10sImZ1bmN0aW9u
Ij09dHlwZW9mIGgpZm9yKHQ9MDtjPnQ7Kyt0KXVbdF09K2guY2FsbCh0aGlz
LHhbdF0sdCk7ZWxzZSBmb3IodD0wO2M+dDsrK3QpdVt0XT1oO2lmKG89W10s
ImZ1bmN0aW9uIj09dHlwZW9mIHApZm9yKHQ9MDtjPnQ7Kyt0KW9bdF09K3Au
Y2FsbCh0aGlzLHhbdF0sdCk7ZWxzZSBmb3IodD0wO2M+dDsrK3Qpb1t0XT1w
O2lmKGE9W10sImZ1bmN0aW9uIj09dHlwZW9mIGcpZm9yKHQ9MDtpPnQ7Kyt0
KWFbdF09K2cuY2FsbCh0aGlzLE1bdF0sdCk7ZWxzZSBmb3IodD0wO2k+dDsr
K3QpYVt0XT1nO3JldHVybiBsLnJlc3VtZSgpfSxsLnJlc3VtZT1mdW5jdGlv
bigpe3JldHVybiBsLmFscGhhKC4xKX0sbC5zdG9wPWZ1bmN0aW9uKCl7cmV0
dXJuIGwuYWxwaGEoMCl9LGwuZHJhZz1mdW5jdGlvbigpe3JldHVybiByfHwo
cj1hby5iZWhhdmlvci5kcmFnKCkub3JpZ2luKG0pLm9uKCJkcmFnc3RhcnQu
Zm9yY2UiLFFyKS5vbigiZHJhZy5mb3JjZSIsdCkub24oImRyYWdlbmQuZm9y
Y2UiLG5pKSksYXJndW1lbnRzLmxlbmd0aD92b2lkIHRoaXMub24oIm1vdXNl
b3Zlci5mb3JjZSIsdGkpLm9uKCJtb3VzZW91dC5mb3JjZSIsZWkpLmNhbGwo
cik6cn0sYW8ucmViaW5kKGwsYywib24iKX07dmFyIG1sPTIwLE1sPTEseGw9
MS8wO2FvLmxheW91dC5oaWVyYXJjaHk9ZnVuY3Rpb24oKXtmdW5jdGlvbiBu
KGkpe3ZhciB1LG89W2ldLGE9W107Zm9yKGkuZGVwdGg9MDtudWxsIT0odT1v
LnBvcCgpKTspaWYoYS5wdXNoKHUpLChjPWUuY2FsbChuLHUsdS5kZXB0aCkp
JiYobD1jLmxlbmd0aCkpe2Zvcih2YXIgbCxjLGY7LS1sPj0wOylvLnB1c2go
Zj1jW2xdKSxmLnBhcmVudD11LGYuZGVwdGg9dS5kZXB0aCsxO3ImJih1LnZh
bHVlPTApLHUuY2hpbGRyZW49Y31lbHNlIHImJih1LnZhbHVlPStyLmNhbGwo
bix1LHUuZGVwdGgpfHwwKSxkZWxldGUgdS5jaGlsZHJlbjtyZXR1cm4gb2ko
aSxmdW5jdGlvbihuKXt2YXIgZSxpO3QmJihlPW4uY2hpbGRyZW4pJiZlLnNv
cnQodCksciYmKGk9bi5wYXJlbnQpJiYoaS52YWx1ZSs9bi52YWx1ZSl9KSxh
fXZhciB0PWNpLGU9YWkscj1saTtyZXR1cm4gbi5zb3J0PWZ1bmN0aW9uKGUp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWUsbik6dH0sbi5jaGlsZHJl
bj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LG4p
OmV9LG4udmFsdWU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KHI9dCxuKTpyfSxuLnJldmFsdWU9ZnVuY3Rpb24odCl7cmV0dXJuIHIm
Jih1aSh0LGZ1bmN0aW9uKG4pe24uY2hpbGRyZW4mJihuLnZhbHVlPTApfSks
b2kodCxmdW5jdGlvbih0KXt2YXIgZTt0LmNoaWxkcmVufHwodC52YWx1ZT0r
ci5jYWxsKG4sdCx0LmRlcHRoKXx8MCksKGU9dC5wYXJlbnQpJiYoZS52YWx1
ZSs9dC52YWx1ZSl9KSksdH0sbn0sYW8ubGF5b3V0LnBhcnRpdGlvbj1mdW5j
dGlvbigpe2Z1bmN0aW9uIG4odCxlLHIsaSl7dmFyIHU9dC5jaGlsZHJlbjtp
Zih0Lng9ZSx0Lnk9dC5kZXB0aCppLHQuZHg9cix0LmR5PWksdSYmKG89dS5s
ZW5ndGgpKXt2YXIgbyxhLGwsYz0tMTtmb3Iocj10LnZhbHVlP3IvdC52YWx1
ZTowOysrYzxvOyluKGE9dVtjXSxlLGw9YS52YWx1ZSpyLGkpLGUrPWx9fWZ1
bmN0aW9uIHQobil7dmFyIGU9bi5jaGlsZHJlbixyPTA7aWYoZSYmKGk9ZS5s
ZW5ndGgpKWZvcih2YXIgaSx1PS0xOysrdTxpOylyPU1hdGgubWF4KHIsdChl
W3VdKSk7cmV0dXJuIDErcn1mdW5jdGlvbiBlKGUsdSl7dmFyIG89ci5jYWxs
KHRoaXMsZSx1KTtyZXR1cm4gbihvWzBdLDAsaVswXSxpWzFdL3Qob1swXSkp
LG99dmFyIHI9YW8ubGF5b3V0LmhpZXJhcmNoeSgpLGk9WzEsMV07cmV0dXJu
IGUuc2l6ZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
aT1uLGUpOml9LGlpKGUscil9LGFvLmxheW91dC5waWU9ZnVuY3Rpb24oKXtm
dW5jdGlvbiBuKG8pe3ZhciBhLGw9by5sZW5ndGgsYz1vLm1hcChmdW5jdGlv
bihlLHIpe3JldHVybit0LmNhbGwobixlLHIpfSksZj0rKCJmdW5jdGlvbiI9
PXR5cGVvZiByP3IuYXBwbHkodGhpcyxhcmd1bWVudHMpOnIpLHM9KCJmdW5j
dGlvbiI9PXR5cGVvZiBpP2kuYXBwbHkodGhpcyxhcmd1bWVudHMpOmkpLWYs
aD1NYXRoLm1pbihNYXRoLmFicyhzKS9sLCsoImZ1bmN0aW9uIj09dHlwZW9m
IHU/dS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dSkpLHA9aCooMD5zPy0xOjEp
LGc9YW8uc3VtKGMpLHY9Zz8ocy1sKnApL2c6MCxkPWFvLnJhbmdlKGwpLHk9
W107cmV0dXJuIG51bGwhPWUmJmQuc29ydChlPT09Ymw/ZnVuY3Rpb24obix0
KXtyZXR1cm4gY1t0XS1jW25dfTpmdW5jdGlvbihuLHQpe3JldHVybiBlKG9b
bl0sb1t0XSl9KSxkLmZvckVhY2goZnVuY3Rpb24obil7eVtuXT17ZGF0YTpv
W25dLHZhbHVlOmE9Y1tuXSxzdGFydEFuZ2xlOmYsZW5kQW5nbGU6Zis9YSp2
K3AscGFkQW5nbGU6aH19KSx5fXZhciB0PU51bWJlcixlPWJsLHI9MCxpPUhv
LHU9MDtyZXR1cm4gbi52YWx1ZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8odD1lLG4pOnR9LG4uc29ydD1mdW5jdGlvbih0KXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LG4pOmV9LG4uc3RhcnRBbmdsZT1m
dW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10LG4pOnJ9
LG4uZW5kQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KGk9dCxuKTppfSxuLnBhZEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyh1PXQsbik6dX0sbn07dmFyIGJsPXt9O2FvLmxh
eW91dC5zdGFjaz1mdW5jdGlvbigpe2Z1bmN0aW9uIG4oYSxsKXtpZighKGg9
YS5sZW5ndGgpKXJldHVybiBhO3ZhciBjPWEubWFwKGZ1bmN0aW9uKGUscil7
cmV0dXJuIHQuY2FsbChuLGUscil9KSxmPWMubWFwKGZ1bmN0aW9uKHQpe3Jl
dHVybiB0Lm1hcChmdW5jdGlvbih0LGUpe3JldHVyblt1LmNhbGwobix0LGUp
LG8uY2FsbChuLHQsZSldfSl9KSxzPWUuY2FsbChuLGYsbCk7Yz1hby5wZXJt
dXRlKGMscyksZj1hby5wZXJtdXRlKGYscyk7dmFyIGgscCxnLHYsZD1yLmNh
bGwobixmLGwpLHk9Y1swXS5sZW5ndGg7Zm9yKGc9MDt5Pmc7KytnKWZvcihp
LmNhbGwobixjWzBdW2ddLHY9ZFtnXSxmWzBdW2ddWzFdKSxwPTE7aD5wOysr
cClpLmNhbGwobixjW3BdW2ddLHYrPWZbcC0xXVtnXVsxXSxmW3BdW2ddWzFd
KTtyZXR1cm4gYX12YXIgdD1tLGU9Z2kscj12aSxpPXBpLHU9c2ksbz1oaTty
ZXR1cm4gbi52YWx1ZXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KHQ9ZSxuKTp0fSxuLm9yZGVyPWZ1bmN0aW9uKHQpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6X2wu
Z2V0KHQpfHxnaSxuKTplfSxuLm9mZnNldD1mdW5jdGlvbih0KXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8ocj0iZnVuY3Rpb24iPT10eXBlb2YgdD90Onds
LmdldCh0KXx8dmksbik6cn0sbi54PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyh1PXQsbik6dX0sbi55PWZ1bmN0aW9uKHQpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhvPXQsbik6b30sbi5vdXQ9ZnVuY3Rpb24o
dCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9dCxuKTppfSxufTt2YXIg
X2w9YW8ubWFwKHsiaW5zaWRlLW91dCI6ZnVuY3Rpb24obil7dmFyIHQsZSxy
PW4ubGVuZ3RoLGk9bi5tYXAoZGkpLHU9bi5tYXAoeWkpLG89YW8ucmFuZ2Uo
cikuc29ydChmdW5jdGlvbihuLHQpe3JldHVybiBpW25dLWlbdF19KSxhPTAs
bD0wLGM9W10sZj1bXTtmb3IodD0wO3I+dDsrK3QpZT1vW3RdLGw+YT8oYSs9
dVtlXSxjLnB1c2goZSkpOihsKz11W2VdLGYucHVzaChlKSk7cmV0dXJuIGYu
cmV2ZXJzZSgpLmNvbmNhdChjKX0scmV2ZXJzZTpmdW5jdGlvbihuKXtyZXR1
cm4gYW8ucmFuZ2Uobi5sZW5ndGgpLnJldmVyc2UoKX0sImRlZmF1bHQiOmdp
fSksd2w9YW8ubWFwKHtzaWxob3VldHRlOmZ1bmN0aW9uKG4pe3ZhciB0LGUs
cixpPW4ubGVuZ3RoLHU9blswXS5sZW5ndGgsbz1bXSxhPTAsbD1bXTtmb3Io
ZT0wO3U+ZTsrK2Upe2Zvcih0PTAscj0wO2k+dDt0Kyspcis9blt0XVtlXVsx
XTtyPmEmJihhPXIpLG8ucHVzaChyKX1mb3IoZT0wO3U+ZTsrK2UpbFtlXT0o
YS1vW2VdKS8yO3JldHVybiBsfSx3aWdnbGU6ZnVuY3Rpb24obil7dmFyIHQs
ZSxyLGksdSxvLGEsbCxjLGY9bi5sZW5ndGgscz1uWzBdLGg9cy5sZW5ndGgs
cD1bXTtmb3IocFswXT1sPWM9MCxlPTE7aD5lOysrZSl7Zm9yKHQ9MCxpPTA7
Zj50OysrdClpKz1uW3RdW2VdWzFdO2Zvcih0PTAsdT0wLGE9c1tlXVswXS1z
W2UtMV1bMF07Zj50OysrdCl7Zm9yKHI9MCxvPShuW3RdW2VdWzFdLW5bdF1b
ZS0xXVsxXSkvKDIqYSk7dD5yOysrcilvKz0obltyXVtlXVsxXS1uW3JdW2Ut
MV1bMV0pL2E7dSs9bypuW3RdW2VdWzFdfXBbZV09bC09aT91L2kqYTowLGM+
bCYmKGM9bCl9Zm9yKGU9MDtoPmU7KytlKXBbZV0tPWM7cmV0dXJuIHB9LGV4
cGFuZDpmdW5jdGlvbihuKXt2YXIgdCxlLHIsaT1uLmxlbmd0aCx1PW5bMF0u
bGVuZ3RoLG89MS9pLGE9W107Zm9yKGU9MDt1PmU7KytlKXtmb3IodD0wLHI9
MDtpPnQ7dCsrKXIrPW5bdF1bZV1bMV07aWYocilmb3IodD0wO2k+dDt0Kysp
blt0XVtlXVsxXS89cjtlbHNlIGZvcih0PTA7aT50O3QrKyluW3RdW2VdWzFd
PW99Zm9yKGU9MDt1PmU7KytlKWFbZV09MDtyZXR1cm4gYX0semVybzp2aX0p
O2FvLmxheW91dC5oaXN0b2dyYW09ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKG4s
dSl7Zm9yKHZhciBvLGEsbD1bXSxjPW4ubWFwKGUsdGhpcyksZj1yLmNhbGwo
dGhpcyxjLHUpLHM9aS5jYWxsKHRoaXMsZixjLHUpLHU9LTEsaD1jLmxlbmd0
aCxwPXMubGVuZ3RoLTEsZz10PzE6MS9oOysrdTxwOylvPWxbdV09W10sby5k
eD1zW3UrMV0tKG8ueD1zW3VdKSxvLnk9MDtpZihwPjApZm9yKHU9LTE7Kyt1
PGg7KWE9Y1t1XSxhPj1mWzBdJiZhPD1mWzFdJiYobz1sW2FvLmJpc2VjdChz
LGEsMSxwKS0xXSxvLnkrPWcsby5wdXNoKG5bdV0pKTtyZXR1cm4gbH12YXIg
dD0hMCxlPU51bWJlcixyPWJpLGk9TWk7cmV0dXJuIG4udmFsdWU9ZnVuY3Rp
b24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxuKTplfSxuLnJh
bmdlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPUVu
KHQpLG4pOnJ9LG4uYmlucz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8oaT0ibnVtYmVyIj09dHlwZW9mIHQ/ZnVuY3Rpb24obil7cmV0
dXJuIHhpKG4sdCl9OkVuKHQpLG4pOml9LG4uZnJlcXVlbmN5PWZ1bmN0aW9u
KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSEhZSxuKTp0fSxufSxh
by5sYXlvdXQucGFjaz1mdW5jdGlvbigpe2Z1bmN0aW9uIG4obix1KXt2YXIg
bz1lLmNhbGwodGhpcyxuLHUpLGE9b1swXSxsPWlbMF0sYz1pWzFdLGY9bnVs
bD09dD9NYXRoLnNxcnQ6ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpmdW5jdGlv
bigpe3JldHVybiB0fTtpZihhLng9YS55PTAsb2koYSxmdW5jdGlvbihuKXtu
LnI9K2Yobi52YWx1ZSl9KSxvaShhLE5pKSxyKXt2YXIgcz1yKih0PzE6TWF0
aC5tYXgoMiphLnIvbCwyKmEuci9jKSkvMjtvaShhLGZ1bmN0aW9uKG4pe24u
cis9c30pLG9pKGEsTmkpLG9pKGEsZnVuY3Rpb24obil7bi5yLT1zfSl9cmV0
dXJuIENpKGEsbC8yLGMvMix0PzE6MS9NYXRoLm1heCgyKmEuci9sLDIqYS5y
L2MpKSxvfXZhciB0LGU9YW8ubGF5b3V0LmhpZXJhcmNoeSgpLnNvcnQoX2kp
LHI9MCxpPVsxLDFdO3JldHVybiBuLnNpemU9ZnVuY3Rpb24odCl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KGk9dCxuKTppfSxuLnJhZGl1cz1mdW5jdGlv
bihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1udWxsPT1lfHwiZnVu
Y3Rpb24iPT10eXBlb2YgZT9lOitlLG4pOnR9LG4ucGFkZGluZz1mdW5jdGlv
bih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0rdCxuKTpyfSxpaShu
LGUpfSxhby5sYXlvdXQudHJlZT1mdW5jdGlvbigpe2Z1bmN0aW9uIG4obixp
KXt2YXIgZj1vLmNhbGwodGhpcyxuLGkpLHM9ZlswXSxoPXQocyk7aWYob2ko
aCxlKSxoLnBhcmVudC5tPS1oLnosdWkoaCxyKSxjKXVpKHMsdSk7ZWxzZXt2
YXIgcD1zLGc9cyx2PXM7dWkocyxmdW5jdGlvbihuKXtuLng8cC54JiYocD1u
KSxuLng+Zy54JiYoZz1uKSxuLmRlcHRoPnYuZGVwdGgmJih2PW4pfSk7dmFy
IGQ9YShwLGcpLzItcC54LHk9bFswXS8oZy54K2EoZyxwKS8yK2QpLG09bFsx
XS8odi5kZXB0aHx8MSk7dWkocyxmdW5jdGlvbihuKXtuLng9KG4ueCtkKSp5
LG4ueT1uLmRlcHRoKm19KX1yZXR1cm4gZn1mdW5jdGlvbiB0KG4pe2Zvcih2
YXIgdCxlPXtBOm51bGwsY2hpbGRyZW46W25dfSxyPVtlXTtudWxsIT0odD1y
LnBvcCgpKTspZm9yKHZhciBpLHU9dC5jaGlsZHJlbixvPTAsYT11Lmxlbmd0
aDthPm87KytvKXIucHVzaCgodVtvXT1pPXtfOnVbb10scGFyZW50OnQsY2hp
bGRyZW46KGk9dVtvXS5jaGlsZHJlbikmJmkuc2xpY2UoKXx8W10sQTpudWxs
LGE6bnVsbCx6OjAsbTowLGM6MCxzOjAsdDpudWxsLGk6b30pLmE9aSk7cmV0
dXJuIGUuY2hpbGRyZW5bMF19ZnVuY3Rpb24gZShuKXt2YXIgdD1uLmNoaWxk
cmVuLGU9bi5wYXJlbnQuY2hpbGRyZW4scj1uLmk/ZVtuLmktMV06bnVsbDtp
Zih0Lmxlbmd0aCl7RGkobik7dmFyIHU9KHRbMF0ueit0W3QubGVuZ3RoLTFd
LnopLzI7cj8obi56PXIueithKG4uXyxyLl8pLG4ubT1uLnotdSk6bi56PXV9
ZWxzZSByJiYobi56PXIueithKG4uXyxyLl8pKTtuLnBhcmVudC5BPWkobixy
LG4ucGFyZW50LkF8fGVbMF0pfWZ1bmN0aW9uIHIobil7bi5fLng9bi56K24u
cGFyZW50Lm0sbi5tKz1uLnBhcmVudC5tfWZ1bmN0aW9uIGkobix0LGUpe2lm
KHQpe2Zvcih2YXIgcixpPW4sdT1uLG89dCxsPWkucGFyZW50LmNoaWxkcmVu
WzBdLGM9aS5tLGY9dS5tLHM9by5tLGg9bC5tO289VGkobyksaT1xaShpKSxv
JiZpOylsPXFpKGwpLHU9VGkodSksdS5hPW4scj1vLnorcy1pLnotYythKG8u
XyxpLl8pLHI+MCYmKFJpKFBpKG8sbixlKSxuLHIpLGMrPXIsZis9cikscys9
by5tLGMrPWkubSxoKz1sLm0sZis9dS5tO28mJiFUaSh1KSYmKHUudD1vLHUu
bSs9cy1mKSxpJiYhcWkobCkmJihsLnQ9aSxsLm0rPWMtaCxlPW4pfXJldHVy
biBlfWZ1bmN0aW9uIHUobil7bi54Kj1sWzBdLG4ueT1uLmRlcHRoKmxbMV19
dmFyIG89YW8ubGF5b3V0LmhpZXJhcmNoeSgpLnNvcnQobnVsbCkudmFsdWUo
bnVsbCksYT1MaSxsPVsxLDFdLGM9bnVsbDtyZXR1cm4gbi5zZXBhcmF0aW9u
PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPXQsbik6
YX0sbi5zaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhjPW51bGw9PShsPXQpP3U6bnVsbCxuKTpjP251bGw6bH0sbi5ub2RlU2l6
ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz1udWxs
PT0obD10KT9udWxsOnUsbik6Yz9sOm51bGx9LGlpKG4sbyl9LGFvLmxheW91
dC5jbHVzdGVyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihuLHUpe3ZhciBvLGE9
dC5jYWxsKHRoaXMsbix1KSxsPWFbMF0sYz0wO29pKGwsZnVuY3Rpb24obil7
dmFyIHQ9bi5jaGlsZHJlbjt0JiZ0Lmxlbmd0aD8obi54PWppKHQpLG4ueT1V
aSh0KSk6KG4ueD1vP2MrPWUobixvKTowLG4ueT0wLG89bil9KTt2YXIgZj1G
aShsKSxzPUhpKGwpLGg9Zi54LWUoZixzKS8yLHA9cy54K2UocyxmKS8yO3Jl
dHVybiBvaShsLGk/ZnVuY3Rpb24obil7bi54PShuLngtbC54KSpyWzBdLG4u
eT0obC55LW4ueSkqclsxXX06ZnVuY3Rpb24obil7bi54PShuLngtaCkvKHAt
aCkqclswXSxuLnk9KDEtKGwueT9uLnkvbC55OjEpKSpyWzFdfSksYX12YXIg
dD1hby5sYXlvdXQuaGllcmFyY2h5KCkuc29ydChudWxsKS52YWx1ZShudWxs
KSxlPUxpLHI9WzEsMV0saT0hMTtyZXR1cm4gbi5zZXBhcmF0aW9uPWZ1bmN0
aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXQsbik6ZX0sbi5z
aXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPW51
bGw9PShyPXQpLG4pOmk/bnVsbDpyfSxuLm5vZGVTaXplPWZ1bmN0aW9uKHQp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPW51bGwhPShyPXQpLG4pOmk/
cjpudWxsfSxpaShuLHQpfSxhby5sYXlvdXQudHJlZW1hcD1mdW5jdGlvbigp
e2Z1bmN0aW9uIG4obix0KXtmb3IodmFyIGUscixpPS0xLHU9bi5sZW5ndGg7
KytpPHU7KXI9KGU9bltpXSkudmFsdWUqKDA+dD8wOnQpLGUuYXJlYT1pc05h
TihyKXx8MD49cj8wOnJ9ZnVuY3Rpb24gdChlKXt2YXIgdT1lLmNoaWxkcmVu
O2lmKHUmJnUubGVuZ3RoKXt2YXIgbyxhLGwsYz1zKGUpLGY9W10saD11LnNs
aWNlKCksZz0xLzAsdj0ic2xpY2UiPT09cD9jLmR4OiJkaWNlIj09PXA/Yy5k
eToic2xpY2UtZGljZSI9PT1wPzEmZS5kZXB0aD9jLmR5OmMuZHg6TWF0aC5t
aW4oYy5keCxjLmR5KTtmb3IobihoLGMuZHgqYy5keS9lLnZhbHVlKSxmLmFy
ZWE9MDsobD1oLmxlbmd0aCk+MDspZi5wdXNoKG89aFtsLTFdKSxmLmFyZWEr
PW8uYXJlYSwic3F1YXJpZnkiIT09cHx8KGE9cihmLHYpKTw9Zz8oaC5wb3Ao
KSxnPWEpOihmLmFyZWEtPWYucG9wKCkuYXJlYSxpKGYsdixjLCExKSx2PU1h
dGgubWluKGMuZHgsYy5keSksZi5sZW5ndGg9Zi5hcmVhPTAsZz0xLzApO2Yu
bGVuZ3RoJiYoaShmLHYsYywhMCksZi5sZW5ndGg9Zi5hcmVhPTApLHUuZm9y
RWFjaCh0KX19ZnVuY3Rpb24gZSh0KXt2YXIgcj10LmNoaWxkcmVuO2lmKHIm
JnIubGVuZ3RoKXt2YXIgdSxvPXModCksYT1yLnNsaWNlKCksbD1bXTtmb3Io
bihhLG8uZHgqby5keS90LnZhbHVlKSxsLmFyZWE9MDt1PWEucG9wKCk7KWwu
cHVzaCh1KSxsLmFyZWErPXUuYXJlYSxudWxsIT11LnomJihpKGwsdS56P28u
ZHg6by5keSxvLCFhLmxlbmd0aCksbC5sZW5ndGg9bC5hcmVhPTApO3IuZm9y
RWFjaChlKX19ZnVuY3Rpb24gcihuLHQpe2Zvcih2YXIgZSxyPW4uYXJlYSxp
PTAsdT0xLzAsbz0tMSxhPW4ubGVuZ3RoOysrbzxhOykoZT1uW29dLmFyZWEp
JiYodT5lJiYodT1lKSxlPmkmJihpPWUpKTtyZXR1cm4gcio9cix0Kj10LHI/
TWF0aC5tYXgodCppKmcvcixyLyh0KnUqZykpOjEvMH1mdW5jdGlvbiBpKG4s
dCxlLHIpe3ZhciBpLHU9LTEsbz1uLmxlbmd0aCxhPWUueCxjPWUueSxmPXQ/
bChuLmFyZWEvdCk6MDsKaWYodD09ZS5keCl7Zm9yKChyfHxmPmUuZHkpJiYo
Zj1lLmR5KTsrK3U8bzspaT1uW3VdLGkueD1hLGkueT1jLGkuZHk9ZixhKz1p
LmR4PU1hdGgubWluKGUueCtlLmR4LWEsZj9sKGkuYXJlYS9mKTowKTtpLno9
ITAsaS5keCs9ZS54K2UuZHgtYSxlLnkrPWYsZS5keS09Zn1lbHNle2Zvcigo
cnx8Zj5lLmR4KSYmKGY9ZS5keCk7Kyt1PG87KWk9blt1XSxpLng9YSxpLnk9
YyxpLmR4PWYsYys9aS5keT1NYXRoLm1pbihlLnkrZS5keS1jLGY/bChpLmFy
ZWEvZik6MCk7aS56PSExLGkuZHkrPWUueStlLmR5LWMsZS54Kz1mLGUuZHgt
PWZ9fWZ1bmN0aW9uIHUocil7dmFyIGk9b3x8YShyKSx1PWlbMF07cmV0dXJu
IHUueD11Lnk9MCx1LnZhbHVlPyh1LmR4PWNbMF0sdS5keT1jWzFdKTp1LmR4
PXUuZHk9MCxvJiZhLnJldmFsdWUodSksbihbdV0sdS5keCp1LmR5L3UudmFs
dWUpLChvP2U6dCkodSksaCYmKG89aSksaX12YXIgbyxhPWFvLmxheW91dC5o
aWVyYXJjaHkoKSxsPU1hdGgucm91bmQsYz1bMSwxXSxmPW51bGwscz1PaSxo
PSExLHA9InNxdWFyaWZ5IixnPS41KigxK01hdGguc3FydCg1KSk7cmV0dXJu
IHUuc2l6ZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
Yz1uLHUpOmN9LHUucGFkZGluZz1mdW5jdGlvbihuKXtmdW5jdGlvbiB0KHQp
e3ZhciBlPW4uY2FsbCh1LHQsdC5kZXB0aCk7cmV0dXJuIG51bGw9PWU/T2ko
dCk6SWkodCwibnVtYmVyIj09dHlwZW9mIGU/W2UsZSxlLGVdOmUpfWZ1bmN0
aW9uIGUodCl7cmV0dXJuIElpKHQsbil9aWYoIWFyZ3VtZW50cy5sZW5ndGgp
cmV0dXJuIGY7dmFyIHI7cmV0dXJuIHM9bnVsbD09KGY9bik/T2k6ImZ1bmN0
aW9uIj09KHI9dHlwZW9mIG4pP3Q6Im51bWJlciI9PT1yPyhuPVtuLG4sbixu
XSxlKTplLHV9LHUucm91bmQ9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KGw9bj9NYXRoLnJvdW5kOk51bWJlcix1KTpsIT1OdW1iZXJ9
LHUuc3RpY2t5PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhoPW4sbz1udWxsLHUpOmh9LHUucmF0aW89ZnVuY3Rpb24obil7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KGc9bix1KTpnfSx1Lm1vZGU9ZnVuY3Rpb24o
bil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9bisiIix1KTpwfSxpaSh1
LGEpfSxhby5yYW5kb209e25vcm1hbDpmdW5jdGlvbihuLHQpe3ZhciBlPWFy
Z3VtZW50cy5sZW5ndGg7cmV0dXJuIDI+ZSYmKHQ9MSksMT5lJiYobj0wKSxm
dW5jdGlvbigpe3ZhciBlLHIsaTtkbyBlPTIqTWF0aC5yYW5kb20oKS0xLHI9
MipNYXRoLnJhbmRvbSgpLTEsaT1lKmUrcipyO3doaWxlKCFpfHxpPjEpO3Jl
dHVybiBuK3QqZSpNYXRoLnNxcnQoLTIqTWF0aC5sb2coaSkvaSl9fSxsb2dO
b3JtYWw6ZnVuY3Rpb24oKXt2YXIgbj1hby5yYW5kb20ubm9ybWFsLmFwcGx5
KGFvLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIE1hdGgu
ZXhwKG4oKSl9fSxiYXRlczpmdW5jdGlvbihuKXt2YXIgdD1hby5yYW5kb20u
aXJ3aW5IYWxsKG4pO3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0KCkvbn19
LGlyd2luSGFsbDpmdW5jdGlvbihuKXtyZXR1cm4gZnVuY3Rpb24oKXtmb3Io
dmFyIHQ9MCxlPTA7bj5lO2UrKyl0Kz1NYXRoLnJhbmRvbSgpO3JldHVybiB0
fX19LGFvLnNjYWxlPXt9O3ZhciBTbD17Zmxvb3I6bSxjZWlsOm19O2FvLnNj
YWxlLmxpbmVhcj1mdW5jdGlvbigpe3JldHVybiBXaShbMCwxXSxbMCwxXSxN
ciwhMSl9O3ZhciBrbD17czoxLGc6MSxwOjEscjoxLGU6MX07YW8uc2NhbGUu
bG9nPWZ1bmN0aW9uKCl7cmV0dXJuIHJ1KGFvLnNjYWxlLmxpbmVhcigpLmRv
bWFpbihbMCwxXSksMTAsITAsWzEsMTBdKX07dmFyIE5sPWFvLmZvcm1hdCgi
LjBlIiksRWw9e2Zsb29yOmZ1bmN0aW9uKG4pe3JldHVybi1NYXRoLmNlaWwo
LW4pfSxjZWlsOmZ1bmN0aW9uKG4pe3JldHVybi1NYXRoLmZsb29yKC1uKX19
O2FvLnNjYWxlLnBvdz1mdW5jdGlvbigpe3JldHVybiBpdShhby5zY2FsZS5s
aW5lYXIoKSwxLFswLDFdKX0sYW8uc2NhbGUuc3FydD1mdW5jdGlvbigpe3Jl
dHVybiBhby5zY2FsZS5wb3coKS5leHBvbmVudCguNSl9LGFvLnNjYWxlLm9y
ZGluYWw9ZnVuY3Rpb24oKXtyZXR1cm4gb3UoW10se3Q6InJhbmdlIixhOltb
XV19KX0sYW8uc2NhbGUuY2F0ZWdvcnkxMD1mdW5jdGlvbigpe3JldHVybiBh
by5zY2FsZS5vcmRpbmFsKCkucmFuZ2UoQWwpfSxhby5zY2FsZS5jYXRlZ29y
eTIwPWZ1bmN0aW9uKCl7cmV0dXJuIGFvLnNjYWxlLm9yZGluYWwoKS5yYW5n
ZShDbCl9LGFvLnNjYWxlLmNhdGVnb3J5MjBiPWZ1bmN0aW9uKCl7cmV0dXJu
IGFvLnNjYWxlLm9yZGluYWwoKS5yYW5nZSh6bCl9LGFvLnNjYWxlLmNhdGVn
b3J5MjBjPWZ1bmN0aW9uKCl7cmV0dXJuIGFvLnNjYWxlLm9yZGluYWwoKS5y
YW5nZShMbCl9O3ZhciBBbD1bMjA2MjI2MCwxNjc0NDIwNiwyOTI0NTg4LDE0
MDM0NzI4LDk3MjU4ODUsOTE5NzEzMSwxNDkwNzMzMCw4MzU1NzExLDEyMzY5
MTg2LDE1NTYxNzVdLm1hcCh4biksQ2w9WzIwNjIyNjAsMTE0NTQ0NDAsMTY3
NDQyMDYsMTY3NTk2NzIsMjkyNDU4OCwxMDAxODY5OCwxNDAzNDcyOCwxNjc1
MDc0Miw5NzI1ODg1LDEyOTU1ODYxLDkxOTcxMzEsMTI4ODUxNDAsMTQ5MDcz
MzAsMTYyMzQxOTQsODM1NTcxMSwxMzA5MjgwNywxMjM2OTE4NiwxNDQwODU4
OSwxNTU2MTc1LDEwNDEwNzI1XS5tYXAoeG4pLHpsPVszNzUwNzc3LDUzOTU2
MTksNzA0MDcxOSwxMDI2NDI4Niw2NTE5MDk3LDkyMTY1OTQsMTE5MTUxMTUs
MTM1NTY2MzYsOTIwMjk5MywxMjQyNjgwOSwxNTE4NjUxNCwxNTE5MDkzMiw4
NjY2MTY5LDExMzU2NDkwLDE0MDQ5NjQzLDE1MTc3MzcyLDgwNzc2ODMsMTA4
MzQzMjQsMTM1Mjg1MDksMTQ1ODk2NTRdLm1hcCh4biksTGw9WzMyNDQ3MzMs
NzA1NzExMCwxMDQwNjYyNSwxMzAzMjQzMSwxNTA5NTA1MywxNjYxNjc2NCwx
NjYyNTI1OSwxNjYzNDAxOCwzMjUzMDc2LDc2NTI0NzAsMTA2MDcwMDMsMTMx
MDE1MDQsNzY5NTI4MSwxMDM5NDMxMiwxMjM2OTM3MiwxNDM0Mjg5MSw2NTEz
NTA3LDk4Njg5NTAsMTI0MzQ4NzcsMTQyNzcwODFdLm1hcCh4bik7YW8uc2Nh
bGUucXVhbnRpbGU9ZnVuY3Rpb24oKXtyZXR1cm4gYXUoW10sW10pfSxhby5z
Y2FsZS5xdWFudGl6ZT1mdW5jdGlvbigpe3JldHVybiBsdSgwLDEsWzAsMV0p
fSxhby5zY2FsZS50aHJlc2hvbGQ9ZnVuY3Rpb24oKXtyZXR1cm4gY3UoWy41
XSxbMCwxXSl9LGFvLnNjYWxlLmlkZW50aXR5PWZ1bmN0aW9uKCl7cmV0dXJu
IGZ1KFswLDFdKX0sYW8uc3ZnPXt9LGFvLnN2Zy5hcmM9ZnVuY3Rpb24oKXtm
dW5jdGlvbiBuKCl7dmFyIG49TWF0aC5tYXgoMCwrZS5hcHBseSh0aGlzLGFy
Z3VtZW50cykpLGM9TWF0aC5tYXgoMCwrci5hcHBseSh0aGlzLGFyZ3VtZW50
cykpLGY9by5hcHBseSh0aGlzLGFyZ3VtZW50cyktSW8scz1hLmFwcGx5KHRo
aXMsYXJndW1lbnRzKS1JbyxoPU1hdGguYWJzKHMtZikscD1mPnM/MDoxO2lm
KG4+YyYmKGc9YyxjPW4sbj1nKSxoPj1PbylyZXR1cm4gdChjLHApKyhuP3Qo
biwxLXApOiIiKSsiWiI7dmFyIGcsdixkLHksbSxNLHgsYixfLHcsUyxrLE49
MCxFPTAsQT1bXTtpZigoeT0oK2wuYXBwbHkodGhpcyxhcmd1bWVudHMpfHww
KS8yKSYmKGQ9dT09PXFsP01hdGguc3FydChuKm4rYypjKTordS5hcHBseSh0
aGlzLGFyZ3VtZW50cykscHx8KEUqPS0xKSxjJiYoRT10bihkL2MqTWF0aC5z
aW4oeSkpKSxuJiYoTj10bihkL24qTWF0aC5zaW4oeSkpKSksYyl7bT1jKk1h
dGguY29zKGYrRSksTT1jKk1hdGguc2luKGYrRSkseD1jKk1hdGguY29zKHMt
RSksYj1jKk1hdGguc2luKHMtRSk7dmFyIEM9TWF0aC5hYnMocy1mLTIqRSk8
PUZvPzA6MTtpZihFJiZ5dShtLE0seCxiKT09PXBeQyl7dmFyIHo9KGYrcykv
MjttPWMqTWF0aC5jb3MoeiksTT1jKk1hdGguc2luKHopLHg9Yj1udWxsfX1l
bHNlIG09TT0wO2lmKG4pe189bipNYXRoLmNvcyhzLU4pLHc9bipNYXRoLnNp
bihzLU4pLFM9bipNYXRoLmNvcyhmK04pLGs9bipNYXRoLnNpbihmK04pO3Zh
ciBMPU1hdGguYWJzKGYtcysyKk4pPD1Gbz8wOjE7aWYoTiYmeXUoXyx3LFMs
ayk9PT0xLXBeTCl7dmFyIHE9KGYrcykvMjtfPW4qTWF0aC5jb3MocSksdz1u
Kk1hdGguc2luKHEpLFM9az1udWxsfX1lbHNlIF89dz0wO2lmKGg+VW8mJihn
PU1hdGgubWluKE1hdGguYWJzKGMtbikvMiwraS5hcHBseSh0aGlzLGFyZ3Vt
ZW50cykpKT4uMDAxKXt2PWM+bl5wPzA6MTt2YXIgVD1nLFI9ZztpZihGbz5o
KXt2YXIgRD1udWxsPT1TP1tfLHddOm51bGw9PXg/W20sTV06UmUoW20sTV0s
W1Msa10sW3gsYl0sW18sd10pLFA9bS1EWzBdLFU9TS1EWzFdLGo9eC1EWzBd
LEY9Yi1EWzFdLEg9MS9NYXRoLnNpbihNYXRoLmFjb3MoKFAqaitVKkYpLyhN
YXRoLnNxcnQoUCpQK1UqVSkqTWF0aC5zcXJ0KGoqaitGKkYpKSkvMiksTz1N
YXRoLnNxcnQoRFswXSpEWzBdK0RbMV0qRFsxXSk7Uj1NYXRoLm1pbihnLChu
LU8pLyhILTEpKSxUPU1hdGgubWluKGcsKGMtTykvKEgrMSkpfWlmKG51bGwh
PXgpe3ZhciBJPW11KG51bGw9PVM/W18sd106W1Msa10sW20sTV0sYyxULHAp
LFk9bXUoW3gsYl0sW18sd10sYyxULHApO2c9PT1UP0EucHVzaCgiTSIsSVsw
XSwiQSIsVCwiLCIsVCwiIDAgMCwiLHYsIiAiLElbMV0sIkEiLGMsIiwiLGMs
IiAwICIsMS1wXnl1KElbMV1bMF0sSVsxXVsxXSxZWzFdWzBdLFlbMV1bMV0p
LCIsIixwLCIgIixZWzFdLCJBIixULCIsIixULCIgMCAwLCIsdiwiICIsWVsw
XSk6QS5wdXNoKCJNIixJWzBdLCJBIixULCIsIixULCIgMCAxLCIsdiwiICIs
WVswXSl9ZWxzZSBBLnB1c2goIk0iLG0sIiwiLE0pO2lmKG51bGwhPVMpe3Zh
ciBaPW11KFttLE1dLFtTLGtdLG4sLVIscCksVj1tdShbXyx3XSxudWxsPT14
P1ttLE1dOlt4LGJdLG4sLVIscCk7Zz09PVI/QS5wdXNoKCJMIixWWzBdLCJB
IixSLCIsIixSLCIgMCAwLCIsdiwiICIsVlsxXSwiQSIsbiwiLCIsbiwiIDAg
IixwXnl1KFZbMV1bMF0sVlsxXVsxXSxaWzFdWzBdLFpbMV1bMV0pLCIsIiwx
LXAsIiAiLFpbMV0sIkEiLFIsIiwiLFIsIiAwIDAsIix2LCIgIixaWzBdKTpB
LnB1c2goIkwiLFZbMF0sIkEiLFIsIiwiLFIsIiAwIDAsIix2LCIgIixaWzBd
KX1lbHNlIEEucHVzaCgiTCIsXywiLCIsdyl9ZWxzZSBBLnB1c2goIk0iLG0s
IiwiLE0pLG51bGwhPXgmJkEucHVzaCgiQSIsYywiLCIsYywiIDAgIixDLCIs
IixwLCIgIix4LCIsIixiKSxBLnB1c2goIkwiLF8sIiwiLHcpLG51bGwhPVMm
JkEucHVzaCgiQSIsbiwiLCIsbiwiIDAgIixMLCIsIiwxLXAsIiAiLFMsIiwi
LGspO3JldHVybiBBLnB1c2goIloiKSxBLmpvaW4oIiIpfWZ1bmN0aW9uIHQo
bix0KXtyZXR1cm4iTTAsIituKyJBIituKyIsIituKyIgMCAxLCIrdCsiIDAs
IistbisiQSIrbisiLCIrbisiIDAgMSwiK3QrIiAwLCIrbn12YXIgZT1odSxy
PXB1LGk9c3UsdT1xbCxvPWd1LGE9dnUsbD1kdTtyZXR1cm4gbi5pbm5lclJh
ZGl1cz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1F
bih0KSxuKTplfSxuLm91dGVyUmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhyPUVuKHQpLG4pOnJ9LG4uY29ybmVyUmFkaXVz
PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPUVuKHQp
LG4pOml9LG4ucGFkUmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyh1PXQ9PXFsP3FsOkVuKHQpLG4pOnV9LG4uc3RhcnRBbmds
ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1Fbih0
KSxuKTpvfSxuLmVuZEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhhPUVuKHQpLG4pOmF9LG4ucGFkQW5nbGU9ZnVuY3Rpb24o
dCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9RW4odCksbik6bH0sbi5j
ZW50cm9pZD1mdW5jdGlvbigpe3ZhciBuPSgrZS5hcHBseSh0aGlzLGFyZ3Vt
ZW50cykrICtyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSkvMix0PSgrby5hcHBs
eSh0aGlzLGFyZ3VtZW50cykrICthLmFwcGx5KHRoaXMsYXJndW1lbnRzKSkv
Mi1JbztyZXR1cm5bTWF0aC5jb3ModCkqbixNYXRoLnNpbih0KSpuXX0sbn07
dmFyIHFsPSJhdXRvIjthby5zdmcubGluZT1mdW5jdGlvbigpe3JldHVybiBN
dShtKX07dmFyIFRsPWFvLm1hcCh7bGluZWFyOnh1LCJsaW5lYXItY2xvc2Vk
IjpidSxzdGVwOl91LCJzdGVwLWJlZm9yZSI6d3UsInN0ZXAtYWZ0ZXIiOlN1
LGJhc2lzOnp1LCJiYXNpcy1vcGVuIjpMdSwiYmFzaXMtY2xvc2VkIjpxdSxi
dW5kbGU6VHUsY2FyZGluYWw6RXUsImNhcmRpbmFsLW9wZW4iOmt1LCJjYXJk
aW5hbC1jbG9zZWQiOk51LG1vbm90b25lOkZ1fSk7VGwuZm9yRWFjaChmdW5j
dGlvbihuLHQpe3Qua2V5PW4sdC5jbG9zZWQ9Ly1jbG9zZWQkLy50ZXN0KG4p
fSk7dmFyIFJsPVswLDIvMywxLzMsMF0sRGw9WzAsMS8zLDIvMywwXSxQbD1b
MCwxLzYsMi8zLDEvNl07YW8uc3ZnLmxpbmUucmFkaWFsPWZ1bmN0aW9uKCl7
dmFyIG49TXUoSHUpO3JldHVybiBuLnJhZGl1cz1uLngsZGVsZXRlIG4ueCxu
LmFuZ2xlPW4ueSxkZWxldGUgbi55LG59LHd1LnJldmVyc2U9U3UsU3UucmV2
ZXJzZT13dSxhby5zdmcuYXJlYT1mdW5jdGlvbigpe3JldHVybiBPdShtKX0s
YW8uc3ZnLmFyZWEucmFkaWFsPWZ1bmN0aW9uKCl7dmFyIG49T3UoSHUpO3Jl
dHVybiBuLnJhZGl1cz1uLngsZGVsZXRlIG4ueCxuLmlubmVyUmFkaXVzPW4u
eDAsZGVsZXRlIG4ueDAsbi5vdXRlclJhZGl1cz1uLngxLGRlbGV0ZSBuLngx
LG4uYW5nbGU9bi55LGRlbGV0ZSBuLnksbi5zdGFydEFuZ2xlPW4ueTAsZGVs
ZXRlIG4ueTAsbi5lbmRBbmdsZT1uLnkxLGRlbGV0ZSBuLnkxLG59LGFvLnN2
Zy5jaG9yZD1mdW5jdGlvbigpe2Z1bmN0aW9uIG4obixhKXt2YXIgbD10KHRo
aXMsdSxuLGEpLGM9dCh0aGlzLG8sbixhKTtyZXR1cm4iTSIrbC5wMCtyKGwu
cixsLnAxLGwuYTEtbC5hMCkrKGUobCxjKT9pKGwucixsLnAxLGwucixsLnAw
KTppKGwucixsLnAxLGMucixjLnAwKStyKGMucixjLnAxLGMuYTEtYy5hMCkr
aShjLnIsYy5wMSxsLnIsbC5wMCkpKyJaIn1mdW5jdGlvbiB0KG4sdCxlLHIp
e3ZhciBpPXQuY2FsbChuLGUsciksdT1hLmNhbGwobixpLHIpLG89bC5jYWxs
KG4saSxyKS1JbyxmPWMuY2FsbChuLGksciktSW87cmV0dXJue3I6dSxhMDpv
LGExOmYscDA6W3UqTWF0aC5jb3MobyksdSpNYXRoLnNpbihvKV0scDE6W3Uq
TWF0aC5jb3MoZiksdSpNYXRoLnNpbihmKV19fWZ1bmN0aW9uIGUobix0KXty
ZXR1cm4gbi5hMD09dC5hMCYmbi5hMT09dC5hMX1mdW5jdGlvbiByKG4sdCxl
KXtyZXR1cm4iQSIrbisiLCIrbisiIDAgIisgKyhlPkZvKSsiLDEgIit0fWZ1
bmN0aW9uIGkobix0LGUscil7cmV0dXJuIlEgMCwwICIrcn12YXIgdT1NZSxv
PXhlLGE9SXUsbD1ndSxjPXZ1O3JldHVybiBuLnJhZGl1cz1mdW5jdGlvbih0
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT1Fbih0KSxuKTphfSxuLnNv
dXJjZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT1F
bih0KSxuKTp1fSxuLnRhcmdldD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8obz1Fbih0KSxuKTpvfSxuLnN0YXJ0QW5nbGU9ZnVuY3Rp
b24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9RW4odCksbik6bH0s
bi5lbmRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8oYz1Fbih0KSxuKTpjfSxufSxhby5zdmcuZGlhZ29uYWw9ZnVuY3Rpb24o
KXtmdW5jdGlvbiBuKG4saSl7dmFyIHU9dC5jYWxsKHRoaXMsbixpKSxvPWUu
Y2FsbCh0aGlzLG4saSksYT0odS55K28ueSkvMixsPVt1LHt4OnUueCx5OmF9
LHt4Om8ueCx5OmF9LG9dO3JldHVybiBsPWwubWFwKHIpLCJNIitsWzBdKyJD
IitsWzFdKyIgIitsWzJdKyIgIitsWzNdfXZhciB0PU1lLGU9eGUscj1ZdTty
ZXR1cm4gbi5zb3VyY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KHQ9RW4oZSksbik6dH0sbi50YXJnZXQ9ZnVuY3Rpb24odCl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9RW4odCksbik6ZX0sbi5wcm9qZWN0
aW9uPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXQs
bik6cn0sbn0sYW8uc3ZnLmRpYWdvbmFsLnJhZGlhbD1mdW5jdGlvbigpe3Zh
ciBuPWFvLnN2Zy5kaWFnb25hbCgpLHQ9WXUsZT1uLnByb2plY3Rpb247cmV0
dXJuIG4ucHJvamVjdGlvbj1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD9lKFp1KHQ9bikpOnR9LG59LGFvLnN2Zy5zeW1ib2w9ZnVuY3Rp
b24oKXtmdW5jdGlvbiBuKG4scil7cmV0dXJuKFVsLmdldCh0LmNhbGwodGhp
cyxuLHIpKXx8JHUpKGUuY2FsbCh0aGlzLG4scikpfXZhciB0PVh1LGU9VnU7
cmV0dXJuIG4udHlwZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8odD1FbihlKSxuKTp0fSxuLnNpemU9ZnVuY3Rpb24odCl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KGU9RW4odCksbik6ZX0sbn07dmFyIFVsPWFv
Lm1hcCh7Y2lyY2xlOiR1LGNyb3NzOmZ1bmN0aW9uKG4pe3ZhciB0PU1hdGgu
c3FydChuLzUpLzI7cmV0dXJuIk0iKy0zKnQrIiwiKy10KyJIIistdCsiViIr
LTMqdCsiSCIrdCsiViIrLXQrIkgiKzMqdCsiViIrdCsiSCIrdCsiViIrMyp0
KyJIIistdCsiViIrdCsiSCIrLTMqdCsiWiJ9LGRpYW1vbmQ6ZnVuY3Rpb24o
bil7dmFyIHQ9TWF0aC5zcXJ0KG4vKDIqRmwpKSxlPXQqRmw7cmV0dXJuIk0w
LCIrLXQrIkwiK2UrIiwwIDAsIit0KyIgIistZSsiLDBaIn0sc3F1YXJlOmZ1
bmN0aW9uKG4pe3ZhciB0PU1hdGguc3FydChuKS8yO3JldHVybiJNIistdCsi
LCIrLXQrIkwiK3QrIiwiKy10KyIgIit0KyIsIit0KyIgIistdCsiLCIrdCsi
WiJ9LCJ0cmlhbmdsZS1kb3duIjpmdW5jdGlvbihuKXt2YXIgdD1NYXRoLnNx
cnQobi9qbCksZT10KmpsLzI7cmV0dXJuIk0wLCIrZSsiTCIrdCsiLCIrLWUr
IiAiKy10KyIsIistZSsiWiJ9LCJ0cmlhbmdsZS11cCI6ZnVuY3Rpb24obil7
dmFyIHQ9TWF0aC5zcXJ0KG4vamwpLGU9dCpqbC8yO3JldHVybiJNMCwiKy1l
KyJMIit0KyIsIitlKyIgIistdCsiLCIrZSsiWiJ9fSk7YW8uc3ZnLnN5bWJv
bFR5cGVzPVVsLmtleXMoKTt2YXIgamw9TWF0aC5zcXJ0KDMpLEZsPU1hdGgu
dGFuKDMwKllvKTtDby50cmFuc2l0aW9uPWZ1bmN0aW9uKG4pe2Zvcih2YXIg
dCxlLHI9SGx8fCsrWmwsaT1LdShuKSx1PVtdLG89T2x8fHt0aW1lOkRhdGUu
bm93KCksZWFzZTpOcixkZWxheTowLGR1cmF0aW9uOjI1MH0sYT0tMSxsPXRo
aXMubGVuZ3RoOysrYTxsOyl7dS5wdXNoKHQ9W10pO2Zvcih2YXIgYz10aGlz
W2FdLGY9LTEscz1jLmxlbmd0aDsrK2Y8czspKGU9Y1tmXSkmJlF1KGUsZixp
LHIsbyksdC5wdXNoKGUpfXJldHVybiBXdSh1LGkscil9LENvLmludGVycnVw
dD1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5lYWNoKG51bGw9PW4/SWw6QnUo
S3UobikpKX07dmFyIEhsLE9sLElsPUJ1KEt1KCkpLFlsPVtdLFpsPTA7WWwu
Y2FsbD1Dby5jYWxsLFlsLmVtcHR5PUNvLmVtcHR5LFlsLm5vZGU9Q28ubm9k
ZSxZbC5zaXplPUNvLnNpemUsYW8udHJhbnNpdGlvbj1mdW5jdGlvbihuLHQp
e3JldHVybiBuJiZuLnRyYW5zaXRpb24/SGw/bi50cmFuc2l0aW9uKHQpOm46
YW8uc2VsZWN0aW9uKCkudHJhbnNpdGlvbihuKX0sYW8udHJhbnNpdGlvbi5w
cm90b3R5cGU9WWwsWWwuc2VsZWN0PWZ1bmN0aW9uKG4pe3ZhciB0LGUscixp
PXRoaXMuaWQsdT10aGlzLm5hbWVzcGFjZSxvPVtdO249QShuKTtmb3IodmFy
IGE9LTEsbD10aGlzLmxlbmd0aDsrK2E8bDspe28ucHVzaCh0PVtdKTtmb3Io
dmFyIGM9dGhpc1thXSxmPS0xLHM9Yy5sZW5ndGg7KytmPHM7KShyPWNbZl0p
JiYoZT1uLmNhbGwocixyLl9fZGF0YV9fLGYsYSkpPygiX19kYXRhX18iaW4g
ciYmKGUuX19kYXRhX189ci5fX2RhdGFfXyksUXUoZSxmLHUsaSxyW3VdW2ld
KSx0LnB1c2goZSkpOnQucHVzaChudWxsKX1yZXR1cm4gV3Uobyx1LGkpfSxZ
bC5zZWxlY3RBbGw9ZnVuY3Rpb24obil7dmFyIHQsZSxyLGksdSxvPXRoaXMu
aWQsYT10aGlzLm5hbWVzcGFjZSxsPVtdO249QyhuKTtmb3IodmFyIGM9LTEs
Zj10aGlzLmxlbmd0aDsrK2M8ZjspZm9yKHZhciBzPXRoaXNbY10saD0tMSxw
PXMubGVuZ3RoOysraDxwOylpZihyPXNbaF0pe3U9clthXVtvXSxlPW4uY2Fs
bChyLHIuX19kYXRhX18saCxjKSxsLnB1c2godD1bXSk7Zm9yKHZhciBnPS0x
LHY9ZS5sZW5ndGg7KytnPHY7KShpPWVbZ10pJiZRdShpLGcsYSxvLHUpLHQu
cHVzaChpKX1yZXR1cm4gV3UobCxhLG8pfSxZbC5maWx0ZXI9ZnVuY3Rpb24o
bil7dmFyIHQsZSxyLGk9W107ImZ1bmN0aW9uIiE9dHlwZW9mIG4mJihuPU8o
bikpO2Zvcih2YXIgdT0wLG89dGhpcy5sZW5ndGg7bz51O3UrKyl7aS5wdXNo
KHQ9W10pO2Zvcih2YXIgZT10aGlzW3VdLGE9MCxsPWUubGVuZ3RoO2w+YTth
KyspKHI9ZVthXSkmJm4uY2FsbChyLHIuX19kYXRhX18sYSx1KSYmdC5wdXNo
KHIpfXJldHVybiBXdShpLHRoaXMubmFtZXNwYWNlLHRoaXMuaWQpfSxZbC50
d2Vlbj1mdW5jdGlvbihuLHQpe3ZhciBlPXRoaXMuaWQscj10aGlzLm5hbWVz
cGFjZTtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyP3RoaXMubm9kZSgpW3Jd
W2VdLnR3ZWVuLmdldChuKTpZKHRoaXMsbnVsbD09dD9mdW5jdGlvbih0KXt0
W3JdW2VdLnR3ZWVuLnJlbW92ZShuKX06ZnVuY3Rpb24oaSl7aVtyXVtlXS50
d2Vlbi5zZXQobix0KX0pfSxZbC5hdHRyPWZ1bmN0aW9uKG4sdCl7ZnVuY3Rp
b24gZSgpe3RoaXMucmVtb3ZlQXR0cmlidXRlKGEpfWZ1bmN0aW9uIHIoKXt0
aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKGEuc3BhY2UsYS5sb2NhbCl9ZnVuY3Rp
b24gaShuKXtyZXR1cm4gbnVsbD09bj9lOihuKz0iIixmdW5jdGlvbigpe3Zh
ciB0LGU9dGhpcy5nZXRBdHRyaWJ1dGUoYSk7cmV0dXJuIGUhPT1uJiYodD1v
KGUsbiksZnVuY3Rpb24obil7dGhpcy5zZXRBdHRyaWJ1dGUoYSx0KG4pKX0p
fSl9ZnVuY3Rpb24gdShuKXtyZXR1cm4gbnVsbD09bj9yOihuKz0iIixmdW5j
dGlvbigpe3ZhciB0LGU9dGhpcy5nZXRBdHRyaWJ1dGVOUyhhLnNwYWNlLGEu
bG9jYWwpO3JldHVybiBlIT09biYmKHQ9byhlLG4pLGZ1bmN0aW9uKG4pe3Ro
aXMuc2V0QXR0cmlidXRlTlMoYS5zcGFjZSxhLmxvY2FsLHQobikpfSl9KX1p
Zihhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcih0IGluIG4pdGhpcy5hdHRyKHQs
blt0XSk7cmV0dXJuIHRoaXN9dmFyIG89InRyYW5zZm9ybSI9PW4/JHI6TXIs
YT1hby5ucy5xdWFsaWZ5KG4pO3JldHVybiBKdSh0aGlzLCJhdHRyLiIrbix0
LGEubG9jYWw/dTppKX0sWWwuYXR0clR3ZWVuPWZ1bmN0aW9uKG4sdCl7ZnVu
Y3Rpb24gZShuLGUpe3ZhciByPXQuY2FsbCh0aGlzLG4sZSx0aGlzLmdldEF0
dHJpYnV0ZShpKSk7cmV0dXJuIHImJmZ1bmN0aW9uKG4pe3RoaXMuc2V0QXR0
cmlidXRlKGkscihuKSl9fWZ1bmN0aW9uIHIobixlKXt2YXIgcj10LmNhbGwo
dGhpcyxuLGUsdGhpcy5nZXRBdHRyaWJ1dGVOUyhpLnNwYWNlLGkubG9jYWwp
KTtyZXR1cm4gciYmZnVuY3Rpb24obil7dGhpcy5zZXRBdHRyaWJ1dGVOUyhp
LnNwYWNlLGkubG9jYWwscihuKSl9fXZhciBpPWFvLm5zLnF1YWxpZnkobik7
cmV0dXJuIHRoaXMudHdlZW4oImF0dHIuIituLGkubG9jYWw/cjplKX0sWWwu
c3R5bGU9ZnVuY3Rpb24obixlLHIpe2Z1bmN0aW9uIGkoKXt0aGlzLnN0eWxl
LnJlbW92ZVByb3BlcnR5KG4pfWZ1bmN0aW9uIHUoZSl7cmV0dXJuIG51bGw9
PWU/aTooZSs9IiIsZnVuY3Rpb24oKXt2YXIgaSx1PXQodGhpcykuZ2V0Q29t
cHV0ZWRTdHlsZSh0aGlzLG51bGwpLmdldFByb3BlcnR5VmFsdWUobik7cmV0
dXJuIHUhPT1lJiYoaT1Ncih1LGUpLGZ1bmN0aW9uKHQpe3RoaXMuc3R5bGUu
c2V0UHJvcGVydHkobixpKHQpLHIpfSl9KX12YXIgbz1hcmd1bWVudHMubGVu
Z3RoO2lmKDM+byl7aWYoInN0cmluZyIhPXR5cGVvZiBuKXsyPm8mJihlPSIi
KTtmb3IociBpbiBuKXRoaXMuc3R5bGUocixuW3JdLGUpO3JldHVybiB0aGlz
fXI9IiJ9cmV0dXJuIEp1KHRoaXMsInN0eWxlLiIrbixlLHUpfSxZbC5zdHls
ZVR3ZWVuPWZ1bmN0aW9uKG4sZSxyKXtmdW5jdGlvbiBpKGksdSl7dmFyIG89
ZS5jYWxsKHRoaXMsaSx1LHQodGhpcykuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlz
LG51bGwpLmdldFByb3BlcnR5VmFsdWUobikpO3JldHVybiBvJiZmdW5jdGlv
bih0KXt0aGlzLnN0eWxlLnNldFByb3BlcnR5KG4sbyh0KSxyKX19cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg8MyYmKHI9IiIpLHRoaXMudHdlZW4oInN0eWxl
LiIrbixpKX0sWWwudGV4dD1mdW5jdGlvbihuKXtyZXR1cm4gSnUodGhpcywi
dGV4dCIsbixHdSl9LFlsLnJlbW92ZT1mdW5jdGlvbigpe3ZhciBuPXRoaXMu
bmFtZXNwYWNlO3JldHVybiB0aGlzLmVhY2goImVuZC50cmFuc2l0aW9uIixm
dW5jdGlvbigpe3ZhciB0O3RoaXNbbl0uY291bnQ8MiYmKHQ9dGhpcy5wYXJl
bnROb2RlKSYmdC5yZW1vdmVDaGlsZCh0aGlzKX0pfSxZbC5lYXNlPWZ1bmN0
aW9uKG4pe3ZhciB0PXRoaXMuaWQsZT10aGlzLm5hbWVzcGFjZTtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aDwxP3RoaXMubm9kZSgpW2VdW3RdLmVhc2U6KCJm
dW5jdGlvbiIhPXR5cGVvZiBuJiYobj1hby5lYXNlLmFwcGx5KGFvLGFyZ3Vt
ZW50cykpLFkodGhpcyxmdW5jdGlvbihyKXtyW2VdW3RdLmVhc2U9bn0pKX0s
WWwuZGVsYXk9ZnVuY3Rpb24obil7dmFyIHQ9dGhpcy5pZCxlPXRoaXMubmFt
ZXNwYWNlO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDE/dGhpcy5ub2RlKClb
ZV1bdF0uZGVsYXk6WSh0aGlzLCJmdW5jdGlvbiI9PXR5cGVvZiBuP2Z1bmN0
aW9uKHIsaSx1KXtyW2VdW3RdLmRlbGF5PStuLmNhbGwocixyLl9fZGF0YV9f
LGksdSl9OihuPStuLGZ1bmN0aW9uKHIpe3JbZV1bdF0uZGVsYXk9bn0pKX0s
WWwuZHVyYXRpb249ZnVuY3Rpb24obil7dmFyIHQ9dGhpcy5pZCxlPXRoaXMu
bmFtZXNwYWNlO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDE/dGhpcy5ub2Rl
KClbZV1bdF0uZHVyYXRpb246WSh0aGlzLCJmdW5jdGlvbiI9PXR5cGVvZiBu
P2Z1bmN0aW9uKHIsaSx1KXtyW2VdW3RdLmR1cmF0aW9uPU1hdGgubWF4KDEs
bi5jYWxsKHIsci5fX2RhdGFfXyxpLHUpKX06KG49TWF0aC5tYXgoMSxuKSxm
dW5jdGlvbihyKXtyW2VdW3RdLmR1cmF0aW9uPW59KSl9LFlsLmVhY2g9ZnVu
Y3Rpb24obix0KXt2YXIgZT10aGlzLmlkLHI9dGhpcy5uYW1lc3BhY2U7aWYo
YXJndW1lbnRzLmxlbmd0aDwyKXt2YXIgaT1PbCx1PUhsO3RyeXtIbD1lLFko
dGhpcyxmdW5jdGlvbih0LGksdSl7T2w9dFtyXVtlXSxuLmNhbGwodCx0Ll9f
ZGF0YV9fLGksdSl9KX1maW5hbGx5e09sPWksSGw9dX19ZWxzZSBZKHRoaXMs
ZnVuY3Rpb24oaSl7dmFyIHU9aVtyXVtlXTsodS5ldmVudHx8KHUuZXZlbnQ9
YW8uZGlzcGF0Y2goInN0YXJ0IiwiZW5kIiwiaW50ZXJydXB0IikpKS5vbihu
LHQpfSk7cmV0dXJuIHRoaXN9LFlsLnRyYW5zaXRpb249ZnVuY3Rpb24oKXtm
b3IodmFyIG4sdCxlLHIsaT10aGlzLmlkLHU9KytabCxvPXRoaXMubmFtZXNw
YWNlLGE9W10sbD0wLGM9dGhpcy5sZW5ndGg7Yz5sO2wrKyl7YS5wdXNoKG49
W10pO2Zvcih2YXIgdD10aGlzW2xdLGY9MCxzPXQubGVuZ3RoO3M+ZjtmKysp
KGU9dFtmXSkmJihyPWVbb11baV0sUXUoZSxmLG8sdSx7dGltZTpyLnRpbWUs
ZWFzZTpyLmVhc2UsZGVsYXk6ci5kZWxheStyLmR1cmF0aW9uLGR1cmF0aW9u
OnIuZHVyYXRpb259KSksbi5wdXNoKGUpfXJldHVybiBXdShhLG8sdSl9LGFv
LnN2Zy5heGlzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihuKXtuLmVhY2goZnVu
Y3Rpb24oKXt2YXIgbixjPWFvLnNlbGVjdCh0aGlzKSxmPXRoaXMuX19jaGFy
dF9ffHxlLHM9dGhpcy5fX2NoYXJ0X189ZS5jb3B5KCksaD1udWxsPT1sP3Mu
dGlja3M/cy50aWNrcy5hcHBseShzLGEpOnMuZG9tYWluKCk6bCxwPW51bGw9
PXQ/cy50aWNrRm9ybWF0P3MudGlja0Zvcm1hdC5hcHBseShzLGEpOm06dCxn
PWMuc2VsZWN0QWxsKCIudGljayIpLmRhdGEoaCxzKSx2PWcuZW50ZXIoKS5p
bnNlcnQoImciLCIuZG9tYWluIikuYXR0cigiY2xhc3MiLCJ0aWNrIikuc3R5
bGUoIm9wYWNpdHkiLFVvKSxkPWFvLnRyYW5zaXRpb24oZy5leGl0KCkpLnN0
eWxlKCJvcGFjaXR5IixVbykucmVtb3ZlKCkseT1hby50cmFuc2l0aW9uKGcu
b3JkZXIoKSkuc3R5bGUoIm9wYWNpdHkiLDEpLE09TWF0aC5tYXgoaSwwKStv
LHg9WmkocyksYj1jLnNlbGVjdEFsbCgiLmRvbWFpbiIpLmRhdGEoWzBdKSxf
PShiLmVudGVyKCkuYXBwZW5kKCJwYXRoIikuYXR0cigiY2xhc3MiLCJkb21h
aW4iKSxhby50cmFuc2l0aW9uKGIpKTt2LmFwcGVuZCgibGluZSIpLHYuYXBw
ZW5kKCJ0ZXh0Iik7dmFyIHcsUyxrLE4sRT12LnNlbGVjdCgibGluZSIpLEE9
eS5zZWxlY3QoImxpbmUiKSxDPWcuc2VsZWN0KCJ0ZXh0IikudGV4dChwKSx6
PXYuc2VsZWN0KCJ0ZXh0IiksTD15LnNlbGVjdCgidGV4dCIpLHE9InRvcCI9
PT1yfHwibGVmdCI9PT1yPy0xOjE7aWYoImJvdHRvbSI9PT1yfHwidG9wIj09
PXI/KG49bm8sdz0ieCIsaz0ieSIsUz0ieDIiLE49InkyIixDLmF0dHIoImR5
IiwwPnE/IjBlbSI6Ii43MWVtIikuc3R5bGUoInRleHQtYW5jaG9yIiwibWlk
ZGxlIiksXy5hdHRyKCJkIiwiTSIreFswXSsiLCIrcSp1KyJWMEgiK3hbMV0r
IlYiK3EqdSkpOihuPXRvLHc9InkiLGs9IngiLFM9InkyIixOPSJ4MiIsQy5h
dHRyKCJkeSIsIi4zMmVtIikuc3R5bGUoInRleHQtYW5jaG9yIiwwPnE/ImVu
ZCI6InN0YXJ0IiksXy5hdHRyKCJkIiwiTSIrcSp1KyIsIit4WzBdKyJIMFYi
K3hbMV0rIkgiK3EqdSkpLEUuYXR0cihOLHEqaSksei5hdHRyKGsscSpNKSxB
LmF0dHIoUywwKS5hdHRyKE4scSppKSxMLmF0dHIodywwKS5hdHRyKGsscSpN
KSxzLnJhbmdlQmFuZCl7dmFyIFQ9cyxSPVQucmFuZ2VCYW5kKCkvMjtmPXM9
ZnVuY3Rpb24obil7cmV0dXJuIFQobikrUn19ZWxzZSBmLnJhbmdlQmFuZD9m
PXM6ZC5jYWxsKG4scyxmKTt2LmNhbGwobixmLHMpLHkuY2FsbChuLHMscyl9
KX12YXIgdCxlPWFvLnNjYWxlLmxpbmVhcigpLHI9VmwsaT02LHU9NixvPTMs
YT1bMTBdLGw9bnVsbDtyZXR1cm4gbi5zY2FsZT1mdW5jdGlvbih0KXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LG4pOmV9LG4ub3JpZW50PWZ1bmN0
aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXQgaW4gWGw/dCsi
IjpWbCxuKTpyfSxuLnRpY2tzPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KGE9Y28oYXJndW1lbnRzKSxuKTphfSxuLnRpY2tWYWx1ZXM9
ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9dCxuKTps
fSxuLnRpY2tGb3JtYXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KHQ9ZSxuKTp0fSxuLnRpY2tTaXplPWZ1bmN0aW9uKHQpe3ZhciBl
PWFyZ3VtZW50cy5sZW5ndGg7cmV0dXJuIGU/KGk9K3QsdT0rYXJndW1lbnRz
W2UtMV0sbik6aX0sbi5pbm5lclRpY2tTaXplPWZ1bmN0aW9uKHQpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhpPSt0LG4pOml9LG4ub3V0ZXJUaWNrU2l6
ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0rdCxu
KTp1fSxuLnRpY2tQYWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhvPSt0LG4pOm99LG4udGlja1N1YmRpdmlkZT1mdW5jdGlv
bigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoJiZufSxufTt2YXIgVmw9ImJv
dHRvbSIsWGw9e3RvcDoxLHJpZ2h0OjEsYm90dG9tOjEsbGVmdDoxfTthby5z
dmcuYnJ1c2g9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKHQpe3QuZWFjaChmdW5j
dGlvbigpe3ZhciB0PWFvLnNlbGVjdCh0aGlzKS5zdHlsZSgicG9pbnRlci1l
dmVudHMiLCJhbGwiKS5zdHlsZSgiLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNv
bG9yIiwicmdiYSgwLDAsMCwwKSIpLm9uKCJtb3VzZWRvd24uYnJ1c2giLHUp
Lm9uKCJ0b3VjaHN0YXJ0LmJydXNoIix1KSxvPXQuc2VsZWN0QWxsKCIuYmFj
a2dyb3VuZCIpLmRhdGEoWzBdKTtvLmVudGVyKCkuYXBwZW5kKCJyZWN0Iiku
YXR0cigiY2xhc3MiLCJiYWNrZ3JvdW5kIikuc3R5bGUoInZpc2liaWxpdHki
LCJoaWRkZW4iKS5zdHlsZSgiY3Vyc29yIiwiY3Jvc3NoYWlyIiksdC5zZWxl
Y3RBbGwoIi5leHRlbnQiKS5kYXRhKFswXSkuZW50ZXIoKS5hcHBlbmQoInJl
Y3QiKS5hdHRyKCJjbGFzcyIsImV4dGVudCIpLnN0eWxlKCJjdXJzb3IiLCJt
b3ZlIik7dmFyIGE9dC5zZWxlY3RBbGwoIi5yZXNpemUiKS5kYXRhKHYsbSk7
YS5leGl0KCkucmVtb3ZlKCksYS5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIo
ImNsYXNzIixmdW5jdGlvbihuKXtyZXR1cm4icmVzaXplICIrbn0pLnN0eWxl
KCJjdXJzb3IiLGZ1bmN0aW9uKG4pe3JldHVybiAkbFtuXX0pLmFwcGVuZCgi
cmVjdCIpLmF0dHIoIngiLGZ1bmN0aW9uKG4pe3JldHVybi9bZXddJC8udGVz
dChuKT8tMzpudWxsfSkuYXR0cigieSIsZnVuY3Rpb24obil7cmV0dXJuL15b
bnNdLy50ZXN0KG4pPy0zOm51bGx9KS5hdHRyKCJ3aWR0aCIsNikuYXR0cigi
aGVpZ2h0Iiw2KS5zdHlsZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpLGEuc3R5
bGUoImRpc3BsYXkiLG4uZW1wdHkoKT8ibm9uZSI6bnVsbCk7dmFyIGwscz1h
by50cmFuc2l0aW9uKHQpLGg9YW8udHJhbnNpdGlvbihvKTtjJiYobD1aaShj
KSxoLmF0dHIoIngiLGxbMF0pLmF0dHIoIndpZHRoIixsWzFdLWxbMF0pLHIo
cykpLGYmJihsPVppKGYpLGguYXR0cigieSIsbFswXSkuYXR0cigiaGVpZ2h0
IixsWzFdLWxbMF0pLGkocykpLGUocyl9KX1mdW5jdGlvbiBlKG4pe24uc2Vs
ZWN0QWxsKCIucmVzaXplIikuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihu
KXtyZXR1cm4idHJhbnNsYXRlKCIrc1srL2UkLy50ZXN0KG4pXSsiLCIraFsr
L15zLy50ZXN0KG4pXSsiKSJ9KX1mdW5jdGlvbiByKG4pe24uc2VsZWN0KCIu
ZXh0ZW50IikuYXR0cigieCIsc1swXSksbi5zZWxlY3RBbGwoIi5leHRlbnQs
Lm4+cmVjdCwucz5yZWN0IikuYXR0cigid2lkdGgiLHNbMV0tc1swXSl9ZnVu
Y3Rpb24gaShuKXtuLnNlbGVjdCgiLmV4dGVudCIpLmF0dHIoInkiLGhbMF0p
LG4uc2VsZWN0QWxsKCIuZXh0ZW50LC5lPnJlY3QsLnc+cmVjdCIpLmF0dHIo
ImhlaWdodCIsaFsxXS1oWzBdKX1mdW5jdGlvbiB1KCl7ZnVuY3Rpb24gdSgp
ezMyPT1hby5ldmVudC5rZXlDb2RlJiYoQ3x8KE09bnVsbCxMWzBdLT1zWzFd
LExbMV0tPWhbMV0sQz0yKSxTKCkpfWZ1bmN0aW9uIHYoKXszMj09YW8uZXZl
bnQua2V5Q29kZSYmMj09QyYmKExbMF0rPXNbMV0sTFsxXSs9aFsxXSxDPTAs
UygpKX1mdW5jdGlvbiBkKCl7dmFyIG49YW8ubW91c2UoYiksdD0hMTt4JiYo
blswXSs9eFswXSxuWzFdKz14WzFdKSxDfHwoYW8uZXZlbnQuYWx0S2V5PyhN
fHwoTT1bKHNbMF0rc1sxXSkvMiwoaFswXStoWzFdKS8yXSksTFswXT1zWyso
blswXTxNWzBdKV0sTFsxXT1oWysoblsxXTxNWzFdKV0pOk09bnVsbCksRSYm
eShuLGMsMCkmJihyKGspLHQ9ITApLEEmJnkobixmLDEpJiYoaShrKSx0PSEw
KSx0JiYoZShrKSx3KHt0eXBlOiJicnVzaCIsbW9kZTpDPyJtb3ZlIjoicmVz
aXplIn0pKX1mdW5jdGlvbiB5KG4sdCxlKXt2YXIgcixpLHU9WmkodCksbD11
WzBdLGM9dVsxXSxmPUxbZV0sdj1lP2g6cyxkPXZbMV0tdlswXTtyZXR1cm4g
QyYmKGwtPWYsYy09ZCtmKSxyPShlP2c6cCk/TWF0aC5tYXgobCxNYXRoLm1p
bihjLG5bZV0pKTpuW2VdLEM/aT0ocis9ZikrZDooTSYmKGY9TWF0aC5tYXgo
bCxNYXRoLm1pbihjLDIqTVtlXS1yKSkpLHI+Zj8oaT1yLHI9Zik6aT1mKSx2
WzBdIT1yfHx2WzFdIT1pPyhlP2E9bnVsbDpvPW51bGwsdlswXT1yLHZbMV09
aSwhMCk6dm9pZCAwfWZ1bmN0aW9uIG0oKXtkKCksay5zdHlsZSgicG9pbnRl
ci1ldmVudHMiLCJhbGwiKS5zZWxlY3RBbGwoIi5yZXNpemUiKS5zdHlsZSgi
ZGlzcGxheSIsbi5lbXB0eSgpPyJub25lIjpudWxsKSxhby5zZWxlY3QoImJv
ZHkiKS5zdHlsZSgiY3Vyc29yIixudWxsKSxxLm9uKCJtb3VzZW1vdmUuYnJ1
c2giLG51bGwpLm9uKCJtb3VzZXVwLmJydXNoIixudWxsKS5vbigidG91Y2ht
b3ZlLmJydXNoIixudWxsKS5vbigidG91Y2hlbmQuYnJ1c2giLG51bGwpLm9u
KCJrZXlkb3duLmJydXNoIixudWxsKS5vbigia2V5dXAuYnJ1c2giLG51bGwp
LHooKSx3KHt0eXBlOiJicnVzaGVuZCJ9KX12YXIgTSx4LGI9dGhpcyxfPWFv
LnNlbGVjdChhby5ldmVudC50YXJnZXQpLHc9bC5vZihiLGFyZ3VtZW50cyks
az1hby5zZWxlY3QoYiksTj1fLmRhdHVtKCksRT0hL14obnxzKSQvLnRlc3Qo
TikmJmMsQT0hL14oZXx3KSQvLnRlc3QoTikmJmYsQz1fLmNsYXNzZWQoImV4
dGVudCIpLHo9VyhiKSxMPWFvLm1vdXNlKGIpLHE9YW8uc2VsZWN0KHQoYikp
Lm9uKCJrZXlkb3duLmJydXNoIix1KS5vbigia2V5dXAuYnJ1c2giLHYpO2lm
KGFvLmV2ZW50LmNoYW5nZWRUb3VjaGVzP3Eub24oInRvdWNobW92ZS5icnVz
aCIsZCkub24oInRvdWNoZW5kLmJydXNoIixtKTpxLm9uKCJtb3VzZW1vdmUu
YnJ1c2giLGQpLm9uKCJtb3VzZXVwLmJydXNoIixtKSxrLmludGVycnVwdCgp
LnNlbGVjdEFsbCgiKiIpLmludGVycnVwdCgpLEMpTFswXT1zWzBdLUxbMF0s
TFsxXT1oWzBdLUxbMV07ZWxzZSBpZihOKXt2YXIgVD0rL3ckLy50ZXN0KE4p
LFI9Ky9ebi8udGVzdChOKTt4PVtzWzEtVF0tTFswXSxoWzEtUl0tTFsxXV0s
TFswXT1zW1RdLExbMV09aFtSXX1lbHNlIGFvLmV2ZW50LmFsdEtleSYmKE09
TC5zbGljZSgpKTtrLnN0eWxlKCJwb2ludGVyLWV2ZW50cyIsIm5vbmUiKS5z
ZWxlY3RBbGwoIi5yZXNpemUiKS5zdHlsZSgiZGlzcGxheSIsbnVsbCksYW8u
c2VsZWN0KCJib2R5Iikuc3R5bGUoImN1cnNvciIsXy5zdHlsZSgiY3Vyc29y
IikpLHcoe3R5cGU6ImJydXNoc3RhcnQifSksZCgpfXZhciBvLGEsbD1OKG4s
ImJydXNoc3RhcnQiLCJicnVzaCIsImJydXNoZW5kIiksYz1udWxsLGY9bnVs
bCxzPVswLDBdLGg9WzAsMF0scD0hMCxnPSEwLHY9QmxbMF07cmV0dXJuIG4u
ZXZlbnQ9ZnVuY3Rpb24obil7bi5lYWNoKGZ1bmN0aW9uKCl7dmFyIG49bC5v
Zih0aGlzLGFyZ3VtZW50cyksdD17eDpzLHk6aCxpOm8sajphfSxlPXRoaXMu
X19jaGFydF9ffHx0O3RoaXMuX19jaGFydF9fPXQsSGw/YW8uc2VsZWN0KHRo
aXMpLnRyYW5zaXRpb24oKS5lYWNoKCJzdGFydC5icnVzaCIsZnVuY3Rpb24o
KXtvPWUuaSxhPWUuaixzPWUueCxoPWUueSxuKHt0eXBlOiJicnVzaHN0YXJ0
In0pfSkudHdlZW4oImJydXNoOmJydXNoIixmdW5jdGlvbigpe3ZhciBlPXhy
KHMsdC54KSxyPXhyKGgsdC55KTtyZXR1cm4gbz1hPW51bGwsZnVuY3Rpb24o
aSl7cz10Lng9ZShpKSxoPXQueT1yKGkpLG4oe3R5cGU6ImJydXNoIixtb2Rl
OiJyZXNpemUifSl9fSkuZWFjaCgiZW5kLmJydXNoIixmdW5jdGlvbigpe289
dC5pLGE9dC5qLG4oe3R5cGU6ImJydXNoIixtb2RlOiJyZXNpemUifSksbih7
dHlwZToiYnJ1c2hlbmQifSl9KToobih7dHlwZToiYnJ1c2hzdGFydCJ9KSxu
KHt0eXBlOiJicnVzaCIsbW9kZToicmVzaXplIn0pLG4oe3R5cGU6ImJydXNo
ZW5kIn0pKX0pfSxuLng9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KGM9dCx2PUJsWyFjPDwxfCFmXSxuKTpjfSxuLnk9ZnVuY3Rpb24o
dCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9dCx2PUJsWyFjPDwxfCFm
XSxuKTpmfSxuLmNsYW1wPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhjJiZmPyhwPSEhdFswXSxnPSEhdFsxXSk6Yz9wPSEhdDpmJiYo
Zz0hIXQpLG4pOmMmJmY/W3AsZ106Yz9wOmY/ZzpudWxsfSxuLmV4dGVudD1m
dW5jdGlvbih0KXt2YXIgZSxyLGksdSxsO3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhjJiYoZT10WzBdLHI9dFsxXSxmJiYoZT1lWzBdLHI9clswXSksbz1b
ZSxyXSxjLmludmVydCYmKGU9YyhlKSxyPWMocikpLGU+ciYmKGw9ZSxlPXIs
cj1sKSxlPT1zWzBdJiZyPT1zWzFdfHwocz1bZSxyXSkpLGYmJihpPXRbMF0s
dT10WzFdLGMmJihpPWlbMV0sdT11WzFdKSxhPVtpLHVdLGYuaW52ZXJ0JiYo
aT1mKGkpLHU9Zih1KSksaT51JiYobD1pLGk9dSx1PWwpLGk9PWhbMF0mJnU9
PWhbMV18fChoPVtpLHVdKSksbik6KGMmJihvPyhlPW9bMF0scj1vWzFdKToo
ZT1zWzBdLHI9c1sxXSxjLmludmVydCYmKGU9Yy5pbnZlcnQoZSkscj1jLmlu
dmVydChyKSksZT5yJiYobD1lLGU9cixyPWwpKSksZiYmKGE/KGk9YVswXSx1
PWFbMV0pOihpPWhbMF0sdT1oWzFdLGYuaW52ZXJ0JiYoaT1mLmludmVydChp
KSx1PWYuaW52ZXJ0KHUpKSxpPnUmJihsPWksaT11LHU9bCkpKSxjJiZmP1tb
ZSxpXSxbcix1XV06Yz9bZSxyXTpmJiZbaSx1XSl9LG4uY2xlYXI9ZnVuY3Rp
b24oKXtyZXR1cm4gbi5lbXB0eSgpfHwocz1bMCwwXSxoPVswLDBdLG89YT1u
dWxsKSxufSxuLmVtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuISFjJiZzWzBdPT1z
WzFdfHwhIWYmJmhbMF09PWhbMV19LGFvLnJlYmluZChuLGwsIm9uIil9O3Zh
ciAkbD17bjoibnMtcmVzaXplIixlOiJldy1yZXNpemUiLHM6Im5zLXJlc2l6
ZSIsdzoiZXctcmVzaXplIixudzoibndzZS1yZXNpemUiLG5lOiJuZXN3LXJl
c2l6ZSIsc2U6Im53c2UtcmVzaXplIixzdzoibmVzdy1yZXNpemUifSxCbD1b
WyJuIiwiZSIsInMiLCJ3IiwibnciLCJuZSIsInNlIiwic3ciXSxbImUiLCJ3
Il0sWyJuIiwicyJdLFtdXSxXbD1nYS5mb3JtYXQ9eGEudGltZUZvcm1hdCxK
bD1XbC51dGMsR2w9SmwoIiVZLSVtLSVkVCVIOiVNOiVTLiVMWiIpO1dsLmlz
bz1EYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZyYmK25ldyBEYXRlKCIyMDAw
LTAxLTAxVDAwOjAwOjAwLjAwMFoiKT9lbzpHbCxlby5wYXJzZT1mdW5jdGlv
bihuKXt2YXIgdD1uZXcgRGF0ZShuKTtyZXR1cm4gaXNOYU4odCk/bnVsbDp0
fSxlby50b1N0cmluZz1HbC50b1N0cmluZyxnYS5zZWNvbmQ9T24oZnVuY3Rp
b24obil7cmV0dXJuIG5ldyB2YSgxZTMqTWF0aC5mbG9vcihuLzFlMykpfSxm
dW5jdGlvbihuLHQpe24uc2V0VGltZShuLmdldFRpbWUoKSsxZTMqTWF0aC5m
bG9vcih0KSl9LGZ1bmN0aW9uKG4pe3JldHVybiBuLmdldFNlY29uZHMoKX0p
LGdhLnNlY29uZHM9Z2Euc2Vjb25kLnJhbmdlLGdhLnNlY29uZHMudXRjPWdh
LnNlY29uZC51dGMucmFuZ2UsZ2EubWludXRlPU9uKGZ1bmN0aW9uKG4pe3Jl
dHVybiBuZXcgdmEoNmU0Kk1hdGguZmxvb3Iobi82ZTQpKX0sZnVuY3Rpb24o
bix0KXtuLnNldFRpbWUobi5nZXRUaW1lKCkrNmU0Kk1hdGguZmxvb3IodCkp
fSxmdW5jdGlvbihuKXtyZXR1cm4gbi5nZXRNaW51dGVzKCl9KSxnYS5taW51
dGVzPWdhLm1pbnV0ZS5yYW5nZSxnYS5taW51dGVzLnV0Yz1nYS5taW51dGUu
dXRjLnJhbmdlLGdhLmhvdXI9T24oZnVuY3Rpb24obil7dmFyIHQ9bi5nZXRU
aW1lem9uZU9mZnNldCgpLzYwO3JldHVybiBuZXcgdmEoMzZlNSooTWF0aC5m
bG9vcihuLzM2ZTUtdCkrdCkpfSxmdW5jdGlvbihuLHQpe24uc2V0VGltZShu
LmdldFRpbWUoKSszNmU1Kk1hdGguZmxvb3IodCkpfSxmdW5jdGlvbihuKXty
ZXR1cm4gbi5nZXRIb3VycygpfSksZ2EuaG91cnM9Z2EuaG91ci5yYW5nZSxn
YS5ob3Vycy51dGM9Z2EuaG91ci51dGMucmFuZ2UsZ2EubW9udGg9T24oZnVu
Y3Rpb24obil7cmV0dXJuIG49Z2EuZGF5KG4pLG4uc2V0RGF0ZSgxKSxufSxm
dW5jdGlvbihuLHQpe24uc2V0TW9udGgobi5nZXRNb250aCgpK3QpfSxmdW5j
dGlvbihuKXtyZXR1cm4gbi5nZXRNb250aCgpfSksZ2EubW9udGhzPWdhLm1v
bnRoLnJhbmdlLGdhLm1vbnRocy51dGM9Z2EubW9udGgudXRjLnJhbmdlO3Zh
ciBLbD1bMWUzLDVlMywxNWUzLDNlNCw2ZTQsM2U1LDllNSwxOGU1LDM2ZTUs
MTA4ZTUsMjE2ZTUsNDMyZTUsODY0ZTUsMTcyOGU1LDYwNDhlNSwyNTkyZTYs
Nzc3NmU2LDMxNTM2ZTZdLFFsPVtbZ2Euc2Vjb25kLDFdLFtnYS5zZWNvbmQs
NV0sW2dhLnNlY29uZCwxNV0sW2dhLnNlY29uZCwzMF0sW2dhLm1pbnV0ZSwx
XSxbZ2EubWludXRlLDVdLFtnYS5taW51dGUsMTVdLFtnYS5taW51dGUsMzBd
LFtnYS5ob3VyLDFdLFtnYS5ob3VyLDNdLFtnYS5ob3VyLDZdLFtnYS5ob3Vy
LDEyXSxbZ2EuZGF5LDFdLFtnYS5kYXksMl0sW2dhLndlZWssMV0sW2dhLm1v
bnRoLDFdLFtnYS5tb250aCwzXSxbZ2EueWVhciwxXV0sbmM9V2wubXVsdGko
W1siLiVMIixmdW5jdGlvbihuKXtyZXR1cm4gbi5nZXRNaWxsaXNlY29uZHMo
KX1dLFsiOiVTIixmdW5jdGlvbihuKXtyZXR1cm4gbi5nZXRTZWNvbmRzKCl9
XSxbIiVJOiVNIixmdW5jdGlvbihuKXtyZXR1cm4gbi5nZXRNaW51dGVzKCl9
XSxbIiVJICVwIixmdW5jdGlvbihuKXtyZXR1cm4gbi5nZXRIb3VycygpfV0s
WyIlYSAlZCIsZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0RGF5KCkmJjEhPW4u
Z2V0RGF0ZSgpfV0sWyIlYiAlZCIsZnVuY3Rpb24obil7cmV0dXJuIDEhPW4u
Z2V0RGF0ZSgpfV0sWyIlQiIsZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0TW9u
dGgoKX1dLFsiJVkiLHp0XV0pLHRjPXtyYW5nZTpmdW5jdGlvbihuLHQsZSl7
cmV0dXJuIGFvLnJhbmdlKE1hdGguY2VpbChuL2UpKmUsK3QsZSkubWFwKGlv
KX0sZmxvb3I6bSxjZWlsOm19O1FsLnllYXI9Z2EueWVhcixnYS5zY2FsZT1m
dW5jdGlvbigpe3JldHVybiBybyhhby5zY2FsZS5saW5lYXIoKSxRbCxuYyl9
O3ZhciBlYz1RbC5tYXAoZnVuY3Rpb24obil7cmV0dXJuW25bMF0udXRjLG5b
MV1dfSkscmM9SmwubXVsdGkoW1siLiVMIixmdW5jdGlvbihuKXtyZXR1cm4g
bi5nZXRVVENNaWxsaXNlY29uZHMoKX1dLFsiOiVTIixmdW5jdGlvbihuKXty
ZXR1cm4gbi5nZXRVVENTZWNvbmRzKCl9XSxbIiVJOiVNIixmdW5jdGlvbihu
KXtyZXR1cm4gbi5nZXRVVENNaW51dGVzKCl9XSxbIiVJICVwIixmdW5jdGlv
bihuKXtyZXR1cm4gbi5nZXRVVENIb3VycygpfV0sWyIlYSAlZCIsZnVuY3Rp
b24obil7cmV0dXJuIG4uZ2V0VVRDRGF5KCkmJjEhPW4uZ2V0VVRDRGF0ZSgp
fV0sWyIlYiAlZCIsZnVuY3Rpb24obil7cmV0dXJuIDEhPW4uZ2V0VVRDRGF0
ZSgpfV0sWyIlQiIsZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0VVRDTW9udGgo
KX1dLFsiJVkiLHp0XV0pO2VjLnllYXI9Z2EueWVhci51dGMsZ2Euc2NhbGUu
dXRjPWZ1bmN0aW9uKCl7cmV0dXJuIHJvKGFvLnNjYWxlLmxpbmVhcigpLGVj
LHJjKX0sYW8udGV4dD1BbihmdW5jdGlvbihuKXtyZXR1cm4gbi5yZXNwb25z
ZVRleHR9KSxhby5qc29uPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIENuKG4sImFw
cGxpY2F0aW9uL2pzb24iLHVvLHQpfSxhby5odG1sPWZ1bmN0aW9uKG4sdCl7
cmV0dXJuIENuKG4sInRleHQvaHRtbCIsb28sdCl9LGFvLnhtbD1BbihmdW5j
dGlvbihuKXtyZXR1cm4gbi5yZXNwb25zZVhNTH0pLCJmdW5jdGlvbiI9PXR5
cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/KHRoaXMuZDM9YW8sZGVmaW5lKGFv
KSk6Im9iamVjdCI9PXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzP21v
ZHVsZS5leHBvcnRzPWFvOnRoaXMuZDM9YW99KCk7
'></script><script src='data:text/javascript;base64,LyoqCiAqIEBsaWNlbnNlCiAqIExvLURhc2ggMS4zLjEgKEN1c3RvbSBCdWls
ZCkgbG9kYXNoLmNvbS9saWNlbnNlCiAqIEJ1aWxkOiBgbG9kYXNoIG1vZGVy
biAtbyAuL2Rpc3QvbG9kYXNoLmpzYAogKiBVbmRlcnNjb3JlLmpzIDEuNC40
IHVuZGVyc2NvcmVqcy5vcmcvTElDRU5TRQogKi8KOyFmdW5jdGlvbihuKXtm
dW5jdGlvbiB0KG4sdCxlKXtlPShlfHwwKS0xO2Zvcih2YXIgcj1uLmxlbmd0
aDsrK2U8cjspaWYobltlXT09PXQpcmV0dXJuIGU7cmV0dXJuLTF9ZnVuY3Rp
b24gZShuLGUpe3ZhciByPXR5cGVvZiBlO2lmKG49bi5rLCJib29sZWFuIj09
cnx8ZT09aClyZXR1cm4gbltlXTsibnVtYmVyIiE9ciYmInN0cmluZyIhPXIm
JihyPSJvYmplY3QiKTt2YXIgdT0ibnVtYmVyIj09cj9lOmorZTtyZXR1cm4g
bj1uW3JdfHwobltyXT17fSksIm9iamVjdCI9PXI/blt1XSYmLTE8dChuW3Vd
LGUpPzA6LTE6blt1XT8wOi0xfWZ1bmN0aW9uIHIobil7dmFyIHQ9dGhpcy5r
LGU9dHlwZW9mIG47aWYoImJvb2xlYW4iPT1lfHxuPT1oKXRbbl09eTtlbHNl
eyJudW1iZXIiIT1lJiYic3RyaW5nIiE9ZSYmKGU9Im9iamVjdCIpO3ZhciBy
PSJudW1iZXIiPT1lP246aituLHU9dFtlXXx8KHRbZV09e30pOyJvYmplY3Qi
PT1lPyh1W3JdfHwodVtyXT1bXSkpLnB1c2gobik9PXRoaXMuYi5sZW5ndGgm
Jih0W2VdPWIpOnVbcl09eQp9fWZ1bmN0aW9uIHUobil7cmV0dXJuIG4uY2hh
ckNvZGVBdCgwKX1mdW5jdGlvbiBhKG4sdCl7dmFyIGU9bi5tLHI9dC5tO2lm
KG49bi5sLHQ9dC5sLG4hPT10KXtpZihuPnR8fHR5cGVvZiBuPT0idW5kZWZp
bmVkIilyZXR1cm4gMTtpZihuPHR8fHR5cGVvZiB0PT0idW5kZWZpbmVkIily
ZXR1cm4tMX1yZXR1cm4gZTxyPy0xOjF9ZnVuY3Rpb24gbyhuKXt2YXIgdD0t
MSxlPW4ubGVuZ3RoLHU9bCgpO3VbImZhbHNlIl09dVsibnVsbCJdPXVbInRy
dWUiXT11LnVuZGVmaW5lZD1iO3ZhciBhPWwoKTtmb3IoYS5iPW4sYS5rPXUs
YS5wdXNoPXI7Kyt0PGU7KWEucHVzaChuW3RdKTtyZXR1cm4gdS5vYmplY3Q9
PT1mYWxzZT8ocChhKSxoKTphfWZ1bmN0aW9uIGkobil7cmV0dXJuIlxcIitR
W25dfWZ1bmN0aW9uIGYoKXtyZXR1cm4gbS5wb3AoKXx8W119ZnVuY3Rpb24g
bCgpe3JldHVybiBkLnBvcCgpfHx7YjpoLGs6aCxsOmgsImZhbHNlIjpiLG06
MCxsZWFkaW5nOmIsbWF4V2FpdDowLCJudWxsIjpiLG51bWJlcjpoLG9iamVj
dDpoLHB1c2g6aCxzdHJpbmc6aCx0cmFpbGluZzpiLCJ0cnVlIjpiLHVuZGVm
aW5lZDpiLG46aH0KfWZ1bmN0aW9uIGMobil7bi5sZW5ndGg9MCxtLmxlbmd0
aDxDJiZtLnB1c2gobil9ZnVuY3Rpb24gcChuKXt2YXIgdD1uLms7dCYmcCh0
KSxuLmI9bi5rPW4ubD1uLm9iamVjdD1uLm51bWJlcj1uLnN0cmluZz1uLm49
aCxkLmxlbmd0aDxDJiZkLnB1c2gobil9ZnVuY3Rpb24gcyhuLHQsZSl7dHx8
KHQ9MCksdHlwZW9mIGU9PSJ1bmRlZmluZWQiJiYoZT1uP24ubGVuZ3RoOjAp
O3ZhciByPS0xO2U9ZS10fHwwO2Zvcih2YXIgdT1BcnJheSgwPmU/MDplKTsr
K3I8ZTspdVtyXT1uW3Qrcl07cmV0dXJuIHV9ZnVuY3Rpb24gdihyKXtmdW5j
dGlvbiBtKG4pe2lmKCFufHx2ZS5jYWxsKG4pIT1WKXJldHVybiBiO3ZhciB0
PW4udmFsdWVPZixlPXR5cGVvZiB0PT0iZnVuY3Rpb24iJiYoZT1mZSh0KSkm
JmZlKGUpO3JldHVybiBlP249PWV8fGZlKG4pPT1lOml0KG4pfWZ1bmN0aW9u
IGQobix0LGUpe2lmKCFufHwhTFt0eXBlb2Ygbl0pcmV0dXJuIG47dD10JiZ0
eXBlb2YgZT09InVuZGVmaW5lZCI/dDp0dC5jcmVhdGVDYWxsYmFjayh0LGUp
Owpmb3IodmFyIHI9LTEsdT1MW3R5cGVvZiBuXSYmU2UobiksYT11P3UubGVu
Z3RoOjA7KytyPGEmJihlPXVbcl0sISh0KG5bZV0sZSxuKT09PWZhbHNlKSk7
KTtyZXR1cm4gbn1mdW5jdGlvbiBDKG4sdCxlKXt2YXIgcjtpZighbnx8IUxb
dHlwZW9mIG5dKXJldHVybiBuO3Q9dCYmdHlwZW9mIGU9PSJ1bmRlZmluZWQi
P3Q6dHQuY3JlYXRlQ2FsbGJhY2sodCxlKTtmb3IociBpbiBuKWlmKHQoblty
XSxyLG4pPT09ZmFsc2UpYnJlYWs7cmV0dXJuIG59ZnVuY3Rpb24gUShuLHQs
ZSl7dmFyIHIsdT1uLGE9dTtpZighdSlyZXR1cm4gYTtmb3IodmFyIG89YXJn
dW1lbnRzLGk9MCxmPXR5cGVvZiBlPT0ibnVtYmVyIj8yOm8ubGVuZ3RoOysr
aTxmOylpZigodT1vW2ldKSYmTFt0eXBlb2YgdV0pZm9yKHZhciBsPS0xLGM9
TFt0eXBlb2YgdV0mJlNlKHUpLHA9Yz9jLmxlbmd0aDowOysrbDxwOylyPWNb
bF0sInVuZGVmaW5lZCI9PXR5cGVvZiBhW3JdJiYoYVtyXT11W3JdKTtyZXR1
cm4gYX1mdW5jdGlvbiBYKG4sdCxlKXt2YXIgcix1PW4sYT11OwppZighdSly
ZXR1cm4gYTt2YXIgbz1hcmd1bWVudHMsaT0wLGY9dHlwZW9mIGU9PSJudW1i
ZXIiPzI6by5sZW5ndGg7aWYoMzxmJiYiZnVuY3Rpb24iPT10eXBlb2Ygb1tm
LTJdKXZhciBsPXR0LmNyZWF0ZUNhbGxiYWNrKG9bLS1mLTFdLG9bZi0tXSwy
KTtlbHNlIDI8ZiYmImZ1bmN0aW9uIj09dHlwZW9mIG9bZi0xXSYmKGw9b1st
LWZdKTtmb3IoOysraTxmOylpZigodT1vW2ldKSYmTFt0eXBlb2YgdV0pZm9y
KHZhciBjPS0xLHA9TFt0eXBlb2YgdV0mJlNlKHUpLHM9cD9wLmxlbmd0aDow
OysrYzxzOylyPXBbY10sYVtyXT1sP2woYVtyXSx1W3JdKTp1W3JdO3JldHVy
biBhfWZ1bmN0aW9uIFoobil7dmFyIHQsZT1bXTtpZighbnx8IUxbdHlwZW9m
IG5dKXJldHVybiBlO2Zvcih0IGluIG4pbGUuY2FsbChuLHQpJiZlLnB1c2go
dCk7cmV0dXJuIGV9ZnVuY3Rpb24gdHQobil7cmV0dXJuIG4mJnR5cGVvZiBu
PT0ib2JqZWN0IiYmIUVlKG4pJiZsZS5jYWxsKG4sIl9fd3JhcHBlZF9fIik/
bjpuZXcgZXQobikKfWZ1bmN0aW9uIGV0KG4pe3RoaXMuX193cmFwcGVkX189
bn1mdW5jdGlvbiBydChuLHQsZSxyKXtmdW5jdGlvbiB1KCl7dmFyIHI9YXJn
dW1lbnRzLGw9bz90aGlzOnQ7cmV0dXJuIGF8fChuPXRbaV0pLGUubGVuZ3Ro
JiYocj1yLmxlbmd0aD8ocj1DZS5jYWxsKHIpLGY/ci5jb25jYXQoZSk6ZS5j
b25jYXQocikpOmUpLHRoaXMgaW5zdGFuY2VvZiB1PyhsPWd0KG4ucHJvdG90
eXBlKT95ZShuLnByb3RvdHlwZSk6e30scj1uLmFwcGx5KGwsciksZ3Qocik/
cjpsKTpuLmFwcGx5KGwscil9dmFyIGE9dnQobiksbz0hZSxpPXQ7aWYobyl7
dmFyIGY9cjtlPXR9ZWxzZSBpZighYSl7aWYoIXIpdGhyb3cgbmV3IFl0O3Q9
bn1yZXR1cm4gdX1mdW5jdGlvbiB1dChuKXtyZXR1cm4gSWVbbl19ZnVuY3Rp
b24gYXQoKXt2YXIgbj0obj10dC5pbmRleE9mKT09PSR0P3Q6bjtyZXR1cm4g
bn1mdW5jdGlvbiBvdChuKXtyZXR1cm4gZnVuY3Rpb24odCxlLHIsdSl7cmV0
dXJuIHR5cGVvZiBlIT0iYm9vbGVhbiImJmUhPWgmJih1PXIscj11JiZ1W2Vd
PT09dD9nOmUsZT1iKSxyIT1oJiYocj10dC5jcmVhdGVDYWxsYmFjayhyLHUp
KSxuKHQsZSxyLHUpCn19ZnVuY3Rpb24gaXQobil7dmFyIHQsZTtyZXR1cm4g
biYmdmUuY2FsbChuKT09ViYmKHQ9bi5jb25zdHJ1Y3RvciwhdnQodCl8fHQg
aW5zdGFuY2VvZiB0KT8oQyhuLGZ1bmN0aW9uKG4sdCl7ZT10fSksZT09PWd8
fGxlLmNhbGwobixlKSk6Yn1mdW5jdGlvbiBmdChuKXtyZXR1cm4gQWVbbl19
ZnVuY3Rpb24gbHQobix0LGUscix1LGEpe3ZhciBvPW47aWYodHlwZW9mIHQh
PSJib29sZWFuIiYmdCE9aCYmKHI9ZSxlPXQsdD1iKSx0eXBlb2YgZT09ImZ1
bmN0aW9uIil7aWYoZT10eXBlb2Ygcj09InVuZGVmaW5lZCI/ZTp0dC5jcmVh
dGVDYWxsYmFjayhlLHIsMSksbz1lKG8pLHR5cGVvZiBvIT0idW5kZWZpbmVk
IilyZXR1cm4gbztvPW59aWYocj1ndChvKSl7dmFyIGk9dmUuY2FsbChvKTtp
ZighSltpXSlyZXR1cm4gbzt2YXIgbD1FZShvKX1pZighcnx8IXQpcmV0dXJu
IHI/bD9zKG8pOlgoe30sbyk6bztzd2l0Y2gocj14ZVtpXSxpKXtjYXNlIFA6
Y2FzZSBLOnJldHVybiBuZXcgcigrbyk7CmNhc2UgVTpjYXNlIEg6cmV0dXJu
IG5ldyByKG8pO2Nhc2UgRzpyZXR1cm4gcihvLnNvdXJjZSxBLmV4ZWMobykp
fWk9IXUsdXx8KHU9ZigpKSxhfHwoYT1mKCkpO2Zvcih2YXIgcD11Lmxlbmd0
aDtwLS07KWlmKHVbcF09PW4pcmV0dXJuIGFbcF07cmV0dXJuIG89bD9yKG8u
bGVuZ3RoKTp7fSxsJiYobGUuY2FsbChuLCJpbmRleCIpJiYoby5pbmRleD1u
LmluZGV4KSxsZS5jYWxsKG4sImlucHV0IikmJihvLmlucHV0PW4uaW5wdXQp
KSx1LnB1c2gobiksYS5wdXNoKG8pLChsP3d0OmQpKG4sZnVuY3Rpb24obixy
KXtvW3JdPWx0KG4sdCxlLGcsdSxhKX0pLGkmJihjKHUpLGMoYSkpLG99ZnVu
Y3Rpb24gY3Qobil7dmFyIHQ9W107cmV0dXJuIEMobixmdW5jdGlvbihuLGUp
e3Z0KG4pJiZ0LnB1c2goZSl9KSx0LnNvcnQoKX1mdW5jdGlvbiBwdChuKXtm
b3IodmFyIHQ9LTEsZT1TZShuKSxyPWUubGVuZ3RoLHU9e307Kyt0PHI7KXt2
YXIgYT1lW3RdO3VbblthXV09YX1yZXR1cm4gdX1mdW5jdGlvbiBzdChuLHQs
ZSxyLHUsYSl7dmFyIG89ZT09PWs7CmlmKHR5cGVvZiBlPT0iZnVuY3Rpb24i
JiYhbyl7ZT10dC5jcmVhdGVDYWxsYmFjayhlLHIsMik7dmFyIGk9ZShuLHQp
O2lmKHR5cGVvZiBpIT0idW5kZWZpbmVkIilyZXR1cm4hIWl9aWYobj09PXQp
cmV0dXJuIDAhPT1ufHwxL249PTEvdDt2YXIgbD10eXBlb2YgbixwPXR5cGVv
ZiB0O2lmKG49PT1uJiYoIW58fCJmdW5jdGlvbiIhPWwmJiJvYmplY3QiIT1s
KSYmKCF0fHwiZnVuY3Rpb24iIT1wJiYib2JqZWN0IiE9cCkpcmV0dXJuIGI7
aWYobj09aHx8dD09aClyZXR1cm4gbj09PXQ7aWYocD12ZS5jYWxsKG4pLGw9
dmUuY2FsbCh0KSxwPT16JiYocD1WKSxsPT16JiYobD1WKSxwIT1sKXJldHVy
biBiO3N3aXRjaChwKXtjYXNlIFA6Y2FzZSBLOnJldHVybituPT0rdDtjYXNl
IFU6cmV0dXJuIG4hPStuP3QhPSt0OjA9PW4/MS9uPT0xL3Q6bj09K3Q7Y2Fz
ZSBHOmNhc2UgSDpyZXR1cm4gbj09WHQodCl9aWYobD1wPT1XLCFsKXtpZihs
ZS5jYWxsKG4sIl9fd3JhcHBlZF9fIil8fGxlLmNhbGwodCwiX193cmFwcGVk
X18iKSlyZXR1cm4gc3Qobi5fX3dyYXBwZWRfX3x8bix0Ll9fd3JhcHBlZF9f
fHx0LGUscix1LGEpOwppZihwIT1WKXJldHVybiBiO3ZhciBwPW4uY29uc3Ry
dWN0b3Iscz10LmNvbnN0cnVjdG9yO2lmKHAhPXMmJighdnQocCl8fCEocCBp
bnN0YW5jZW9mIHAmJnZ0KHMpJiZzIGluc3RhbmNlb2YgcykpKXJldHVybiBi
fWZvcihzPSF1LHV8fCh1PWYoKSksYXx8KGE9ZigpKSxwPXUubGVuZ3RoO3At
LTspaWYodVtwXT09bilyZXR1cm4gYVtwXT09dDt2YXIgdj0wLGk9eTtpZih1
LnB1c2gobiksYS5wdXNoKHQpLGwpe2lmKHA9bi5sZW5ndGgsdj10Lmxlbmd0
aCxpPXY9PW4ubGVuZ3RoLCFpJiYhbylyZXR1cm4gaTtmb3IoO3YtLTspaWYo
bD1wLHM9dFt2XSxvKWZvcig7bC0tJiYhKGk9c3QobltsXSxzLGUscix1LGEp
KTspO2Vsc2UgaWYoIShpPXN0KG5bdl0scyxlLHIsdSxhKSkpYnJlYWs7cmV0
dXJuIGl9cmV0dXJuIEModCxmdW5jdGlvbih0LG8sZil7cmV0dXJuIGxlLmNh
bGwoZixvKT8odisrLGk9bGUuY2FsbChuLG8pJiZzdChuW29dLHQsZSxyLHUs
YSkpOnZvaWQgMH0pLGkmJiFvJiZDKG4sZnVuY3Rpb24obix0LGUpe3JldHVy
biBsZS5jYWxsKGUsdCk/aT0tMTwtLXY6dm9pZCAwCn0pLHMmJihjKHUpLGMo
YSkpLGl9ZnVuY3Rpb24gdnQobil7cmV0dXJuIHR5cGVvZiBuPT0iZnVuY3Rp
b24ifWZ1bmN0aW9uIGd0KG4pe3JldHVybiEoIW58fCFMW3R5cGVvZiBuXSl9
ZnVuY3Rpb24geXQobil7cmV0dXJuIHR5cGVvZiBuPT0ibnVtYmVyInx8dmUu
Y2FsbChuKT09VX1mdW5jdGlvbiBodChuKXtyZXR1cm4gdHlwZW9mIG49PSJz
dHJpbmcifHx2ZS5jYWxsKG4pPT1IfWZ1bmN0aW9uIGJ0KG4sdCxlKXt2YXIg
cj1hcmd1bWVudHMsdT0wLGE9MjtpZighZ3QobikpcmV0dXJuIG47aWYoZT09
PWspdmFyIG89clszXSxpPXJbNF0sbD1yWzVdO2Vsc2V7dmFyIHA9eSxpPWYo
KSxsPWYoKTt0eXBlb2YgZSE9Im51bWJlciImJihhPXIubGVuZ3RoKSwzPGEm
JiJmdW5jdGlvbiI9PXR5cGVvZiByW2EtMl0/bz10dC5jcmVhdGVDYWxsYmFj
ayhyWy0tYS0xXSxyW2EtLV0sMik6MjxhJiYiZnVuY3Rpb24iPT10eXBlb2Yg
clthLTFdJiYobz1yWy0tYV0pfWZvcig7Kyt1PGE7KShFZShyW3VdKT93dDpk
KShyW3VdLGZ1bmN0aW9uKHQsZSl7dmFyIHIsdSxhPXQsZj1uW2VdOwppZih0
JiYoKHU9RWUodCkpfHxtKHQpKSl7Zm9yKGE9aS5sZW5ndGg7YS0tOylpZihy
PWlbYV09PXQpe2Y9bFthXTticmVha31pZighcil7dmFyIGM7byYmKGE9byhm
LHQpLGM9dHlwZW9mIGEhPSJ1bmRlZmluZWQiKSYmKGY9YSksY3x8KGY9dT9F
ZShmKT9mOltdOm0oZik/Zjp7fSksaS5wdXNoKHQpLGwucHVzaChmKSxjfHwo
Zj1idChmLHQsayxvLGksbCkpfX1lbHNlIG8mJihhPW8oZix0KSx0eXBlb2Yg
YT09InVuZGVmaW5lZCImJihhPXQpKSx0eXBlb2YgYSE9InVuZGVmaW5lZCIm
JihmPWEpO25bZV09Zn0pO3JldHVybiBwJiYoYyhpKSxjKGwpKSxufWZ1bmN0
aW9uIG10KG4pe2Zvcih2YXIgdD0tMSxlPVNlKG4pLHI9ZS5sZW5ndGgsdT1N
dChyKTsrK3Q8cjspdVt0XT1uW2VbdF1dO3JldHVybiB1fWZ1bmN0aW9uIGR0
KG4sdCxlKXt2YXIgcj0tMSx1PWF0KCksYT1uP24ubGVuZ3RoOjAsbz1iO3Jl
dHVybiBlPSgwPmU/X2UoMCxhK2UpOmUpfHwwLGEmJnR5cGVvZiBhPT0ibnVt
YmVyIj9vPS0xPChodChuKT9uLmluZGV4T2YodCxlKTp1KG4sdCxlKSk6ZChu
LGZ1bmN0aW9uKG4pe3JldHVybisrcjxlP3ZvaWQgMDohKG89bj09PXQpCn0p
LG99ZnVuY3Rpb24gX3Qobix0LGUpe3ZhciByPXk7dD10dC5jcmVhdGVDYWxs
YmFjayh0LGUpLGU9LTE7dmFyIHU9bj9uLmxlbmd0aDowO2lmKHR5cGVvZiB1
PT0ibnVtYmVyIilmb3IoOysrZTx1JiYocj0hIXQobltlXSxlLG4pKTspO2Vs
c2UgZChuLGZ1bmN0aW9uKG4sZSx1KXtyZXR1cm4gcj0hIXQobixlLHUpfSk7
cmV0dXJuIHJ9ZnVuY3Rpb24ga3Qobix0LGUpe3ZhciByPVtdO3Q9dHQuY3Jl
YXRlQ2FsbGJhY2sodCxlKSxlPS0xO3ZhciB1PW4/bi5sZW5ndGg6MDtpZih0
eXBlb2YgdT09Im51bWJlciIpZm9yKDsrK2U8dTspe3ZhciBhPW5bZV07dChh
LGUsbikmJnIucHVzaChhKX1lbHNlIGQobixmdW5jdGlvbihuLGUsdSl7dChu
LGUsdSkmJnIucHVzaChuKX0pO3JldHVybiByfWZ1bmN0aW9uIGp0KG4sdCxl
KXt0PXR0LmNyZWF0ZUNhbGxiYWNrKHQsZSksZT0tMTt2YXIgcj1uP24ubGVu
Z3RoOjA7aWYodHlwZW9mIHIhPSJudW1iZXIiKXt2YXIgdTtyZXR1cm4gZChu
LGZ1bmN0aW9uKG4sZSxyKXtyZXR1cm4gdChuLGUscik/KHU9bixiKTp2b2lk
IDAKfSksdX1mb3IoOysrZTxyOyl7dmFyIGE9bltlXTtpZih0KGEsZSxuKSly
ZXR1cm4gYX19ZnVuY3Rpb24gd3Qobix0LGUpe3ZhciByPS0xLHU9bj9uLmxl
bmd0aDowO2lmKHQ9dCYmdHlwZW9mIGU9PSJ1bmRlZmluZWQiP3Q6dHQuY3Jl
YXRlQ2FsbGJhY2sodCxlKSx0eXBlb2YgdT09Im51bWJlciIpZm9yKDsrK3I8
dSYmdChuW3JdLHIsbikhPT1mYWxzZTspO2Vsc2UgZChuLHQpO3JldHVybiBu
fWZ1bmN0aW9uIEN0KG4sdCxlKXt2YXIgcj0tMSx1PW4/bi5sZW5ndGg6MDtp
Zih0PXR0LmNyZWF0ZUNhbGxiYWNrKHQsZSksdHlwZW9mIHU9PSJudW1iZXIi
KWZvcih2YXIgYT1NdCh1KTsrK3I8dTspYVtyXT10KG5bcl0scixuKTtlbHNl
IGE9W10sZChuLGZ1bmN0aW9uKG4sZSx1KXthWysrcl09dChuLGUsdSl9KTty
ZXR1cm4gYX1mdW5jdGlvbiB4dChuLHQsZSl7dmFyIHI9LTEvMCxhPXI7aWYo
IXQmJkVlKG4pKXtlPS0xO2Zvcih2YXIgbz1uLmxlbmd0aDsrK2U8bzspe3Zh
ciBpPW5bZV07aT5hJiYoYT1pKQp9fWVsc2UgdD0hdCYmaHQobik/dTp0dC5j
cmVhdGVDYWxsYmFjayh0LGUpLHd0KG4sZnVuY3Rpb24obixlLHUpe2U9dChu
LGUsdSksZT5yJiYocj1lLGE9bil9KTtyZXR1cm4gYX1mdW5jdGlvbiBPdChu
LHQpe3ZhciBlPS0xLHI9bj9uLmxlbmd0aDowO2lmKHR5cGVvZiByPT0ibnVt
YmVyIilmb3IodmFyIHU9TXQocik7KytlPHI7KXVbZV09bltlXVt0XTtyZXR1
cm4gdXx8Q3Qobix0KX1mdW5jdGlvbiBFdChuLHQsZSxyKXtpZighbilyZXR1
cm4gZTt2YXIgdT0zPmFyZ3VtZW50cy5sZW5ndGg7dD10dC5jcmVhdGVDYWxs
YmFjayh0LHIsNCk7dmFyIGE9LTEsbz1uLmxlbmd0aDtpZih0eXBlb2Ygbz09
Im51bWJlciIpZm9yKHUmJihlPW5bKythXSk7KythPG87KWU9dChlLG5bYV0s
YSxuKTtlbHNlIGQobixmdW5jdGlvbihuLHIsYSl7ZT11Pyh1PWIsbik6dChl
LG4scixhKX0pO3JldHVybiBlfWZ1bmN0aW9uIFN0KG4sdCxlLHIpe3ZhciB1
PW4/bi5sZW5ndGg6MCxhPTM+YXJndW1lbnRzLmxlbmd0aDsKaWYodHlwZW9m
IHUhPSJudW1iZXIiKXZhciBvPVNlKG4pLHU9by5sZW5ndGg7cmV0dXJuIHQ9
dHQuY3JlYXRlQ2FsbGJhY2sodCxyLDQpLHd0KG4sZnVuY3Rpb24ocixpLGYp
e2k9bz9vWy0tdV06LS11LGU9YT8oYT1iLG5baV0pOnQoZSxuW2ldLGksZil9
KSxlfWZ1bmN0aW9uIEl0KG4sdCxlKXt2YXIgcjt0PXR0LmNyZWF0ZUNhbGxi
YWNrKHQsZSksZT0tMTt2YXIgdT1uP24ubGVuZ3RoOjA7aWYodHlwZW9mIHU9
PSJudW1iZXIiKWZvcig7KytlPHUmJiEocj10KG5bZV0sZSxuKSk7KTtlbHNl
IGQobixmdW5jdGlvbihuLGUsdSl7cmV0dXJuIShyPXQobixlLHUpKX0pO3Jl
dHVybiEhcn1mdW5jdGlvbiBBdChuKXt2YXIgcj0tMSx1PWF0KCksYT1uP24u
bGVuZ3RoOjAsaT1hZS5hcHBseShadCxDZS5jYWxsKGFyZ3VtZW50cywxKSks
Zj1bXSxsPWE+PXcmJnU9PT10O2lmKGwpe3ZhciBjPW8oaSk7Yz8odT1lLGk9
Yyk6bD1ifWZvcig7KytyPGE7KWM9bltyXSwwPnUoaSxjKSYmZi5wdXNoKGMp
OwpyZXR1cm4gbCYmcChpKSxmfWZ1bmN0aW9uIE50KG4sdCxlKXtpZihuKXt2
YXIgcj0wLHU9bi5sZW5ndGg7aWYodHlwZW9mIHQhPSJudW1iZXIiJiZ0IT1o
KXt2YXIgYT0tMTtmb3IodD10dC5jcmVhdGVDYWxsYmFjayh0LGUpOysrYTx1
JiZ0KG5bYV0sYSxuKTspcisrfWVsc2UgaWYocj10LHI9PWh8fGUpcmV0dXJu
IG5bMF07cmV0dXJuIHMobiwwLGtlKF9lKDAsciksdSkpfX1mdW5jdGlvbiAk
dChuLGUscil7aWYodHlwZW9mIHI9PSJudW1iZXIiKXt2YXIgdT1uP24ubGVu
Z3RoOjA7cj0wPnI/X2UoMCx1K3IpOnJ8fDB9ZWxzZSBpZihyKXJldHVybiBy
PUZ0KG4sZSksbltyXT09PWU/cjotMTtyZXR1cm4gbj90KG4sZSxyKTotMX1m
dW5jdGlvbiBCdChuLHQsZSl7aWYodHlwZW9mIHQhPSJudW1iZXIiJiZ0IT1o
KXt2YXIgcj0wLHU9LTEsYT1uP24ubGVuZ3RoOjA7Zm9yKHQ9dHQuY3JlYXRl
Q2FsbGJhY2sodCxlKTsrK3U8YSYmdChuW3VdLHUsbik7KXIrK31lbHNlIHI9
dD09aHx8ZT8xOl9lKDAsdCk7CnJldHVybiBzKG4scil9ZnVuY3Rpb24gRnQo
bix0LGUscil7dmFyIHU9MCxhPW4/bi5sZW5ndGg6dTtmb3IoZT1lP3R0LmNy
ZWF0ZUNhbGxiYWNrKGUsciwxKTpXdCx0PWUodCk7dTxhOylyPXUrYT4+PjEs
ZShuW3JdKTx0P3U9cisxOmE9cjtyZXR1cm4gdX1mdW5jdGlvbiBSdChuKXtm
b3IodmFyIHQ9LTEsZT1uP3h0KE90KG4sImxlbmd0aCIpKTowLHI9TXQoMD5l
PzA6ZSk7Kyt0PGU7KXJbdF09T3Qobix0KTtyZXR1cm4gcn1mdW5jdGlvbiBU
dChuLHQpe2Zvcih2YXIgZT0tMSxyPW4/bi5sZW5ndGg6MCx1PXt9OysrZTxy
Oyl7dmFyIGE9bltlXTt0P3VbYV09dFtlXTp1W2FbMF1dPWFbMV19cmV0dXJu
IHV9ZnVuY3Rpb24gcXQobix0KXtyZXR1cm4gT2UuZmFzdEJpbmR8fGdlJiYy
PGFyZ3VtZW50cy5sZW5ndGg/Z2UuY2FsbC5hcHBseShnZSxhcmd1bWVudHMp
OnJ0KG4sdCxDZS5jYWxsKGFyZ3VtZW50cywyKSl9ZnVuY3Rpb24gRHQobix0
LGUpe2Z1bmN0aW9uIHIoKXt1ZShzKSx1ZSh2KSxsPTAscz12PWgKfWZ1bmN0
aW9uIHUoKXt2YXIgdD1nJiYoIW18fDE8bCk7cigpLHQmJihwIT09ZmFsc2Um
JihjPW5ldyBWdCksaT1uLmFwcGx5KGYsbykpfWZ1bmN0aW9uIGEoKXtyKCks
KGd8fHAhPT10KSYmKGM9bmV3IFZ0LGk9bi5hcHBseShmLG8pKX12YXIgbyxp
LGYsbD0wLGM9MCxwPWIscz1oLHY9aCxnPXk7aWYodD1fZSgwLHR8fDApLGU9
PT15KXZhciBtPXksZz1iO2Vsc2UgZ3QoZSkmJihtPWUubGVhZGluZyxwPSJt
YXhXYWl0ImluIGUmJl9lKHQsZS5tYXhXYWl0fHwwKSxnPSJ0cmFpbGluZyJp
biBlP2UudHJhaWxpbmc6Zyk7cmV0dXJuIGZ1bmN0aW9uKCl7aWYobz1hcmd1
bWVudHMsZj10aGlzLGwrKyx1ZSh2KSxwPT09ZmFsc2UpbSYmMj5sJiYoaT1u
LmFwcGx5KGYsbykpO2Vsc2V7dmFyIGU9bmV3IFZ0OyFzJiYhbSYmKGM9ZSk7
dmFyIHI9cC0oZS1jKTswPHI/c3x8KHM9c2UoYSxyKSk6KHVlKHMpLHM9aCxj
PWUsaT1uLmFwcGx5KGYsbykpfXJldHVybiB0IT09cCYmKHY9c2UodSx0KSks
aX19ZnVuY3Rpb24genQobil7dmFyIHQ9Q2UuY2FsbChhcmd1bWVudHMsMSk7
CnJldHVybiBzZShmdW5jdGlvbigpe24uYXBwbHkoZyx0KX0sMSl9ZnVuY3Rp
b24gV3Qobil7cmV0dXJuIG59ZnVuY3Rpb24gUHQobil7d3QoY3QobiksZnVu
Y3Rpb24odCl7dmFyIGU9dHRbdF09blt0XTt0dC5wcm90b3R5cGVbdF09ZnVu
Y3Rpb24oKXt2YXIgbj10aGlzLl9fd3JhcHBlZF9fLHQ9W25dO3JldHVybiBj
ZS5hcHBseSh0LGFyZ3VtZW50cyksdD1lLmFwcGx5KHR0LHQpLG4mJnR5cGVv
ZiBuPT0ib2JqZWN0IiYmbj09PXQ/dGhpczpuZXcgZXQodCl9fSl9ZnVuY3Rp
b24gS3QoKXtyZXR1cm4gdGhpcy5fX3dyYXBwZWRfX31yPXI/bnQuZGVmYXVs
dHMobi5PYmplY3QoKSxyLG50LnBpY2sobixEKSk6bjt2YXIgTXQ9ci5BcnJh
eSxVdD1yLkJvb2xlYW4sVnQ9ci5EYXRlLEd0PXIuRnVuY3Rpb24sSHQ9ci5N
YXRoLEp0PXIuTnVtYmVyLEx0PXIuT2JqZWN0LFF0PXIuUmVnRXhwLFh0PXIu
U3RyaW5nLFl0PXIuVHlwZUVycm9yLFp0PVtdLG5lPUx0LnByb3RvdHlwZSx0
ZT1yLl8sZWU9UXQoIl4iK1h0KG5lLnZhbHVlT2YpLnJlcGxhY2UoL1suKis/
XiR7fSgpfFtcXVxcXS9nLCJcXCQmIikucmVwbGFjZSgvdmFsdWVPZnxmb3Ig
W15cXV0rL2csIi4rPyIpKyIkIikscmU9SHQuY2VpbCx1ZT1yLmNsZWFyVGlt
ZW91dCxhZT1adC5jb25jYXQsb2U9SHQuZmxvb3IsaWU9R3QucHJvdG90eXBl
LnRvU3RyaW5nLGZlPWVlLnRlc3QoZmU9THQuZ2V0UHJvdG90eXBlT2YpJiZm
ZSxsZT1uZS5oYXNPd25Qcm9wZXJ0eSxjZT1adC5wdXNoLHBlPXIuc2V0SW1t
ZWRpYXRlLHNlPXIuc2V0VGltZW91dCx2ZT1uZS50b1N0cmluZyxnZT1lZS50
ZXN0KGdlPXZlLmJpbmQpJiZnZSx5ZT1lZS50ZXN0KHllPUx0LmNyZWF0ZSkm
JnllLGhlPWVlLnRlc3QoaGU9TXQuaXNBcnJheSkmJmhlLGJlPXIuaXNGaW5p
dGUsbWU9ci5pc05hTixkZT1lZS50ZXN0KGRlPUx0LmtleXMpJiZkZSxfZT1I
dC5tYXgsa2U9SHQubWluLGplPXIucGFyc2VJbnQsd2U9SHQucmFuZG9tLENl
PVp0LnNsaWNlLEh0PWVlLnRlc3Qoci5hdHRhY2hFdmVudCksSHQ9Z2UmJiEv
XG58dHJ1ZS8udGVzdChnZStIdCkseGU9e307CnhlW1ddPU10LHhlW1BdPVV0
LHhlW0tdPVZ0LHhlW01dPUd0LHhlW1ZdPUx0LHhlW1VdPUp0LHhlW0ddPVF0
LHhlW0hdPVh0LGV0LnByb3RvdHlwZT10dC5wcm90b3R5cGU7dmFyIE9lPXR0
LnN1cHBvcnQ9e307T2UuZmFzdEJpbmQ9Z2UmJiFIdCx0dC50ZW1wbGF0ZVNl
dHRpbmdzPXtlc2NhcGU6LzwlLShbXHNcU10rPyklPi9nLGV2YWx1YXRlOi88
JShbXHNcU10rPyklPi9nLGludGVycG9sYXRlOk4sdmFyaWFibGU6IiIsaW1w
b3J0czp7Xzp0dH19O3ZhciBFZT1oZSxTZT1kZT9mdW5jdGlvbihuKXtyZXR1
cm4gZ3Qobik/ZGUobik6W119OlosSWU9eyImIjoiJmFtcDsiLCI8IjoiJmx0
OyIsIj4iOiImZ3Q7IiwnIic6IiZxdW90OyIsIiciOiImIzM5OyJ9LEFlPXB0
KEllKSxVdD1vdChmdW5jdGlvbiAkZShuLHQsZSl7Zm9yKHZhciByPS0xLHU9
bj9uLmxlbmd0aDowLGE9W107KytyPHU7KXt2YXIgbz1uW3JdO2UmJihvPWUo
byxyLG4pKSxFZShvKT9jZS5hcHBseShhLHQ/bzokZShvKSk6YS5wdXNoKG8p
Cn1yZXR1cm4gYX0pLE5lPW90KGZ1bmN0aW9uKG4scix1KXt2YXIgYT0tMSxp
PWF0KCksbD1uP24ubGVuZ3RoOjAscz1bXSx2PSFyJiZsPj13JiZpPT09dCxn
PXV8fHY/ZigpOnM7aWYodil7dmFyIHk9byhnKTt5PyhpPWUsZz15KToodj1i
LGc9dT9nOihjKGcpLHMpKX1mb3IoOysrYTxsOyl7dmFyIHk9blthXSxoPXU/
dSh5LGEsbik6eTsocj8hYXx8Z1tnLmxlbmd0aC0xXSE9PWg6MD5pKGcsaCkp
JiYoKHV8fHYpJiZnLnB1c2goaCkscy5wdXNoKHkpKX1yZXR1cm4gdj8oYyhn
LmIpLHAoZykpOnUmJmMoZyksc30pO3JldHVybiBIdCYmWSYmdHlwZW9mIHBl
PT0iZnVuY3Rpb24iJiYoenQ9cXQocGUscikpLHBlPTg9PWplKEIrIjA4Iik/
amU6ZnVuY3Rpb24obix0KXtyZXR1cm4gamUoaHQobik/bi5yZXBsYWNlKEYs
IiIpOm4sdHx8MCl9LHR0LmFmdGVyPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIDE+
bj90KCk6ZnVuY3Rpb24oKXtyZXR1cm4gMT4tLW4/dC5hcHBseSh0aGlzLGFy
Z3VtZW50cyk6dm9pZCAwCn19LHR0LmFzc2lnbj1YLHR0LmF0PWZ1bmN0aW9u
KG4pe2Zvcih2YXIgdD0tMSxlPWFlLmFwcGx5KFp0LENlLmNhbGwoYXJndW1l
bnRzLDEpKSxyPWUubGVuZ3RoLHU9TXQocik7Kyt0PHI7KXVbdF09bltlW3Rd
XTtyZXR1cm4gdX0sdHQuYmluZD1xdCx0dC5iaW5kQWxsPWZ1bmN0aW9uKG4p
e2Zvcih2YXIgdD0xPGFyZ3VtZW50cy5sZW5ndGg/YWUuYXBwbHkoWnQsQ2Uu
Y2FsbChhcmd1bWVudHMsMSkpOmN0KG4pLGU9LTEscj10Lmxlbmd0aDsrK2U8
cjspe3ZhciB1PXRbZV07blt1XT1xdChuW3VdLG4pfXJldHVybiBufSx0dC5i
aW5kS2V5PWZ1bmN0aW9uKG4sdCl7cmV0dXJuIHJ0KG4sdCxDZS5jYWxsKGFy
Z3VtZW50cywyKSxrKX0sdHQuY29tcGFjdD1mdW5jdGlvbihuKXtmb3IodmFy
IHQ9LTEsZT1uP24ubGVuZ3RoOjAscj1bXTsrK3Q8ZTspe3ZhciB1PW5bdF07
dSYmci5wdXNoKHUpfXJldHVybiByfSx0dC5jb21wb3NlPWZ1bmN0aW9uKCl7
dmFyIG49YXJndW1lbnRzO3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgdD1h
cmd1bWVudHMsZT1uLmxlbmd0aDtlLS07KXQ9W25bZV0uYXBwbHkodGhpcyx0
KV07CnJldHVybiB0WzBdfX0sdHQuY291bnRCeT1mdW5jdGlvbihuLHQsZSl7
dmFyIHI9e307cmV0dXJuIHQ9dHQuY3JlYXRlQ2FsbGJhY2sodCxlKSx3dChu
LGZ1bmN0aW9uKG4sZSx1KXtlPVh0KHQobixlLHUpKSxsZS5jYWxsKHIsZSk/
cltlXSsrOnJbZV09MX0pLHJ9LHR0LmNyZWF0ZUNhbGxiYWNrPWZ1bmN0aW9u
KG4sdCxlKXtpZihuPT1oKXJldHVybiBXdDt2YXIgcj10eXBlb2YgbjtpZigi
ZnVuY3Rpb24iIT1yKXtpZigib2JqZWN0IiE9cilyZXR1cm4gZnVuY3Rpb24o
dCl7cmV0dXJuIHRbbl19O3ZhciB1PVNlKG4pO3JldHVybiBmdW5jdGlvbih0
KXtmb3IodmFyIGU9dS5sZW5ndGgscj1iO2UtLSYmKHI9c3QodFt1W2VdXSxu
W3VbZV1dLGspKTspO3JldHVybiByfX1yZXR1cm4gdHlwZW9mIHQ9PSJ1bmRl
ZmluZWQifHwkJiYhJC50ZXN0KGllLmNhbGwobikpP246MT09PWU/ZnVuY3Rp
b24oZSl7cmV0dXJuIG4uY2FsbCh0LGUpfToyPT09ZT9mdW5jdGlvbihlLHIp
e3JldHVybiBuLmNhbGwodCxlLHIpCn06ND09PWU/ZnVuY3Rpb24oZSxyLHUs
YSl7cmV0dXJuIG4uY2FsbCh0LGUscix1LGEpfTpmdW5jdGlvbihlLHIsdSl7
cmV0dXJuIG4uY2FsbCh0LGUscix1KX19LHR0LmRlYm91bmNlPUR0LHR0LmRl
ZmF1bHRzPVEsdHQuZGVmZXI9enQsdHQuZGVsYXk9ZnVuY3Rpb24obix0KXt2
YXIgZT1DZS5jYWxsKGFyZ3VtZW50cywyKTtyZXR1cm4gc2UoZnVuY3Rpb24o
KXtuLmFwcGx5KGcsZSl9LHQpfSx0dC5kaWZmZXJlbmNlPUF0LHR0LmZpbHRl
cj1rdCx0dC5mbGF0dGVuPVV0LHR0LmZvckVhY2g9d3QsdHQuZm9ySW49Qyx0
dC5mb3JPd249ZCx0dC5mdW5jdGlvbnM9Y3QsdHQuZ3JvdXBCeT1mdW5jdGlv
bihuLHQsZSl7dmFyIHI9e307cmV0dXJuIHQ9dHQuY3JlYXRlQ2FsbGJhY2so
dCxlKSx3dChuLGZ1bmN0aW9uKG4sZSx1KXtlPVh0KHQobixlLHUpKSwobGUu
Y2FsbChyLGUpP3JbZV06cltlXT1bXSkucHVzaChuKX0pLHJ9LHR0LmluaXRp
YWw9ZnVuY3Rpb24obix0LGUpe2lmKCFuKXJldHVybltdOwp2YXIgcj0wLHU9
bi5sZW5ndGg7aWYodHlwZW9mIHQhPSJudW1iZXIiJiZ0IT1oKXt2YXIgYT11
O2Zvcih0PXR0LmNyZWF0ZUNhbGxiYWNrKHQsZSk7YS0tJiZ0KG5bYV0sYSxu
KTspcisrfWVsc2Ugcj10PT1ofHxlPzE6dHx8cjtyZXR1cm4gcyhuLDAsa2Uo
X2UoMCx1LXIpLHUpKX0sdHQuaW50ZXJzZWN0aW9uPWZ1bmN0aW9uKG4pe2Zv
cih2YXIgcj1hcmd1bWVudHMsdT1yLmxlbmd0aCxhPS0xLGk9ZigpLGw9LTEs
cz1hdCgpLHY9bj9uLmxlbmd0aDowLGc9W10seT1mKCk7KythPHU7KXt2YXIg
aD1yW2FdO2lbYV09cz09PXQmJihoP2gubGVuZ3RoOjApPj13JiZvKGE/clth
XTp5KX1uOmZvcig7KytsPHY7KXt2YXIgYj1pWzBdLGg9bltsXTtpZigwPihi
P2UoYixoKTpzKHksaCkpKXtmb3IoYT11LChifHx5KS5wdXNoKGgpOy0tYTsp
aWYoYj1pW2FdLDA+KGI/ZShiLGgpOnMoclthXSxoKSkpY29udGludWUgbjtn
LnB1c2goaCl9fWZvcig7dS0tOykoYj1pW3VdKSYmcChiKTtyZXR1cm4gYyhp
KSxjKHkpLGcKfSx0dC5pbnZlcnQ9cHQsdHQuaW52b2tlPWZ1bmN0aW9uKG4s
dCl7dmFyIGU9Q2UuY2FsbChhcmd1bWVudHMsMikscj0tMSx1PXR5cGVvZiB0
PT0iZnVuY3Rpb24iLGE9bj9uLmxlbmd0aDowLG89TXQodHlwZW9mIGE9PSJu
dW1iZXIiP2E6MCk7cmV0dXJuIHd0KG4sZnVuY3Rpb24obil7b1srK3JdPSh1
P3Q6blt0XSkuYXBwbHkobixlKX0pLG99LHR0LmtleXM9U2UsdHQubWFwPUN0
LHR0Lm1heD14dCx0dC5tZW1vaXplPWZ1bmN0aW9uKG4sdCl7ZnVuY3Rpb24g
ZSgpe3ZhciByPWUuY2FjaGUsdT1qKyh0P3QuYXBwbHkodGhpcyxhcmd1bWVu
dHMpOmFyZ3VtZW50c1swXSk7cmV0dXJuIGxlLmNhbGwocix1KT9yW3VdOnJb
dV09bi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIGUuY2FjaGU9e30s
ZX0sdHQubWVyZ2U9YnQsdHQubWluPWZ1bmN0aW9uKG4sdCxlKXt2YXIgcj0x
LzAsYT1yO2lmKCF0JiZFZShuKSl7ZT0tMTtmb3IodmFyIG89bi5sZW5ndGg7
KytlPG87KXt2YXIgaT1uW2VdOwppPGEmJihhPWkpfX1lbHNlIHQ9IXQmJmh0
KG4pP3U6dHQuY3JlYXRlQ2FsbGJhY2sodCxlKSx3dChuLGZ1bmN0aW9uKG4s
ZSx1KXtlPXQobixlLHUpLGU8ciYmKHI9ZSxhPW4pfSk7cmV0dXJuIGF9LHR0
Lm9taXQ9ZnVuY3Rpb24obix0LGUpe3ZhciByPWF0KCksdT10eXBlb2YgdD09
ImZ1bmN0aW9uIixhPXt9O2lmKHUpdD10dC5jcmVhdGVDYWxsYmFjayh0LGUp
O2Vsc2UgdmFyIG89YWUuYXBwbHkoWnQsQ2UuY2FsbChhcmd1bWVudHMsMSkp
O3JldHVybiBDKG4sZnVuY3Rpb24obixlLGkpeyh1PyF0KG4sZSxpKTowPnIo
byxlKSkmJihhW2VdPW4pfSksYX0sdHQub25jZT1mdW5jdGlvbihuKXt2YXIg
dCxlO3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0P2U6KHQ9eSxlPW4uYXBw
bHkodGhpcyxhcmd1bWVudHMpLG49aCxlKX19LHR0LnBhaXJzPWZ1bmN0aW9u
KG4pe2Zvcih2YXIgdD0tMSxlPVNlKG4pLHI9ZS5sZW5ndGgsdT1NdChyKTsr
K3Q8cjspe3ZhciBhPWVbdF07dVt0XT1bYSxuW2FdXQp9cmV0dXJuIHV9LHR0
LnBhcnRpYWw9ZnVuY3Rpb24obil7cmV0dXJuIHJ0KG4sQ2UuY2FsbChhcmd1
bWVudHMsMSkpfSx0dC5wYXJ0aWFsUmlnaHQ9ZnVuY3Rpb24obil7cmV0dXJu
IHJ0KG4sQ2UuY2FsbChhcmd1bWVudHMsMSksaCxrKX0sdHQucGljaz1mdW5j
dGlvbihuLHQsZSl7dmFyIHI9e307aWYodHlwZW9mIHQhPSJmdW5jdGlvbiIp
Zm9yKHZhciB1PS0xLGE9YWUuYXBwbHkoWnQsQ2UuY2FsbChhcmd1bWVudHMs
MSkpLG89Z3Qobik/YS5sZW5ndGg6MDsrK3U8bzspe3ZhciBpPWFbdV07aSBp
biBuJiYocltpXT1uW2ldKX1lbHNlIHQ9dHQuY3JlYXRlQ2FsbGJhY2sodCxl
KSxDKG4sZnVuY3Rpb24obixlLHUpe3QobixlLHUpJiYocltlXT1uKX0pO3Jl
dHVybiByfSx0dC5wbHVjaz1PdCx0dC5yYW5nZT1mdW5jdGlvbihuLHQsZSl7
bj0rbnx8MCxlPStlfHwxLHQ9PWgmJih0PW4sbj0wKTt2YXIgcj0tMTt0PV9l
KDAscmUoKHQtbikvZSkpO2Zvcih2YXIgdT1NdCh0KTsrK3I8dDspdVtyXT1u
LG4rPWU7CnJldHVybiB1fSx0dC5yZWplY3Q9ZnVuY3Rpb24obix0LGUpe3Jl
dHVybiB0PXR0LmNyZWF0ZUNhbGxiYWNrKHQsZSksa3QobixmdW5jdGlvbihu
LGUscil7cmV0dXJuIXQobixlLHIpfSl9LHR0LnJlc3Q9QnQsdHQuc2h1ZmZs
ZT1mdW5jdGlvbihuKXt2YXIgdD0tMSxlPW4/bi5sZW5ndGg6MCxyPU10KHR5
cGVvZiBlPT0ibnVtYmVyIj9lOjApO3JldHVybiB3dChuLGZ1bmN0aW9uKG4p
e3ZhciBlPW9lKHdlKCkqKCsrdCsxKSk7clt0XT1yW2VdLHJbZV09bn0pLHJ9
LHR0LnNvcnRCeT1mdW5jdGlvbihuLHQsZSl7dmFyIHI9LTEsdT1uP24ubGVu
Z3RoOjAsbz1NdCh0eXBlb2YgdT09Im51bWJlciI/dTowKTtmb3IodD10dC5j
cmVhdGVDYWxsYmFjayh0LGUpLHd0KG4sZnVuY3Rpb24obixlLHUpe3ZhciBh
PW9bKytyXT1sKCk7YS5sPXQobixlLHUpLGEubT1yLGEubj1ufSksdT1vLmxl
bmd0aCxvLnNvcnQoYSk7dS0tOyluPW9bdV0sb1t1XT1uLm4scChuKTtyZXR1
cm4gb30sdHQudGFwPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIHQobiksbgp9LHR0
LnRocm90dGxlPWZ1bmN0aW9uKG4sdCxlKXt2YXIgcj15LHU9eTtyZXR1cm4g
ZT09PWZhbHNlP3I9YjpndChlKSYmKHI9ImxlYWRpbmciaW4gZT9lLmxlYWRp
bmc6cix1PSJ0cmFpbGluZyJpbiBlP2UudHJhaWxpbmc6dSksZT1sKCksZS5s
ZWFkaW5nPXIsZS5tYXhXYWl0PXQsZS50cmFpbGluZz11LG49RHQobix0LGUp
LHAoZSksbn0sdHQudGltZXM9ZnVuY3Rpb24obix0LGUpe249LTE8KG49K24p
P246MDt2YXIgcj0tMSx1PU10KG4pO2Zvcih0PXR0LmNyZWF0ZUNhbGxiYWNr
KHQsZSwxKTsrK3I8bjspdVtyXT10KHIpO3JldHVybiB1fSx0dC50b0FycmF5
PWZ1bmN0aW9uKG4pe3JldHVybiBuJiZ0eXBlb2Ygbi5sZW5ndGg9PSJudW1i
ZXIiP3Mobik6bXQobil9LHR0LnRyYW5zZm9ybT1mdW5jdGlvbihuLHQsZSxy
KXt2YXIgdT1FZShuKTtyZXR1cm4gdD10dC5jcmVhdGVDYWxsYmFjayh0LHIs
NCksZT09aCYmKHU/ZT1bXToocj1uJiZuLmNvbnN0cnVjdG9yLGU9Z3QociYm
ci5wcm90b3R5cGUpP3llKHImJnIucHJvdG90eXBlKTp7fSkpLCh1P3d0OmQp
KG4sZnVuY3Rpb24obixyLHUpe3JldHVybiB0KGUsbixyLHUpCn0pLGV9LHR0
LnVuaW9uPWZ1bmN0aW9uKG4pe3JldHVybiBFZShuKXx8KGFyZ3VtZW50c1sw
XT1uP0NlLmNhbGwobik6WnQpLE5lKGFlLmFwcGx5KFp0LGFyZ3VtZW50cykp
fSx0dC51bmlxPU5lLHR0LnVuemlwPVJ0LHR0LnZhbHVlcz1tdCx0dC53aGVy
ZT1rdCx0dC53aXRob3V0PWZ1bmN0aW9uKG4pe3JldHVybiBBdChuLENlLmNh
bGwoYXJndW1lbnRzLDEpKX0sdHQud3JhcD1mdW5jdGlvbihuLHQpe3JldHVy
biBmdW5jdGlvbigpe3ZhciBlPVtuXTtyZXR1cm4gY2UuYXBwbHkoZSxhcmd1
bWVudHMpLHQuYXBwbHkodGhpcyxlKX19LHR0LnppcD1mdW5jdGlvbihuKXty
ZXR1cm4gbj9SdChhcmd1bWVudHMpOltdfSx0dC56aXBPYmplY3Q9VHQsdHQu
Y29sbGVjdD1DdCx0dC5kcm9wPUJ0LHR0LmVhY2g9d3QsdHQuZXh0ZW5kPVgs
dHQubWV0aG9kcz1jdCx0dC5vYmplY3Q9VHQsdHQuc2VsZWN0PWt0LHR0LnRh
aWw9QnQsdHQudW5pcXVlPU5lLFB0KHR0KSx0dC5jaGFpbj10dCx0dC5wcm90
b3R5cGUuY2hhaW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcwp9LHR0LmNsb25l
PWx0LHR0LmNsb25lRGVlcD1mdW5jdGlvbihuLHQsZSl7cmV0dXJuIGx0KG4s
eSx0LGUpfSx0dC5jb250YWlucz1kdCx0dC5lc2NhcGU9ZnVuY3Rpb24obil7
cmV0dXJuIG49PWg/IiI6WHQobikucmVwbGFjZShULHV0KX0sdHQuZXZlcnk9
X3QsdHQuZmluZD1qdCx0dC5maW5kSW5kZXg9ZnVuY3Rpb24obix0LGUpe3Zh
ciByPS0xLHU9bj9uLmxlbmd0aDowO2Zvcih0PXR0LmNyZWF0ZUNhbGxiYWNr
KHQsZSk7KytyPHU7KWlmKHQobltyXSxyLG4pKXJldHVybiByO3JldHVybi0x
fSx0dC5maW5kS2V5PWZ1bmN0aW9uKG4sdCxlKXt2YXIgcjtyZXR1cm4gdD10
dC5jcmVhdGVDYWxsYmFjayh0LGUpLGQobixmdW5jdGlvbihuLGUsdSl7cmV0
dXJuIHQobixlLHUpPyhyPWUsYik6dm9pZCAwfSkscn0sdHQuaGFzPWZ1bmN0
aW9uKG4sdCl7cmV0dXJuIG4/bGUuY2FsbChuLHQpOmJ9LHR0LmlkZW50aXR5
PVd0LHR0LmluZGV4T2Y9JHQsdHQuaXNBcmd1bWVudHM9ZnVuY3Rpb24obil7
cmV0dXJuIHZlLmNhbGwobik9PXoKfSx0dC5pc0FycmF5PUVlLHR0LmlzQm9v
bGVhbj1mdW5jdGlvbihuKXtyZXR1cm4gbj09PXl8fG49PT1mYWxzZXx8dmUu
Y2FsbChuKT09UH0sdHQuaXNEYXRlPWZ1bmN0aW9uKG4pe3JldHVybiBuP3R5
cGVvZiBuPT0ib2JqZWN0IiYmdmUuY2FsbChuKT09SzpifSx0dC5pc0VsZW1l
bnQ9ZnVuY3Rpb24obil7cmV0dXJuIG4/MT09PW4ubm9kZVR5cGU6Yn0sdHQu
aXNFbXB0eT1mdW5jdGlvbihuKXt2YXIgdD15O2lmKCFuKXJldHVybiB0O3Zh
ciBlPXZlLmNhbGwobikscj1uLmxlbmd0aDtyZXR1cm4gZT09V3x8ZT09SHx8
ZT09enx8ZT09ViYmdHlwZW9mIHI9PSJudW1iZXIiJiZ2dChuLnNwbGljZSk/
IXI6KGQobixmdW5jdGlvbigpe3JldHVybiB0PWJ9KSx0KX0sdHQuaXNFcXVh
bD1zdCx0dC5pc0Zpbml0ZT1mdW5jdGlvbihuKXtyZXR1cm4gYmUobikmJiFt
ZShwYXJzZUZsb2F0KG4pKX0sdHQuaXNGdW5jdGlvbj12dCx0dC5pc05hTj1m
dW5jdGlvbihuKXtyZXR1cm4geXQobikmJm4hPStuCn0sdHQuaXNOdWxsPWZ1
bmN0aW9uKG4pe3JldHVybiBuPT09aH0sdHQuaXNOdW1iZXI9eXQsdHQuaXNP
YmplY3Q9Z3QsdHQuaXNQbGFpbk9iamVjdD1tLHR0LmlzUmVnRXhwPWZ1bmN0
aW9uKG4pe3JldHVybiBuP3R5cGVvZiBuPT0ib2JqZWN0IiYmdmUuY2FsbChu
KT09RzpifSx0dC5pc1N0cmluZz1odCx0dC5pc1VuZGVmaW5lZD1mdW5jdGlv
bihuKXtyZXR1cm4gdHlwZW9mIG49PSJ1bmRlZmluZWQifSx0dC5sYXN0SW5k
ZXhPZj1mdW5jdGlvbihuLHQsZSl7dmFyIHI9bj9uLmxlbmd0aDowO2Zvcih0
eXBlb2YgZT09Im51bWJlciImJihyPSgwPmU/X2UoMCxyK2UpOmtlKGUsci0x
KSkrMSk7ci0tOylpZihuW3JdPT09dClyZXR1cm4gcjtyZXR1cm4tMX0sdHQu
bWl4aW49UHQsdHQubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiByLl89
dGUsdGhpc30sdHQucGFyc2VJbnQ9cGUsdHQucmFuZG9tPWZ1bmN0aW9uKG4s
dCl7bj09aCYmdD09aCYmKHQ9MSksbj0rbnx8MCx0PT1oPyh0PW4sbj0wKTp0
PSt0fHwwOwp2YXIgZT13ZSgpO3JldHVybiBuJTF8fHQlMT9uK2tlKGUqKHQt
bitwYXJzZUZsb2F0KCIxZS0iKygoZSsiIikubGVuZ3RoLTEpKSksdCk6bitv
ZShlKih0LW4rMSkpfSx0dC5yZWR1Y2U9RXQsdHQucmVkdWNlUmlnaHQ9U3Qs
dHQucmVzdWx0PWZ1bmN0aW9uKG4sdCl7dmFyIGU9bj9uW3RdOmc7cmV0dXJu
IHZ0KGUpP25bdF0oKTplfSx0dC5ydW5JbkNvbnRleHQ9dix0dC5zaXplPWZ1
bmN0aW9uKG4pe3ZhciB0PW4/bi5sZW5ndGg6MDtyZXR1cm4gdHlwZW9mIHQ9
PSJudW1iZXIiP3Q6U2UobikubGVuZ3RofSx0dC5zb21lPUl0LHR0LnNvcnRl
ZEluZGV4PUZ0LHR0LnRlbXBsYXRlPWZ1bmN0aW9uKG4sdCxlKXt2YXIgcj10
dC50ZW1wbGF0ZVNldHRpbmdzO258fChuPSIiKSxlPVEoe30sZSxyKTt2YXIg
dSxhPVEoe30sZS5pbXBvcnRzLHIuaW1wb3J0cykscj1TZShhKSxhPW10KGEp
LG89MCxmPWUuaW50ZXJwb2xhdGV8fFIsbD0iX19wKz0nIixmPVF0KChlLmVz
Y2FwZXx8Uikuc291cmNlKyJ8IitmLnNvdXJjZSsifCIrKGY9PT1OP0k6Uiku
c291cmNlKyJ8IisoZS5ldmFsdWF0ZXx8Uikuc291cmNlKyJ8JCIsImciKTsK
bi5yZXBsYWNlKGYsZnVuY3Rpb24odCxlLHIsYSxmLGMpe3JldHVybiByfHwo
cj1hKSxsKz1uLnNsaWNlKG8sYykucmVwbGFjZShxLGkpLGUmJihsKz0iJytf
X2UoIitlKyIpKyciKSxmJiYodT15LGwrPSInOyIrZisiO19fcCs9JyIpLHIm
JihsKz0iJysoKF9fdD0oIityKyIpKT09bnVsbD8nJzpfX3QpKyciKSxvPWMr
dC5sZW5ndGgsdH0pLGwrPSInO1xuIixmPWU9ZS52YXJpYWJsZSxmfHwoZT0i
b2JqIixsPSJ3aXRoKCIrZSsiKXsiK2wrIn0iKSxsPSh1P2wucmVwbGFjZSh4
LCIiKTpsKS5yZXBsYWNlKE8sIiQxIikucmVwbGFjZShFLCIkMTsiKSxsPSJm
dW5jdGlvbigiK2UrIil7IisoZj8iIjplKyJ8fCgiK2UrIj17fSk7IikrInZh
ciBfX3QsX19wPScnLF9fZT1fLmVzY2FwZSIrKHU/IixfX2o9QXJyYXkucHJv
dG90eXBlLmpvaW47ZnVuY3Rpb24gcHJpbnQoKXtfX3ArPV9fai5jYWxsKGFy
Z3VtZW50cywnJyl9IjoiOyIpK2wrInJldHVybiBfX3B9Ijt0cnl7dmFyIGM9
R3QociwicmV0dXJuICIrbCkuYXBwbHkoZyxhKQp9Y2F0Y2gocCl7dGhyb3cg
cC5zb3VyY2U9bCxwfXJldHVybiB0P2ModCk6KGMuc291cmNlPWwsYyl9LHR0
LnVuZXNjYXBlPWZ1bmN0aW9uKG4pe3JldHVybiBuPT1oPyIiOlh0KG4pLnJl
cGxhY2UoUyxmdCl9LHR0LnVuaXF1ZUlkPWZ1bmN0aW9uKG4pe3ZhciB0PSsr
XztyZXR1cm4gWHQobj09aD8iIjpuKSt0fSx0dC5hbGw9X3QsdHQuYW55PUl0
LHR0LmRldGVjdD1qdCx0dC5maW5kV2hlcmU9anQsdHQuZm9sZGw9RXQsdHQu
Zm9sZHI9U3QsdHQuaW5jbHVkZT1kdCx0dC5pbmplY3Q9RXQsZCh0dCxmdW5j
dGlvbihuLHQpe3R0LnByb3RvdHlwZVt0XXx8KHR0LnByb3RvdHlwZVt0XT1m
dW5jdGlvbigpe3ZhciB0PVt0aGlzLl9fd3JhcHBlZF9fXTtyZXR1cm4gY2Uu
YXBwbHkodCxhcmd1bWVudHMpLG4uYXBwbHkodHQsdCl9KX0pLHR0LmZpcnN0
PU50LHR0Lmxhc3Q9ZnVuY3Rpb24obix0LGUpe2lmKG4pe3ZhciByPTAsdT1u
Lmxlbmd0aDtpZih0eXBlb2YgdCE9Im51bWJlciImJnQhPWgpe3ZhciBhPXU7
CmZvcih0PXR0LmNyZWF0ZUNhbGxiYWNrKHQsZSk7YS0tJiZ0KG5bYV0sYSxu
KTspcisrfWVsc2UgaWYocj10LHI9PWh8fGUpcmV0dXJuIG5bdS0xXTtyZXR1
cm4gcyhuLF9lKDAsdS1yKSl9fSx0dC50YWtlPU50LHR0LmhlYWQ9TnQsZCh0
dCxmdW5jdGlvbihuLHQpe3R0LnByb3RvdHlwZVt0XXx8KHR0LnByb3RvdHlw
ZVt0XT1mdW5jdGlvbih0LGUpe3ZhciByPW4odGhpcy5fX3dyYXBwZWRfXyx0
LGUpO3JldHVybiB0PT1ofHxlJiZ0eXBlb2YgdCE9ImZ1bmN0aW9uIj9yOm5l
dyBldChyKX0pfSksdHQuVkVSU0lPTj0iMS4zLjEiLHR0LnByb3RvdHlwZS50
b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBYdCh0aGlzLl9fd3JhcHBlZF9f
KX0sdHQucHJvdG90eXBlLnZhbHVlPUt0LHR0LnByb3RvdHlwZS52YWx1ZU9m
PUt0LHd0KFsiam9pbiIsInBvcCIsInNoaWZ0Il0sZnVuY3Rpb24obil7dmFy
IHQ9WnRbbl07dHQucHJvdG90eXBlW25dPWZ1bmN0aW9uKCl7cmV0dXJuIHQu
YXBwbHkodGhpcy5fX3dyYXBwZWRfXyxhcmd1bWVudHMpCn19KSx3dChbInB1
c2giLCJyZXZlcnNlIiwic29ydCIsInVuc2hpZnQiXSxmdW5jdGlvbihuKXt2
YXIgdD1adFtuXTt0dC5wcm90b3R5cGVbbl09ZnVuY3Rpb24oKXtyZXR1cm4g
dC5hcHBseSh0aGlzLl9fd3JhcHBlZF9fLGFyZ3VtZW50cyksdGhpc319KSx3
dChbImNvbmNhdCIsInNsaWNlIiwic3BsaWNlIl0sZnVuY3Rpb24obil7dmFy
IHQ9WnRbbl07dHQucHJvdG90eXBlW25dPWZ1bmN0aW9uKCl7cmV0dXJuIG5l
dyBldCh0LmFwcGx5KHRoaXMuX193cmFwcGVkX18sYXJndW1lbnRzKSl9fSks
dHR9dmFyIGcseT0hMCxoPW51bGwsYj0hMSxtPVtdLGQ9W10sXz0wLGs9e30s
aj0rbmV3IERhdGUrIiIsdz03NSxDPTQwLHg9L1xiX19wXCs9Jyc7L2csTz0v
XGIoX19wXCs9KScnXCsvZyxFPS8oX19lXCguKj9cKXxcYl9fdFwpKVwrJyc7
L2csUz0vJig/OmFtcHxsdHxndHxxdW90fCMzOSk7L2csST0vXCRceyhbXlxc
fV0qKD86XFwuW15cXH1dKikqKVx9L2csQT0vXHcqJC8sTj0vPCU9KFtcc1xT
XSs/KSU+L2csJD0oJD0vXGJ0aGlzXGIvKSYmJC50ZXN0KHYpJiYkLEI9IiBc
dFx4MEJcZlx4YTBcdWZlZmZcblxyXHUyMDI4XHUyMDI5XHUxNjgwXHUxODBl
XHUyMDAwXHUyMDAxXHUyMDAyXHUyMDAzXHUyMDA0XHUyMDA1XHUyMDA2XHUy
MDA3XHUyMDA4XHUyMDA5XHUyMDBhXHUyMDJmXHUyMDVmXHUzMDAwIixGPVJl
Z0V4cCgiXlsiK0IrIl0qMCsoPz0uJCkiKSxSPS8oJF4pLyxUPS9bJjw+Iidd
L2cscT0vWydcblxyXHRcdTIwMjhcdTIwMjlcXF0vZyxEPSJBcnJheSBCb29s
ZWFuIERhdGUgRnVuY3Rpb24gTWF0aCBOdW1iZXIgT2JqZWN0IFJlZ0V4cCBT
dHJpbmcgXyBhdHRhY2hFdmVudCBjbGVhclRpbWVvdXQgaXNGaW5pdGUgaXNO
YU4gcGFyc2VJbnQgc2V0SW1tZWRpYXRlIHNldFRpbWVvdXQiLnNwbGl0KCIg
Iiksej0iW29iamVjdCBBcmd1bWVudHNdIixXPSJbb2JqZWN0IEFycmF5XSIs
UD0iW29iamVjdCBCb29sZWFuXSIsSz0iW29iamVjdCBEYXRlXSIsTT0iW29i
amVjdCBGdW5jdGlvbl0iLFU9IltvYmplY3QgTnVtYmVyXSIsVj0iW29iamVj
dCBPYmplY3RdIixHPSJbb2JqZWN0IFJlZ0V4cF0iLEg9IltvYmplY3QgU3Ry
aW5nXSIsSj17fTsKSltNXT1iLEpbel09SltXXT1KW1BdPUpbS109SltVXT1K
W1ZdPUpbR109SltIXT15O3ZhciBMPXsiYm9vbGVhbiI6YiwiZnVuY3Rpb24i
Onksb2JqZWN0OnksbnVtYmVyOmIsc3RyaW5nOmIsdW5kZWZpbmVkOmJ9LFE9
eyJcXCI6IlxcIiwiJyI6IiciLCJcbiI6Im4iLCJcciI6InIiLCJcdCI6InQi
LCJcdTIwMjgiOiJ1MjAyOCIsIlx1MjAyOSI6InUyMDI5In0sWD1MW3R5cGVv
ZiBleHBvcnRzXSYmZXhwb3J0cyxZPUxbdHlwZW9mIG1vZHVsZV0mJm1vZHVs
ZSYmbW9kdWxlLmV4cG9ydHM9PVgmJm1vZHVsZSxaPUxbdHlwZW9mIGdsb2Jh
bF0mJmdsb2JhbDshWnx8Wi5nbG9iYWwhPT1aJiZaLndpbmRvdyE9PVp8fChu
PVopO3ZhciBudD12KCk7dHlwZW9mIGRlZmluZT09ImZ1bmN0aW9uIiYmdHlw
ZW9mIGRlZmluZS5hbWQ9PSJvYmplY3QiJiZkZWZpbmUuYW1kPyhuLl89bnQs
IGRlZmluZShmdW5jdGlvbigpe3JldHVybiBudH0pKTpYJiYhWC5ub2RlVHlw
ZT9ZPyhZLmV4cG9ydHM9bnQpLl89bnQ6WC5fPW50Om4uXz1udAp9KHRoaXMp
Ow==
'></script>
<meta charset=utf-8 />
<title>Flame Graph of Page</title>
<style>
.info {min-height: 50px; margin: 10px; }
.legend div {
display: block;
float: left;
width: 150px;
margin: 0 8px 8px;
padding: 4px;
height: 50px;
}
.code {
font-family: Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace;
}
#frameinfo table .sample-info {
width: 200px;
color: #333;
font-size: 12px;
}
#frameinfo table {
border-collapse: collapse;
}
#frameinfo table tr {
border-bottom: 1px solid #eee;
margin-top: 5px;
}
#frameinfo td {
padding: 5px;
}
#frameinfo-wrapper {
position: fixed;
z-index: 1;
opacity: 0.7;
background-color: black;
width: 100%;
height: 100%;
top: 0;
left: 0;
display: none;
}
#frameinfo {
position: fixed;
padding: 10px;
z-index: 2;
opacity: 1.0;
top: 0;
margin-top: 50px;
margin-left: 40px;
width: 80%;
height: 80%;
background-color: white;
border: 2px solid #666;
display: none;
overflow: auto;
}
</style>
</head>
<body>
<div class="graph"></div>
<div class="info code"></div>
<div class="legend"></div>
<div id="frameinfo-wrapper"></div>
<div id="frameinfo">
<h3>Frame Info</h3>
<table>
</table>
</div>
<script>
var data = [{"x":1,"y":1,"width":10,"frame":"test.rb::in `<main>'"},{"x":1,"y":2,"width":10,"frame":"/app/test.rb::in `<main>'"},{"x":1,"y":3,"width":10,"frame":"/usr/local/bundle/gems/flamegraph-0.9.5/lib/flamegraph.rb:25:in `#<Module:0x00000002246628>.generate'"},{"x":1,"y":4,"width":10,"frame":"/usr/local/bundle/gems/flamegraph-0.9.5/lib/flamegraph/stackprof_sampler.rb:2:in `Flamegraph::StackProfSampler.collect'"},{"x":1,"y":5,"width":10,"frame":"/usr/local/bundle/gems/flamegraph-0.9.5/lib/flamegraph/stackprof_sampler.rb:2:in `Flamegraph::StackProfSampler.collect'"},{"x":1,"y":6,"width":10,"frame":"/usr/local/bundle/gems/flamegraph-0.9.5/lib/flamegraph.rb:25:in `#<Module:0x00000002246628>.generate'"},{"x":1,"y":7,"width":10,"frame":"/app/test.rb:42:in `block in <main>'"},{"x":1,"y":8,"width":1,"frame":"/app/test.rb:5:in `Object#a'"},{"x":2,"y":8,"width":8,"frame":"/app/test.rb:11:in `Object#b'"},{"x":3,"y":9,"width":6,"frame":"/app/test.rb:25:in `Object#d'"},{"x":4,"y":10,"width":1,"frame":"/app/test.rb:35:in `Object#e'"},{"x":6,"y":10,"width":2,"frame":"/app/test.rb:35:in `Object#e'"},{"x":10,"y":8,"width":1,"frame":"/app/test.rb:19:in `Object#c'"}];
var maxX = 0;
var maxY = 0;
debounce = function(func, wait, trickle) {
var timeout;
timeout = null;
return function() {
var args, context, currentWait, later;
context = this;
args = arguments;
later = function() {
timeout = null;
return func.apply(context, args);
};
if (timeout && trickle) {
// already queued, let it through
return;
}
if (typeof wait === "function") {
currentWait = wait();
} else {
currentWait = wait;
}
if (timeout) {
clearTimeout(timeout);
}
timeout = setTimeout(later, currentWait);
return timeout;
};
};
var guessGem = function(frame)
{
var split = frame.split('/gems/');
if(split.length == 1) {
split = frame.split('/app/');
if(split.length == 1) {
split = frame.split('/lib/');
}
split = split[Math.max(split.length-2,0)].split('/');
return split[split.length-1].split(':')[0];
}
else
{
return split[split.length -1].split('/')[0];
}
}
var guessMethod = function(frame) {
var split = frame.split('`');
if(split.length == 2) {
var fullMethod = split[1].split("'")[0];
split = fullMethod.split("#");
if(split.length == 2) {
return split[1];
}
return split[0];
}
return '?';
}
var guessFile = function(frame) {
var split = frame.split(".rb:");
if(split.length == 2) {
split = split[0].split('/');
return split[split.length - 1];
}
return "";
}
$.each(data, function(){
maxX = Math.max(maxX, this.x + this.width);
maxY = Math.max(maxY, this.y);
this.shortName = guessMethod(this.frame);
});
var width = $(window).width();
var height = $(window).height() / 1.2;
$('.graph').width(width).height(height);
var xScale = d3.scale.linear()
.domain([0, maxX])
.range([0, width]);
var yScale = d3.scale.linear()
.domain([0, maxY])
.range([0,height]);
var realHeight = 0;
var debouncedHeightCheck = debounce(function(){
if (realHeight > 15) {
svg.selectAll('text').attr('display','show');
} else {
svg.selectAll('text').attr('display','none');
}
}, 200);
function zoom()
{
svg.attr("transform", "translate(" + d3.event.translate + ")" + " scale(" + d3.event.scale + ")");
realHeight = yScale(1) * d3.event.scale;
debouncedHeightCheck();
}
var svg = d3.select(".graph")
.append("svg")
.attr("width", "100%")
.attr("height", "100%")
.attr("pointer-events", "all")
.append('svg:g')
.call(d3.behavior.zoom().on("zoom", zoom))
.append('svg:g');
// so zoom works everywhere
svg.append("rect")
.attr("x",function(d) { return xScale(0); })
.attr("y",function(d) { return yScale(0);})
.attr("width", function(d){return xScale(maxX);})
.attr("height", yScale(maxY))
.attr("fill", "white");
var color = function() {
var r = parseInt(205 + Math.random() * 50);
var g = parseInt(Math.random() * 230);
var b = parseInt(Math.random() * 55);
return "rgb(" + r + "," + g + "," + b + ")";
}
var info = {};
// http://stackoverflow.com/questions/1960473/unique-values-in-an-array
Array.prototype.getUnique = function() {
var o = {}, a = []
for (var i = 0; i < this.length; i++) o[this[i]] = 1
for (var e in o) a.push(e)
return a
}
var samplePercent = function(samples, exclusive){
var info = " (" + samples +
" sample" + (samples == 1 ? "" : "s") + " - " +
((samples / maxX) * 100).toFixed(2) + "%) ";
if (exclusive) {
info += " (" + exclusive +
" exclusive - " +
((exclusive / maxX) * 100).toFixed(2) + "%) ";
}
return info;
}
var mouseover = function(d) {
var i = info[d.frame];
$('.info').text( d.frame + " " + samplePercent(i.samples.length, d.topFrame ? d.topFrame.exclusiveCount : 0));
d3.selectAll(i.nodes)
.attr('opacity',0.5);
};
var mouseout = function(d) {
var i = info[d.frame];
$('.info').text("");
d3.selectAll(i.nodes)
.attr('opacity',1);
};
// highlight the nodes of a gem
var gemSelect = function(e) {
var name = e.data.name;
d3.selectAll(getGemNodes(name)).attr('opacity',0.5);
return false;
};
// remove highlighting of the nodes of a gem
var gemDeSelect = function(e) {
var name = e.data.name;
d3.selectAll(getGemNodes(name)).attr('opacity',1);
return false;
};
// given the name of a gem, return all of its nodes
var getGemNodes = function(gem_name) {
var frames = gemStats[gem_name].frames;
var nodes = [];
$.each(frames, function(i,f) {
var i = info[f];
nodes = nodes.concat(i.nodes);
});
return nodes;
};
var backtrace = function(frame){
for(var i=0; i<data.length; i++){
if(frame === data[i]){ break; }
}
frames = [frame];
var depth = frame.y;
while(i > 0){
if(depth == -1) break;
if(data[i].y === depth-1) {
frames.push(data[i]);
depth--;
}
i--;
}
return frames;
}
$('#frameinfo-wrapper').click(function(d){
$(this).hide();
$('#frameinfo').hide();
});
$(window).keyup(function(e) {
if (e.keyCode==27)
$('#frameinfo-wrapper,#frameinfo').hide();
});
var click = function(d){
var trace = backtrace(d);
var link = function(path, dest){
return path.replace(/[^\/]+:\d+/, function(x){ return "<a target='_blank' href='"+ dest +"'>" + x + "</a>"})
};
var linkify = function(path){
var split = path.split("/")[0].split("-");
if(["actionview","activerecord","actionpack","railties","activesupport", "rails"].indexOf(split[0]) > -1) {
var github = "https://github.com/rails/rails/blob/";
var file = path.split(":")[0].split("/");
if(split[0] === "rails") {
file.shift();
} else {
file[0] = split[0];
}
github += (split[1].length < 6 ? "v" : "") + split[1] + "/";
github += file.join("/");
github += "#L" + parseInt(path.split(":")[1]);
return link(path, github);
}
return path;
}
var simplify = function(frame){
var split = frame.split('/gems/');
if(split.length > 1){
var path = linkify(split.pop());
return "<span class='full-location'>" + split.join('/gems/') + "/</span>" + path;
} else {
return frame;
}
}
var table = trace.map(function(f){
var i = info[f.frame];
return "<tr><td class='code'>" + simplify(f.frame) + "</td><td class='sample-info'>" +
samplePercent(i.samples.length, f.topFrame ? f.topFrame.exclusiveCount : 0) +
"</td></tr>";
}).join("\n");
var table = $('#frameinfo table').html(table);
table.find(".full-location").hide().after("<span class='expand'>&hellip; </span>");
table.find(".expand").css({cursor: "pointer"}).click(function(){
$(this).hide().parent().find(".full-location").show();
});
$('#frameinfo-wrapper').show();
$('#frameinfo').show();
};
// http://stackoverflow.com/a/7419630
var rainbow = function(numOfSteps, step) {
// This function generates vibrant, "evenly spaced" colours (i.e. no clustering). This is ideal for creating easily distiguishable vibrant markers in Google Maps and other apps.
// Adam Cole, 2011-Sept-14
// HSV to RBG adapted from: http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript
var r, g, b;
var h = step / numOfSteps;
var i = ~~(h * 6);
var f = h * 6 - i;
var q = 1 - f;
switch(i % 6){
case 0: r = 1, g = f, b = 0; break;
case 1: r = q, g = 1, b = 0; break;
case 2: r = 0, g = 1, b = f; break;
case 3: r = 0, g = q, b = 1; break;
case 4: r = f, g = 0, b = 1; break;
case 5: r = 1, g = 0, b = q; break;
}
var c = "#" + ("00" + (~ ~(r * 255)).toString(16)).slice(-2) + ("00" + (~ ~(g * 255)).toString(16)).slice(-2) + ("00" + (~ ~(b * 255)).toString(16)).slice(-2);
return (c);
}
// assign some colors, analyze samples per gem
var gemStats = {}
var topFrames = {}
var lastFrame = {frame: 'd52e04d-df28-41ed-a215-b6ec840a8ea5', x: -1}
$.each(data, function(){
var gem = guessGem(this.frame);
var stat = gemStats[gem];
if(!stat) {
gemStats[gem] = stat = {name: gem, samples: [], frames: []};
}
stat.frames.push(this.frame);
for(var j=0; j < this.width; j++){
stat.samples.push(this.x + j);
}
// This assumes the traversal is in order
if (lastFrame.x != this.x) {
var topFrame = topFrames[lastFrame.frame]
if (!topFrame) {
topFrames[lastFrame.frame] = topFrame = {exclusiveCount: 0}
}
topFrame.exclusiveCount += 1;
lastFrame.topFrame = topFrame;
}
lastFrame = this;
});
var topFrame = topFrames[lastFrame.frame]
if (!topFrame) {
topFrames[lastFrame.frame] = topFrame = {exclusiveCount: 0}
}
topFrame.exclusiveCount += 1;
lastFrame.topFrame = topFrame;
var totalGems = 0;
$.each(gemStats, function(k,stat){
totalGems++;
stat.samples = stat.samples.getUnique();
});
var gemsSorted = _(gemStats).pairs()
.sortBy(function(item){
return -item[1].samples.length;
})
.map(function(item){return item[1]})
.value();
var currentIndex = 0;
_.each(gemsSorted, function(stat){
stat.color = rainbow(totalGems, currentIndex);
for(var x=0; x < stat.frames.length; x++) {
info[stat.frames[x]] = {nodes: [], samples: [], color: stat.color};
}
currentIndex += 1;
});
// see: http://bl.ocks.org/mundhradevang/1387786
function fontSize(d,i) {
var size = yScale(1) / 3;
// var words = d.shortName.split(' ');
var word = d.shortName; // words[0];
var width = xScale(d.width+100);
var height = yScale(1);
var length = 0;
d3.select(this).style("font-size", size + "px").text(word);
while((size > 12.1) && ((this.getBBox().width >= width) || (this.getBBox().height >= height)))
{
size -= 0.1;
d3.select(this).style("font-size", size + "px");
}
d3.select(this).attr("dy", size);
}
svg.selectAll("g")
.data(data)
.enter()
.append("g")
.each(function(){
d3.select(this)
.append("rect")
.attr("x",function(d) { return xScale(d.x-1); })
.attr("y",function(d) { return yScale(maxY - d.y);})
.attr("width", function(d){return xScale(d.width);})
.attr("height", yScale(1))
.attr("fill", function(d){
var i = info[d.frame];
if(!i) {
info[d.frame] = i = {nodes: [], samples: [], color: color()};
}
i.nodes.push(this);
for(var j=0; j < d.width; j++){
i.samples.push(d.x + j);
}
return i.color;
})
.on("click", click)
.on("mouseover", mouseover)
.on("mouseout", mouseout)
.attr("cursor", "pointer");
d3.select(this)
.append("text")
.attr("x",function(d) { return xScale(d.x - 0.98); })
.attr("y",function(d) { return yScale(maxY - d.y);})
.on("click", click)
.on("mouseover", mouseover)
.on("mouseout", mouseout)
.each(fontSize)
.attr("cursor", "pointer")
.attr("display", "none");
});
// Samples may overlap on the same line
for (var r in info) {
if (info[r].samples) {
info[r].samples = info[r].samples.getUnique();
}
};
// render the legend
_.each(gemsSorted, function(gem){
var node = $("<div></div>")
.css("background-color", gem.color)
.text(gem.name + " " + samplePercent(gem.samples.length))
.on("mouseover", {name: gem.name}, gemSelect)
.on("mouseout", {name: gem.name}, gemDeSelect);
$('.legend').append(node);
});
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment